diff --git a/packages/playwright-core/src/server/firefox/ffPage.ts b/packages/playwright-core/src/server/firefox/ffPage.ts index 47be1684d6536..aca021902d573 100644 --- a/packages/playwright-core/src/server/firefox/ffPage.ts +++ b/packages/playwright-core/src/server/firefox/ffPage.ts @@ -393,7 +393,7 @@ export class FFPage implements PageDelegate { } async reload(): Promise { - await this._session.send('Page.reload'); + await this._page._frameManager.mainFrame().softReload(); } async goBack(): Promise { diff --git a/packages/playwright-core/src/server/frames.ts b/packages/playwright-core/src/server/frames.ts index 4a75699c6b3da..528563b544189 100644 --- a/packages/playwright-core/src/server/frames.ts +++ b/packages/playwright-core/src/server/frames.ts @@ -1512,6 +1512,12 @@ export class Frame extends SdkObject { return context.evaluate(() => document.title); } + // This is a workaround for https://github.com/microsoft/playwright/issues/21145 + async softReload(): Promise { + const context = await this._utilityContext(); + await context.evaluate(() => window.location.reload()); + } + async rafrafTimeout(timeout: number): Promise { if (timeout === 0) return; diff --git a/tests/page/page-history.spec.ts b/tests/page/page-history.spec.ts index b5083fe0a6efe..f0c3ddbf86de3 100644 --- a/tests/page/page-history.spec.ts +++ b/tests/page/page-history.spec.ts @@ -187,7 +187,6 @@ it('page.reload should work with cross-origin redirect', async ({ page, server, it('page.reload should work on a page with a hash', async ({ page, server, browserName }) => { it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/21145' }); - it.fixme(browserName === 'firefox'); await page.goto(server.EMPTY_PAGE + '#hash'); await page.reload(); await expect(page).toHaveURL(server.EMPTY_PAGE + '#hash'); @@ -237,8 +236,9 @@ it('page.goForward during renderer-initiated navigation', async ({ page, server await page.waitForSelector('text=hello'); }); -it('regression test for issue 20791', async ({ page, server }) => { +it('regression test for issue 20791', async ({ page, server, browserName }) => { it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/20791' }); + it.fixme(browserName === 'firefox'); server.setRoute('/iframe.html', (req, res) => { res.writeHead(200, { 'content-type': 'text/html; charset=utf-8' }); // iframe access parent frame to log a value from it.