Automator. Collaborator. Explorer.
I build frameworks that find bugs automatically, around the clock. Playwright, k6, Pact.js.
I catch breaking changes before they reach staging. I build quality into every PR with contract tests and CI gates.
I find the bugs no automation will ever catch. Exploratory testing, edge cases, user empathy.
Real frameworks, real CI gates, real bugs found.
Full Playwright + TypeScript framework testing SauceDemo. Network throttling (Slow 3G), API response mocking (500 error stub), visual regression (screenshot diffs), and parallel race condition detection across 4 concurrent browser sessions. Found a real race condition bug: cart badge desync at 40% reproducibility.
Key Deliverable: Single command npm run test:ci runs everything headlessly and generates HTML report with screenshots/videos of failures.
Pact.js consumer-driven contract tests between a frontend consumer and JSONPlaceholder API. Catches breaking API changes (field renames, type changes) before they reach staging. ESLint with security plugin runs on every PR. 80% coverage threshold enforced in CI. PR template with "Has contract test been updated?" checkbox.
Key Deliverable: A PR where the contract test caught a backend field rename (email → emailAddress) instantly in CI — before it reached any environment.
Catches Breaking Changes Before Stagingk6 load test simulating 100 concurrent users on a shopping cart flow with 5 threshold assertions (p95 < 500ms). Lighthouse CI audit for security headers, performance, and accessibility. axe-core WCAG 2.1 AA accessibility audit. Found 2 blockers: missing CSP header and inaccessible burger menu button. Exploratory charter documented 3 edge cases no automation would find — including a $0 empty cart checkout bug.
Key Deliverable: Single PDF "Production Readiness Report" with Red/Yellow/Green status for Functionality, Speed, Security, and UX.
Production Readiness Report: 2 Blockers FoundReal defects found during manual and automated testing
When 4 browser sessions simultaneously add the same item to cart, 1 session intermittently fails to update the badge. 40% reproducibility — non-deterministic, timing-dependent.
A user can reach the order confirmation page with an empty cart. No guard exists. The system confirms a $0 order.
During multi-step checkout, pressing browser Back and changing personal info values causes the Order Summary to reflect the ORIGINAL values — silently ignoring the update.
I'm actively seeking remote QA Engineer or Python Developer roles. I'm ready to contribute on day one.