diff --git a/README.md b/README.md index 2d314d4c2d..ed8f6e404e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # 🎭 Playwright -[![npm version](https://img.shields.io/npm/v/playwright.svg?style=flat)](https://www.npmjs.com/package/playwright) [![Chromium version](https://img.shields.io/badge/chromium-104.0.5112.81-blue.svg?logo=google-chrome)](https://www.chromium.org/Home) [![Firefox version](https://img.shields.io/badge/firefox-102.0-blue.svg?logo=mozilla-firefox)](https://www.mozilla.org/en-US/firefox/new/) [![WebKit version](https://img.shields.io/badge/webkit-16.0-blue.svg?logo=safari)](https://webkit.org/) +[![npm version](https://img.shields.io/npm/v/playwright.svg?style=flat)](https://www.npmjs.com/package/playwright) [![Chromium version](https://img.shields.io/badge/chromium-104.0.5112.81-blue.svg?logo=google-chrome)](https://www.chromium.org/Home) [![Firefox version](https://img.shields.io/badge/firefox-103.0-blue.svg?logo=mozilla-firefox)](https://www.mozilla.org/en-US/firefox/new/) [![WebKit version](https://img.shields.io/badge/webkit-16.0-blue.svg?logo=safari)](https://webkit.org/) ## [Documentation](https://playwright.dev) | [API reference](https://playwright.dev/docs/api/class-playwright) @@ -10,7 +10,7 @@ Playwright is a framework for Web Testing and Automation. It allows testing [Chr | :--- | :---: | :---: | :---: | | Chromium 104.0.5112.81 | :white_check_mark: | :white_check_mark: | :white_check_mark: | | WebKit 16.0 | :white_check_mark: | :white_check_mark: | :white_check_mark: | -| Firefox 102.0 | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Firefox 103.0 | :white_check_mark: | :white_check_mark: | :white_check_mark: | Headless execution is supported for all the browsers on all platforms. Check out [system requirements](https://playwright.dev/docs/library#system-requirements) for details. diff --git a/packages/playwright-core/browsers.json b/packages/playwright-core/browsers.json index 818fda623f..e6ce1c6074 100644 --- a/packages/playwright-core/browsers.json +++ b/packages/playwright-core/browsers.json @@ -21,9 +21,9 @@ }, { "name": "firefox", - "revision": "1335", + "revision": "1342", "installByDefault": true, - "browserVersion": "102.0" + "browserVersion": "103.0" }, { "name": "firefox-beta", diff --git a/packages/playwright-core/src/server/deviceDescriptorsSource.json b/packages/playwright-core/src/server/deviceDescriptorsSource.json index 27836069ff..e74b3fed40 100644 --- a/packages/playwright-core/src/server/deviceDescriptorsSource.json +++ b/packages/playwright-core/src/server/deviceDescriptorsSource.json @@ -814,7 +814,7 @@ "defaultBrowserType": "webkit" }, "JioPhone 2": { - "userAgent": "Mozilla/5.0 (Mobile; LYF/F300B/LYF-F300B-001-01-15-130718-i;Android; rv:102.0) Gecko/48.0 Firefox/102.0 KAIOS/2.5", + "userAgent": "Mozilla/5.0 (Mobile; LYF/F300B/LYF-F300B-001-01-15-130718-i;Android; rv:103.0) Gecko/48.0 Firefox/103.0 KAIOS/2.5", "viewport": { "width": 240, "height": 320 @@ -825,7 +825,7 @@ "defaultBrowserType": "firefox" }, "JioPhone 2 landscape": { - "userAgent": "Mozilla/5.0 (Mobile; LYF/F300B/LYF-F300B-001-01-15-130718-i;Android; rv:102.0) Gecko/48.0 Firefox/102.0 KAIOS/2.5", + "userAgent": "Mozilla/5.0 (Mobile; LYF/F300B/LYF-F300B-001-01-15-130718-i;Android; rv:103.0) Gecko/48.0 Firefox/103.0 KAIOS/2.5", "viewport": { "width": 320, "height": 240 @@ -1322,7 +1322,7 @@ "defaultBrowserType": "chromium" }, "Desktop Firefox HiDPI": { - "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0", + "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0", "screen": { "width": 1792, "height": 1120 @@ -1382,7 +1382,7 @@ "defaultBrowserType": "chromium" }, "Desktop Firefox": { - "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0", + "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0", "screen": { "width": 1920, "height": 1080 diff --git a/tests/config/browserTest.ts b/tests/config/browserTest.ts index ff45579e8b..a8f5e16760 100644 --- a/tests/config/browserTest.ts +++ b/tests/config/browserTest.ts @@ -29,6 +29,7 @@ import { parseHar } from '../config/utils'; export type BrowserTestWorkerFixtures = PageWorkerFixtures & { browserVersion: string; defaultSameSiteCookieValue: string; + allowsThirdParty browserMajorVersion: number; browserType: BrowserType; isAndroid: boolean; @@ -52,13 +53,24 @@ const test = baseTest.extend await run(playwright[browserName]); }, { scope: 'worker' } ], - defaultSameSiteCookieValue: [async ({ browserName, browserMajorVersion }, run) => { + allowsThirdParty: [async ({ browserName, browserMajorVersion, channel }, run) => { + if (browserName !== 'firefox') + await run(false); + else if (channel === 'firefox-beta' && (browserMajorVersion >= 97 && browserMajorVersion < 103)) + await run(true); + else if (browserMajorVersion >= 103) + await run(true); + }, { scope: 'worker' } ], + + defaultSameSiteCookieValue: [async ({ browserName, browserMajorVersion, channel }, run) => { if (browserName === 'chromium') await run('Lax'); else if (browserName === 'webkit') await run('None'); - else if (browserName === 'firefox') + else if (browserName === 'firefox' && channel === 'firefox-beta') await run(browserMajorVersion === 96 || browserMajorVersion >= 103 ? 'Lax' : 'None'); + else if (browserName === 'firefox' && channel !== 'firefox-beta') + await run(browserMajorVersion >= 103 ? 'None' : 'Lax'); else throw new Error('unknown browser - ' + browserName); }, { scope: 'worker' } ], diff --git a/tests/library/browsercontext-add-cookies.spec.ts b/tests/library/browsercontext-add-cookies.spec.ts index 6fef472813..549bf8f148 100644 --- a/tests/library/browsercontext-add-cookies.spec.ts +++ b/tests/library/browsercontext-add-cookies.spec.ts @@ -353,7 +353,7 @@ it('should set cookies for a frame', async ({ context, page, server }) => { expect(await page.frames()[1].evaluate('document.cookie')).toBe('frame-cookie=value'); }); -it('should(not) block third party cookies', async ({ context, page, server, browserName, browserMajorVersion }) => { +it('should(not) block third party cookies', async ({ context, page, server, browserName, allowsThirdParty }) => { await page.goto(server.EMPTY_PAGE); await page.evaluate(src => { let fulfill; @@ -366,7 +366,6 @@ it('should(not) block third party cookies', async ({ context, page, server, brow }, server.CROSS_PROCESS_PREFIX + '/grid.html'); await page.frames()[1].evaluate(`document.cookie = 'username=John Doe'`); await page.waitForTimeout(2000); - const allowsThirdParty = browserName === 'firefox' && (browserMajorVersion >= 97 && browserMajorVersion < 103); const cookies = await context.cookies(server.CROSS_PROCESS_PREFIX + '/grid.html'); if (allowsThirdParty) { expect(cookies).toEqual([ diff --git a/tests/library/defaultbrowsercontext-1.spec.ts b/tests/library/defaultbrowsercontext-1.spec.ts index 560f40c529..ba3db71117 100644 --- a/tests/library/defaultbrowsercontext-1.spec.ts +++ b/tests/library/defaultbrowsercontext-1.spec.ts @@ -80,7 +80,7 @@ it('context.clearCookies() should work', async ({ server, launchPersistent }) => expect(await page.evaluate('document.cookie')).toBe(''); }); -it('should(not) block third party cookies', async ({ server, launchPersistent, browserName, browserMajorVersion }) => { +it('should(not) block third party cookies', async ({ server, launchPersistent, browserName, allowsThirdParty }) => { const { page, context } = await launchPersistent(); await page.goto(server.EMPTY_PAGE); await page.evaluate(src => { @@ -97,7 +97,6 @@ it('should(not) block third party cookies', async ({ server, launchPersistent, b return document.cookie; }); await page.waitForTimeout(2000); - const allowsThirdParty = browserName === 'firefox' && (browserMajorVersion >= 97 && browserMajorVersion < 103); expect(documentCookie).toBe(allowsThirdParty ? 'username=John Doe' : ''); const cookies = await context.cookies(server.CROSS_PROCESS_PREFIX + '/grid.html'); if (allowsThirdParty) { diff --git a/tests/library/headful.spec.ts b/tests/library/headful.spec.ts index 7017dba9ef..b70e4481a0 100644 --- a/tests/library/headful.spec.ts +++ b/tests/library/headful.spec.ts @@ -86,7 +86,7 @@ it('should close browser after context menu was triggered', async ({ browserType await browser.close(); }); -it('should(not) block third party cookies', async ({ browserType, server, browserName, browserMajorVersion }) => { +it('should(not) block third party cookies', async ({ browserType, server, browserName, allowsThirdParty }) => { const browser = await browserType.launch({ headless: false }); const page = await browser.newPage(); await page.goto(server.EMPTY_PAGE); @@ -104,7 +104,6 @@ it('should(not) block third party cookies', async ({ browserType, server, browse return document.cookie; }); await page.waitForTimeout(2000); - const allowsThirdParty = browserName === 'firefox' && (browserMajorVersion >= 97 && browserMajorVersion < 103); expect(documentCookie).toBe(allowsThirdParty ? 'username=John Doe' : ''); const cookies = await page.context().cookies(server.CROSS_PROCESS_PREFIX + '/grid.html'); if (allowsThirdParty) {