Fix navigation to about:blank

This patch fixes navigation to about:blank url.
This commit is contained in:
Andrey Lushnikov 2017-07-28 16:44:51 -07:00
parent 26d97bbe3e
commit bd767002bb
3 changed files with 10 additions and 1 deletions

View File

@ -461,6 +461,9 @@ The `page.navigate` will throw an error if:
- there's an SSL error (e.g. in case of self-signed certificates). - there's an SSL error (e.g. in case of self-signed certificates).
- target URL is invalid. - target URL is invalid.
- the `timeout` is exceeded during navigation. - the `timeout` is exceeded during navigation.
- the main resource failed to load.
> **NOTE** `page.navigate` either throw or return a main resource response. The only exception is navigation to `about:blank`, which would succeed and return `null`.
#### page.pdf(options) #### page.pdf(options)
- `options` <[Object]> Options object which might have the following properties: - `options` <[Object]> Options object which might have the following properties:

View File

@ -242,7 +242,7 @@ class Page extends EventEmitter {
/** /**
* @param {string} html * @param {string} html
* @param {!Object=} options * @param {!Object=} options
* @return {!Promise<!Response>} * @return {!Promise<?Response>}
*/ */
async navigate(url, options) { async navigate(url, options) {
const watcher = new NavigatorWatcher(this._client, options); const watcher = new NavigatorWatcher(this._client, options);
@ -260,6 +260,8 @@ class Page extends EventEmitter {
} }
await result; await result;
helper.removeEventListeners([listener]); helper.removeEventListeners([listener]);
if (url === 'about:blank')
return null;
let response = responses.get(this.mainFrame().url()); let response = responses.get(this.mainFrame().url());
if (!response) if (!response)
throw new Error('Failed to navigate: ' + url); throw new Error('Failed to navigate: ' + url);

View File

@ -443,6 +443,10 @@ describe('Puppeteer', function() {
}); });
describe('Page.navigate', function() { describe('Page.navigate', function() {
it('should navigate to about:blank', SX(async function() {
let response = await page.navigate('about:blank');
expect(response).toBe(null);
}));
it('should fail when navigating to bad url', SX(async function() { it('should fail when navigating to bad url', SX(async function() {
let error = null; let error = null;
try { try {