fix(#553): close [birpc] rpc is closed race — sync-factory invariant + duplicate-ID guard + PR #10267 backport #555

Merged
marcel merged 13 commits from feat/issue-553-birpc-async-mock-factory into main 2026-05-13 12:55:49 +02:00
2 changed files with 12 additions and 2 deletions
Showing only changes of commit edde9292e6 - Show all commits

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
// off on `document.body` before any spec started rendering.
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');
});
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
// requests go through the same Playwright route handler that serves mocked
// modules. An in-flight prefetch landing after iframe teardown can hit the
// 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.
//
// `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.sveltekitPreloadCode = 'off';