SnapOtter and GitHub
7579634633
test: fix 2.0 integration CI -- 202 async fallback + timeout hardening
...
Fixes all integration CI failures on the 2.0 branch.
## What was broken
Two independent root causes:
1. **202 assertion failures** -- Under 4-fork CI parallel load, the 30s
`SYNC_WAIT_MS` sync window can expire before a BullMQ worker finishes a
heavy encode (avif, heic), returning a legitimate `202 {jobId, async: true}`
instead of `200`. Tests that hard-asserted `200` were spuriously failing.
2. **Vitest timeout race** -- `SYNC_WAIT_MS` (30s) and the default Vitest
`testTimeout` (also 30s) fired simultaneously. Vitest won the race,
reporting "Test timed out in 30000ms" instead of the test receiving the
202 response.
## Fixes
- Added `isAsyncFallback()` helper to four integration test files; validates
the `{async: true, jobId}` body shape and returns early so the synchronous
200 path runs full assertions only when warranted.
- Set `vi.setConfig({ testTimeout: 60_000 })` at module level in
`image-enhancement.test.ts` and `format-matrix-comprehensive.test.ts`,
giving a 30s buffer between when `waitForJob()` returns 202 and when
Vitest gives up.
- Bumped explicit matrix timeouts in `format-matrix.test.ts` and
`new-formats.test.ts` from 30s to 60s for the same reason.
- Installed missing CI doc-engine binaries (qpdf, pandoc, libreoffice,
pdfcpu) that were causing unrelated integration failures.
- Fixed E2E smoke specs for 2.0 UI changes (modality selector, tool routes,
validation behavior).
2026-06-19 18:15:20 +08:00
..
2026-05-12 23:19:20 +08:00
2026-06-13 10:18:49 +08:00
2026-06-17 15:54:48 +08:00
2026-06-06 19:37:29 +08:00
2026-05-12 23:19:20 +08:00
2026-05-15 21:35:02 +08:00
2026-06-13 10:18:49 +08:00
2026-05-13 15:47:28 +08:00
2026-04-29 23:47:19 +08:00
2026-06-13 10:15:23 +08:00
2026-06-13 10:15:23 +08:00
2026-06-13 10:15:23 +08:00
2026-06-17 15:54:48 +08:00
2026-06-13 10:19:00 +08:00
2026-06-13 10:19:06 +08:00
2026-06-13 10:19:06 +08:00
2026-06-13 10:19:06 +08:00
2026-06-14 16:50:35 +08:00
2026-04-22 18:10:04 +08:00
2026-06-13 10:15:23 +08:00
2026-06-14 14:53:44 +08:00
2026-06-13 10:15:23 +08:00
2026-06-13 10:19:47 +08:00
2026-06-16 15:16:13 +08:00
2026-06-13 10:19:16 +08:00
2026-06-06 19:37:29 +08:00
2026-06-17 14:39:34 +08:00
2026-06-06 19:37:29 +08:00
2026-06-16 15:16:13 +08:00
2026-05-01 19:51:47 +08:00
2026-06-13 10:19:00 +08:00
2026-06-13 10:18:55 +08:00
2026-06-17 15:54:48 +08:00
2026-06-06 19:37:29 +08:00
2026-06-13 10:19:00 +08:00
2026-06-16 15:16:13 +08:00
2026-06-13 10:19:16 +08:00
2026-06-16 15:16:13 +08:00
2026-06-13 10:17:13 +08:00
2026-06-06 19:37:29 +08:00
2026-06-17 15:54:48 +08:00
2026-06-06 19:37:29 +08:00
2026-06-16 15:16:13 +08:00
2026-05-01 19:51:47 +08:00
2026-06-06 19:37:29 +08:00
2026-06-06 19:37:29 +08:00
2026-06-16 15:16:13 +08:00
2026-06-13 10:18:49 +08:00
2026-05-11 17:33:51 +08:00
2026-04-26 12:03:08 +08:00
2026-06-14 16:50:35 +08:00
2026-05-01 19:51:47 +08:00
2026-06-13 10:18:49 +08:00
2026-06-13 10:19:11 +08:00
2026-06-13 10:19:16 +08:00
2026-06-13 10:19:11 +08:00
2026-06-13 10:19:11 +08:00
2026-06-13 10:18:49 +08:00
2026-06-17 15:54:48 +08:00
2026-06-13 10:18:55 +08:00
2026-06-13 10:19:00 +08:00
2026-06-17 15:54:48 +08:00
2026-06-13 10:19:11 +08:00
2026-06-13 10:19:11 +08:00
2026-06-13 10:15:23 +08:00
2026-06-13 10:15:23 +08:00
2026-06-13 10:18:55 +08:00
2026-06-13 10:18:55 +08:00
2026-06-13 10:18:39 +08:00
2026-06-13 10:18:55 +08:00
2026-04-24 18:06:29 +08:00
2026-06-13 10:17:13 +08:00
2026-06-16 15:16:13 +08:00
2026-06-17 15:54:48 +08:00
2026-05-01 19:51:47 +08:00
2026-06-13 10:19:00 +08:00
2026-05-01 19:51:47 +08:00
2026-06-17 14:28:41 +08:00
2026-05-13 13:45:08 +08:00
2026-06-13 10:15:23 +08:00
2026-06-13 10:19:11 +08:00
2026-06-13 10:18:49 +08:00
2026-06-13 10:18:55 +08:00
2026-06-13 10:19:00 +08:00
2026-06-17 15:54:48 +08:00
2026-06-17 15:54:48 +08:00
2026-06-13 10:19:06 +08:00
2026-06-16 15:16:13 +08:00
2026-06-13 16:32:45 +08:00
2026-06-17 15:54:48 +08:00
2026-06-06 19:37:29 +08:00
2026-06-13 10:18:55 +08:00
2026-05-15 21:35:02 +08:00
2026-06-19 18:15:20 +08:00
2026-06-06 19:37:29 +08:00
2026-05-18 18:16:07 +08:00
2026-06-13 10:19:16 +08:00
2026-06-13 12:59:45 +08:00
2026-06-19 18:15:20 +08:00
2026-06-10 22:01:13 +08:00
2026-06-14 16:50:35 +08:00
2026-06-13 10:19:00 +08:00
2026-06-06 19:37:29 +08:00
2026-06-16 15:16:13 +08:00
2026-06-13 10:18:55 +08:00
2026-06-16 15:16:13 +08:00
2026-06-10 22:01:13 +08:00
2026-06-06 21:45:39 +08:00
2026-06-13 10:18:55 +08:00
2026-06-19 18:15:20 +08:00
2026-06-16 15:16:13 +08:00
2026-06-06 19:37:29 +08:00
2026-06-06 19:37:29 +08:00
2026-06-13 10:19:00 +08:00
2026-05-09 18:02:58 +08:00
2026-06-14 16:50:35 +08:00
2026-06-13 10:17:13 +08:00
2026-06-13 10:17:13 +08:00
2026-06-13 10:18:49 +08:00
2026-06-14 16:50:35 +08:00
2026-06-13 10:18:55 +08:00
2026-06-16 15:16:13 +08:00
2026-06-13 10:19:11 +08:00
2026-06-13 10:19:11 +08:00
2026-06-13 10:18:55 +08:00
2026-06-13 10:18:39 +08:00
2026-06-06 19:37:29 +08:00
2026-06-13 10:19:06 +08:00
2026-06-17 15:54:48 +08:00
2026-06-13 10:18:49 +08:00
2026-06-13 10:19:00 +08:00
2026-06-14 16:50:35 +08:00
2026-06-13 10:17:13 +08:00
2026-06-13 10:18:55 +08:00
2026-06-13 10:19:00 +08:00
2026-06-13 10:18:49 +08:00
2026-06-19 18:15:20 +08:00
2026-06-13 10:19:06 +08:00
2026-05-01 19:51:47 +08:00
2026-06-13 10:19:06 +08:00
2026-06-13 10:18:55 +08:00
2026-06-13 10:17:13 +08:00
2026-06-13 10:19:47 +08:00
2026-05-01 19:51:47 +08:00
2026-06-13 10:15:23 +08:00
2026-05-09 18:02:58 +08:00
2026-06-13 10:18:55 +08:00
2026-06-13 10:15:23 +08:00
2026-05-01 19:51:47 +08:00
2026-06-13 10:18:55 +08:00
2026-06-13 10:18:55 +08:00
2026-04-26 12:03:08 +08:00
2026-06-13 10:18:55 +08:00
2026-06-13 10:18:55 +08:00
2026-06-13 10:18:55 +08:00
2026-06-13 10:15:23 +08:00
2026-06-17 14:28:41 +08:00
2026-06-13 10:19:06 +08:00
2026-06-16 15:16:13 +08:00
2026-06-17 15:54:48 +08:00
2026-06-13 10:19:11 +08:00
2026-06-13 10:18:39 +08:00
2026-06-13 10:18:39 +08:00
2026-06-13 10:17:13 +08:00
2026-06-13 10:17:13 +08:00
2026-06-13 10:18:55 +08:00
2026-06-13 10:19:16 +08:00
2026-06-13 10:15:23 +08:00
2026-06-13 10:15:23 +08:00
2026-05-01 19:51:47 +08:00
2026-06-13 10:18:55 +08:00
2026-06-05 23:05:25 +08:00
2026-06-13 10:18:55 +08:00
2026-06-13 10:18:55 +08:00
2026-06-13 10:19:00 +08:00
2026-06-06 19:37:29 +08:00
2026-06-13 10:19:00 +08:00
2026-06-17 15:54:48 +08:00
2026-05-13 16:59:13 +08:00
2026-06-13 10:19:06 +08:00
2026-06-13 10:19:00 +08:00
2026-06-13 10:19:06 +08:00
2026-06-13 10:18:49 +08:00
2026-06-13 10:19:00 +08:00
2026-06-17 15:54:48 +08:00
2026-06-13 10:15:23 +08:00
2026-06-14 16:50:35 +08:00
2026-06-13 10:15:23 +08:00
2026-06-13 10:15:23 +08:00
2026-06-13 12:59:45 +08:00
2026-06-10 22:01:13 +08:00
2026-05-09 09:02:29 +08:00
2026-06-06 19:37:29 +08:00
2026-06-14 16:50:35 +08:00
2026-06-14 14:53:44 +08:00
2026-06-13 10:19:06 +08:00
2026-06-17 15:54:48 +08:00
2026-06-13 10:19:06 +08:00
2026-06-13 10:19:11 +08:00
2026-06-13 10:18:49 +08:00
2026-06-06 19:37:29 +08:00
2026-06-16 15:16:13 +08:00
2026-06-13 10:19:00 +08:00
2026-06-06 19:37:29 +08:00
2026-05-09 09:02:29 +08:00
2026-06-13 10:17:13 +08:00
2026-06-06 19:37:29 +08:00
2026-06-13 10:17:13 +08:00
2026-06-13 10:15:23 +08:00
2026-06-14 14:30:35 +08:00
2026-06-06 19:37:29 +08:00
2026-06-17 14:28:41 +08:00
2026-06-13 10:17:13 +08:00
2026-06-13 10:19:47 +08:00
2026-06-15 12:53:06 +08:00
2026-06-13 10:19:47 +08:00
2026-06-06 19:37:29 +08:00
2026-06-13 10:18:49 +08:00
2026-06-13 10:18:49 +08:00
2026-06-13 10:18:55 +08:00
2026-06-14 16:50:35 +08:00
2026-05-01 19:51:47 +08:00
2026-06-13 10:17:13 +08:00
2026-05-09 09:02:29 +08:00
2026-05-09 18:02:58 +08:00
2026-06-13 10:19:00 +08:00
2026-06-13 10:19:00 +08:00
2026-06-13 10:19:00 +08:00
2026-06-13 10:19:00 +08:00
2026-06-13 10:19:00 +08:00
2026-06-13 10:18:49 +08:00
2026-06-13 10:19:00 +08:00
2026-06-16 15:16:13 +08:00
2026-06-13 10:19:06 +08:00
2026-06-06 19:37:29 +08:00
2026-06-13 10:18:55 +08:00
2026-06-06 19:37:29 +08:00
2026-06-13 10:19:00 +08:00
2026-06-13 10:19:06 +08:00
2026-06-14 16:50:35 +08:00
2026-06-13 10:18:49 +08:00
2026-06-13 10:17:13 +08:00
2026-06-17 15:54:48 +08:00
2026-06-13 10:19:11 +08:00