๐Ÿ“ Brazil ยท Remote
Rafael Manso

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 Engineering
Test Automation
Performance Testing
K6
JavaScript
TypeScript
Python
Java
Ruby
Cypress
Playwright
API Testing
CI/CD
Agile

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.

18 total test cases16 passed2 failed
Execution rate:
89%
sb-001

Register with valid credentials returns 201 and user object

High
Pass
Feature:POST /api/auth/register
Preconditions
  • -API server is running on BASE_API
  • -No existing user with the test email
Steps
  1. 1.Send POST request to /api/auth/register with name, email, and password fields
  2. 2.Use Faker.js to generate a unique email and valid password (> 6 chars)
Expected Result

HTTP 201. Response body contains user object with id, name, email. No password field exposed.

APIHappy Path
sb-002

Register with duplicate email returns 409 Conflict

High
Pass
Feature:POST /api/auth/register
Preconditions
  • -A user account with 'duplicate@papito.dev' already exists
Steps
  1. 1.Send POST /api/auth/register with the pre-existing email address
  2. 2.Use a different name and password for the payload
Expected Result

HTTP 409 Conflict. Error message indicates the email is already registered.

APIValidation
sb-003

Login with correct credentials returns JWT token

Critical
Pass
Feature:POST /api/auth/login
Preconditions
  • -A registered user exists in the database with known credentials
Steps
  1. 1.Send POST /api/auth/login with the registered email and correct password
  2. 2.Parse the response body for the access_token field
Expected Result

HTTP 200. Response includes access_token (JWT). Token is non-empty string and can be used in Authorization header for subsequent requests.

APIHappy Path
sb-004

Create shortened link with valid token returns 201

High
Pass
Feature:POST /api/links
Preconditions
  • -User is authenticated with a valid JWT token
  • -Token is sent as Bearer token in Authorization header
Steps
  1. 1.Authenticate via POST /api/auth/login to obtain token
  2. 2.Send POST /api/links with { url: 'https://example.com' } using the token
Expected Result

HTTP 201. Response body contains shortened link object with id, originalUrl, shortCode, and userId.

APIHappy Path
sb-005

Create link without authentication token returns 401

High
Pass
Feature:POST /api/links
Preconditions
  • -No active session or token
Steps
  1. 1.Send POST /api/links with a valid URL payload
  2. 2.Omit the Authorization header entirely
Expected Result

HTTP 401 Unauthorized. No link is created in the database.

APISecurity
sb-006

Delete link with valid owner token returns 200

High
Pass
Feature:DELETE /api/links/:id
Preconditions
  • -User has created at least one link in the system
Steps
  1. 1.Create a link using authenticated POST /api/links
  2. 2.Send DELETE /api/links/:id using the same user's token
Expected Result

HTTP 200. Link is removed from the database. Subsequent GET returns 404.

APIHappy Path
sb-007

Delete non-existent link returns 404 (BUG: returns 400)

Critical
Fail
Feature:DELETE /api/links/:id
Preconditions
  • -No link with the specified ID exists in the database
Steps
  1. 1.Send DELETE request to /api/links/999999 with a valid but non-owner token
Expected Result

HTTP 404 Not Found. Meaningful error message returned.

APIBugHTTP Semantics
sb-008

User cannot delete another user's links (Broken Access Control)

Critical
Fail
Feature:DELETE /api/links/:id
Preconditions
  • -User A and User B each have at least one link
  • -Each user has their own valid JWT token
Steps
  1. 1.User A authenticates and gets their token
  2. 2.User B authenticates and gets their token
  3. 3.User B sends DELETE request for User A's link ID using User B's token
Expected Result

HTTP 403 Forbidden. User B cannot delete User A's links. OWASP A01:2021 classification.

APISecurityOWASPAuthorization
sb-009

Health endpoint returns service status

Low
Pass
Feature:GET /health
Preconditions
  • -API server is running
Steps
  1. 1.Send GET request to /health without any headers
Expected Result

HTTP 200. Response body contains status: 'ok' or equivalent uptime/health indicator.

APISmoke
ti-001

Login with valid credentials redirects to secure area

High
Pass
Feature:Login Form
Preconditions
  • -TheInternet app is deployed and accessible
  • -Valid test account exists (tomsmith / SuperSecretPassword!)
Steps
  1. 1.Navigate to the login page
  2. 2.Fill in username field with 'tomsmith'
  3. 3.Fill in password field with 'SuperSecretPassword!'
  4. 4.Click the Login button
Expected Result

URL changes to the secure area. Page displays a success message or secure content confirming the user is logged in.

E2EHappy Path
ti-002

Login with invalid password shows error message

High
Pass
Feature:Login Form
Preconditions
  • -TheInternet app is deployed
Steps
  1. 1.Navigate to the login page
  2. 2.Enter a valid username but wrong password
  3. 3.Click the Login button
Expected Result

Error message is displayed (e.g., 'Your password is invalid!'). User remains on the login page. No redirect occurs.

E2EValidation
ti-003

Login with empty credentials prevents submission

Medium
Pass
Feature:Login Form
Preconditions
  • -TheInternet app is deployed
Steps
  1. 1.Navigate to the login page
  2. 2.Leave both username and password fields empty
  3. 3.Attempt to click Login
Expected Result

Browser-native validation prevents form submission, OR server returns validation error. No empty credentials reach the backend.

E2EValidationForm
ti-004

Logout invalidates session and redirects to login

Medium
Pass
Feature:Logout Flow
Preconditions
  • -User is currently logged in to a secure area
Steps
  1. 1.Log in with valid credentials
  2. 2.Click the Logout button
Expected Result

Session is cleared. URL returns to the login page. Direct navigation to the previous secure area redirects to login.

E2ESession
ti-005

Secure area is inaccessible without authentication

Critical
Pass
Feature:Route Protection
Preconditions
  • -No active session or user is logged out
Steps
  1. 1.Attempt to navigate directly to the secure area URL (e.g., /secure)
  2. 2.Verify no session cookie is present
Expected Result

Server redirects to login page. No secure content is rendered without valid session.

E2ESecurity
pm-001

Create new prompt with all fields saves successfully

High
Pass
Feature:Prompt CRUD
Preconditions
  • -User is authenticated and on the prompts dashboard
Steps
  1. 1.Click the 'New Prompt' button
  2. 2.Fill in title, content, description, and assign tags
  3. 3.Click 'Save'
Expected Result

Prompt appears in the list immediately. Toast notification confirms creation. All fields are stored correctly.

E2EHappy PathCRUD
pm-002

Filter prompts by tag returns correct subset

Medium
Pass
Feature:Tag Filtering
Preconditions
  • -At least 3 prompts exist with different tags
  • -User is on the prompts dashboard
Steps
  1. 1.Click on a tag pill (e.g., 'qa-automation') to filter
  2. 2.Observe the filtered list
Expected Result

Only prompts containing the selected tag are shown. Clear filter option resets the view. Prompt count updates accordingly.

E2EFilter
pm-003

Delete prompt shows confirmation dialog before removal

Medium
Pass
Feature:Prompt CRUD
Preconditions
  • -At least one prompt exists in the list
Steps
  1. 1.Click the delete icon on a prompt
Expected Result

Confirmation dialog appears. User can cancel or confirm. On confirm, prompt is removed and removed from list.

E2ECRUDUX
pm-004

Export prompts as JSON produces valid downloadable file

Low
Pass
Feature:Export
Preconditions
  • -At least one prompt exists
Steps
  1. 1.Click the Export button
  2. 2.Select 'JSON' format
  3. 3.Confirm download
Expected Result

Browser downloads a .json file. File is valid JSON and contains all prompt data including nested tags and metadata.

E2EExport

API Tester

Hit any public REST endpoint and see the response. Set expected status codes to validate results.

Presets:
expect
cURL
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 Passed

End-to-end login verification for the ShortBeyond API. Tests the full auth pipeline from form input through JWT generation.

ls-1

Navigate to login page

Pass

User opens the login form at /login

Expected

Login form is visible with username and password fields rendered

page.goto("/login")
ls-2

Fill in valid username

Pass

Enter "tomsmith" into the username field

Expected

Username field contains "tomsmith"; no validation error shown

page.fill("#username", "tomsmith")
ls-3

Fill in valid password

Pass

Enter "SuperSecretPassword!" into the password field

Expected

Password field shows masked characters; no validation error shown

page.fill("#password", "SuperSecretPassword!")
ls-4

Click Login button

Pass

Trigger form submission via the Login button

Expected

Button is clickable; loading spinner appears during request

page.click("button[type=submit]")
ls-5

Verify redirect to secure area

Pass

Wait for navigation after successful authentication

Expected

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

Get In Touch

Feel free to reach out!