QA & TESTING

End-to-end QA pipeline for a 50,000-user SaaS platform

Confidential client · Remote · Q4 2025


87
automated test cases built
0
checkout regressions since go-live
CI/CD
integrated into GitHub Actions
k6
performance tests on critical flows
<4h
QA pipeline execution time

Related from the blog.

Feb 10, 2026 · 11 min read

The QA maturity model: where your team is

The five-level framework used to diagnose this client's testing practice before building the automated pipeline — and what moved them from Level 2 to Level 4.

Read →
Feb 24, 2026 · 10 min read

PostgreSQL for developers who just want it to work

The N+1 query fixes and EXPLAIN ANALYZE work that dropped the dashboard P99 latency from 4.2s to 380ms — and the postgresql.conf settings applied to the production database.

Read →
Feb 24, 2026 · 13 min read GitHub Actions CI/CD for self-hosted infrastructure Read →
Feb 24, 2026 · 14 min

Playwright E2E testing guide

The Playwright architecture behind this engagement — Page Object Model, auth fixtures for login flows, network interception for payment mocks, and parallel CI execution.

Read →

94%
Code coverage
12×
Faster CI pipeline
0
Regressions shipped

Delivery timeline

W1
Discovery & scoping Codebase review, staging environment assessment, manual exploratory testing of core flows. 23 high-priority test scenarios identified. QA tooling agreed: Playwright for E2E, k6 for load testing, GitHub Actions for CI.
W2–3
Test infrastructure setup Playwright project scaffolded with Page Object Model. Auth fixtures with storageState configured for 3 user roles. Database seeding helpers built. GitHub Actions pipeline with self-hosted runner deployed.
W4–7
Test suite build 87 test cases built across authentication, checkout, subscription management, admin, and API layers. Network interception mocks for payment and email providers. k6 load tests on checkout and API endpoints.
W8
CI integration & handover CI/CD gate live — deployments to staging blocked if Playwright suite fails. k6 threshold-gated performance checks on every deploy. Test suite, runbooks, and maintenance guide handed to client engineering team.
Measurable results
94%
code coverage at handover
12×
faster CI pipeline than manual QA cycle
0
checkout regressions shipped since go-live
380ms
dashboard P99 latency (was 4.2s)

At the 90-day check-in the team reported shipping twice as many features per sprint. The discipline of writing tests first had accelerated development rather than slowing it — the opposite of what their engineers had expected.

The situation.

A B2B SaaS platform serving 50,000 active users had no automated tests. Zero. A three-person QA team was manually testing every release — a process that took 10–14 days and still shipped regressions regularly. The engineering team wanted to move to weekly releases but the QA bottleneck made it impossible. One critical regression six months earlier had taken their largest customer offline for eight hours, nearly costing them the contract.

The codebase was a React frontend (120,000 lines) and a Node.js API (80,000 lines) with a PostgreSQL database. There was no CI pipeline — developers pushed to main and deployed manually. The platform had 47 distinct user flows critical to the core product, 200+ API endpoints, and integration with six third-party services (Stripe, Sendgrid, and four industry-specific data providers).

The timeline was aggressive: they wanted a working CI pipeline and meaningful test coverage within six weeks, before their Series B roadshow in January 2026.

What we built.

We started with a coverage audit — mapping all 47 critical user flows and 200+ API endpoints, prioritizing by business impact and risk. We then built the testing pyramid from the bottom up: unit tests first (fast, isolated, cheap), integration tests second (API contracts, database interactions), and E2E tests last (browser automation, full flows).

Layer 1: Unit & Integration Tests (Vitest)

We chose Vitest over Jest for its native ESM support and 3× faster execution. We wrote 847 unit tests covering utility functions, business logic, and React components via Testing Library. For API integration tests, MSW (Mock Service Worker) intercepts third-party API calls — tests run without hitting Stripe or any external service, making them fast and deterministic. Coverage gates in CI block merges below 90% on new code.

Layer 2: E2E Tests (Playwright)

We wrote 156 Playwright tests covering all 47 critical user flows, each with at least three test cases (happy path, error handling, edge case). Tests run in parallel across Chromium, Firefox, and WebKit. We use Playwright's trace viewer for debugging failures — every CI run stores traces for the last 30 days. Visual regression testing via screenshot comparison catches layout breaks that functional tests miss.

Layer 3: Load Testing (k6)

We wrote k6 load test scripts for the ten most-trafficked API endpoints, simulating up to 5,000 concurrent users. Load tests run weekly on a staging environment that mirrors production data. We identified two N+1 database queries during initial load testing — fixing them reduced P99 latency on the dashboard endpoint from 4.2s to 380ms.

CI/CD Pipeline (GitHub Actions)

The new pipeline runs unit tests on every PR (under 90 seconds), integration tests on merge to main (under 4 minutes), E2E tests on merge to main (under 12 minutes, running in parallel across 8 workers), and load tests weekly on a schedule. The old manual QA process took 10–14 days. The new pipeline takes 16 minutes and runs on every merge.

"We went from dreading releases to shipping twice a week. The pipeline catches things before they reach staging — we don't even discuss 'did this break anything?' anymore."

— VP Engineering, Confidential SaaS Client
01
Coverage Audit — Week 1Mapped all 47 critical flows and 200+ endpoints. Prioritized by business risk. Decided on test architecture and tooling.
02
Unit & Integration Baseline — Weeks 2–3847 unit tests written. MSW setup for third-party API mocking. 72% code coverage on existing code. CI pipeline skeleton operational.
03
E2E Test Suite — Weeks 4–5156 Playwright tests covering all 47 critical flows. Cross-browser matrix. Visual regression baseline. Parallel CI execution configured.
04
Load Testing & Optimization — Week 5k6 scripts for top 10 endpoints. Two N+1 queries found and fixed. P99 latency on dashboard: 4.2s → 380ms.
05
Coverage Push & Handover — Week 694% overall coverage achieved. Engineering team trained on writing tests. Test style guide and contribution guidelines delivered. 90-day post-handover check-in scheduled.
Playwright Vitest Testing Library MSW k6 GitHub Actions Storybook Istanbul Allure Reports Docker
ClientConfidential
ServiceQA & TESTING
LocationRemote
Duration6 weeks
Year2025
Similar Project? →

End-to-end test suites, CI/CD pipelines, and load testing — built to be maintained by your own engineering team.

Service Details →

Tell us about your infrastructure challenge.

studio@the47network.com

Related Case Studies