Skip to content

e2e: Close pages before disabling MSW#13531

Draft
Turbo87 wants to merge 1 commit intorust-lang:mainfrom
Turbo87:msw-teardown-leak
Draft

e2e: Close pages before disabling MSW#13531
Turbo87 wants to merge 1 commit intorust-lang:mainfrom
Turbo87:msw-teardown-leak

Conversation

@Turbo87
Copy link
Copy Markdown
Member

@Turbo87 Turbo87 commented Apr 30, 2026

Without this, requests still in flight (or fired by late-running hydration code) bypass the mocks once worker.disable() removes the interception and hit the real network instead, surfacing as [404] log lines from the SvelteKit vite preview web server.

Without this, requests still in flight (or fired by late-running
hydration code) bypass the mocks once `worker.disable()` removes the
interception and hit the real network instead, surfacing as
`[404]` log lines from the SvelteKit `vite preview` web server.
@Turbo87
Copy link
Copy Markdown
Member Author

Turbo87 commented Apr 30, 2026

@kettanaito is this something that should be mentioned in the MSW docs? (or maybe it already is, in that case apologies for the ping 😅)

@kettanaito
Copy link
Copy Markdown

Hi, @Turbo87. We've already addressed that and the proper fix is coming in 3.0 as that requires a breaking change both in the worker.stop() API and the worker script.

In fact, could you please give this branch a try and see if your change is still necessary with it? Thanks.

@Turbo87
Copy link
Copy Markdown
Member Author

Turbo87 commented Apr 30, 2026

could you please give this branch a try and see if your change is still necessary with it?

I tried the beta from pkg.pr.new/msw@2692 against our full test suite, but it looks like the leaks are still there.

We are using @msw/playwright in this case, instead of the raw msw, so maybe that is the reason for this not fixing the issue?

Our local fix is to close all context pages before calling worker.disable() in the fixture, which prevents Playwright's Fetch.disable from racing with late requests.

@Turbo87
Copy link
Copy Markdown
Member Author

Turbo87 commented Apr 30, 2026

damn... the change in the PR worked perfectly locally, but I've rebased #13373 on top of it and CI still shows leaked requests 😵‍💫

@Turbo87 Turbo87 marked this pull request as draft April 30, 2026 15:09
@Turbo87
Copy link
Copy Markdown
Member Author

Turbo87 commented Apr 30, 2026

interestingly, removing the network.disable() (or in our case worker.disable()) seems to fix it on CI 🤔

... but locally it still shows the occasional leak 😵‍💫

@kettanaito
Copy link
Copy Markdown

We are in the process of updating @msw/playwright to use the new architecture so understandably the issue will still be reproducible there. It will take some time to that binding to adopt 3.0.

@Turbo87
Copy link
Copy Markdown
Member Author

Turbo87 commented May 1, 2026

yeah, no worries. it's not breaking anything here, just unintentionally leaking requests to the dev server. feel free to ping me once @msw/playwright is ready for testing :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants