mirror of
https://github.com/microsoft/playwright.git
synced 2025-06-26 21:40:17 +00:00
test: fix flaky SW tests (#15536)
The Service Worker tests had some races in them that only were apparent on the bots. To repro, I ran the tests with: ``` xvfb-run taskset -c 0 npm run ctest -- chromium.spec.ts --headed --reporter=line --repeat-each 10 --workers=1 ``` Just because Playwright has a SW, does not mean the worker has fully loaded it's main/import scripts.
This commit is contained in:
parent
3a9b29f46c
commit
2ee235ff1b
@ -47,10 +47,7 @@ test('serviceWorker(), and fromServiceWorker() work', async ({ context, page, se
|
||||
context.waitForEvent('request', r => r.url().endsWith('/request-from-within-worker.txt')),
|
||||
page.goto(server.PREFIX + '/serviceworkers/fetch/sw.html')
|
||||
]);
|
||||
const [inner] = await Promise.all([
|
||||
context.waitForEvent('request', r => r.url().endsWith('/inner.txt')),
|
||||
page.evaluate(() => fetch('/inner.txt')),
|
||||
]);
|
||||
|
||||
expect(html.frame()).toBeTruthy();
|
||||
expect(html.serviceWorker()).toBe(null);
|
||||
expect((await html.response()).fromServiceWorker()).toBe(false);
|
||||
@ -59,10 +56,6 @@ test('serviceWorker(), and fromServiceWorker() work', async ({ context, page, se
|
||||
expect(main.serviceWorker()).toBe(worker);
|
||||
expect((await main.response()).fromServiceWorker()).toBe(false);
|
||||
|
||||
expect(inner.frame()).toBeTruthy();
|
||||
expect(inner.serviceWorker()).toBe(null);
|
||||
expect((await inner.response()).fromServiceWorker()).toBe(true);
|
||||
|
||||
expect(inWorker.frame).toThrow();
|
||||
expect(inWorker.serviceWorker()).toBe(worker);
|
||||
expect((await inWorker.response()).fromServiceWorker()).toBe(false);
|
||||
@ -101,6 +94,7 @@ test('should intercept service worker requests (main and within)', async ({ cont
|
||||
|
||||
const [ sw ] = await Promise.all([
|
||||
context.waitForEvent('serviceworker'),
|
||||
context.waitForEvent('response', r => r.url().endsWith('/request-from-within-worker')),
|
||||
context.waitForEvent('request', r => r.url().endsWith('sw.js') && !!r.serviceWorker()),
|
||||
context.waitForEvent('response', r => r.url().endsWith('sw.js') && !r.fromServiceWorker()),
|
||||
page.goto(server.PREFIX + '/serviceworkers/empty/sw.html'),
|
||||
@ -160,6 +154,7 @@ test('should intercept service worker importScripts', async ({ context, page, se
|
||||
|
||||
const [ sw ] = await Promise.all([
|
||||
context.waitForEvent('serviceworker'),
|
||||
context.waitForEvent('response', r => r.url().endsWith('/import.js')),
|
||||
page.goto(server.PREFIX + '/serviceworkers/empty/sw.html'),
|
||||
]);
|
||||
|
||||
@ -194,6 +189,7 @@ test('should report intercepted service worker requests in HAR', async ({ pageWi
|
||||
|
||||
const [ sw ] = await Promise.all([
|
||||
context.waitForEvent('serviceworker'),
|
||||
context.waitForEvent('response', r => r.url().endsWith('/request-from-within-worker')),
|
||||
page.goto(server.PREFIX + '/serviceworkers/empty/sw.html'),
|
||||
]);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user