From a38ac3fb621f7415ca21918204039828c13664c2 Mon Sep 17 00:00:00 2001 From: Andrey Lushnikov Date: Thu, 14 May 2020 17:23:19 -0700 Subject: [PATCH] fix: report hash in `page.url()` (#2252) Fixes #2247 --- src/chromium/crPage.ts | 2 +- test/page.spec.js | 8 ++++++++ test/popup.spec.js | 3 ++- 3 files changed, 11 insertions(+), 2 deletions(-) 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();