From cd5a48ffcb533418582ff16fee8e520dc62c00d9 Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Mon, 13 Apr 2020 21:43:06 -0700 Subject: [PATCH] test(geolocation): test context isolation (#1770) --- test/geolocation.spec.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/test/geolocation.spec.js b/test/geolocation.spec.js index ffca54fcd2..bc607f56f2 100644 --- a/test/geolocation.spec.js +++ b/test/geolocation.spec.js @@ -39,6 +39,36 @@ describe('Overrides.setGeolocation', function() { } expect(error.message).toContain('Invalid longitude "200"'); }); + it('should isolate contexts', async({page, server, context, browser}) => { + await context.grantPermissions(['geolocation']); + await context.setGeolocation({longitude: 10, latitude: 10}); + await page.goto(server.EMPTY_PAGE); + + const context2 = await browser.newContext({ + permissions: ['geolocation'], + geolocation: {longitude: 20, latitude: 20} + }); + const page2 = await context2.newPage(); + await page2.goto(server.EMPTY_PAGE); + + const geolocation = await page.evaluate(() => new Promise(resolve => navigator.geolocation.getCurrentPosition(position => { + resolve({latitude: position.coords.latitude, longitude: position.coords.longitude}); + }))); + expect(geolocation).toEqual({ + latitude: 10, + longitude: 10 + }); + + const geolocation2 = await page2.evaluate(() => new Promise(resolve => navigator.geolocation.getCurrentPosition(position => { + resolve({latitude: position.coords.latitude, longitude: position.coords.longitude}); + }))); + expect(geolocation2).toEqual({ + latitude: 20, + longitude: 20 + }); + + await context2.close(); + }); it('should throw with missing latitude', async({context}) => { let error = null; try {