Three repositories with no shared code, meeting at three points. The dashboard dispatches either suite — API or UI — and each meets it the same way. One run, end to end.
Scroll sideways to see the whole diagram.
What “the test suite runs” means: one command, a pool of workers, and tests that do not depend on each other.
Scroll sideways to see the whole diagram.
One mock serves every worker and is never reset. Each test creates uniquely named data and checks only what it created.
The cart lives in the browser, so a shared session would carry one test’s cart into the next.
The API suite on a ten-core machine, as its Playwright config records it:
| Workers | Wall clock | Note |
|---|---|---|
| 5 | 2.9s | the setting — 50% of ten cores |
| 10 | 3.5s | slower |
| 16 | 4.1s | slower still |
More workers made it slower. One mock serves every worker and becomes the bottleneck, so past half the cores the extra workers only queue. That is why the setting is 50%, written as a fraction so a bigger runner is still used.
Before a suite is called stable, it runs at 12 workers, five times over, with nothing flaky.
Each repository builds the same tests two ways, with identical settings, so the two styles can be compared fairly.
functional-style and class-style — 111 tests each.
locator-first and page-first — the same journeys, held level by a check.