diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..882b0c39 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +playwright_skip_browser_download=1 diff --git a/package-lock.json b/package-lock.json index 2f91e4a7..5ee1298d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -93,8 +93,7 @@ "lint-staged": "^10.5.4", "mini-css-extract-plugin": "^1.6.0", "mocha": "^9.2.0", - "playwright-core": "^1.9.1", - "playwright-electron": "^0.5.0", + "playwright": "^1.18.1", "postcss": "^8.3.0", "postcss-loader": "^5.3.0", "prettier": "^2.2.1", @@ -27127,14 +27126,29 @@ "node": ">=6" } }, - "node_modules/playwright-core": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.9.1.tgz", - "integrity": "sha512-V/i2kMWRaJ+76XTCiR0+dS711V0+JVPNw+YcOiCa0GjGiq3bEhZCFPeHMv++BH4hfC3jFXuD9/XUaw2to6EVcw==", + "node_modules/playwright": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.18.1.tgz", + "integrity": "sha512-8EaX9EtbtAoMq5tnzIsoA3b/V86V/6Mq2skuOU4qEw+5OVxs1lwesDwmjy/RVU1Qfx5UuwSQzhp45wyH22oa+A==", "dev": true, "hasInstallScript": true, "dependencies": { - "commander": "^6.1.0", + "playwright-core": "=1.18.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/playwright-core": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.18.1.tgz", + "integrity": "sha512-NALGl8R1GHzGLlhUApmpmfh6M1rrrPcDTygWvhTbprxwGB9qd/j9DRwyn4HTQcUB6o0/VOpo46fH9ez3+D/Rog==", + "dev": true, + "dependencies": { + "commander": "^8.2.0", "debug": "^4.1.1", "extract-zip": "^2.0.1", "https-proxy-agent": "^5.0.0", @@ -27145,23 +27159,26 @@ "proper-lockfile": "^4.1.1", "proxy-from-env": "^1.1.0", "rimraf": "^3.0.2", + "socks-proxy-agent": "^6.1.0", "stack-utils": "^2.0.3", - "ws": "^7.3.1" + "ws": "^7.4.6", + "yauzl": "^2.10.0", + "yazl": "^2.5.1" }, "bin": { - "playwright": "lib/cli/cli.js" + "playwright": "cli.js" }, "engines": { - "node": ">=10.17.0" + "node": ">=12" } }, "node_modules/playwright-core/node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, "engines": { - "node": ">= 6" + "node": ">= 12" } }, "node_modules/playwright-core/node_modules/extract-zip": { @@ -27205,82 +27222,6 @@ "node": ">=8.3.0" } }, - "node_modules/playwright-electron": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/playwright-electron/-/playwright-electron-0.5.0.tgz", - "integrity": "sha512-DHLV9D9DPJfXe1/nrq5DMkHzLcqOxII5M0Yi6BHy9dDlMjOshOa3C/WxSBvxZ7l7R/3bMRtOU3o1NCy8aueBaQ==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "debug": "^4.1.1", - "extract-zip": "^2.0.1", - "https-proxy-agent": "^5.0.0", - "jpeg-js": "^0.4.2", - "mime": "^2.4.6", - "pngjs": "^5.0.0", - "progress": "^2.0.3", - "proper-lockfile": "^4.1.1", - "proxy-from-env": "^1.1.0", - "rimraf": "^3.0.2", - "ws": "^7.3.1" - }, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/playwright-electron/node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/playwright-electron/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/playwright-electron/node_modules/ws": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", - "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/please-upgrade-node": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", @@ -30201,7 +30142,6 @@ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, - "optional": true, "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -30396,6 +30336,34 @@ "uuid": "bin/uuid" } }, + "node_modules/socks": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", + "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", + "dev": true, + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -34567,6 +34535,15 @@ "fd-slicer": "~1.1.0" } }, + "node_modules/yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3" + } + }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", @@ -56508,13 +56485,22 @@ "find-up": "^3.0.0" } }, + "playwright": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.18.1.tgz", + "integrity": "sha512-8EaX9EtbtAoMq5tnzIsoA3b/V86V/6Mq2skuOU4qEw+5OVxs1lwesDwmjy/RVU1Qfx5UuwSQzhp45wyH22oa+A==", + "dev": true, + "requires": { + "playwright-core": "=1.18.1" + } + }, "playwright-core": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.9.1.tgz", - "integrity": "sha512-V/i2kMWRaJ+76XTCiR0+dS711V0+JVPNw+YcOiCa0GjGiq3bEhZCFPeHMv++BH4hfC3jFXuD9/XUaw2to6EVcw==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.18.1.tgz", + "integrity": "sha512-NALGl8R1GHzGLlhUApmpmfh6M1rrrPcDTygWvhTbprxwGB9qd/j9DRwyn4HTQcUB6o0/VOpo46fH9ez3+D/Rog==", "dev": true, "requires": { - "commander": "^6.1.0", + "commander": "^8.2.0", "debug": "^4.1.1", "extract-zip": "^2.0.1", "https-proxy-agent": "^5.0.0", @@ -56525,14 +56511,17 @@ "proper-lockfile": "^4.1.1", "proxy-from-env": "^1.1.0", "rimraf": "^3.0.2", + "socks-proxy-agent": "^6.1.0", "stack-utils": "^2.0.3", - "ws": "^7.3.1" + "ws": "^7.4.6", + "yauzl": "^2.10.0", + "yazl": "^2.5.1" }, "dependencies": { "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true }, "extract-zip": { @@ -56564,55 +56553,6 @@ } } }, - "playwright-electron": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/playwright-electron/-/playwright-electron-0.5.0.tgz", - "integrity": "sha512-DHLV9D9DPJfXe1/nrq5DMkHzLcqOxII5M0Yi6BHy9dDlMjOshOa3C/WxSBvxZ7l7R/3bMRtOU3o1NCy8aueBaQ==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "extract-zip": "^2.0.1", - "https-proxy-agent": "^5.0.0", - "jpeg-js": "^0.4.2", - "mime": "^2.4.6", - "pngjs": "^5.0.0", - "progress": "^2.0.3", - "proper-lockfile": "^4.1.1", - "proxy-from-env": "^1.1.0", - "rimraf": "^3.0.2", - "ws": "^7.3.1" - }, - "dependencies": { - "extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "requires": { - "@types/yauzl": "^2.9.1", - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "ws": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", - "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", - "dev": true, - "requires": {} - } - } - }, "please-upgrade-node": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", @@ -59053,8 +58993,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true, - "optional": true + "dev": true }, "snapdragon": { "version": "0.8.2", @@ -59222,6 +59161,27 @@ } } }, + "socks": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", + "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", + "dev": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + } + }, "source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -62517,6 +62477,15 @@ "fd-slicer": "~1.1.0" } }, + "yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3" + } + }, "yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/package.json b/package.json index 64189609..8c78d230 100644 --- a/package.json +++ b/package.json @@ -176,8 +176,7 @@ "lint-staged": "^10.5.4", "mini-css-extract-plugin": "^1.6.0", "mocha": "^9.2.0", - "playwright-core": "^1.9.1", - "playwright-electron": "^0.5.0", + "playwright": "^1.18.1", "postcss": "^8.3.0", "postcss-loader": "^5.3.0", "prettier": "^2.2.1", diff --git a/test/e2e/helper.ts b/test/e2e/helper.ts index 90f17dbe..ed6bad07 100644 --- a/test/e2e/helper.ts +++ b/test/e2e/helper.ts @@ -1,8 +1,7 @@ import path from 'path'; import { expect } from 'chai'; -import electronPath = require('electron'); -import { electron, ElectronApplication, Page } from 'playwright-electron'; -import { ElementHandle } from 'playwright-core'; +import { _electron as electron, ElementHandle } from 'playwright'; +import type { ElectronApplication, Page } from 'playwright'; const startApp = async ({ sqlectronHome, @@ -10,18 +9,17 @@ const startApp = async ({ sqlectronHome: string; }): Promise<{ app: ElectronApplication; mainWindow: Page }> => { // Start Electron application - // @ts-ignore - const app: ElectronApplication = await electron.launch(electronPath, { - path: electronPath, + const app: ElectronApplication = await electron.launch({ args: process.env.DEV_MODE === 'true' ? [path.join(__dirname, '../../src/browser/main'), '--dev'] : [path.join(__dirname, '../../out/browser/main')], // MUST pass along the host env variables, otherwise it will // crash if we use a custom env variable with tests running with xvfb - env: Object.assign({}, process.env, { + env: { + ...process.env, SQLECTRON_HOME: sqlectronHome, - }), + }, }); const mainWindow = await getAppPage(app); @@ -40,7 +38,7 @@ const getAppPage = async (app: ElectronApplication, { waitAppLoad = true } = {}) // Attempt though 25 times waiting 1s between each attempt // to get the application page for (let attempt = 0; attempt < 25; attempt++) { - const windows = await app.windows(); + const windows = app.windows(); for (let i = 0; i < windows.length; i++) { const page = windows[i]; diff --git a/test/e2e/test.mainWindow.ts b/test/e2e/test.mainWindow.ts index c64b4527..e5e7a829 100644 --- a/test/e2e/test.mainWindow.ts +++ b/test/e2e/test.mainWindow.ts @@ -3,10 +3,11 @@ import path from 'path'; import { expect } from 'chai'; import helper from './helper'; +import type { ElectronApplication, Page } from 'playwright'; describe('MainWindow', function () { - let app; - let mainWindow; + let app: ElectronApplication; + let mainWindow: Page; before(async () => { // Makes a copy of the file, because the app writes to it during the startup