From ebe08911b546be15e0c975cd4d1f2c53573b58f6 Mon Sep 17 00:00:00 2001 From: Carlos Alcaide Date: Fri, 24 Sep 2021 12:27:27 +0200 Subject: [PATCH] =?UTF-8?q?test:=20=F0=9F=92=8D=20Add=20Authentication=20e?= =?UTF-8?q?nd=20to=20end=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add first suite of end to end tests using playwright. The first test is Authentication with user/password --- ui/desktop/.gitignore | 3 + ui/desktop/package.json | 3 + .../authentication/fillUserPassword.png | Bin 0 -> 105513 bytes .../tests/end2end/authentication.spec.js | 109 +++++++ yarn.lock | 277 ++++++++++++++++-- 5 files changed, 360 insertions(+), 32 deletions(-) create mode 100644 ui/desktop/screenshots/authentication/fillUserPassword.png create mode 100644 ui/desktop/tests/end2end/authentication.spec.js diff --git a/ui/desktop/.gitignore b/ui/desktop/.gitignore index f414c569a..42faa5e1e 100644 --- a/ui/desktop/.gitignore +++ b/ui/desktop/.gitignore @@ -27,3 +27,6 @@ # Vagrant .vagrant/ + +# End 2 end testing screenshots +/tests/end2end/screenshots/ diff --git a/ui/desktop/package.json b/ui/desktop/package.json index 4f0dfb6ca..835e3f70e 100755 --- a/ui/desktop/package.json +++ b/ui/desktop/package.json @@ -37,6 +37,7 @@ "pretest": "yarn clean:coverage", "test": "npm-run-all lint test:*", "test:ember": "cross-env COVERAGE=true ember exam --random", + "test:e2e": "npx playwright test --headed", "postinstall": "cd electron-app && yarn install", "posttest": "ember coverage-merge && yarn clean:coverage" }, @@ -57,6 +58,7 @@ "@ember/test-helpers": "^2.4.2", "@glimmer/component": "^1.0.4", "@glimmer/tracking": "^1.0.4", + "@playwright/test": "^1.15.0", "babel-eslint": "^10.1.0", "babel-loader": "^8.2.2", "broccoli-asset-rev": "^3.0.0", @@ -102,6 +104,7 @@ "faker": "^5.5.3", "loader.js": "^4.7.0", "npm-run-all": "^4.1.5", + "playwright": "^1.15.0", "prettier": "^2.4.0", "qunit": "^2.17.1", "qunit-dom": "^2.0.0", diff --git a/ui/desktop/screenshots/authentication/fillUserPassword.png b/ui/desktop/screenshots/authentication/fillUserPassword.png new file mode 100644 index 0000000000000000000000000000000000000000..6fe89682d119d38b8402dc5b9ad16a8ffbb7bf13 GIT binary patch literal 105513 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 W_bv+xPR0SZfU?oQUv=;C^Zx>4Qznf7 literal 0 HcmV?d00001 diff --git a/ui/desktop/tests/end2end/authentication.spec.js b/ui/desktop/tests/end2end/authentication.spec.js new file mode 100644 index 000000000..4e871f171 --- /dev/null +++ b/ui/desktop/tests/end2end/authentication.spec.js @@ -0,0 +1,109 @@ +/* eslint-disable no-undef */ +const { test, expect } = require('@playwright/test'); +const { _electron: electron } = require('playwright'); +const path = require('path'); + +let electronApp = null; +const returnScreenshotPath = (fileName) => { + const screenshotPath = 'tests/end2end/screenshots/authentication/'; + const screenshotFormat = '.png'; + return path.join(screenshotPath, fileName).concat(screenshotFormat); +}; + +test.beforeEach(async () => { + electronApp = await electron.launch({ + executablePath: + 'electron-app/out/Boundary-darwin-arm64/Boundary.app/Contents/MacOS/Boundary', + env: { + NODE_ENV: 'test', + BYPASS_APP_UPDATER: true, + }, + }); +}); + +test.afterEach(async () => { + electronApp.close(); + electronApp = null; // Not sure we should do this. +}); + +test.describe('Authentication end to end test suite', async () => { + test('Authenticates using user and password method and deauthenticates ', async () => { + const boundaryWindow = await electronApp.firstWindow(); // The window that contains the app. + // Override local storage origin + await boundaryWindow.evaluate(() => + window.localStorage.setItem('desktop:origin', null) + ); + const originValue = 'http://localhost:9200'; + const authLoginNameValue = 'admin'; + const authLoginPasswordValue = 'password'; + + // Fill the origin input + await boundaryWindow.fill('.ember-text-field', originValue); + // Take screenshot + await boundaryWindow.screenshot({ + path: returnScreenshotPath('fillOrigin'), + fullPage: true, + }); + + // Click the submit button + // Due to an error with await boundaryWindow.click('button[type="submit"]'); we are using a workaround. + // More info about it here: https://github.com/microsoft/playwright/issues/1808 + await boundaryWindow.$eval('button[type="submit"]', (element) => + element.click() + ); + // Fill user & password + await boundaryWindow.fill('[name="identification"]', authLoginNameValue); + await boundaryWindow.fill('[name="password"]', authLoginPasswordValue); + // Take screenshot + await boundaryWindow.screenshot({ + path: returnScreenshotPath('fillUserPassword'), + fullPage: true, + }); + + // Click submit + await boundaryWindow.$eval('button[type="submit"]', (element) => + element.click() + ); + await boundaryWindow.waitForSelector('h2 >> text=Targets'); + + expect(await boundaryWindow.innerText('h2 >> text=Targets')).toEqual( + 'Targets ' + ); + // Take screenshot + await boundaryWindow.screenshot({ + path: returnScreenshotPath('afterLogin'), + fullPage: true, + }); + + // Opens user dropdown + await boundaryWindow.waitForSelector('.rose-header-utilities'); + await boundaryWindow.$eval('.rose-header-utilities summary', (element) => + element.click() + ); + + await boundaryWindow.waitForSelector('details[open]'); + // User dropdown is visible + expect(await boundaryWindow.isVisible('details')); + // Take screenshot + await boundaryWindow.screenshot({ + path: returnScreenshotPath('userDropdown'), + fullPage: true, + }); + + // Clicks Deauthenticate + await boundaryWindow.$eval('text="Deauthenticate"', (element) => + element.click() + ); + + await boundaryWindow.waitForSelector('main >> div.branded-card'); + // Makes sure we are log out + expect(await boundaryWindow.isVisible('h2 >> text=Authenticate')); + // ToDo: create an assertion checking localstorage ember_simple_auth-session key + + // Take screenshot + await boundaryWindow.screenshot({ + path: returnScreenshotPath('afterLogout'), + fullPage: true, + }); + }); +}); diff --git a/yarn.lock b/yarn.lock index a467a175c..c1abd043a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -78,7 +78,7 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/core@^7.15.5": +"@babel/core@^7.14.8", "@babel/core@^7.15.5": version "7.15.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9" integrity sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg== @@ -922,6 +922,16 @@ "@babel/helper-plugin-utils" "^7.14.5" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-commonjs@^7.14.5": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz#8201101240eabb5a76c08ef61b2954f767b6b4c1" + integrity sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA== + dependencies: + "@babel/helper-module-transforms" "^7.15.4" + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-simple-access" "^7.15.4" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-commonjs@^7.15.0": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.0.tgz#3305896e5835f953b5cdb363acd9e8c2219a5281" @@ -1249,7 +1259,7 @@ "@babel/plugin-transform-react-jsx-development" "^7.14.5" "@babel/plugin-transform-react-pure-annotations" "^7.14.5" -"@babel/preset-typescript@^7.12.7": +"@babel/preset-typescript@^7.12.7", "@babel/preset-typescript@^7.14.5": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.15.0.tgz#e8fca638a1a0f64f14e1119f7fe4500277840945" integrity sha512-lt0Y/8V3y06Wq/8H/u0WakrqciZ7Fz7mwPDHWUJAXlABL5hiUG42BNlRXiELNjeWjO5rWmnNKlx+yzJvxezHow== @@ -2576,6 +2586,51 @@ mkdirp "^1.0.4" rimraf "^3.0.2" +"@playwright/test@^1.15.0": + version "1.15.0" + resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.15.0.tgz#fd9b5748ad9fb61d96a98d09135f412e800e5343" + integrity sha512-iDTD2Y3SwyFD6xHNbipyH6O/e0OQ/dJsrsiI8uz4YsRN1aeH1EJs+2qBveVtKW1nR/r0Ml/r3/VPCEi91JWPsw== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/core" "^7.14.8" + "@babel/plugin-proposal-class-properties" "^7.14.5" + "@babel/plugin-proposal-dynamic-import" "^7.14.5" + "@babel/plugin-proposal-export-namespace-from" "^7.14.5" + "@babel/plugin-proposal-logical-assignment-operators" "^7.14.5" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5" + "@babel/plugin-proposal-numeric-separator" "^7.14.5" + "@babel/plugin-proposal-optional-chaining" "^7.14.5" + "@babel/plugin-proposal-private-methods" "^7.14.5" + "@babel/plugin-proposal-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-transform-modules-commonjs" "^7.14.5" + "@babel/preset-typescript" "^7.14.5" + colors "^1.4.0" + commander "^6.1.0" + debug "^4.1.1" + expect "^26.4.2" + extract-zip "^2.0.1" + https-proxy-agent "^5.0.0" + jpeg-js "^0.4.2" + mime "^2.4.6" + minimatch "^3.0.3" + ms "^2.1.2" + open "^8.2.1" + pirates "^4.0.1" + pixelmatch "^5.2.1" + pngjs "^5.0.0" + progress "^2.0.3" + proper-lockfile "^4.1.1" + proxy-from-env "^1.1.0" + rimraf "^3.0.2" + source-map-support "^0.4.18" + stack-utils "^2.0.3" + ws "^7.4.6" + yazl "^2.5.1" + "@popperjs/core@^2.5.4", "@popperjs/core@^2.6.0": version "2.9.3" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.9.3.tgz#8b68da1ebd7fc603999cf6ebee34a4899a14b88e" @@ -3804,6 +3859,11 @@ resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + "@types/symlink-or-copy@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@types/symlink-or-copy/-/symlink-or-copy-1.2.0.tgz#4151a81b4052c80bc2becbae09f3a9ec010a9c7a" @@ -6493,15 +6553,15 @@ browserify-zlib@^0.2.0: pako "~1.0.5" browserslist@4.14.2, browserslist@^3.2.6, browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.16.5, browserslist@^4.16.6, browserslist@^4.16.7: - version "4.17.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.3.tgz#2844cd6eebe14d12384b0122d217550160d2d624" - integrity sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ== + version "4.17.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.1.tgz#a98d104f54af441290b7d592626dd541fa642eb9" + integrity sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ== dependencies: - caniuse-lite "^1.0.30001264" - electron-to-chromium "^1.3.857" + caniuse-lite "^1.0.30001259" + electron-to-chromium "^1.3.846" escalade "^3.1.1" - node-releases "^1.1.77" - picocolors "^0.2.1" + nanocolors "^0.1.5" + node-releases "^1.1.76" bser@2.1.1: version "2.1.1" @@ -6835,10 +6895,12 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001157, caniuse-lite@^1.0.30001264: - version "1.0.30001265" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz#0613c9e6c922e422792e6fcefdf9a3afeee4f8c3" - integrity sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001157, caniuse-lite@^1.0.30001259: + version "1.0.30001260" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001260.tgz#e3be3f34ddad735ca4a2736fa9e768ef34316270" + integrity sha512-Fhjc/k8725ItmrvW5QomzxLeojewxvqiYCKeFcfFEhut28IVLdpHU19dneOmltZQIE5HNbawj1HYD+1f2bM1Dg== + dependencies: + nanocolors "^0.1.0" capture-exit@^2.0.0: version "2.0.0" @@ -7407,7 +7469,7 @@ commander@^5.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@^6.2.1: +commander@^6.1.0, commander@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== @@ -8203,6 +8265,11 @@ defer-to-connect@^2.0.0: resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -8348,6 +8415,11 @@ dezalgo@^1.0.0, dezalgo@~1.0.3: asap "^2.0.0" wrappy "1" +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== + diff@5.0.0, diff@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" @@ -8685,10 +8757,10 @@ electron-rebuild@^2.0.3: tar "^6.0.5" yargs "^16.0.0" -electron-to-chromium@^1.3.857: - version "1.3.860" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.860.tgz#d612e54ed75fa524c12af8da3ad8121ebfe2802b" - integrity sha512-gWwGZ+Wv4Mou2SJRH6JQzhTPjL5f95SX7n6VkLTQ/Q/INsZLZNQ1vH2GlZjozKyvT0kkFuCmWTwIoCj+/hUDPw== +electron-to-chromium@^1.3.846: + version "1.3.850" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.850.tgz#c56c72abfeab051b4b328beb894461c5912d0456" + integrity sha512-ZzkDcdzePeF4dhoGZQT77V2CyJOpwfTZEOg4h0x6R/jQhGt/rIRpbRyVreWLtD7B/WsVxo91URm2WxMKR9JQZA== element-resize-detector@^1.2.2: version "1.2.3" @@ -10273,7 +10345,7 @@ escape-html@^1.0.3, escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@2.0.0: +escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== @@ -10721,6 +10793,18 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" +expect@^26.4.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" + integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== + dependencies: + "@jest/types" "^26.6.2" + ansi-styles "^4.0.0" + jest-get-type "^26.3.0" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + express@^4.10.7, express@^4.13.1, express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" @@ -10812,7 +10896,7 @@ extract-stack@^2.0.0: resolved "https://registry.yarnpkg.com/extract-stack/-/extract-stack-2.0.0.tgz#11367bc865bfcd9bc0db3123e5edb57786f11f9b" integrity sha512-AEo4zm+TenK7zQorGK1f9mJ8L14hnTDi2ZQPR+Mub1NX8zimka1mXpV5LpH8x9HoUmFSHZCfLHqWvp0Y4FxxzQ== -extract-zip@^2.0.0: +extract-zip@^2.0.0, extract-zip@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== @@ -13286,7 +13370,7 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-docker@^2.0.0: +is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== @@ -13789,6 +13873,21 @@ iterate-value@^1.0.2: es-get-iterator "^1.0.2" iterate-iterator "^1.0.1" +jest-diff@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== + dependencies: + chalk "^4.0.0" + diff-sequences "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== + jest-haste-map@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" @@ -13810,6 +13909,31 @@ jest-haste-map@^26.6.2: optionalDependencies: fsevents "^2.1.2" +jest-matcher-utils@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== + dependencies: + chalk "^4.0.0" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/types" "^26.6.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + pretty-format "^26.6.2" + slash "^3.0.0" + stack-utils "^2.0.2" + jest-regex-util@^26.0.0: version "26.0.0" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" @@ -13853,6 +13977,11 @@ joi@^12.0.0: isemail "3.x.x" topo "2.x.x" +jpeg-js@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.3.tgz#6158e09f1983ad773813704be80680550eff977b" + integrity sha512-ru1HWKek8octvUHFHvE5ZzQ1yAsJmIvRdGWvSoKV52XKyuyYA437QWDttXT8eZXDSbuMpHlLzPDZUPd6idIz+Q== + jquery@^3.5.0: version "3.6.0" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" @@ -15524,7 +15653,7 @@ mime@1.6.0: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.4.4: +mime@^2.4.4, mime@^2.4.6: version "2.5.2" resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== @@ -15571,7 +15700,7 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2: +"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -15825,7 +15954,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.0.0, ms@^2.1.1: +ms@2.1.3, ms@^2.0.0, ms@^2.1.1, ms@^2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -15855,6 +15984,11 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== +nanocolors@^0.1.0, nanocolors@^0.1.5: + version "0.1.12" + resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.1.12.tgz#8577482c58cbd7b5bb1681db4cf48f11a87fd5f6" + integrity sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ== + nanoid@3.1.20: version "3.1.20" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" @@ -16078,7 +16212,7 @@ node-pre-gyp@^0.11.0: semver "^5.3.0" tar "^4" -node-releases@^1.1.77: +node-releases@^1.1.76: version "1.1.77" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.77.tgz#50b0cfede855dd374e7585bf228ff34e57c1c32e" integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ== @@ -16671,6 +16805,15 @@ open@^7.0.0, open@^7.0.2, open@^7.0.3, open@^7.2.1: is-docker "^2.0.0" is-wsl "^2.1.1" +open@^8.2.1: + version "8.2.1" + resolved "https://registry.yarnpkg.com/open/-/open-8.2.1.tgz#82de42da0ccbf429bc12d099dad2e0975e14e8af" + integrity sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + opener@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" @@ -17290,11 +17433,6 @@ pend@~1.2.0: resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= -picocolors@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" - integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== - picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: version "2.3.0" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" @@ -17339,6 +17477,13 @@ pirates@^4.0.0, pirates@^4.0.1: dependencies: node-modules-regexp "^1.0.0" +pixelmatch@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-5.2.1.tgz#9e4e4f4aa59648208a31310306a5bed5522b0d65" + integrity sha512-WjcAdYSnKrrdDdqTcVEY7aB7UhhwjYQKYhHiBXdJef0MOaQeYpUdQ+iVyBLa5YBKS8MPVPPMX7rpOByISLpeEQ== + dependencies: + pngjs "^4.0.1" + pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -17374,6 +17519,26 @@ pkg-up@^2.0.0: dependencies: find-up "^2.1.0" +playwright@^1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.15.0.tgz#c8c75287541e75317988b973a306d2f61065aefb" + integrity sha512-JtagFVjNvccP1rIixHB/4KbR+BzMTJLty6mo71YLatvJR9ZH+PX8DLlhw1KDdIH2YGMSQGf2ihh4KAp9tsklxQ== + dependencies: + commander "^6.1.0" + 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" + stack-utils "^2.0.3" + ws "^7.4.6" + yazl "^2.5.1" + plist@^3.0.0, plist@^3.0.1: version "3.0.3" resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.3.tgz#007df34c7be0e2c3dcfcf460d623e6485457857d" @@ -17388,6 +17553,16 @@ pluralize@^1.2.1: resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" integrity sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU= +pngjs@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-4.0.1.tgz#f803869bb2fc1bfe1bf99aa4ec21c108117cfdbe" + integrity sha512-rf5+2/ioHeQxR6IxuYNYGFytUyG3lma/WW1nsmjeHlWwtb2aByla6dkVc8pmJ9nplzkTA0q2xx7mMWrOTqT4Gg== + +pngjs@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" + integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== + pnp-webpack-plugin@1.6.4: version "1.6.4" resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" @@ -17609,6 +17784,16 @@ pretty-error@^2.1.1: lodash "^4.17.20" renderkid "^2.0.4" +pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + pretty-hrtime@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" @@ -17769,6 +17954,15 @@ prop-types@^15.0.0, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, object-assign "^4.1.1" react-is "^16.8.1" +proper-lockfile@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-4.1.2.tgz#c8b9de2af6b2f1601067f98e01ac66baa223141f" + integrity sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA== + dependencies: + graceful-fs "^4.2.4" + retry "^0.12.0" + signal-exit "^3.0.2" + property-information@^5.0.0, property-information@^5.3.0: version "5.6.0" resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" @@ -17796,6 +17990,11 @@ proxy-addr@~2.0.5: forwarded "0.2.0" ipaddr.js "1.9.1" +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -18145,7 +18344,7 @@ react-is@^16.7.0, react-is@^16.8.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-is@^17.0.2: +react-is@^17.0.1, react-is@^17.0.2: version "17.0.2" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== @@ -19764,7 +19963,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.4.15: +source-map-support@^0.4.15, source-map-support@^0.4.18: version "0.4.18" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== @@ -19976,6 +20175,13 @@ stack-trace@0.0.x: resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= +stack-utils@^2.0.2, stack-utils@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" + integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== + dependencies: + escape-string-regexp "^2.0.0" + stagehand@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stagehand/-/stagehand-1.0.0.tgz#79515e2ad3a02c63f8720c7df9b6077ae14276d9" @@ -22429,6 +22635,13 @@ yawn-yaml@^1.5.0: lodash "^4.17.11" yaml-js "^0.1.3" +yazl@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/yazl/-/yazl-2.5.1.tgz#a3d65d3dd659a5b0937850e8609f22fffa2b5c35" + integrity sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw== + dependencies: + buffer-crc32 "~0.2.3" + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"