Task Summary
The build / frontend (macos-latest) leg has failed 6 times between 2026-08-14 and 2026-08-17, each time on a timeout rather than a failed assertion, and each time on a different spec. Two further runs went red with no FAIL line at all (cancelled once the leg had already failed).
| Date (UTC) |
Spec |
Timeout |
| 08-14 06:59 |
workflow-execution-history.component |
Test timed out in 5000ms |
| 08-15 03:47 |
workflow-execution-history.component |
Test timed out in 5000ms |
| 08-16 00:12 |
filters.component |
Hook timed out in 10000ms |
| 08-16 01:24 |
hub-search-result.component |
Test timed out in 5000ms |
| 08-16 05:12 |
filters.component + report-generation.service |
Hook 10000ms + Test 5000ms |
| 08-17 02:52 |
report-generation.service |
Test timed out in 5000ms |
The most recent one (#7710, a PR that changes nothing but the sbt/setup-sbt pin in CI workflow YAML) failed on search.component.spec.ts:283 — 1 test out of 4704, in the beforeEach hook, at 11273ms. The same test ran in 378ms on ubuntu in that very run, where the next-slowest macOS test was 4355ms.
This is headroom, not a bad test. The failing spec is different nearly every time and it is always a timeout. The macOS leg's own wall time swings about 2x run to run — 9m17s (#7681), 9m29s (#7696), 13m18s (#7644), 13m56s (#7687), 16m52s (#7701) — while the timeouts are fixed absolute values that do not scale with how loaded the runner is. Vitest self-reported Duration 214.49s (... environment 152.09s) on the failing run, so most of that time is jsdom environment setup rather than test bodies.
Nothing in the frontend test setup changed in this window: vitest.config.ts, test-zone-setup.ts and angular.json have not been touched in three weeks, and the Node bump to 24.19.0 predates it. The suite has grown to 202 spec files / 4704 tests, which raises the baseline a little, but no single PR explains the shift — it reads as the margin finally being thin enough that ordinary macOS runner variance crosses it.
Proposed fix
Raise both limits in frontend/vitest.config.ts, which currently sets neither and so inherits Vitest's defaults:
testTimeout: 20000, // default 5000 — 4 of the 6 failures hit this
hookTimeout: 30000, // default 10000 — 2 of the 6 failures hit this
Both are needed; raising only hookTimeout would leave most of these failures in place. These are roughly 4x and 3x the worst observed times. The cost is that a genuinely hung test reports 15-20s later, which is negligible against a 9-17 minute leg and strictly cheaper than re-running CI and eroding the signal a red leg is supposed to carry.
Deliberately not proposed
Making the individual specs cheaper. Some are expensive on purpose — hub-search-result and search stand up their real child components to work around the coverage-attribution loss in #7458, and undoing that would revert #7627 / #7535.
Task Summary
The
build / frontend (macos-latest)leg has failed 6 times between 2026-08-14 and 2026-08-17, each time on a timeout rather than a failed assertion, and each time on a different spec. Two further runs went red with noFAILline at all (cancelled once the leg had already failed).workflow-execution-history.componentworkflow-execution-history.componentfilters.componenthub-search-result.componentfilters.component+report-generation.servicereport-generation.serviceThe most recent one (#7710, a PR that changes nothing but the
sbt/setup-sbtpin in CI workflow YAML) failed onsearch.component.spec.ts:283— 1 test out of 4704, in thebeforeEachhook, at 11273ms. The same test ran in 378ms on ubuntu in that very run, where the next-slowest macOS test was 4355ms.This is headroom, not a bad test. The failing spec is different nearly every time and it is always a timeout. The macOS leg's own wall time swings about 2x run to run — 9m17s (#7681), 9m29s (#7696), 13m18s (#7644), 13m56s (#7687), 16m52s (#7701) — while the timeouts are fixed absolute values that do not scale with how loaded the runner is. Vitest self-reported
Duration 214.49s (... environment 152.09s)on the failing run, so most of that time is jsdom environment setup rather than test bodies.Nothing in the frontend test setup changed in this window:
vitest.config.ts,test-zone-setup.tsandangular.jsonhave not been touched in three weeks, and the Node bump to 24.19.0 predates it. The suite has grown to 202 spec files / 4704 tests, which raises the baseline a little, but no single PR explains the shift — it reads as the margin finally being thin enough that ordinary macOS runner variance crosses it.Proposed fix
Raise both limits in
frontend/vitest.config.ts, which currently sets neither and so inherits Vitest's defaults:Both are needed; raising only
hookTimeoutwould leave most of these failures in place. These are roughly 4x and 3x the worst observed times. The cost is that a genuinely hung test reports 15-20s later, which is negligible against a 9-17 minute leg and strictly cheaper than re-running CI and eroding the signal a red leg is supposed to carry.Deliberately not proposed
Making the individual specs cheaper. Some are expensive on purpose —
hub-search-resultandsearchstand up their real child components to work around the coverage-attribution loss in #7458, and undoing that would revert #7627 / #7535.