diff --git a/e2e/modules/environment.js b/e2e/modules/environment.js index e5b434f8..26d8c41b 100644 --- a/e2e/modules/environment.js +++ b/e2e/modules/environment.js @@ -5,6 +5,8 @@ const fs = require('fs'); +const ps = require('ps-node'); + const path = require('path'); const {_electron: electron} = require('playwright'); @@ -119,6 +121,28 @@ module.exports = { demoMattermostConfig, cmdOrCtrl, + async clearElectronInstances() { + if (process.platform !== 'win32') { + return Promise.resolve(); + } + + return new Promise((resolve, reject) => { + ps.lookup({ + command: 'electron', + }, (err, resultList) => { + if (err) { + reject(err); + } + resultList.forEach((process) => { + if (process && process.command === electronBinaryPath && !process.arguments.some((arg) => arg.includes('electron-mocha'))) { + ps.kill(process.pid); + } + }); + resolve(); + }); + }); + }, + cleanTestConfig() { [configFilePath, boundsInfoPath].forEach((file) => { try { diff --git a/e2e/specs/deep_linking/deeplink.test.js b/e2e/specs/deep_linking/deeplink.test.js index c80451ae..41f6b51d 100644 --- a/e2e/specs/deep_linking/deeplink.test.js +++ b/e2e/specs/deep_linking/deeplink.test.js @@ -27,6 +27,7 @@ describe('application', function desc() { // eslint-disable-next-line no-empty } catch (err) {} } + await env.clearElectronInstances(); }); if (process.platform === 'win32') { diff --git a/e2e/specs/focus.test.js b/e2e/specs/focus.test.js index 6faa82b8..329ec65f 100644 --- a/e2e/specs/focus.test.js +++ b/e2e/specs/focus.test.js @@ -58,6 +58,7 @@ describe('focus', function desc() { if (this.app) { await this.app.close(); } + await env.clearElectronInstances(); }); describe('Focus textbox tests', () => { diff --git a/e2e/specs/linux_dark_mode.test.js b/e2e/specs/linux_dark_mode.test.js index 4c682ec9..f3d59291 100644 --- a/e2e/specs/linux_dark_mode.test.js +++ b/e2e/specs/linux_dark_mode.test.js @@ -28,6 +28,7 @@ describe('dark_mode', function desc() { if (this.app) { await this.app.close(); } + await env.clearElectronInstances(); }); if (process.platform === 'linux') { diff --git a/e2e/specs/mattermost/back_button.test.js b/e2e/specs/mattermost/back_button.test.js index 7aa76df9..8a36cd14 100644 --- a/e2e/specs/mattermost/back_button.test.js +++ b/e2e/specs/mattermost/back_button.test.js @@ -53,6 +53,7 @@ describe('back_button', function desc() { if (this.app) { await this.app.close(); } + await env.clearElectronInstances(); }); it('MM-T2633 Back button should behave as expected', async () => { diff --git a/e2e/specs/mattermost/copy_link.test.js b/e2e/specs/mattermost/copy_link.test.js index 164ed5bf..8005e9dd 100644 --- a/e2e/specs/mattermost/copy_link.test.js +++ b/e2e/specs/mattermost/copy_link.test.js @@ -28,6 +28,7 @@ describe('copylink', function desc() { if (this.app) { await this.app.close(); } + await env.clearElectronInstances(); }); it('MM-T125 Copy Link can be used from channel LHS', async () => { diff --git a/e2e/specs/menu_bar/dropdown.test.js b/e2e/specs/menu_bar/dropdown.test.js index 5f49f636..ce0e3e39 100644 --- a/e2e/specs/menu_bar/dropdown.test.js +++ b/e2e/specs/menu_bar/dropdown.test.js @@ -24,6 +24,7 @@ describe('menu_bar/dropdown', function desc() { if (this.app) { await this.app.close(); } + await env.clearElectronInstances(); }); it('MM-T4405 should set name of menu item from config file', async () => { diff --git a/e2e/specs/menu_bar/edit_menu.test.js b/e2e/specs/menu_bar/edit_menu.test.js index 22c2ab0a..826f67e3 100644 --- a/e2e/specs/menu_bar/edit_menu.test.js +++ b/e2e/specs/menu_bar/edit_menu.test.js @@ -28,6 +28,7 @@ describe('edit_menu', function desc() { if (this.app) { await this.app.close(); } + await env.clearElectronInstances(); }); it('MM-T807 Undo in the Menu Bar', async () => { diff --git a/e2e/specs/menu_bar/file_menu.test.js b/e2e/specs/menu_bar/file_menu.test.js index 51eca899..b2b9b7b8 100644 --- a/e2e/specs/menu_bar/file_menu.test.js +++ b/e2e/specs/menu_bar/file_menu.test.js @@ -30,6 +30,7 @@ describe('file_menu/dropdown', function desc() { if (this.app && skipAfterEach === false) { await this.app.close(); } + await env.clearElectronInstances(); }); it('MM-T1313 Open Settings modal using keyboard shortcuts', async () => { diff --git a/e2e/specs/menu_bar/history_menu.test.js b/e2e/specs/menu_bar/history_menu.test.js index f6dd2c8b..0ab21881 100644 --- a/e2e/specs/menu_bar/history_menu.test.js +++ b/e2e/specs/menu_bar/history_menu.test.js @@ -26,6 +26,7 @@ describe('history_menu', function desc() { if (this.app) { await this.app.close(); } + await env.clearElectronInstances(); }); it('Click back and forward from history', async () => { diff --git a/e2e/specs/menu_bar/menu.test.js b/e2e/specs/menu_bar/menu.test.js index b7482e7d..18fb8f17 100644 --- a/e2e/specs/menu_bar/menu.test.js +++ b/e2e/specs/menu_bar/menu.test.js @@ -27,6 +27,7 @@ describe('menu/menu', function desc() { if (this.app) { await this.app.close(); } + await env.clearElectronInstances(); }); if (process.platform !== 'darwin') { diff --git a/e2e/specs/menu_bar/view_menu.test.js b/e2e/specs/menu_bar/view_menu.test.js index 47073364..529e6517 100644 --- a/e2e/specs/menu_bar/view_menu.test.js +++ b/e2e/specs/menu_bar/view_menu.test.js @@ -52,6 +52,7 @@ describe('menu/view', function desc() { if (this.app) { await this.app.close(); } + await env.clearElectronInstances(); }); it('MM-T813 Control+F should focus the search bar in Mattermost', async () => { diff --git a/e2e/specs/menu_bar/window_menu.test.js b/e2e/specs/menu_bar/window_menu.test.js index b7bd36a2..92017ce3 100644 --- a/e2e/specs/menu_bar/window_menu.test.js +++ b/e2e/specs/menu_bar/window_menu.test.js @@ -57,6 +57,7 @@ describe('Menu/window_menu', function desc() { if (this.app) { await this.app.close(); } + await env.clearElectronInstances(); }); it('MM-T826 should switch to servers when keyboard shortcuts are pressed', async () => { diff --git a/e2e/specs/popup.test.js b/e2e/specs/popup.test.js index 089257b7..22e27528 100644 --- a/e2e/specs/popup.test.js +++ b/e2e/specs/popup.test.js @@ -28,6 +28,7 @@ describe('popup', function desc() { if (this.app) { await this.app.close(); } + await env.clearElectronInstances(); }); // NOTE: These tests requires that the test server have the GitHub plugin configured diff --git a/e2e/specs/relative_url/relative_url.test.js b/e2e/specs/relative_url/relative_url.test.js index 688a7c05..e9dd1cd3 100644 --- a/e2e/specs/relative_url/relative_url.test.js +++ b/e2e/specs/relative_url/relative_url.test.js @@ -28,6 +28,7 @@ describe('copylink', function desc() { if (this.app) { await this.app.close(); } + await env.clearElectronInstances(); }); it('MM-T1308 Check that external links dont open in the app', async () => { diff --git a/e2e/specs/server_management/add_server_modal.test.js b/e2e/specs/server_management/add_server_modal.test.js index 55baa700..c7d210ff 100644 --- a/e2e/specs/server_management/add_server_modal.test.js +++ b/e2e/specs/server_management/add_server_modal.test.js @@ -35,6 +35,7 @@ describe('Add Server Modal', function desc() { if (this.app) { await this.app.close(); } + await env.clearElectronInstances(); }); let newServerView; diff --git a/e2e/specs/server_management/drag_and_drop.test.js b/e2e/specs/server_management/drag_and_drop.test.js index a011364d..7a762230 100644 --- a/e2e/specs/server_management/drag_and_drop.test.js +++ b/e2e/specs/server_management/drag_and_drop.test.js @@ -52,6 +52,7 @@ describe('server_management/drag_and_drop', function desc() { if (this.app) { await this.app.close(); } + await env.clearElectronInstances(); }); it('MM-T2634 should be able to drag and drop servers in the dropdown menu', async () => { diff --git a/e2e/specs/server_management/edit_server_modal.test.js b/e2e/specs/server_management/edit_server_modal.test.js index 6060e6b1..a3e731ce 100644 --- a/e2e/specs/server_management/edit_server_modal.test.js +++ b/e2e/specs/server_management/edit_server_modal.test.js @@ -34,6 +34,7 @@ describe('EditServerModal', function desc() { if (this.app) { await this.app.close(); } + await env.clearElectronInstances(); }); let editServerView; diff --git a/e2e/specs/server_management/header.test.js b/e2e/specs/server_management/header.test.js index fb582740..af883702 100644 --- a/e2e/specs/server_management/header.test.js +++ b/e2e/specs/server_management/header.test.js @@ -23,6 +23,7 @@ describe('header', function desc() { // eslint-disable-next-line no-empty } catch (err) {} } + await env.clearElectronInstances(); }); it('MM-T2637 Double-Clicking on the header should minimize/maximize the app', async () => { diff --git a/e2e/specs/server_management/long_server_name.test.js b/e2e/specs/server_management/long_server_name.test.js index d7412c95..2e30bc45 100644 --- a/e2e/specs/server_management/long_server_name.test.js +++ b/e2e/specs/server_management/long_server_name.test.js @@ -38,6 +38,7 @@ describe('LongServerName', function desc() { if (this.app) { await this.app.close(); } + await env.clearElectronInstances(); }); let newServerView; diff --git a/e2e/specs/server_management/remove_server_modal.test.js b/e2e/specs/server_management/remove_server_modal.test.js index 3e9b118e..f2069e9c 100644 --- a/e2e/specs/server_management/remove_server_modal.test.js +++ b/e2e/specs/server_management/remove_server_modal.test.js @@ -37,6 +37,7 @@ describe('RemoveServerModal', function desc() { if (this.app) { await this.app.close(); } + await env.clearElectronInstances(); }); let removeServerView; diff --git a/e2e/specs/settings.test.js b/e2e/specs/settings.test.js index 974a16f5..72c02646 100644 --- a/e2e/specs/settings.test.js +++ b/e2e/specs/settings.test.js @@ -28,6 +28,7 @@ describe('Settings', function desc() { if (this.app) { await this.app.close(); } + await env.clearElectronInstances(); }); describe('Options', () => { diff --git a/e2e/specs/settings/keyboard_shortcuts.test.js b/e2e/specs/settings/keyboard_shortcuts.test.js index 6832e360..e78517f6 100644 --- a/e2e/specs/settings/keyboard_shortcuts.test.js +++ b/e2e/specs/settings/keyboard_shortcuts.test.js @@ -28,6 +28,7 @@ describe('settings/keyboard_shortcuts', function desc() { if (this.app) { await this.app.close(); } + await env.clearElectronInstances(); }); describe('MM-T1288 Manipulating Text', () => { diff --git a/e2e/specs/startup/app.test.js b/e2e/specs/startup/app.test.js index 38646744..d530fd80 100644 --- a/e2e/specs/startup/app.test.js +++ b/e2e/specs/startup/app.test.js @@ -21,6 +21,7 @@ describe('startup/app', function desc() { if (this.app) { await this.app.close(); } + await env.clearElectronInstances(); }); it('MM-T4399_1 should show the new server modal when no servers exist', async () => { diff --git a/e2e/specs/startup/config.test.js b/e2e/specs/startup/config.test.js index 7333352d..bda9d113 100644 --- a/e2e/specs/startup/config.test.js +++ b/e2e/specs/startup/config.test.js @@ -22,6 +22,7 @@ describe('config', function desc() { // eslint-disable-next-line no-empty } catch (err) {} } + await env.clearElectronInstances(); }); describe('MM-T4401 should show servers in dropdown when there is config file', async () => { diff --git a/e2e/specs/startup/window.test.js b/e2e/specs/startup/window.test.js index 0db84c83..6de2fed6 100644 --- a/e2e/specs/startup/window.test.js +++ b/e2e/specs/startup/window.test.js @@ -22,6 +22,7 @@ describe('window', function desc() { // eslint-disable-next-line no-empty } catch (err) {} } + await env.clearElectronInstances(); }); // TODO: this fails on Linux right now due to the window frame for some reason diff --git a/package-lock.json b/package-lock.json index 2c59eac6..2f6bcc20 100644 --- a/package-lock.json +++ b/package-lock.json @@ -88,7 +88,8 @@ "mocha-circleci-reporter": "0.0.3", "node-gyp": "9.0.0", "npm-run-all": "4.1.5", - "playwright": "1.20.2", + "playwright": "1.23.4", + "ps-node": "^0.1.6", "robotjs": "0.6.0", "sass-loader": "12.6.0", "shebang-loader": "0.0.1", @@ -9352,16 +9353,6 @@ "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", "dev": true }, - "node_modules/@types/yauzl": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", - "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", - "dev": true, - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.18.0.tgz", @@ -13475,6 +13466,12 @@ "node": ">=0.8" } }, + "node_modules/connected-domain": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/connected-domain/-/connected-domain-1.0.0.tgz", + "integrity": "sha512-lHlohUiJxlpunvDag2Y0pO20bnvarMjnrdciZeuJUqRwrf/5JHNhdpiPIr5GQ8IkqrFj5TDMQwcCjblGo1oeuA==", + "dev": true + }, "node_modules/console-browserify": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", @@ -22717,12 +22714,6 @@ "@sideway/pinpoint": "^2.0.0" } }, - "node_modules/jpeg-js": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.3.tgz", - "integrity": "sha512-ru1HWKek8octvUHFHvE5ZzQ1yAsJmIvRdGWvSoKV52XKyuyYA437QWDttXT8eZXDSbuMpHlLzPDZUPd6idIz+Q==", - "dev": true - }, "node_modules/jquery": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", @@ -25952,27 +25943,6 @@ "node": ">= 6" } }, - "node_modules/pixelmatch": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.2.1.tgz", - "integrity": "sha512-WjcAdYSnKrrdDdqTcVEY7aB7UhhwjYQKYhHiBXdJef0MOaQeYpUdQ+iVyBLa5YBKS8MPVPPMX7rpOByISLpeEQ==", - "dev": true, - "dependencies": { - "pngjs": "^4.0.1" - }, - "bin": { - "pixelmatch": "bin/pixelmatch" - } - }, - "node_modules/pixelmatch/node_modules/pngjs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-4.0.1.tgz", - "integrity": "sha512-rf5+2/ioHeQxR6IxuYNYGFytUyG3lma/WW1nsmjeHlWwtb2aByla6dkVc8pmJ9nplzkTA0q2xx7mMWrOTqT4Gg==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -26023,143 +25993,31 @@ } }, "node_modules/playwright": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.20.2.tgz", - "integrity": "sha512-p6GE8A/f2G7t8FIk/AwQ94nT7R7tyPRJyKt1FwRjwBDf4WdpgoAr4hDfMgHy+CkClR22adFjopGwhxXAPsewhg==", + "version": "1.23.4", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.23.4.tgz", + "integrity": "sha512-NUPOLMpd8WydmwZFllST/YZ7cImgDDDrvcaq7Gj2vAjNg0jYCndFJt6HHtbkOPSIlRo4BaQYlbFx6meq1r1FXQ==", "dev": true, "hasInstallScript": true, "dependencies": { - "playwright-core": "1.20.2" + "playwright-core": "1.23.4" }, "bin": { "playwright": "cli.js" }, "engines": { - "node": ">=12" + "node": ">=14" } }, "node_modules/playwright-core": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.20.2.tgz", - "integrity": "sha512-iV6+HftSPalynkq0CYJala1vaTOq7+gU9BRfKCdM9bAxNq/lFLrwbluug2Wt5OoUwbMABcnTThIEm3/qUhCdJQ==", + "version": "1.23.4", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.23.4.tgz", + "integrity": "sha512-h5V2yw7d8xIwotjyNrkLF13nV9RiiZLHdXeHo+nVJIYGVlZ8U2qV0pMxNJKNTvfQVT0N8/A4CW6/4EW2cOcTiA==", "dev": true, - "dependencies": { - "colors": "1.4.0", - "commander": "8.3.0", - "debug": "4.3.3", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.0", - "jpeg-js": "0.4.3", - "mime": "3.0.0", - "pixelmatch": "5.2.1", - "pngjs": "6.0.0", - "progress": "2.0.3", - "proper-lockfile": "4.1.2", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "socks-proxy-agent": "6.1.1", - "stack-utils": "2.0.5", - "ws": "8.4.2", - "yauzl": "2.10.0", - "yazl": "2.5.1" - }, "bin": { "playwright": "cli.js" }, "engines": { - "node": ">=12" - } - }, - "node_modules/playwright-core/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/playwright-core/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-core/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" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/playwright-core/node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/playwright-core/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/playwright-core/node_modules/ws": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz", - "integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "node": ">=14" } }, "node_modules/plist": { @@ -26184,15 +26042,6 @@ "node": ">=4.0" } }, - "node_modules/pngjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", - "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", - "dev": true, - "engines": { - "node": ">=12.13.0" - } - }, "node_modules/pnp-webpack-plugin": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", @@ -26611,17 +26460,6 @@ "react": ">=0.14.0" } }, - "node_modules/proper-lockfile": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", - "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "retry": "^0.12.0", - "signal-exit": "^3.0.2" - } - }, "node_modules/property-information": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", @@ -26655,18 +26493,21 @@ "node": ">= 0.10" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, + "node_modules/ps-node": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ps-node/-/ps-node-0.1.6.tgz", + "integrity": "sha512-w7QJhUTbu70hpDso0YXDRNKCPNuchV8UTUZsAv0m7Qj5g85oHOJfr9drA1EjvK4nQK/bG8P97W4L6PJ3IQLoOA==", + "dev": true, + "dependencies": { + "table-parser": "^0.1.3" + } + }, "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -29544,6 +29385,15 @@ "node": ">=10.0.0" } }, + "node_modules/table-parser": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/table-parser/-/table-parser-0.1.3.tgz", + "integrity": "sha512-LCYeuvqqoPII3lzzYaXKbC3Forb+d2u4bNwhk/9FlivuGRxPE28YEWAYcujeSlLLDlMfvy29+WPybFJZFiKMYg==", + "dev": true, + "dependencies": { + "connected-domain": "^1.0.0" + } + }, "node_modules/table/node_modules/ajv": { "version": "8.11.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", @@ -32295,15 +32145,6 @@ "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/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -39523,16 +39364,6 @@ "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", "dev": true }, - "@types/yauzl": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", - "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", - "dev": true, - "optional": true, - "requires": { - "@types/node": "*" - } - }, "@typescript-eslint/eslint-plugin": { "version": "5.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.18.0.tgz", @@ -42764,6 +42595,12 @@ "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "dev": true }, + "connected-domain": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/connected-domain/-/connected-domain-1.0.0.tgz", + "integrity": "sha512-lHlohUiJxlpunvDag2Y0pO20bnvarMjnrdciZeuJUqRwrf/5JHNhdpiPIr5GQ8IkqrFj5TDMQwcCjblGo1oeuA==", + "dev": true + }, "console-browserify": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", @@ -49851,12 +49688,6 @@ "@sideway/pinpoint": "^2.0.0" } }, - "jpeg-js": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.3.tgz", - "integrity": "sha512-ru1HWKek8octvUHFHvE5ZzQ1yAsJmIvRdGWvSoKV52XKyuyYA437QWDttXT8eZXDSbuMpHlLzPDZUPd6idIz+Q==", - "dev": true - }, "jquery": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", @@ -52420,23 +52251,6 @@ "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", "dev": true }, - "pixelmatch": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.2.1.tgz", - "integrity": "sha512-WjcAdYSnKrrdDdqTcVEY7aB7UhhwjYQKYhHiBXdJef0MOaQeYpUdQ+iVyBLa5YBKS8MPVPPMX7rpOByISLpeEQ==", - "dev": true, - "requires": { - "pngjs": "^4.0.1" - }, - "dependencies": { - "pngjs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-4.0.1.tgz", - "integrity": "sha512-rf5+2/ioHeQxR6IxuYNYGFytUyG3lma/WW1nsmjeHlWwtb2aByla6dkVc8pmJ9nplzkTA0q2xx7mMWrOTqT4Gg==", - "dev": true - } - } - }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -52477,90 +52291,19 @@ } }, "playwright": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.20.2.tgz", - "integrity": "sha512-p6GE8A/f2G7t8FIk/AwQ94nT7R7tyPRJyKt1FwRjwBDf4WdpgoAr4hDfMgHy+CkClR22adFjopGwhxXAPsewhg==", + "version": "1.23.4", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.23.4.tgz", + "integrity": "sha512-NUPOLMpd8WydmwZFllST/YZ7cImgDDDrvcaq7Gj2vAjNg0jYCndFJt6HHtbkOPSIlRo4BaQYlbFx6meq1r1FXQ==", "dev": true, "requires": { - "playwright-core": "1.20.2" + "playwright-core": "1.23.4" } }, "playwright-core": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.20.2.tgz", - "integrity": "sha512-iV6+HftSPalynkq0CYJala1vaTOq7+gU9BRfKCdM9bAxNq/lFLrwbluug2Wt5OoUwbMABcnTThIEm3/qUhCdJQ==", - "dev": true, - "requires": { - "colors": "1.4.0", - "commander": "8.3.0", - "debug": "4.3.3", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.0", - "jpeg-js": "0.4.3", - "mime": "3.0.0", - "pixelmatch": "5.2.1", - "pngjs": "6.0.0", - "progress": "2.0.3", - "proper-lockfile": "4.1.2", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "socks-proxy-agent": "6.1.1", - "stack-utils": "2.0.5", - "ws": "8.4.2", - "yauzl": "2.10.0", - "yazl": "2.5.1" - }, - "dependencies": { - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true - }, - "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" - } - }, - "mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ws": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz", - "integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==", - "dev": true, - "requires": {} - } - } + "version": "1.23.4", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.23.4.tgz", + "integrity": "sha512-h5V2yw7d8xIwotjyNrkLF13nV9RiiZLHdXeHo+nVJIYGVlZ8U2qV0pMxNJKNTvfQVT0N8/A4CW6/4EW2cOcTiA==", + "dev": true }, "plist": { "version": "3.0.5", @@ -52580,12 +52323,6 @@ } } }, - "pngjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", - "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", - "dev": true - }, "pnp-webpack-plugin": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", @@ -52898,17 +52635,6 @@ "warning": "^4.0.0" } }, - "proper-lockfile": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", - "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "retry": "^0.12.0", - "signal-exit": "^3.0.2" - } - }, "property-information": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", @@ -52935,18 +52661,21 @@ "ipaddr.js": "1.9.1" } }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, + "ps-node": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ps-node/-/ps-node-0.1.6.tgz", + "integrity": "sha512-w7QJhUTbu70hpDso0YXDRNKCPNuchV8UTUZsAv0m7Qj5g85oHOJfr9drA1EjvK4nQK/bG8P97W4L6PJ3IQLoOA==", + "dev": true, + "requires": { + "table-parser": "^0.1.3" + } + }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -55321,6 +55050,15 @@ } } }, + "table-parser": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/table-parser/-/table-parser-0.1.3.tgz", + "integrity": "sha512-LCYeuvqqoPII3lzzYaXKbC3Forb+d2u4bNwhk/9FlivuGRxPE28YEWAYcujeSlLLDlMfvy29+WPybFJZFiKMYg==", + "dev": true, + "requires": { + "connected-domain": "^1.0.0" + } + }, "tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -57408,15 +57146,6 @@ "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" - } - }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 21bf7ca2..80aa5c71 100644 --- a/package.json +++ b/package.json @@ -166,7 +166,8 @@ "mocha-circleci-reporter": "0.0.3", "node-gyp": "9.0.0", "npm-run-all": "4.1.5", - "playwright": "1.20.2", + "playwright": "1.23.4", + "ps-node": "^0.1.6", "robotjs": "0.6.0", "sass-loader": "12.6.0", "shebang-loader": "0.0.1",