Skip to content

Commit

Permalink
feat(firefox): support Page.setUserAgent method (#3968)
Browse files Browse the repository at this point in the history
  • Loading branch information
aslushnikov committed Feb 9, 2019
1 parent 1ce578b commit fc18a79
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 7 deletions.
17 changes: 17 additions & 0 deletions experimental/puppeteer-firefox/lib/Page.js
Expand Up @@ -88,6 +88,23 @@ class Page extends EventEmitter {
this._viewport = null;
}

/**
* @param {string} userAgent
*/
async setUserAgent(userAgent) {
await this._session.send('Page.setUserAgent', {userAgent});
}

/**
* @param {{viewport: !Puppeteer.Viewport, userAgent: string}} options
*/
async emulate(options) {
await Promise.all([
this.setViewport(options.viewport),
this.setUserAgent(options.userAgent),
]);
}

/**
* @return {BrowserContext}
*/
Expand Down
2 changes: 1 addition & 1 deletion experimental/puppeteer-firefox/package.json
Expand Up @@ -9,7 +9,7 @@
"node": ">=8.9.4"
},
"puppeteer": {
"firefox_revision": "9702d3d2dd86550e385fadec66eb28a5ff2b1322"
"firefox_revision": "ba500612786aac157fa44e6b4d04c852f51ea35c"
},
"scripts": {
"install": "node install.js",
Expand Down
4 changes: 2 additions & 2 deletions test/emulation.spec.js
Expand Up @@ -82,12 +82,12 @@ module.exports.addTests = function({testRunner, expect, product}) {
});
});

describe_fails_ffox('Page.emulate', function() {
describe('Page.emulate', function() {
it('should work', async({page, server}) => {
await page.goto(server.PREFIX + '/mobile.html');
await page.emulate(iPhone);
expect(await page.evaluate(() => window.innerWidth)).toBe(375);
expect(await page.evaluate(() => navigator.userAgent)).toContain('Safari');
expect(await page.evaluate(() => navigator.userAgent)).toContain('iPhone');
});
it('should support clicking', async({page, server}) => {
await page.emulate(iPhone);
Expand Down
17 changes: 13 additions & 4 deletions test/page.spec.js
Expand Up @@ -628,21 +628,30 @@ module.exports.addTests = function({testRunner, expect, headless, Errors, Device
});
});

describe_fails_ffox('Page.setUserAgent', function() {
describe('Page.setUserAgent', function() {
it('should work', async({page, server}) => {
expect(await page.evaluate(() => navigator.userAgent)).toContain('Mozilla');
page.setUserAgent('foobar');
await page.setUserAgent('foobar');
const [request] = await Promise.all([
server.waitForRequest('/empty.html'),
page.goto(server.EMPTY_PAGE),
]);
expect(request.headers['user-agent']).toBe('foobar');
});
it('should work for subframes', async({page, server}) => {
expect(await page.evaluate(() => navigator.userAgent)).toContain('Mozilla');
await page.setUserAgent('foobar');
const [request] = await Promise.all([
server.waitForRequest('/empty.html'),
utils.attachFrame(page, 'frame1', server.EMPTY_PAGE),
]);
expect(request.headers['user-agent']).toBe('foobar');
});
it('should emulate device user-agent', async({page, server}) => {
await page.goto(server.PREFIX + '/mobile.html');
expect(await page.evaluate(() => navigator.userAgent)).toContain('Chrome');
expect(await page.evaluate(() => navigator.userAgent)).not.toContain('iPhone');
await page.setUserAgent(iPhone.userAgent);
expect(await page.evaluate(() => navigator.userAgent)).toContain('Safari');
expect(await page.evaluate(() => navigator.userAgent)).toContain('iPhone');
});
});

Expand Down

0 comments on commit fc18a79

Please sign in to comment.