commit 921043fa26c46e2d2bc816c3d1081277ab695c5c
parent 9b0f8b17988c60dc0fe05d822d856789f8d3922b
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date: Thu, 1 Oct 2026 21:53:43 -0400
editor(e2e): the report's own refresh-report job is not the bulk delete's; dashboard-answers warms the ops route first
generateReport now queues a refresh-report job (D0 review L3), which /jobs may
draw before its default filter hides it; bulk-actions' "queues no job" check
leaves it out. dashboard-answers compiles the ops refresh-report route (a 400 on
an empty body) before it measures: under load its first compile held / for 15 s.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Diffstat:
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/editor/e2e/bulk-actions.spec.ts b/editor/e2e/bulk-actions.spec.ts
@@ -165,9 +165,15 @@ test("Select failed + Delete directories removes the dirs and queues no job", as
await expect(page.getByLabel("select vidB")).toBeVisible();
// Crucially: NO managed job was queued (no transcode/download triggered).
+ // The report generateReport asked for is a refresh-report job of its own
+ // (release 17: every report walk runs on the refresh-report queue), and
+ // /jobs may draw it before its default filter hides it — not this action's.
await page.goto("/jobs");
await expect(
- page.getByRole("row").filter({ hasText: "test-transcribe" }),
+ page
+ .getByRole("row")
+ .filter({ hasText: "test-transcribe" })
+ .filter({ hasNotText: "refresh-report" }),
).toHaveCount(0);
});
diff --git a/editor/e2e/dashboard-answers.spec.ts b/editor/e2e/dashboard-answers.spec.ts
@@ -134,6 +134,16 @@ test("/ and /jobs answer while two large reports regenerate, one after the other
for (const path of ["/", "/jobs"]) {
expect((await timedGet(request, path)).status).toBe(200);
}
+ // And the ops route that starts the regeneration: its first request compiles
+ // it, which under load held `/` for 15 s in one full-suite run — a dev
+ // server's compile, not a walk. A body naming neither form is refused (400)
+ // after the route has loaded, and starts nothing.
+ const warm = await request.post(`${baseUrl}/api/ops/refresh-report`, {
+ headers: OPS_AUTH,
+ data: {},
+ timeout: 120_000,
+ });
+ expect(warm.status()).toBe(400);
const idle: Sample[] = [];
for (let i = 0; i < 3; i++) {
for (const path of ["/", "/jobs"]) idle.push(await timedGet(request, path));