
Rafael Manso
|
Passionate about ensuring software quality through comprehensive testing strategies. Building robust automation frameworks and optimizing performance to deliver exceptional user experiences.
What I Bring to the Table
Strategic Testing Mindset
Designing comprehensive test strategies that balance coverage, efficiency, and risk
Development Collaboration
Understanding codebases, debugging alongside developers, and contributing to technical discussions
Automation Excellence
Building maintainable, scalable test frameworks that integrate seamlessly into CI/CD pipelines
Performance Focus
Identifying bottlenecks and ensuring applications perform under real-world conditions
Analytical Thinking
Translating business requirements into actionable test scenarios and quality metrics
Continuous Learning
Staying current with testing tools, methodologies, and industry best practices
AI-Powered Workflow
Leveraging AI tools to accelerate test planning, debugging, and documentation while independently verifying all outputs
AI in My Workflow
AI is a productivity multiplier in my day-to-day. It accelerates research, drafts, and exploration โ but every output is independently verified before it touches any deliverable.
Test Planning & Debugging
AI helps map edge cases, draft test strategies, and trace bugs to their root cause faster โ not instead of thinking, but alongside it.
Documentation & Research
Drafting test plans, PRDs, and READMEs with AI as a first-pass writer, then refined and verified through my own QA lens.
Code Exploration
Navigating unfamiliar codebases, understanding API contracts, and tracing execution paths with AI as a pair programmer.
Independent Verification
Every AI-generated result is tested, cross-referenced, or verified against real documentation before it goes into any deliverable or test artifact.
Skills & Tools
Technologies and methodologies I work with
QA Tools
Interactive demos built into the site. Test cases, API testing, and scenario walkthroughs โ no setup required.
Test Case Library
Real test cases from my projects. Click through each suite to see preconditions, steps, expected results, and execution status.
Register with valid credentials returns 201 and user object
POST /api/auth/register- -API server is running on BASE_API
- -No existing user with the test email
- 1.Send POST request to /api/auth/register with name, email, and password fields
- 2.Use Faker.js to generate a unique email and valid password (> 6 chars)
HTTP 201. Response body contains user object with id, name, email. No password field exposed.
Register with duplicate email returns 409 Conflict
POST /api/auth/register- -A user account with 'duplicate@papito.dev' already exists
- 1.Send POST /api/auth/register with the pre-existing email address
- 2.Use a different name and password for the payload
HTTP 409 Conflict. Error message indicates the email is already registered.
Login with correct credentials returns JWT token
POST /api/auth/login- -A registered user exists in the database with known credentials
- 1.Send POST /api/auth/login with the registered email and correct password
- 2.Parse the response body for the access_token field
HTTP 200. Response includes access_token (JWT). Token is non-empty string and can be used in Authorization header for subsequent requests.
Create shortened link with valid token returns 201
POST /api/links- -User is authenticated with a valid JWT token
- -Token is sent as Bearer token in Authorization header
- 1.Authenticate via POST /api/auth/login to obtain token
- 2.Send POST /api/links with { url: 'https://example.com' } using the token
HTTP 201. Response body contains shortened link object with id, originalUrl, shortCode, and userId.
Create link without authentication token returns 401
POST /api/links- -No active session or token
- 1.Send POST /api/links with a valid URL payload
- 2.Omit the Authorization header entirely
HTTP 401 Unauthorized. No link is created in the database.
Delete link with valid owner token returns 200
DELETE /api/links/:id- -User has created at least one link in the system
- 1.Create a link using authenticated POST /api/links
- 2.Send DELETE /api/links/:id using the same user's token
HTTP 200. Link is removed from the database. Subsequent GET returns 404.
Delete non-existent link returns 404 (BUG: returns 400)
DELETE /api/links/:id- -No link with the specified ID exists in the database
- 1.Send DELETE request to /api/links/999999 with a valid but non-owner token
HTTP 404 Not Found. Meaningful error message returned.
User cannot delete another user's links (Broken Access Control)
DELETE /api/links/:id- -User A and User B each have at least one link
- -Each user has their own valid JWT token
- 1.User A authenticates and gets their token
- 2.User B authenticates and gets their token
- 3.User B sends DELETE request for User A's link ID using User B's token
HTTP 403 Forbidden. User B cannot delete User A's links. OWASP A01:2021 classification.
Health endpoint returns service status
GET /health- -API server is running
- 1.Send GET request to /health without any headers
HTTP 200. Response body contains status: 'ok' or equivalent uptime/health indicator.
Login with valid credentials redirects to secure area
Login Form- -TheInternet app is deployed and accessible
- -Valid test account exists (tomsmith / SuperSecretPassword!)
- 1.Navigate to the login page
- 2.Fill in username field with 'tomsmith'
- 3.Fill in password field with 'SuperSecretPassword!'
- 4.Click the Login button
URL changes to the secure area. Page displays a success message or secure content confirming the user is logged in.
Login with invalid password shows error message
Login Form- -TheInternet app is deployed
- 1.Navigate to the login page
- 2.Enter a valid username but wrong password
- 3.Click the Login button
Error message is displayed (e.g., 'Your password is invalid!'). User remains on the login page. No redirect occurs.
Login with empty credentials prevents submission
Login Form- -TheInternet app is deployed
- 1.Navigate to the login page
- 2.Leave both username and password fields empty
- 3.Attempt to click Login
Browser-native validation prevents form submission, OR server returns validation error. No empty credentials reach the backend.
Logout invalidates session and redirects to login
Logout Flow- -User is currently logged in to a secure area
- 1.Log in with valid credentials
- 2.Click the Logout button
Session is cleared. URL returns to the login page. Direct navigation to the previous secure area redirects to login.
Secure area is inaccessible without authentication
Route Protection- -No active session or user is logged out
- 1.Attempt to navigate directly to the secure area URL (e.g., /secure)
- 2.Verify no session cookie is present
Server redirects to login page. No secure content is rendered without valid session.
Create new prompt with all fields saves successfully
Prompt CRUD- -User is authenticated and on the prompts dashboard
- 1.Click the 'New Prompt' button
- 2.Fill in title, content, description, and assign tags
- 3.Click 'Save'
Prompt appears in the list immediately. Toast notification confirms creation. All fields are stored correctly.
Filter prompts by tag returns correct subset
Tag Filtering- -At least 3 prompts exist with different tags
- -User is on the prompts dashboard
- 1.Click on a tag pill (e.g., 'qa-automation') to filter
- 2.Observe the filtered list
Only prompts containing the selected tag are shown. Clear filter option resets the view. Prompt count updates accordingly.
Delete prompt shows confirmation dialog before removal
Prompt CRUD- -At least one prompt exists in the list
- 1.Click the delete icon on a prompt
Confirmation dialog appears. User can cancel or confirm. On confirm, prompt is removed and removed from list.
Export prompts as JSON produces valid downloadable file
Export- -At least one prompt exists
- 1.Click the Export button
- 2.Select 'JSON' format
- 3.Confirm download
Browser downloads a .json file. File is valid JSON and contains all prompt data including nested tags and metadata.
API Tester
Hit any public REST endpoint and see the response. Set expected status codes to validate results.
curl -X GET "https://jsonplaceholder.typicode.com/posts/1"
Choose a preset or enter a URL and hit Run to test an endpoint
Test Scenario Visualizer
Step through real test scenarios including a live bug example (Broken Access Control, OWASP A01:2021).
User Login โ Valid Credentials
Authentication FlowTest PassedEnd-to-end login verification for the ShortBeyond API. Tests the full auth pipeline from form input through JWT generation.
Navigate to login page
PassUser opens the login form at /login
Login form is visible with username and password fields rendered
page.goto("/login")Fill in valid username
PassEnter "tomsmith" into the username field
Username field contains "tomsmith"; no validation error shown
page.fill("#username", "tomsmith")Fill in valid password
PassEnter "SuperSecretPassword!" into the password field
Password field shows masked characters; no validation error shown
page.fill("#password", "SuperSecretPassword!")Click Login button
PassTrigger form submission via the Login button
Button is clickable; loading spinner appears during request
page.click("button[type=submit]")Verify redirect to secure area
PassWait for navigation after successful authentication
URL changes to /secure or dashboard. Success message displayed. Session cookie set.
page.waitForURL("**/secure**")Test Scenario Passed
All 5 steps executed successfully. Feature works as expected.
Featured Projects
Check out my work on GitHub

playwright-mark
Playwright Testing Exploration & Best Practices
Advanced Playwright implementation, modern web testing patterns, TypeScript integration, and scalable test architecture for complex web applications.

webdojo
Full-Stack Cypress Testing Training Platform
Comprehensive E2E/API testing implementation with custom commands, database integration, CI/CD with GitHub Actions, API mocking, and advanced techniques.

starbugs-tests
BDD Test Automation with Cucumber & Ruby
BDD E2E test automation for the Starbugs web app using Ruby, Cucumber, and Page Object Model. Covers catalog, order flow, and coupon scenarios.

k6-performance-testing
Complete Performance Testing Suite with k6
Educational performance testing project with smoke, load, stress, soak, and spike tests. Includes threshold validation and metrics analysis (p95, p99).

petlov-rocketskills
Petlov - Automation Testing Project
Robust automated UI tests for the Petlov platform using Java 21, Selenide, and JUnit 5.

markx-robot
Comprehensive Mobile Test Automation
End-to-end testing solution for the MarkX Android app using Robot Framework and Appium, with backend API integration.
Get In Touch
Feel free to reach out!