From 6482ff7a7f33cc3551accbd9b3d883ec6e34e6e6 Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Thu, 28 Jul 2022 15:41:32 +0200 Subject: [PATCH] chore: roll Electron to 16.2.8 (#16017) --- package-lock.json | 33 ++++++++++--------- package.json | 3 +- tests/electron/electronTest.ts | 8 +++-- tests/page/elementhandle-owner-frame.spec.ts | 4 +-- .../page/elementhandle-query-selector.spec.ts | 4 +-- tests/page/elementhandle-screenshot.spec.ts | 8 ++--- tests/page/frame-evaluate.spec.ts | 3 +- tests/page/frame-hierarchy.spec.ts | 7 ++-- tests/page/interception.spec.ts | 7 ++-- tests/page/locator-convenience.spec.ts | 3 +- tests/page/page-autowaiting-no-hang.spec.ts | 3 +- tests/page/page-basic.spec.ts | 4 +-- tests/page/page-emulate-media.spec.ts | 3 +- tests/page/page-event-pageerror.spec.ts | 3 +- tests/page/page-goto.spec.ts | 5 ++- tests/page/page-network-request.spec.ts | 10 +++--- tests/page/page-network-response.spec.ts | 4 +-- tests/page/page-network-sizes.spec.ts | 2 +- tests/page/page-request-fallback.spec.ts | 3 +- tests/page/page-request-fulfill.spec.ts | 3 +- tests/page/page-request-intercept.spec.ts | 3 +- tests/page/page-set-input-files.spec.ts | 4 +-- tests/page/page-wait-for-load-state.spec.ts | 2 +- tests/page/selectors-misc.spec.ts | 3 +- tests/page/wheel.spec.ts | 9 +++-- 25 files changed, 63 insertions(+), 78 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3c5493c8c0..3aa70c558b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,7 +39,8 @@ "concurrently": "^6.2.1", "cross-env": "^7.0.3", "dotenv": "^16.0.0", - "electron": "^12.2.1", + "electron": "^16.2.8", + "electron-to-chromium": "^1.4.204", "enquirer": "^2.3.6", "eslint": "^8.8.0", "eslint-plugin-notice": "^0.9.10", @@ -2822,13 +2823,13 @@ "dev": true }, "node_modules/electron": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/electron/-/electron-12.2.3.tgz", - "integrity": "sha512-B27c7eqx1bC5kea6An8oVhk1pShNC4VGqWarHMhD47MDtmg54KepHO5AbAvmKKZK/jWN7NTC7wyCYTDElJNtQA==", + "version": "16.2.8", + "resolved": "https://registry.npmjs.org/electron/-/electron-16.2.8.tgz", + "integrity": "sha512-KSOytY6SPLsh3iCziztqa/WgJyfDOKzCvNqku9gGIqSdT8CqtV66dTU1SOrKZQjRFLxHaF8LbyxUL1vwe4taqw==", "dev": true, "hasInstallScript": true, "dependencies": { - "@electron/get": "^1.0.1", + "@electron/get": "^1.13.0", "@types/node": "^14.6.2", "extract-zip": "^1.0.3" }, @@ -2840,9 +2841,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.143", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.143.tgz", - "integrity": "sha512-2hIgvu0+pDfXIqmVmV5X6iwMjQ2KxDsWKwM+oI1fABEOy/Dqmll0QJRmIQ3rm+XaoUa/qKrmy5h7LSTFQ6Ldzg==" + "version": "1.4.204", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.204.tgz", + "integrity": "sha512-5Ojjtw9/c9HCXtMVE6SXVSHSNjmbFOXpKprl6mY/5moLSxLeWatuYA7KTD+RzJMxLRH6yNNQrqGz9p6IoNBMgw==" }, "node_modules/electron/node_modules/@types/node": { "version": "14.18.10", @@ -7487,7 +7488,7 @@ "requires": { "@playwright/test": "1.25.0-next", "@sveltejs/vite-plugin-svelte": "^1.0.1", - "svelte": "*", + "svelte": "^3.49.0", "vite": "^3.0.0" }, "dependencies": { @@ -8816,12 +8817,12 @@ "dev": true }, "electron": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/electron/-/electron-12.2.3.tgz", - "integrity": "sha512-B27c7eqx1bC5kea6An8oVhk1pShNC4VGqWarHMhD47MDtmg54KepHO5AbAvmKKZK/jWN7NTC7wyCYTDElJNtQA==", + "version": "16.2.8", + "resolved": "https://registry.npmjs.org/electron/-/electron-16.2.8.tgz", + "integrity": "sha512-KSOytY6SPLsh3iCziztqa/WgJyfDOKzCvNqku9gGIqSdT8CqtV66dTU1SOrKZQjRFLxHaF8LbyxUL1vwe4taqw==", "dev": true, "requires": { - "@electron/get": "^1.0.1", + "@electron/get": "^1.13.0", "@types/node": "^14.6.2", "extract-zip": "^1.0.3" }, @@ -8862,9 +8863,9 @@ } }, "electron-to-chromium": { - "version": "1.4.143", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.143.tgz", - "integrity": "sha512-2hIgvu0+pDfXIqmVmV5X6iwMjQ2KxDsWKwM+oI1fABEOy/Dqmll0QJRmIQ3rm+XaoUa/qKrmy5h7LSTFQ6Ldzg==" + "version": "1.4.204", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.204.tgz", + "integrity": "sha512-5Ojjtw9/c9HCXtMVE6SXVSHSNjmbFOXpKprl6mY/5moLSxLeWatuYA7KTD+RzJMxLRH6yNNQrqGz9p6IoNBMgw==" }, "emoji-regex": { "version": "8.0.0", diff --git a/package.json b/package.json index 0e489de17c..85682c14ae 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,8 @@ "concurrently": "^6.2.1", "cross-env": "^7.0.3", "dotenv": "^16.0.0", - "electron": "^12.2.1", + "electron": "^16.2.8", + "electron-to-chromium": "^1.4.204", "enquirer": "^2.3.6", "eslint": "^8.8.0", "eslint-plugin-notice": "^0.9.10", diff --git a/tests/electron/electronTest.ts b/tests/electron/electronTest.ts index 40cdb0edbd..949811a0a9 100644 --- a/tests/electron/electronTest.ts +++ b/tests/electron/electronTest.ts @@ -21,6 +21,8 @@ import type { PageTestFixtures, PageWorkerFixtures } from '../page/pageTestApi'; import type { TraceViewerFixtures } from '../config/traceViewerFixtures'; import { traceViewerFixtures } from '../config/traceViewerFixtures'; export { expect } from '@playwright/test'; +import e2c from 'electron-to-chromium'; +import { assert } from 'playwright-core/lib/utils'; type ElectronTestFixtures = PageTestFixtures & { electronApp: ElectronApplication; @@ -28,10 +30,12 @@ type ElectronTestFixtures = PageTestFixtures & { }; const electronVersion = require('electron/package.json').version; +const chromiumVersion = e2c.fullVersions[electronVersion]; +assert(chromiumVersion, `Chromium version for Electron version ${electronVersion} is not found.`); export const electronTest = baseTest.extend(traceViewerFixtures).extend({ - browserVersion: [electronVersion, { scope: 'worker' }], - browserMajorVersion: [Number(electronVersion.split('.')[0]), { scope: 'worker' }], + browserVersion: [chromiumVersion, { scope: 'worker' }], + browserMajorVersion: [Number(chromiumVersion.split('.')[0]), { scope: 'worker' }], isAndroid: [false, { scope: 'worker' }], isElectron: [true, { scope: 'worker' }], diff --git a/tests/page/elementhandle-owner-frame.spec.ts b/tests/page/elementhandle-owner-frame.spec.ts index d7273e047a..38c5db0250 100644 --- a/tests/page/elementhandle-owner-frame.spec.ts +++ b/tests/page/elementhandle-owner-frame.spec.ts @@ -73,9 +73,7 @@ it('should work for detached elements', async ({ page, server }) => { expect(await divHandle.ownerFrame()).toBe(page.mainFrame()); }); -it('should work for adopted elements', async ({ page, server, isElectron }) => { - it.fixme(isElectron); - +it('should work for adopted elements', async ({ page, server }) => { await page.goto(server.EMPTY_PAGE); const [popup] = await Promise.all([ page.waitForEvent('popup'), diff --git a/tests/page/elementhandle-query-selector.spec.ts b/tests/page/elementhandle-query-selector.spec.ts index 8ff3df9bb3..2856c4185f 100644 --- a/tests/page/elementhandle-query-selector.spec.ts +++ b/tests/page/elementhandle-query-selector.spec.ts @@ -34,9 +34,7 @@ it('should return null for non-existing element', async ({ page, server }) => { expect(second).toBe(null); }); -it('should work for adopted elements', async ({ page, server, isElectron }) => { - it.fixme(isElectron); - +it('should work for adopted elements', async ({ page, server }) => { await page.goto(server.EMPTY_PAGE); const [popup] = await Promise.all([ page.waitForEvent('popup'), diff --git a/tests/page/elementhandle-screenshot.spec.ts b/tests/page/elementhandle-screenshot.spec.ts index 01565b1cec..0a2f8b60ec 100644 --- a/tests/page/elementhandle-screenshot.spec.ts +++ b/tests/page/elementhandle-screenshot.spec.ts @@ -203,18 +203,14 @@ it.describe('element screenshot', () => { expect(screenshot).toMatchSnapshot('screenshot-element-bounding-box.png'); }); - it('should work for an element with fractional dimensions', async ({ page, isElectron }) => { - it.fixme(isElectron, 'Scale is wrong'); - + it('should work for an element with fractional dimensions', async ({ page }) => { await page.setContent('
'); const elementHandle = await page.$('div'); const screenshot = await elementHandle.screenshot(); expect(screenshot).toMatchSnapshot('screenshot-element-fractional.png'); }); - it('should work for an element with an offset', async ({ page, isElectron }) => { - it.fixme(isElectron, 'Scale is wrong'); - + it('should work for an element with an offset', async ({ page }) => { await page.setContent('
'); const elementHandle = await page.$('div'); const screenshot = await elementHandle.screenshot(); diff --git a/tests/page/frame-evaluate.spec.ts b/tests/page/frame-evaluate.spec.ts index b84ef28b22..5c6f5bfd6c 100644 --- a/tests/page/frame-evaluate.spec.ts +++ b/tests/page/frame-evaluate.spec.ts @@ -97,9 +97,8 @@ it('should allow cross-frame element handles', async ({ page, server }) => { expect(result.trim()).toBe('
Hi, I\'m frame
'); }); -it('should not allow cross-frame element handles when frames do not script each other', async ({ page, server, isElectron, isAndroid }) => { +it('should not allow cross-frame element handles when frames do not script each other', async ({ page, server, isAndroid }) => { it.skip(isAndroid, 'No cross-process on Android'); - it.fixme(isElectron); await page.goto(server.EMPTY_PAGE); const frame = await attachFrame(page, 'frame1', server.CROSS_PROCESS_PREFIX + '/empty.html'); diff --git a/tests/page/frame-hierarchy.spec.ts b/tests/page/frame-hierarchy.spec.ts index e69c3e4150..9eaa016094 100644 --- a/tests/page/frame-hierarchy.spec.ts +++ b/tests/page/frame-hierarchy.spec.ts @@ -154,9 +154,7 @@ it('should report frame from-inside shadow DOM', async ({ page, server }) => { expect(page.frames()[1].url()).toBe(server.EMPTY_PAGE); }); -it('should report frame.name()', async ({ page, server, isElectron }) => { - it.fixme(isElectron); - +it('should report frame.name()', async ({ page, server }) => { await attachFrame(page, 'theFrameId', server.EMPTY_PAGE); await page.evaluate(url => { const frame = document.createElement('iframe'); @@ -178,8 +176,7 @@ it('should report frame.parent()', async ({ page, server }) => { expect(page.frames()[2].parentFrame()).toBe(page.mainFrame()); }); -it('should report different frame instance when frame re-attaches', async ({ page, server, isElectron }) => { - it.fixme(isElectron); +it('should report different frame instance when frame re-attaches', async ({ page, server }) => { const frame1 = await attachFrame(page, 'frame1', server.EMPTY_PAGE); await page.evaluate(() => { diff --git a/tests/page/interception.spec.ts b/tests/page/interception.spec.ts index 3b743f1700..4b0149a540 100644 --- a/tests/page/interception.spec.ts +++ b/tests/page/interception.spec.ts @@ -113,9 +113,8 @@ it('should intercept network activity from worker', async function({ page, serve expect(msg.text()).toBe('intercepted'); }); -it('should intercept network activity from worker 2', async function({ page, server, isElectron, isAndroid, browserName, browserMajorVersion }) { +it('should intercept network activity from worker 2', async function({ page, server, isAndroid }) { it.skip(isAndroid); - it.fixme(isElectron); const url = server.PREFIX + '/worker/worker.js'; await page.route(url, route => { @@ -132,9 +131,7 @@ it('should intercept network activity from worker 2', async function({ page, ser expect(msg.text()).toBe('intercepted'); }); -it('should work with regular expression passed from a different context', async ({ page, server, isElectron }) => { - it.skip(isElectron); - +it('should work with regular expression passed from a different context', async ({ page, server }) => { const ctx = vm.createContext(); const regexp = vm.runInContext('new RegExp("empty\\.html")', ctx); let intercepted = false; diff --git a/tests/page/locator-convenience.spec.ts b/tests/page/locator-convenience.spec.ts index 96d2250bd0..9dea5580a6 100644 --- a/tests/page/locator-convenience.spec.ts +++ b/tests/page/locator-convenience.spec.ts @@ -202,8 +202,9 @@ it('allInnerTexts should work', async ({ page }) => { expect(await page.locator('div').allInnerTexts()).toEqual(['A', 'B', 'C']); }); -it('isVisible and isHidden should work with details', async ({ page, isAndroid }) => { +it('isVisible and isHidden should work with details', async ({ page, isAndroid, isElectron }) => { it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/10674' }); + it.skip(isElectron, 'We don\'t disable the AutoExpandDetailsElement feature on Electron'); it.skip(isAndroid, 'We can\'t disable the AutoExpandDetailsElement feature on Android'); await page.setContent(`
click to open diff --git a/tests/page/page-autowaiting-no-hang.spec.ts b/tests/page/page-autowaiting-no-hang.spec.ts index 5a1036f3bf..f580b8629a 100644 --- a/tests/page/page-autowaiting-no-hang.spec.ts +++ b/tests/page/page-autowaiting-no-hang.spec.ts @@ -23,8 +23,7 @@ it('clicking on links which do not commit navigation', async ({ page, server, ht await page.click('a'); }); -it('calling window.stop async', async ({ page, server, isElectron }) => { - it.fixme(isElectron); +it('calling window.stop async', async ({ page, server }) => { server.setRoute('/empty.html', async (req, res) => {}); await page.evaluate(url => { window.location.href = url; diff --git a/tests/page/page-basic.spec.ts b/tests/page/page-basic.spec.ts index d346232309..8b3d03a22a 100644 --- a/tests/page/page-basic.spec.ts +++ b/tests/page/page-basic.spec.ts @@ -132,9 +132,7 @@ it('should fail with error upon disconnect', async ({ page, isAndroid }) => { expect(error.message).toContain('Page closed'); }); -it('page.url should work', async ({ page, server, isElectron }) => { - it.fixme(isElectron); - +it('page.url should work', async ({ page, server }) => { expect(page.url()).toBe('about:blank'); await page.goto(server.EMPTY_PAGE); expect(page.url()).toBe(server.EMPTY_PAGE); diff --git a/tests/page/page-emulate-media.spec.ts b/tests/page/page-emulate-media.spec.ts index fb84a73022..0f21463d1a 100644 --- a/tests/page/page-emulate-media.spec.ts +++ b/tests/page/page-emulate-media.spec.ts @@ -126,9 +126,8 @@ it('should emulate reduced motion', async ({ page }) => { await page.emulateMedia({ reducedMotion: null }); }); -it('should emulate forcedColors ', async ({ page, browserName, isElectron }) => { +it('should emulate forcedColors ', async ({ page, browserName }) => { it.skip(browserName === 'webkit', 'https://bugs.webkit.org/show_bug.cgi?id=225281'); - it.fixme(isElectron); expect(await page.evaluate(() => matchMedia('(forced-colors: none)').matches)).toBe(true); await page.emulateMedia({ forcedColors: 'none' }); expect(await page.evaluate(() => matchMedia('(forced-colors: none)').matches)).toBe(true); diff --git a/tests/page/page-event-pageerror.spec.ts b/tests/page/page-event-pageerror.spec.ts index c69d33c337..2193bec598 100644 --- a/tests/page/page-event-pageerror.spec.ts +++ b/tests/page/page-event-pageerror.spec.ts @@ -120,8 +120,7 @@ it('should handle object', async ({ page, browserName }) => { expect(error.message).toBe(browserName === 'chromium' ? 'Object' : '[object Object]'); }); -it('should handle window', async ({ page, browserName, isElectron }) => { - it.skip(isElectron); +it('should handle window', async ({ page, browserName }) => { const [error] = await Promise.all([ page.waitForEvent('pageerror'), page.evaluate(() => setTimeout(() => { throw window; }, 0)), diff --git a/tests/page/page-goto.spec.ts b/tests/page/page-goto.spec.ts index d7673be7c1..f7bc11eb12 100644 --- a/tests/page/page-goto.spec.ts +++ b/tests/page/page-goto.spec.ts @@ -629,14 +629,13 @@ it('should properly wait for load', async ({ page, server, browserName }) => { ]); }); -it('should properly report window.stop()', async ({ page, server, browserName }) => { +it('should properly report window.stop()', async ({ page, server }) => { server.setRoute('/module.js', async (req, res) => void 0); await page.goto(server.PREFIX + '/window-stop.html'); }); -it('should return from goto if new navigation is started', async ({ page, server, browserName, isElectron, isAndroid }) => { +it('should return from goto if new navigation is started', async ({ page, server, browserName, isAndroid }) => { it.fixme(browserName === 'webkit', 'WebKit has a bug where Page.frameStoppedLoading is sent too early.'); - it.fixme(isElectron, 'Fails on Electron'); it.fail(isAndroid, 'Navigation gets aborted on Android'); server.setRoute('/slow.js', async (req, res) => void 0); let finished = false; diff --git a/tests/page/page-network-request.spec.ts b/tests/page/page-network-request.spec.ts index 79b4ad9e0e..5a42713f15 100644 --- a/tests/page/page-network-request.spec.ts +++ b/tests/page/page-network-request.spec.ts @@ -82,7 +82,7 @@ it('should return headers', async ({ page, server, browserName }) => { }); it('should get the same headers as the server', async ({ page, server, browserName, platform, isElectron, browserMajorVersion }) => { - it.skip(isElectron && browserMajorVersion < 17, 'This needs Chromium >= 99'); + it.skip(isElectron && browserMajorVersion < 99, 'This needs Chromium >= 99'); it.fail(browserName === 'webkit' && platform === 'win32', 'Curl does not show accept-encoding and accept-language'); let serverRequest; server.setRoute('/empty.html', (request, response) => { @@ -95,7 +95,7 @@ it('should get the same headers as the server', async ({ page, server, browserNa }); it('should not return allHeaders() until they are available', async ({ page, server, browserName, platform, isElectron, browserMajorVersion }) => { - it.skip(isElectron && browserMajorVersion < 17, 'This needs Chromium >= 99'); + it.skip(isElectron && browserMajorVersion < 99, 'This needs Chromium >= 99'); it.fail(browserName === 'webkit' && platform === 'win32', 'Curl does not show accept-encoding and accept-language'); let requestHeadersPromise; @@ -120,7 +120,7 @@ it('should not return allHeaders() until they are available', async ({ page, ser }); it('should get the same headers as the server CORS', async ({ page, server, browserName, platform, isElectron, browserMajorVersion }) => { - it.skip(isElectron && browserMajorVersion < 17, 'This needs Chromium >= 99'); + it.skip(isElectron && browserMajorVersion < 99, 'This needs Chromium >= 99'); it.fail(browserName === 'webkit' && platform === 'win32', 'Curl does not show accept-encoding and accept-language'); await page.goto(server.PREFIX + '/empty.html'); @@ -353,7 +353,7 @@ it('should return navigation bit when navigating to image', async ({ page, serve }); it('should report raw headers', async ({ page, server, browserName, platform, isElectron, browserMajorVersion }) => { - it.skip(isElectron && browserMajorVersion < 17, 'This needs Chromium >= 99'); + it.skip(isElectron && browserMajorVersion < 99, 'This needs Chromium >= 99'); let expectedHeaders: { name: string, value: string }[]; server.setRoute('/headers', (req, res) => { @@ -421,7 +421,7 @@ it('should report raw response headers in redirects', async ({ page, server, bro }); it('should report all cookies in one header', async ({ page, server, isElectron, browserMajorVersion }) => { - it.skip(isElectron && browserMajorVersion < 17, 'This needs Chromium >= 99'); + it.skip(isElectron && browserMajorVersion < 99, 'This needs Chromium >= 99'); const expectedHeaders = {}; server.setRoute('/headers', (req, res) => { diff --git a/tests/page/page-network-response.spec.ts b/tests/page/page-network-response.spec.ts index 81198413c7..88122e61e5 100644 --- a/tests/page/page-network-response.spec.ts +++ b/tests/page/page-network-response.spec.ts @@ -180,7 +180,7 @@ it('should return status text', async ({ page, server }) => { }); it('should report all headers', async ({ page, server, browserName, platform, isElectron, browserMajorVersion }) => { - it.skip(isElectron && browserMajorVersion < 17, 'This needs Chromium >= 99'); + it.skip(isElectron && browserMajorVersion < 99, 'This needs Chromium >= 99'); it.fixme(browserName === 'webkit' && platform === 'win32', 'libcurl does not support non-set-cookie multivalue headers'); const expectedHeaders = { @@ -216,7 +216,7 @@ it('should report all headers', async ({ page, server, browserName, platform, is }); it('should report multiple set-cookie headers', async ({ page, server, isElectron, browserMajorVersion }) => { - it.skip(isElectron && browserMajorVersion < 17, 'This needs Chromium >= 99'); + it.skip(isElectron && browserMajorVersion < 99, 'This needs Chromium >= 99'); server.setRoute('/headers', (req, res) => { res.writeHead(200, { diff --git a/tests/page/page-network-sizes.spec.ts b/tests/page/page-network-sizes.spec.ts index ec68fceaf2..d63d58e79f 100644 --- a/tests/page/page-network-sizes.spec.ts +++ b/tests/page/page-network-sizes.spec.ts @@ -20,7 +20,7 @@ import zlib from 'zlib'; import { test as it, expect } from './pageTest'; -it.skip(({ isElectron, browserMajorVersion }) => isElectron && browserMajorVersion < 17, 'This needs Chromium >= 99'); +it.skip(({ isElectron, browserMajorVersion }) => isElectron && browserMajorVersion < 99, 'This needs Chromium >= 99'); it('should set bodySize and headersSize', async ({ page, server }) => { await page.goto(server.EMPTY_PAGE); diff --git a/tests/page/page-request-fallback.spec.ts b/tests/page/page-request-fallback.spec.ts index ba439d72c0..5f787f6b63 100644 --- a/tests/page/page-request-fallback.spec.ts +++ b/tests/page/page-request-fallback.spec.ts @@ -94,9 +94,8 @@ it('should not chain abort', async ({ page, server }) => { expect(failed).toBeFalsy(); }); -it('should fall back after exception', async ({ page, server, isAndroid, isElectron }) => { +it('should fall back after exception', async ({ page, server, isAndroid }) => { it.fixme(isAndroid); - it.fixme(isElectron); await page.route('**/empty.html', route => { route.continue(); diff --git a/tests/page/page-request-fulfill.spec.ts b/tests/page/page-request-fulfill.spec.ts index 4b1390980e..acf4987fc5 100644 --- a/tests/page/page-request-fulfill.spec.ts +++ b/tests/page/page-request-fulfill.spec.ts @@ -99,10 +99,11 @@ it('should allow mocking binary responses', async ({ page, server, browserName, expect(await img.screenshot()).toMatchSnapshot('mock-binary-response.png'); }); -it('should allow mocking svg with charset', async ({ page, server, browserName, headless, isAndroid, mode }) => { +it('should allow mocking svg with charset', async ({ page, server, browserName, headless, isAndroid, isElectron, mode }) => { it.skip(mode === 'service'); it.skip(browserName === 'firefox' && !headless, 'Firefox headed produces a different image.'); it.skip(isAndroid); + it.skip(isElectron, 'Protocol error (Storage.getCookies): Browser context management is not supported'); await page.route('**/*', route => { route.fulfill({ diff --git a/tests/page/page-request-intercept.spec.ts b/tests/page/page-request-intercept.spec.ts index 9ec49f9d6e..5d46a10da0 100644 --- a/tests/page/page-request-intercept.spec.ts +++ b/tests/page/page-request-intercept.spec.ts @@ -57,9 +57,10 @@ it('should fulfill intercepted response', async ({ page, server, isElectron, isA expect(await page.evaluate(() => document.body.textContent)).toBe('Yo, page!'); }); -it('should fulfill response with empty body', async ({ page, server, isAndroid, browserName, browserMajorVersion }) => { +it('should fulfill response with empty body', async ({ page, server, isAndroid, isElectron, browserName, browserMajorVersion }) => { it.skip(browserName === 'chromium' && browserMajorVersion <= 91, 'Fails in Electron that uses old Chromium'); it.skip(isAndroid, 'The internal Android localhost (10.0.0.2) != the localhost on the host'); + it.skip(isElectron, 'Protocol error (Storage.getCookies): Browser context management is not supported.'); await page.route('**/*', async route => { const response = await page.request.fetch(route.request()); await route.fulfill({ diff --git a/tests/page/page-set-input-files.spec.ts b/tests/page/page-set-input-files.spec.ts index 6992e5f190..d401c84099 100644 --- a/tests/page/page-set-input-files.spec.ts +++ b/tests/page/page-set-input-files.spec.ts @@ -527,8 +527,8 @@ it('should emit event after navigation', async ({ page, server, browserName, bro expect(logs).toEqual(['filechooser', 'filechooser']); }); -it('should trigger listener added before navigation', async ({ page, server , browserMajorVersion, isElectron }) => { - it.skip(isElectron && browserMajorVersion <= 17); +it('should trigger listener added before navigation', async ({ page, server, browserMajorVersion, isElectron }) => { + it.skip(isElectron && browserMajorVersion <= 98); // Add listener before cross process navigation. const chooserPromise = new Promise(f => page.once('filechooser', f)); await page.goto(server.PREFIX + '/empty.html'); diff --git a/tests/page/page-wait-for-load-state.spec.ts b/tests/page/page-wait-for-load-state.spec.ts index 75b24256fd..a4cfef21e5 100644 --- a/tests/page/page-wait-for-load-state.spec.ts +++ b/tests/page/page-wait-for-load-state.spec.ts @@ -132,7 +132,7 @@ it('should work with clicking target=_blank', async ({ page, server }) => { expect(await popup.evaluate(() => document.readyState)).toBe('complete'); }); -it('should wait for load state of newPage', async ({ page, server, isElectron }) => { +it('should wait for load state of newPage', async ({ page, isElectron }) => { it.fixme(isElectron, 'BrowserContext.newPage does not work in Electron'); const [newPage] = await Promise.all([ diff --git a/tests/page/selectors-misc.spec.ts b/tests/page/selectors-misc.spec.ts index fb03201fbf..7daf37882f 100644 --- a/tests/page/selectors-misc.spec.ts +++ b/tests/page/selectors-misc.spec.ts @@ -27,10 +27,9 @@ it('should work for open shadow roots', async ({ page, server }) => { expect(await page.$$(`data-testid:light=foo`)).toEqual([]); }); -it('should click on links in shadow dom', async ({ page, server, browserName, browserMajorVersion, isElectron, isAndroid }) => { +it('should click on links in shadow dom', async ({ page, server, browserName, browserMajorVersion, isAndroid }) => { it.fixme(browserName === 'chromium' && browserMajorVersion < 91, 'Remove when crrev.com/864024 gets to the stable channel'); it.fixme(isAndroid); - it.fixme(isElectron); await page.goto(server.PREFIX + '/shadow-dom-link.html'); expect(await page.evaluate(() => (window as any).clickCount)).toBe(0); diff --git a/tests/page/wheel.spec.ts b/tests/page/wheel.spec.ts index d35e93e8c8..b6df5d909c 100644 --- a/tests/page/wheel.spec.ts +++ b/tests/page/wheel.spec.ts @@ -16,15 +16,14 @@ import type { Page } from 'playwright-core'; import { test as it, expect } from './pageTest'; -it.skip(({ isElectron, browserMajorVersion, isAndroid }) => { - // Old Electron has flaky wheel events. - return (isElectron && browserMajorVersion <= 11) || isAndroid; +it.skip(({ isAndroid }) => { + return isAndroid; }); let ignoreDelta = false; -it.beforeAll(async ({ browserMajorVersion, browserName, platform }) => { - if (browserName === 'chromium' && browserMajorVersion >= 102 && platform === 'darwin') { +it.beforeAll(async ({ browserMajorVersion, browserName, isElectron, platform }) => { + if (((browserName === 'chromium' && browserMajorVersion >= 102) || isElectron) && platform === 'darwin') { // Chromium reports deltaX/deltaY scaled by host device scale factor. // https://bugs.chromium.org/p/chromium/issues/detail?id=1324819 // https://github.com/microsoft/playwright/issues/7362