From 08d713973e661da195a4a7c094e4f9732b6630c7 Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Mon, 4 May 2020 09:14:42 -0700 Subject: [PATCH] test: add third party cookies test (#2073) --- browsers.json | 2 +- packages/playwright-webkit/browsers.json | 2 +- packages/playwright/browsers.json | 2 +- test/cookies.spec.js | 34 +++++++++++++++++++++++- test/defaultbrowsercontext.spec.js | 34 +++++++++++++++++++++++- 5 files changed, 69 insertions(+), 5 deletions(-) diff --git a/browsers.json b/browsers.json index 102ae30744..d7d26e1155 100644 --- a/browsers.json +++ b/browsers.json @@ -10,7 +10,7 @@ }, { "name": "webkit", - "revision": "1213" + "revision": "1216" } ] } diff --git a/packages/playwright-webkit/browsers.json b/packages/playwright-webkit/browsers.json index 39f6a8da25..6313f4ef2c 100644 --- a/packages/playwright-webkit/browsers.json +++ b/packages/playwright-webkit/browsers.json @@ -2,7 +2,7 @@ "browsers": [ { "name": "webkit", - "revision": "1213" + "revision": "1216" } ] } diff --git a/packages/playwright/browsers.json b/packages/playwright/browsers.json index 102ae30744..d7d26e1155 100644 --- a/packages/playwright/browsers.json +++ b/packages/playwright/browsers.json @@ -10,7 +10,7 @@ }, { "name": "webkit", - "revision": "1213" + "revision": "1216" } ] } diff --git a/test/cookies.spec.js b/test/cookies.spec.js index d94715c804..da80de9c80 100644 --- a/test/cookies.spec.js +++ b/test/cookies.spec.js @@ -15,7 +15,7 @@ * limitations under the License. */ -const {FFOX, CHROMIUM, WEBKIT, MAC} = require('./utils').testOptions(browserType); +const {FFOX, CHROMIUM, WEBKIT, MAC, LINUX} = require('./utils').testOptions(browserType); describe('BrowserContext.cookies', function() { it('should return no cookies in pristine browser context', async({context, page, server}) => { @@ -432,6 +432,38 @@ describe('BrowserContext.addCookies', function() { expect(await page.frames()[1].evaluate('document.cookie')).toBe('frame-cookie=value'); }); + it('should(not) block third party cookies', async({context, page, server}) => { + await page.goto(server.EMPTY_PAGE); + await page.evaluate(src => { + let fulfill; + const promise = new Promise(x => fulfill = x); + const iframe = document.createElement('iframe'); + document.body.appendChild(iframe); + iframe.onload = fulfill; + iframe.src = src; + return promise; + }, server.CROSS_PROCESS_PREFIX + '/grid.html'); + await page.frames()[1].evaluate(`document.cookie = 'username=John Doe'`); + await page.waitForTimeout(2000); + const allowsThirdParty = CHROMIUM || FFOX; + const cookies = await context.cookies(server.CROSS_PROCESS_PREFIX + '/grid.html'); + if (allowsThirdParty) { + expect(cookies).toEqual([ + { + "domain": "127.0.0.1", + "expires": -1, + "httpOnly": false, + "name": "username", + "path": "/", + "sameSite": "None", + "secure": false, + "value": "John Doe" + } + ]); + } else { + expect(cookies).toEqual([]); + } + }); }); describe('BrowserContext.clearCookies', function() { diff --git a/test/defaultbrowsercontext.spec.js b/test/defaultbrowsercontext.spec.js index 976a050d37..a5cd4f4349 100644 --- a/test/defaultbrowsercontext.spec.js +++ b/test/defaultbrowsercontext.spec.js @@ -17,7 +17,7 @@ const utils = require('./utils'); const {makeUserDataDir, removeUserDataDir} = utils; -const {FFOX, CHROMIUM, WEBKIT} = utils.testOptions(browserType); +const {FFOX, MAC, CHROMIUM, WEBKIT} = utils.testOptions(browserType); describe('launchPersistentContext()', function() { beforeEach(async state => { @@ -83,4 +83,36 @@ describe('launchPersistentContext()', function() { expect(await page.context().cookies([])).toEqual([]); expect(await page.evaluate('document.cookie')).toBe(''); }); + it('should(not) block third party cookies', async({browserContext, page, server}) => { + await page.goto(server.EMPTY_PAGE); + await page.evaluate(src => { + let fulfill; + const promise = new Promise(x => fulfill = x); + const iframe = document.createElement('iframe'); + document.body.appendChild(iframe); + iframe.onload = fulfill; + iframe.src = src; + return promise; + }, server.CROSS_PROCESS_PREFIX + '/grid.html'); + await page.frames()[1].evaluate(`document.cookie = 'username=John Doe'`); + await page.waitForTimeout(2000); + const allowsThirdParty = CHROMIUM || FFOX; + const cookies = await browserContext.cookies(server.CROSS_PROCESS_PREFIX + '/grid.html'); + if (allowsThirdParty) { + expect(cookies).toEqual([ + { + "domain": "127.0.0.1", + "expires": -1, + "httpOnly": false, + "name": "username", + "path": "/", + "sameSite": "None", + "secure": false, + "value": "John Doe" + } + ]); + } else { + expect(cookies).toEqual([]); + } + }); });