After this lesson, you will be able to: Take an untested project and build a full pyramid of tests wired into CI with a coverage gate, the way a professional codebase is protected.
This is the capstone that turns the subtrack into a portfolio piece. You will take a real project (yours or a provided sample) that has little or no testing and bring it up to professional standard: unit, integration, and e2e tests, all running in CI, with a coverage threshold that blocks regressions.
Pick a project with real logic and a real user flow. Good options: a small full-stack app (auth + a CRUD resource), an API with a database, or a CLI/library with non-trivial functions. If you do not have one, fork a small open-source app. The deliverable is the same: a test suite a hiring manager would respect, visible in your GitHub with a green CI badge.
Work bottom-up through the pyramid, committing at each stage so the history shows the progression.
Audit: list the riskiest logic (money, auth, data integrity) and the critical user journeys. That list is your test plan.
Unit layer: test the pure logic and edge cases with Vitest or pytest. Aim for the risky code first, not 100 percent.
Integration layer: test the API routes against a real test database (Docker/Testcontainers); reset state between tests.
E2e layer: write 2-4 Playwright tests for the critical journeys (sign up, log in, the core action).
CI: a GitHub Actions workflow runs all three layers on every push and pull request, with a postgres service for integration tests.
Gate: turn on branch protection, require the test check, and set a coverage threshold (e.g. vitest --coverage with a minimum) so regressions block the merge.
Document: a README section explaining how to run the tests and what each layer covers, plus a CI badge.
Interview framing: 'I took an untested app to a full test pyramid in CI. I wrote unit tests for the billing logic, integration tests for the API against a real Postgres via Testcontainers, and four Playwright e2e tests for the auth and checkout journeys. CI runs all three on every PR and a coverage gate blocks regressions.' Resume bullet: 'Built a layered automated test suite (unit/integration/e2e) with CI gating and coverage thresholds, eliminating a recurring class of regressions.'
Sign in and purchase access to unlock this lesson.