From 9ed5487bfb4a6bb1833fedc9da00821f92b43ab4 Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Thu, 30 Sep 2021 11:39:06 -0700 Subject: [PATCH 1/3] test(cookies): add a test for SameSite=None cookies --- tests/browsercontext-add-cookies.spec.ts | 36 ++++++++++++++++++++++ tests/headful.spec.ts | 38 +++++++++++++++++++++++- 2 files changed, 73 insertions(+), 1 deletion(-) diff --git a/tests/browsercontext-add-cookies.spec.ts b/tests/browsercontext-add-cookies.spec.ts index 6b66485bb6056..ce7842af1af0a 100644 --- a/tests/browsercontext-add-cookies.spec.ts +++ b/tests/browsercontext-add-cookies.spec.ts @@ -367,3 +367,39 @@ it('should(not) block third party cookies', async ({ context, page, server, brow expect(cookies).toEqual([]); } }); + +it('should not block third party SameSite=None cookies', async ({ contextFactory, httpsServer, browserName }) => { + it.skip(browserName === 'webkit', 'No third party cookies in WebKit'); + const context = await contextFactory({ + ignoreHTTPSErrors: true, + }); + const page = await context.newPage(); + + httpsServer.setRoute('/empty.html', (req, res) => { + res.writeHead(200, { + 'Content-Type': 'text/html' + }); + res.end(``); + }); + + httpsServer.setRoute('/grid.html', (req, res) => { + res.writeHead(200, { + 'Set-Cookie': ['a=b; Path=/; Max-Age=3600; SameSite=None; Secure'], + 'Content-Type': 'text/html' + }); + res.end(`Hello world + `); + }); + + const cookie = new Promise(f => { + httpsServer.setRoute('/json', (req, res) => { + f(req.headers.cookie); + res.end(); + }); + }); + + await page.goto(httpsServer.EMPTY_PAGE); + expect(await cookie).toBe('a=b') +}); diff --git a/tests/headful.spec.ts b/tests/headful.spec.ts index f33a130f3d820..70239e7788166 100644 --- a/tests/headful.spec.ts +++ b/tests/headful.spec.ts @@ -85,7 +85,7 @@ it('should(not) block third party cookies', async ({ browserType, browserOptions return document.cookie; }); await page.waitForTimeout(2000); - const allowsThirdParty = browserName === 'firefox'; + const allowsThirdParty = browserName !== 'webkit'; expect(documentCookie).toBe(allowsThirdParty ? 'username=John Doe' : ''); const cookies = await page.context().cookies(server.CROSS_PROCESS_PREFIX + '/grid.html'); if (allowsThirdParty) { @@ -107,6 +107,42 @@ it('should(not) block third party cookies', async ({ browserType, browserOptions await browser.close(); }); +it('should not block third party SameSite=None cookies', async ({ browserOptions, httpsServer, browserName, browserType }) => { + it.skip(browserName === 'webkit', 'No third party cookies in WebKit'); + const browser = await browserType.launch({ ...browserOptions, headless: false }); + const page = await browser.newPage({ + ignoreHTTPSErrors: true, + }); + + httpsServer.setRoute('/empty.html', (req, res) => { + res.writeHead(200, { + 'Content-Type': 'text/html' + }); + res.end(``); + }); + + httpsServer.setRoute('/grid.html', (req, res) => { + res.writeHead(200, { + 'Set-Cookie': ['a=b; Path=/; Max-Age=3600; SameSite=None; Secure'], + 'Content-Type': 'text/html' + }); + res.end(`Hello world + `); + }); + + const cookie = new Promise(f => { + httpsServer.setRoute('/json', (req, res) => { + f(req.headers.cookie); + res.end(); + }); + }); + + await page.goto(httpsServer.EMPTY_PAGE); + expect(await cookie).toBe('a=b') +}); + it('should not override viewport size when passed null', async function({ browserType, browserOptions, server, browserName }) { it.fixme(browserName === 'webkit'); From 57582f0cf6edf44466e77c062c49db6df8ee5ea8 Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Thu, 30 Sep 2021 12:08:14 -0700 Subject: [PATCH 2/3] Update browsercontext-add-cookies.spec.ts --- tests/browsercontext-add-cookies.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/browsercontext-add-cookies.spec.ts b/tests/browsercontext-add-cookies.spec.ts index ce7842af1af0a..2d4ace9072d8d 100644 --- a/tests/browsercontext-add-cookies.spec.ts +++ b/tests/browsercontext-add-cookies.spec.ts @@ -401,5 +401,5 @@ it('should not block third party SameSite=None cookies', async ({ contextFactory }); await page.goto(httpsServer.EMPTY_PAGE); - expect(await cookie).toBe('a=b') + expect(await cookie).toBe('a=b'); }); From ffa249f371258ce3e7606657cf2a8b6e1cad9deb Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Thu, 30 Sep 2021 12:08:46 -0700 Subject: [PATCH 3/3] Update headful.spec.ts --- tests/headful.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/headful.spec.ts b/tests/headful.spec.ts index 70239e7788166..9a04d98d3486c 100644 --- a/tests/headful.spec.ts +++ b/tests/headful.spec.ts @@ -85,7 +85,7 @@ it('should(not) block third party cookies', async ({ browserType, browserOptions return document.cookie; }); await page.waitForTimeout(2000); - const allowsThirdParty = browserName !== 'webkit'; + const allowsThirdParty = browserName === 'firefox'; expect(documentCookie).toBe(allowsThirdParty ? 'username=John Doe' : ''); const cookies = await page.context().cookies(server.CROSS_PROCESS_PREFIX + '/grid.html'); if (allowsThirdParty) { @@ -140,7 +140,7 @@ it('should not block third party SameSite=None cookies', async ({ browserOptions }); await page.goto(httpsServer.EMPTY_PAGE); - expect(await cookie).toBe('a=b') + expect(await cookie).toBe('a=b'); }); it('should not override viewport size when passed null', async function({ browserType, browserOptions, server, browserName }) {