diff --git a/src/chromium/crPage.ts b/src/chromium/crPage.ts index 3bd003bd45..8042e39e2c 100644 --- a/src/chromium/crPage.ts +++ b/src/chromium/crPage.ts @@ -500,7 +500,7 @@ class FrameSession { } _onFrameNavigated(framePayload: Protocol.Page.Frame, initial: boolean) { - this._page._frameManager.frameCommittedNewDocumentNavigation(framePayload.id, framePayload.url, framePayload.name || '', framePayload.loaderId, initial); + this._page._frameManager.frameCommittedNewDocumentNavigation(framePayload.id, framePayload.url + (framePayload.urlFragment || ''), framePayload.name || '', framePayload.loaderId, initial); if (!initial) this._firstNonInitialNavigationCommittedFulfill(); } diff --git a/test/page.spec.js b/test/page.spec.js index ee2fcefd64..b90585f7c5 100644 --- a/test/page.spec.js +++ b/test/page.spec.js @@ -780,6 +780,14 @@ describe('Page.url', function() { await page.goto(server.EMPTY_PAGE); expect(page.url()).toBe(server.EMPTY_PAGE); }); + it('should include hashes', async({page, server}) => { + await page.goto(server.EMPTY_PAGE + '#hash'); + expect(page.url()).toBe(server.EMPTY_PAGE + '#hash'); + await page.evaluate(() => { + window.location.hash = "dynamic"; + }); + expect(page.url()).toBe(server.EMPTY_PAGE + '#dynamic'); + }); }); describe('Page.title', function() { diff --git a/test/popup.spec.js b/test/popup.spec.js index 9f798ea060..db2d3ce14b 100644 --- a/test/popup.spec.js +++ b/test/popup.spec.js @@ -263,7 +263,8 @@ describe('Page.Events.Popup', function() { page.waitForEvent('popup'), page.evaluate(() => window.__popup = window.open(undefined, null, 'noopener')), ]); - expect(popup.url()).toBe('about:blank'); + // Chromium reports `about:blank#blocked` here. + expect(popup.url().split('#')[0]).toBe('about:blank'); expect(await page.evaluate(() => !!window.opener)).toBe(false); expect(await popup.evaluate(() => !!window.opener)).toBe(false); await context.close();