Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions packages/playwright-core/browsers.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@
},
{
"name": "firefox",
"revision": "1384",
"revision": "1387",
"installByDefault": true,
"browserVersion": "109.0"
},
{
"name": "firefox-beta",
"revision": "1386",
"revision": "1389",
"installByDefault": false,
"browserVersion": "110.0b7"
},
Expand Down
15 changes: 1 addition & 14 deletions packages/playwright-core/src/server/firefox/ffPage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -393,20 +393,7 @@ export class FFPage implements PageDelegate {
}

async reload(): Promise<void> {
const mainFrame = this._page._frameManager.mainFrame();
// This is a workaround for https://github.com/microsoft/playwright/issues/21145
let hash = '';
try {
hash = (new URL(mainFrame.url())).hash;
} catch (e) {
// Ignore URL parsing error, if any.
}
if (hash.length) {
const context = await mainFrame._utilityContext();
await context.rawEvaluateJSON(`void window.location.reload();`);
} else {
await this._session.send('Page.reload');
}
await this._session.send('Page.reload');
}

async goBack(): Promise<boolean> {
Expand Down
6 changes: 3 additions & 3 deletions tests/page/frame-goto.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ it('should navigate subframes @smoke', async ({ page, server }) => {
it('should reject when frame detaches', async ({ page, server, browserName }) => {
await page.goto(server.PREFIX + '/frames/one-frame.html');

server.setRoute('/empty.html', () => {});
const navigationPromise = page.frames()[1].goto(server.EMPTY_PAGE).catch(e => e);
await server.waitForRequest('/empty.html');
server.setRoute('/one-style.css', () => {});
const navigationPromise = page.frames()[1].goto(server.PREFIX + '/one-style.html').catch(e => e);
await server.waitForRequest('/one-style.css');

await page.$eval('iframe', frame => frame.remove());
const error = await navigationPromise;
Expand Down
3 changes: 1 addition & 2 deletions tests/page/page-evaluate.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -703,9 +703,8 @@ it('should work with overridden globalThis.Window/Document/Node', async ({ page,
}
});

it('should work with overridden URL/Date/RegExp', async ({ page, server, browserName }) => {
it('should work with overridden URL/Date/RegExp', async ({ page, server }) => {
it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/21109' });
it.fixme(browserName === 'firefox');
const testCases = [
// @ts-ignore
() => globalThis.URL = 'foo',
Expand Down
3 changes: 1 addition & 2 deletions tests/page/page-history.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -192,9 +192,8 @@ it('page.reload should work on a page with a hash', async ({ page, server }) =>
await expect(page).toHaveURL(server.EMPTY_PAGE + '#hash');
});

it('page.reload should work on a page with a hash at the end', async ({ page, server, browserName }) => {
it('page.reload should work on a page with a hash at the end', async ({ page, server }) => {
it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/21430' });
it.fixme(browserName === 'firefox');
await page.goto(server.EMPTY_PAGE + '#');
await page.reload();
await expect(page).toHaveURL(server.EMPTY_PAGE + '#');
Expand Down
5 changes: 3 additions & 2 deletions tests/page/page-wait-for-navigation.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -250,11 +250,12 @@ it('should fail when frame detaches', async ({ page, server }) => {
await page.goto(server.PREFIX + '/frames/one-frame.html');
const frame = page.frames()[1];
server.setRoute('/empty.html', () => {});
server.setRoute('/one-style.css', () => {});
const [error] = await Promise.all([
frame.waitForNavigation().catch(e => e),
page.$eval('iframe', frame => { frame.contentWindow.location.href = '/empty.html'; }),
page.$eval('iframe', frame => { frame.contentWindow.location.href = '/one-style.html'; }),
// Make sure policy checks pass and navigation actually begins before removing the frame to avoid other errors
server.waitForRequest('/empty.html').then(() => page.$eval('iframe', frame => setTimeout(() => frame.remove(), 0)))
server.waitForRequest('/one-style.css').then(() => page.$eval('iframe', frame => setTimeout(() => frame.remove(), 0)))
]);
expect(error.message).toContain('waiting for navigation until "load"');
expect(error.message).toContain('frame was detached');
Expand Down