Skip to content
This repository was archived by the owner on Jan 12, 2024. It is now read-only.

Commit dc292fc

Browse files
committed
debugging
remove waitForSelectors and ensure service worker response is done before checking for text
1 parent d80d264 commit dc292fc

File tree

1 file changed

+39
-9
lines changed
  • examples/browser-service-worker/tests

1 file changed

+39
-9
lines changed

examples/browser-service-worker/tests/test.js

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,28 +22,58 @@ play.describe('browser service worker:', () => {
2222
page.on("pageerror", (err) => {
2323
console.trace(`pageerror: ${err.message}`)
2424
})
25-
await page.waitForSelector(textDOM)
26-
await page.waitForSelector(linkDOM)
25+
// await page.waitForSelector(textDOM)
26+
// await page.waitForSelector(linkDOM)
2727

2828
expect(await page.textContent(textDOM)).toContain("Load content by adding IPFS path to the URL")
2929
expect(await page.textContent(linkDOM)).toContain("/ipfs/bafy")
3030

31-
await page.waitForSelector(`${debugDOM}:has-text("SW is ready")`, {
32-
state: 'attached'
33-
})
31+
const ipfsRequestUrl = `http://localhost:${servers[0].port}/ipfs/Qmf412jQZiuVUtdgnB36FXFX7xg5V6KEbSJ4dpQuhkLyfD`
3432

33+
/**
34+
* Wait for the service worker to be ready
35+
* @see https://playwright.dev/docs/service-workers-experimental#accessing-service-workers-and-waiting-for-activation
36+
*/
3537
await page.evaluate(async () => {
3638
const registration = await window.navigator.serviceWorker.getRegistration();
37-
console.log(`registration?.active?.state: `, registration?.active?.state);
3839
if (registration?.active?.state === 'activated') {
40+
console.log('Service worker is already activated')
3941
return;
4042
}
41-
await new Promise(res => window.navigator.serviceWorker.addEventListener('controllerchange', res));
43+
await /** @type {Promise<void>} */(new Promise(res => {
44+
window.navigator.serviceWorker.addEventListener('controllerchange', () => {
45+
console.log('Service worker is activated')
46+
res()
47+
})
48+
}));
4249
});
50+
// await page.waitForSelector(`${debugDOM}:has-text("SW is ready")`, {
51+
// state: 'attached'
52+
// })
53+
54+
context.on('request', (request) => {
55+
console.log(`request.url(): ${request.url()}`)
56+
})
57+
context.on('requestfailed', (request) => {
58+
console.log(`requestfailed: ${request.url()}`)
59+
})
60+
const serviceWorkerResponsePromise = new Promise((resolve, reject) => {
61+
context.on('response', (response) => {
62+
console.log(`response.url(): ${response.url()}`)
63+
if (response.url() === ipfsRequestUrl && response.fromServiceWorker()) {
64+
resolve(response);
65+
}
66+
})
67+
})
68+
context.on('response', (response) => {
69+
console.log(`response.url(): ${response.url()}`)
70+
console.log(`response.fromServiceWorker(): `, response.fromServiceWorker());
71+
})
4372

4473
// const currentURL = await page.url();
45-
await page.goto(`http://localhost:${servers[0].port}/ipfs/Qmf412jQZiuVUtdgnB36FXFX7xg5V6KEbSJ4dpQuhkLyfD`, {waitUntil: 'commit'});
46-
await page.waitForSelector('#viewer', {state: 'visible'})
74+
await page.goto(ipfsRequestUrl, {waitUntil: 'commit'});
75+
await serviceWorkerResponsePromise
76+
// await page.waitForSelector('#viewer', {state: 'visible'})
4777

4878
const frameText2 = page.frameLocator('#viewer').locator(textDOM)
4979
await frameText2.waitFor({state: 'visible'})

0 commit comments

Comments
 (0)