diff --git a/tests/assets/window-stop.html b/tests/assets/window-stop.html new file mode 100644 index 0000000000..5a79328f19 --- /dev/null +++ b/tests/assets/window-stop.html @@ -0,0 +1,4 @@ + + diff --git a/tests/page/page-goto.spec.ts b/tests/page/page-goto.spec.ts index 4d71d7e305..d5a4fee6e7 100644 --- a/tests/page/page-goto.spec.ts +++ b/tests/page/page-goto.spec.ts @@ -629,6 +629,25 @@ it('should properly wait for load', async ({ page, server, browserName }) => { ]); }); +it('should properly report window.stop()', async ({ page, server, browserName }) => { + server.setRoute('/module.js', async (req, res) => void 0); + await page.goto(server.PREFIX + '/window-stop.html'); +}); + +it('should return from goto if new navigation is started', async ({ page, server, browserName }) => { + it.fixme(browserName === 'webkit', 'WebKit has a bug where Page.frameStoppedLoading is sent too early.'); + server.setRoute('/slow.js', async (req, res) => void 0); + let finished = false; + const navigation = page.goto(server.PREFIX + '/load-event/load-event.html').then(r => { + finished = true; + return r; + }); + await new Promise(r => setTimeout(r, 500)); + expect(finished).toBeFalsy(); + await page.goto(server.EMPTY_PAGE); + expect((await navigation).status()).toBe(200); +}); + it('should return when navigation is committed if commit is specified', async ({ page, server }) => { server.setRoute('/empty.html', (req, res) => { res.writeHead(200, {