Problem Statement
A test suite is only worth its runtime if a red run means the code is wrong. Several of ours do not clear that bar today.
The frontend e2e suite cannot be run at all in the project's own dev container: VITE_APP_URL puts the api cross-origin, roles are silently stripped, and 162 of 293 esports specs fail for a reason that points nowhere near the cause. A developer's reasonable conclusion is "main is broken".
playwright.config.ts asks every project but one to run with reducedMotion: "reduce", and the option never reaches the browser, so the reduced-motion path has never been exercised by any e2e test.
JobManager.test.ts fails about one run in four on unchanged main, taking 8 of its 13 cases with it.
The unit runner answers fewer browser questions than the code under test asks. jsdom leaves window.visualViewport and friends undefined, Vuetify is not installed, and the coverage report cannot count the branches inside a template — so twenty-seven extracted modules have no unit test and nothing says so.
Each of these teaches the same lesson to whoever hits it: the suite's answer is not about the code. This epic makes every red run mean something.
Order
#1000 comes first: until the frontend and the api agree on one shape in all three environments, the e2e suite cannot be run outside CI, so nothing downstream of it can be checked locally.
The unit-runner work is a chain and must land in order: #1082 (the runner answers what jsdom does not) before #1083 (Vuetify is installed), then #1084 (branch counting), then #1086 (the twenty-seven modules). #1085 is a small fix that can land anywhere in that chain.
#852 and #804 are independent of both and of each other.
Slices
Problem Statement
A test suite is only worth its runtime if a red run means the code is wrong. Several of ours do not clear that bar today.
The frontend e2e suite cannot be run at all in the project's own dev container:
VITE_APP_URLputs the api cross-origin, roles are silently stripped, and 162 of 293 esports specs fail for a reason that points nowhere near the cause. A developer's reasonable conclusion is "main is broken".playwright.config.tsasks every project but one to run withreducedMotion: "reduce", and the option never reaches the browser, so the reduced-motion path has never been exercised by any e2e test.JobManager.test.tsfails about one run in four on unchangedmain, taking 8 of its 13 cases with it.The unit runner answers fewer browser questions than the code under test asks. jsdom leaves
window.visualViewportand friends undefined, Vuetify is not installed, and the coverage report cannot count the branches inside a template — so twenty-seven extracted modules have no unit test and nothing says so.Each of these teaches the same lesson to whoever hits it: the suite's answer is not about the code. This epic makes every red run mean something.
Order
#1000comes first: until the frontend and the api agree on one shape in all three environments, the e2e suite cannot be run outside CI, so nothing downstream of it can be checked locally.The unit-runner work is a chain and must land in order:
#1082(the runner answers what jsdom does not) before#1083(Vuetify is installed), then#1084(branch counting), then#1086(the twenty-seven modules).#1085is a small fix that can land anywhere in that chain.#852and#804are independent of both and of each other.Slices
One rule for reaching the api, in the system-test stack too #1000 One rule for reaching the api, in the system-test stack too — carries the criterion that the e2e suite runs green inside the dev container, absorbed from The frontend e2e suite cannot run in the dev container: VITE_APP_URL puts the api cross-origin and silently strips every role #853
The unit runner answers what jsdom does not #1082 The unit runner answers what jsdom does not
Vuetify is installed in the unit runner #1083 Vuetify is installed in the unit runner
The unit suite cannot count the branches in a template #1084 The unit suite cannot count the branches in a template
The membership form's template ref is used on a non-ref value #1085 The membership form's template ref is used on a non-ref value
Twenty-seven extracted modules have no unit test #1086 Twenty-seven extracted modules have no unit test
Playwright ignores the reducedMotion context option, so no e2e test has ever run with the preference set #852 Playwright ignores the reducedMotion context option
JobManager unit tests fail about one run in four, independently of any change #804 JobManager unit tests fail about one run in four
A board pencil is pressed while the page is still moving #1134 A board pencil is pressed while the page is still moving