test(setup): also disable data-sveltekit-preload-code in browser tests
Some checks failed
CI / Backend Unit Tests (push) Successful in 4m17s
CI / fail2ban Regex (push) Successful in 39s
CI / Compose Bucket Idempotency (push) Failing after 11s
CI / Unit & Component Tests (push) Failing after 2m31s
CI / OCR Service Tests (push) Successful in 17s

Hover-prefetch has two surfaces in SvelteKit:
- data-sveltekit-preload-data (route loader data)
- data-sveltekit-preload-code (route JS chunks)

The original fix turned off only the loader-data side. Route-code chunks
prefetched on hover can also include manually-mocked module URLs; an
in-flight code prefetch landing after iframe teardown hits the same
Playwright route handler that resolves manual mocks, raising the
unhandled rejection. Disable both surfaces.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-05-12 22:32:03 +02:00
parent addf5c98db
commit edde9292e6
2 changed files with 12 additions and 2 deletions

View File

@@ -10,7 +10,11 @@ import { describe, it, expect } from 'vitest';
// This test enforces that the test-setup file ran and switched preload-data // This test enforces that the test-setup file ran and switched preload-data
// off on `document.body` before any spec started rendering. // off on `document.body` before any spec started rendering.
describe('browser test setup', () => { describe('browser test setup', () => {
it('disables SvelteKit hover prefetch on document.body', () => { it('disables SvelteKit loader-data prefetch on document.body', () => {
expect(document.body.dataset.sveltekitPreloadData).toBe('off'); expect(document.body.dataset.sveltekitPreloadData).toBe('off');
}); });
it('disables SvelteKit route-code prefetch on document.body', () => {
expect(document.body.dataset.sveltekitPreloadCode).toBe('off');
});
}); });

View File

@@ -1,8 +1,14 @@
// Disable SvelteKit hover-prefetch in browser-mode tests. ADR-012 / #553. // Disable SvelteKit hover-prefetch (both data + code) in browser-mode tests.
// ADR-012 / #553.
// //
// Hover-prefetch fires real fetch requests for route loader chunks; those // Hover-prefetch fires real fetch requests for route loader chunks; those
// requests go through the same Playwright route handler that serves mocked // requests go through the same Playwright route handler that serves mocked
// modules. An in-flight prefetch landing after iframe teardown can hit the // modules. An in-flight prefetch landing after iframe teardown can hit the
// route handler with a closed birpc channel, raising an unhandled rejection // route handler with a closed birpc channel, raising an unhandled rejection
// that exits the run with code 1 even when every individual test was green. // that exits the run with code 1 even when every individual test was green.
//
// `data-sveltekit-preload-data="off"` disables loader-data prefetch;
// `data-sveltekit-preload-code="off"` disables route-code chunk prefetch.
// Both surfaces can produce late module fetches that hit the route handler.
document.body.dataset.sveltekitPreloadData = 'off'; document.body.dataset.sveltekitPreloadData = 'off';
document.body.dataset.sveltekitPreloadCode = 'off';