@@ -4,19 +4,13 @@ import { playwright } from 'test-util-ipfs-example';
4
4
5
5
// Setup
6
6
const play = test . extend ( {
7
- ...playwright . servers ( [ ] , true ) ,
7
+ ...playwright . servers ( ) ,
8
8
} ) ;
9
9
10
- /**
11
- * attempt to prevent net::ERR_ABORTED error
12
- */
13
- play . setTimeout ( 120 * 1000 )
14
-
15
10
play . describe ( 'browser service worker:' , ( ) => {
16
11
// DOM
17
12
const linkDOM = "a"
18
13
const textDOM = "body"
19
- const debugDOM = "#debug"
20
14
21
15
play . beforeEach ( async ( { servers, page} ) => {
22
16
await page . goto ( `http://localhost:${ servers [ 0 ] . port } /` ) ;
@@ -27,12 +21,15 @@ play.describe('browser service worker:', () => {
27
21
page . on ( "pageerror" , ( err ) => {
28
22
console . trace ( `pageerror: ${ err . message } ` )
29
23
} )
30
- // await page.waitForSelector(textDOM)
31
- // await page.waitForSelector(linkDOM)
32
24
33
25
expect ( await page . textContent ( textDOM ) ) . toContain ( "Load content by adding IPFS path to the URL" )
34
26
expect ( await page . textContent ( linkDOM ) ) . toContain ( "/ipfs/bafy" )
35
27
28
+ /**
29
+ * Request /view path directly, as this is still handled by the service worker but doesn't break tests in github CI.
30
+ * @see https://github.com/ipfs-examples/js-ipfs-examples/blob/master/examples/browser-service-worker/src/service.js#L48-L52
31
+ * @see https://github.com/ipfs-examples/js-ipfs-examples/pull/527
32
+ */
36
33
const ipfsRequestUrl = `http://localhost:${ servers [ 0 ] . port } /view/ipfs/Qmf412jQZiuVUtdgnB36FXFX7xg5V6KEbSJ4dpQuhkLyfD`
37
34
38
35
/**
@@ -52,76 +49,19 @@ play.describe('browser service worker:', () => {
52
49
} )
53
50
} ) ) ;
54
51
} ) ;
55
- // await page.waitForSelector(`${debugDOM}:has-text("SW is ready")`, {
56
- // state: 'attached'
57
- // })
58
52
59
- context . on ( 'request' , ( request ) => {
60
- console . log ( `request.url(): ${ request . url ( ) } ` )
61
- } )
62
- context . on ( 'requestfailed' , ( request ) => {
63
- console . log ( `context.requestfailed: ${ request . url ( ) } ` )
64
- console . log ( `context.requestfailed request?.failure()?.errorText: ` , request ?. failure ( ) ?. errorText ) ;
65
- } )
66
- page . on ( 'requestfailed' , ( request ) => {
67
- console . log ( `page.requestfailed: ${ request . url ( ) } ` )
68
- console . log ( `page.requestfailed request?.failure()?.errorText: ` , request ?. failure ( ) ?. errorText ) ;
69
- } )
70
- const serviceWorkerResponsePromise = new Promise ( ( resolve , reject ) => {
53
+ const serviceWorkerResponsePromise = new Promise ( ( resolve ) => {
71
54
context . on ( 'response' , async ( response ) => {
72
- console . log ( `context.response response.url(): ${ response . url ( ) } ` )
73
55
if ( response . url ( ) === ipfsRequestUrl && response . fromServiceWorker ( ) ) {
74
56
resolve ( response ) ;
75
57
}
76
58
} )
77
59
} )
78
60
79
- // const currentURL = await page.url();
80
61
await page . goto ( ipfsRequestUrl , { waitUntil : 'commit' } ) ;
81
62
const serviceWorkerResponse = await serviceWorkerResponsePromise
82
- page . on ( 'request' , async ( request ) => {
83
- try {
84
- console . log ( `page.request request.url(): ${ request . url ( ) } ` )
85
- console . log ( `page.request (await request.response())?.status(): ${ ( await request . response ( ) ) ?. status ( ) } ` )
86
- console . log ( `page.request await (await request.response())?.text(): ${ await ( await request . response ( ) ) ?. text ( ) } ` )
87
- console . log ( `request.serviceWorker(): ` , request . serviceWorker ( ) ) ;
88
- } catch { }
89
- } ) ;
90
63
91
64
expect ( await serviceWorkerResponse . status ( ) ) . toBe ( 200 )
92
65
expect ( await serviceWorkerResponse . text ( ) ) . toContain ( "hello world" )
93
- // await page.waitForSelector('#viewer', {state: 'visible'})
94
-
95
- // const frameText2 = page.frameLocator('#viewer').locator(textDOM)
96
- // // await frameText2.waitFor({state: 'visible'})
97
-
98
- // // loop over all of the frames and log their content
99
- // const frames = await page.frames();
100
- // for (const frame of frames) {
101
- // console.log('page.frames textContent: ', await frame.textContent(textDOM));
102
- // console.log('page.frames innerText: ', await frame.innerText(textDOM));
103
- // }
104
-
105
- // expect(await frameText2.textContent()).toContain("hello world")
106
-
107
- // const elementFrame = await page.waitForSelector("iframe")
108
- // /**
109
- // * @type {import('playwright').Frame }
110
- // */
111
- // // @ts -ignore
112
- // const frame = await elementFrame.contentFrame()
113
- // if (frame == null) {
114
- // throw new Error('frame is null')
115
- // }
116
- // const frameText = await frame.textContent(textDOM)
117
-
118
- // expect(frameText).toContain("hello world")
119
66
} ) ;
120
-
121
- play . afterAll ( async ( { servers} ) => {
122
- // now stop all servers
123
- for ( const server of servers ) {
124
- await server . stop ( )
125
- }
126
- } )
127
67
} ) ;
0 commit comments