From 94cd98409ee21a7a2ab05820d57125ff2f1e8f2f Mon Sep 17 00:00:00 2001 From: Diego Aquino Date: Sun, 8 Mar 2026 10:46:16 -0300 Subject: [PATCH] test(in-flight): add flaky in-flight request tests This adds two temporary test cases to help us investigate requests still being handled by workers after they are stopped. Related to https://github.com/mswjs/msw/issues/2597. --- .../stop/in-flight-request.test.ts | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/test/browser/msw-api/setup-worker/stop/in-flight-request.test.ts b/test/browser/msw-api/setup-worker/stop/in-flight-request.test.ts index 22eb4dd5c..fa8f46ce2 100644 --- a/test/browser/msw-api/setup-worker/stop/in-flight-request.test.ts +++ b/test/browser/msw-api/setup-worker/stop/in-flight-request.test.ts @@ -58,3 +58,45 @@ test('bypasses requests made after the worker was stopped', async ({ expect(data).toBe('original response') }) + +// Note: Let's temporarily repeat this test to make it more likely to identify flakyness. +// This is not a definitive test case. +for (let testNumber = 1; testNumber <= 50; testNumber++) { + test(`bypasses requests not immediately made after the worker was stopped, considering no default response (${testNumber})`, async ({ + loadExample, + page, + }) => { + await loadExample(new URL('./in-flight-request.mocks.ts', import.meta.url)) + + // Stop worker and make request in different `page.evaluate` calls. + await page.evaluate(async () => { + window.msw.worker.stop() + }) + + const data = await page.evaluate(async () => { + return fetch('/resource').then((response) => response.text()) + }) + + expect(data).toContain('Cannot GET /resource') + }) +} + +// Note: Let's temporarily repeat this test to make it more likely to identify flakyness. +// This is not a definitive test case. +for (let testNumber = 1; testNumber <= 50; testNumber++) { + test(`bypasses requests immediately made after the worker was stopped, considering no default response (${testNumber})`, async ({ + loadExample, + page, + }) => { + await loadExample(new URL('./in-flight-request.mocks.ts', import.meta.url)) + + // Stop worker and make request in the same `page.evaluate` call. + const data = await page.evaluate(async () => { + window.msw.worker.stop() + + return fetch('/resource').then((response) => response.text()) + }) + + expect(data).toContain('Cannot GET /resource') + }) +}