diff --git a/karma.common.conf.js b/karma.common.conf.js
index 440ddc4431d0fd757565eb2e4a3545882c475052..c803ce1e28bf4dde1d442bb2479e0ac5c4f3aead 100644
--- a/karma.common.conf.js
+++ b/karma.common.conf.js
@@ -1,29 +1,34 @@
-module.exports = function(config) {
-    config.set({
-      basePath: 'dist',
-      frameworks: ['mocha'],
-      client: {
-        mocha: {
-          ui: 'tdd',
-          timeout: 2000 * (process.env.CI === undefined ? 1 : 10)
-        },
+module.exports = async function(config) {
+  const { installBrowsersForNpmInstall, registry } = require('playwright-core/lib/utils/registry');
+  await installBrowsersForNpmInstall(["firefox", "chromium"]);
+  process.env.FIREFOX_BIN = registry.findExecutable("firefox").executablePath();
+  process.env.CHROME_BIN = registry.findExecutable("chromium").executablePath();
+
+  config.set({
+    basePath: 'dist',
+    frameworks: ['mocha'],
+    client: {
+      mocha: {
+        ui: 'tdd',
+        timeout: 2000 * (process.env.CI === undefined ? 1 : 10)
       },
-      files: [
-        {pattern: './*.js', included: true, watched: true, served: true, type: 'module'},
-        {pattern: './**/*', included: false, watched: true, served: true},
-      ],
-      autoWatch: true,
-      browsers: [
-        'ChromiumHeadlessNoSandbox',
-        'FirefoxHeadless',
-      ],
-      customLaunchers: {
-        ChromiumHeadlessNoSandbox: {
-          base: 'ChromiumHeadless',
-          flags: ['--no-sandbox']
-        }
-      },
-      singleRun: false,
-      logLevel: config.LOG_ERROR
-    });
+    },
+    files: [
+      {pattern: './*.js', included: true, watched: true, served: true, type: 'module'},
+      {pattern: './**/*', included: false, watched: true, served: true},
+    ],
+    autoWatch: true,
+    browsers: [
+      'ChromiumHeadlessNoSandbox',
+      'FirefoxHeadless',
+    ],
+    customLaunchers: {
+      ChromiumHeadlessNoSandbox: {
+        base: 'ChromiumHeadless',
+        flags: ['--no-sandbox']
+      }
+    },
+    singleRun: false,
+    logLevel: config.LOG_ERROR
+  });
 }
\ No newline at end of file
diff --git a/packages/app-shell/package.json b/packages/app-shell/package.json
index a50408c99c3456dbcd708c44e634adaa17d6c90b..9d6a41db691e9702e3292bfa658bbfacf179fa8c 100644
--- a/packages/app-shell/package.json
+++ b/packages/app-shell/package.json
@@ -27,6 +27,7 @@
         "karma-firefox-launcher": "^2.1.0",
         "karma-mocha": "^2.0.1",
         "mocha": "^9.0.0",
+        "playwright-core": "^1.20.2",
         "prettier": "^2.5.1",
         "rollup": "^2.33.3",
         "rollup-plugin-copy": "^3.1.0",
diff --git a/packages/auth/package.json b/packages/auth/package.json
index f14f3c98b148182c4a25cb65a6f06368fc8bc5d3..5ff89f57697338538b9c399fa69384ec525bca2f 100644
--- a/packages/auth/package.json
+++ b/packages/auth/package.json
@@ -29,6 +29,7 @@
         "karma-firefox-launcher": "^2.1.0",
         "karma-mocha": "^2.0.1",
         "mocha": "^9.0.0",
+        "playwright-core": "^1.20.2",
         "prettier": "^2.5.1",
         "rollup": "^2.33.3",
         "rollup-plugin-copy": "^3.1.0",
diff --git a/packages/common/package.json b/packages/common/package.json
index e74fdfd191cb4a22dd259b38896c00e32a2021ec..ad77f73be7c82312f1e04de9d01c3c873fa37a1a 100644
--- a/packages/common/package.json
+++ b/packages/common/package.json
@@ -22,6 +22,7 @@
         "karma-firefox-launcher": "^2.1.0",
         "karma-mocha": "^2.0.1",
         "mocha": "^9.0.0",
+        "playwright-core": "^1.20.2",
         "prettier": "^2.5.1",
         "rollup": "^2.33.3",
         "rollup-plugin-copy": "^3.1.0",
diff --git a/packages/data-table-view/package.json b/packages/data-table-view/package.json
index a699dbe749e36c09cc7049087689f732e4c0bd8f..1f83be8ce147d3e73d28ee3bf1224413b2cc0054 100644
--- a/packages/data-table-view/package.json
+++ b/packages/data-table-view/package.json
@@ -27,6 +27,7 @@
         "karma-chrome-launcher": "^3.0.0",
         "karma-mocha": "^2.0.1",
         "mocha": "^9.0.0",
+        "playwright-core": "^1.20.2",
         "prettier": "^2.5.1",
         "rollup": "^2.33.3",
         "rollup-plugin-copy": "^3.1.0",
diff --git a/packages/file-handling/package.json b/packages/file-handling/package.json
index 8cb52cc5d6bf26d203621e2b461ad0cebe7c893f..49ae6f6857dd7a38d8cd72e97c73e861555e7d12 100644
--- a/packages/file-handling/package.json
+++ b/packages/file-handling/package.json
@@ -26,6 +26,7 @@
         "karma-firefox-launcher": "^2.1.0",
         "karma-mocha": "^2.0.0",
         "mocha": "^9.0.0",
+        "playwright-core": "^1.20.2",
         "prettier": "^2.5.1",
         "rollup": "^2.33.3",
         "rollup-plugin-copy": "^3.1.0",
diff --git a/packages/font-source-sans-pro/package.json b/packages/font-source-sans-pro/package.json
index 07314925c9f5daafcf1b909f8647379431b772d2..257b7767f90da3bb6e84cd14a569048cf1df7085 100644
--- a/packages/font-source-sans-pro/package.json
+++ b/packages/font-source-sans-pro/package.json
@@ -11,5 +11,6 @@
   "publishConfig": {
     "registry": "https://registry.npmjs.org",
     "access": "public"
-  }
+  },
+  "devDependencies": {}
 }
diff --git a/packages/knowledge-base-web-page-element-view/package.json b/packages/knowledge-base-web-page-element-view/package.json
index 71b8c9a3438d4bf4cd6a4aeec286c8fb39a5c136..746316b1fd412a44ac80ddde0081e599453713fb 100644
--- a/packages/knowledge-base-web-page-element-view/package.json
+++ b/packages/knowledge-base-web-page-element-view/package.json
@@ -27,6 +27,7 @@
         "karma-firefox-launcher": "^2.1.0",
         "karma-mocha": "^2.0.1",
         "mocha": "^9.0.0",
+        "playwright-core": "^1.20.2",
         "prettier": "^2.5.1",
         "rollup": "^2.33.3",
         "rollup-plugin-copy": "^3.1.0",
diff --git a/packages/language-select/package.json b/packages/language-select/package.json
index 67635506bca00ba5165036171c7bd4af606cbdbe..1b6b1b8d10dec348cec295c7a685beeaf92c7db0 100644
--- a/packages/language-select/package.json
+++ b/packages/language-select/package.json
@@ -26,6 +26,7 @@
     "karma-firefox-launcher": "^2.1.0",
     "karma-mocha": "^2.0.1",
     "mocha": "^9.0.0",
+    "playwright-core": "^1.20.2",
     "rollup": "^2.33.3",
     "rollup-plugin-copy": "^3.1.0",
     "rollup-plugin-delete": "^2.0.0",
diff --git a/packages/matomo/package.json b/packages/matomo/package.json
index c6d299135b5a31f71360a7ea01a386d5ab5c4e80..fda6e7f1f52da702eaa120ad0f22dd785765a173 100644
--- a/packages/matomo/package.json
+++ b/packages/matomo/package.json
@@ -27,6 +27,7 @@
         "karma-firefox-launcher": "^2.1.0",
         "karma-mocha": "^2.0.1",
         "mocha": "^9.0.0",
+        "playwright-core": "^1.20.2",
         "prettier": "^2.5.1",
         "rollup": "^2.33.3",
         "rollup-plugin-copy": "^3.1.0",
diff --git a/packages/notification/package.json b/packages/notification/package.json
index efbdf7b9b7b62b1285708d9b42c9ab9982b61f56..50225fbaca50ca2a1a9e776a300e00ec243c0d49 100644
--- a/packages/notification/package.json
+++ b/packages/notification/package.json
@@ -27,6 +27,7 @@
         "karma-firefox-launcher": "^2.1.0",
         "karma-mocha": "^2.0.1",
         "mocha": "^9.0.0",
+        "playwright-core": "^1.20.2",
         "prettier": "^2.5.1",
         "rollup": "^2.33.3",
         "rollup-plugin-copy": "^3.1.0",
diff --git a/packages/organization-select/package.json b/packages/organization-select/package.json
index 27e8af195bf78c79e91fe2e101c1eeaa19936bdb..e6929fc2da4de269805044c399c405ca76903843 100644
--- a/packages/organization-select/package.json
+++ b/packages/organization-select/package.json
@@ -28,6 +28,7 @@
         "karma-firefox-launcher": "^2.1.0",
         "karma-mocha": "^2.0.1",
         "mocha": "^9.0.0",
+        "playwright-core": "^1.20.2",
         "prettier": "^2.5.1",
         "rollup": "^2.33.3",
         "rollup-plugin-copy": "^3.1.0",
diff --git a/packages/person-profile/package.json b/packages/person-profile/package.json
index b7d78062da877808b31bb8b880d4e407395acff8..e540e0c65e89b0795e18edfd253ba81090a21ba7 100644
--- a/packages/person-profile/package.json
+++ b/packages/person-profile/package.json
@@ -27,6 +27,7 @@
         "karma-firefox-launcher": "^2.1.0",
         "karma-mocha": "^2.0.1",
         "mocha": "^9.0.0",
+        "playwright-core": "^1.20.2",
         "prettier": "^2.5.1",
         "rollup": "^2.33.3",
         "rollup-plugin-copy": "^3.1.0",
diff --git a/packages/person-select/package.json b/packages/person-select/package.json
index 707626e9077c5d7a6b842d116fd31c2c449a7fad..1214ccf50849c714b5140a08c008661dcaf58c5e 100644
--- a/packages/person-select/package.json
+++ b/packages/person-select/package.json
@@ -28,6 +28,7 @@
         "karma-firefox-launcher": "^2.1.0",
         "karma-mocha": "^2.0.1",
         "mocha": "^9.0.0",
+        "playwright-core": "^1.20.2",
         "prettier": "^2.5.1",
         "rollup": "^2.33.3",
         "rollup-plugin-copy": "^3.1.0",
diff --git a/packages/provider/package.json b/packages/provider/package.json
index 89e07a9c543b16b51f9f97b6cdd8d7158fcf7a4a..a07f78d16122769fd7dc94f65153959b91c2167f 100644
--- a/packages/provider/package.json
+++ b/packages/provider/package.json
@@ -28,6 +28,7 @@
         "karma-firefox-launcher": "^2.1.0",
         "karma-mocha": "^2.0.1",
         "mocha": "^9.0.0",
+        "playwright-core": "^1.20.2",
         "prettier": "^2.5.1",
         "rollup": "^2.19.0",
         "rollup-plugin-copy": "^3.1.0",
diff --git a/packages/qr-code-scanner/package.json b/packages/qr-code-scanner/package.json
index 67d713b989395d84a4ac87d121493c5e03cc9450..8508dbf951b3786a715fac72b57137bc14fe4cf2 100644
--- a/packages/qr-code-scanner/package.json
+++ b/packages/qr-code-scanner/package.json
@@ -27,6 +27,7 @@
         "karma-firefox-launcher": "^2.1.0",
         "karma-mocha": "^2.0.1",
         "mocha": "^9.0.0",
+        "playwright-core": "^1.20.2",
         "prettier": "^2.5.1",
         "rollup": "^2.33.3",
         "rollup-plugin-copy": "^3.1.0",
diff --git a/packages/resource-select/package.json b/packages/resource-select/package.json
index 4d25faf5b9b74e98f3fe6ca5cfba88c4daeeb10f..7fa60acec4ed23d95e34f788e005df6a770d6592 100644
--- a/packages/resource-select/package.json
+++ b/packages/resource-select/package.json
@@ -28,6 +28,7 @@
         "karma-firefox-launcher": "^2.1.0",
         "karma-mocha": "^2.0.1",
         "mocha": "^9.0.0",
+        "playwright-core": "^1.20.2",
         "prettier": "^2.5.1",
         "rollup": "^2.33.3",
         "rollup-plugin-copy": "^3.1.0",
diff --git a/packages/theme-switcher/package.json b/packages/theme-switcher/package.json
index 8b778131811be288ce7181db1e56d494dc5846c5..0c4277e5631adc4b407131885890aaa9e705c32d 100644
--- a/packages/theme-switcher/package.json
+++ b/packages/theme-switcher/package.json
@@ -26,6 +26,7 @@
         "karma-firefox-launcher": "^2.1.0",
         "karma-mocha": "^2.0.0",
         "mocha": "^9.0.0",
+        "playwright-core": "^1.20.2",
         "prettier": "^2.5.1",
         "rollup": "^2.33.3",
         "rollup-plugin-copy": "^3.1.0",
diff --git a/packages/tooltip/package.json b/packages/tooltip/package.json
index 6e430602c6a0950c048e5268ee290a52cc7c2ef8..a9864f978fbfb7f869ce44ae9a0d48a625c4db29 100644
--- a/packages/tooltip/package.json
+++ b/packages/tooltip/package.json
@@ -27,6 +27,7 @@
         "karma-firefox-launcher": "^2.1.0",
         "karma-mocha": "^2.0.1",
         "mocha": "^9.0.0",
+        "playwright-core": "^1.20.2",
         "prettier": "^2.5.1",
         "rollup": "^2.33.3",
         "rollup-plugin-copy": "^3.1.0",
diff --git a/packages/typescript-example/package.json b/packages/typescript-example/package.json
index db1ccde09f6b360df45c93e1d8017e989c8cf42d..742f6ce2bb83981914c980caafb8539c3c51bea1 100644
--- a/packages/typescript-example/package.json
+++ b/packages/typescript-example/package.json
@@ -26,6 +26,7 @@
         "karma-firefox-launcher": "^2.1.0",
         "karma-mocha": "^2.0.1",
         "mocha": "^9.0.0",
+        "playwright-core": "^1.20.2",
         "prettier": "^2.5.1",
         "rollup": "^2.33.3",
         "rollup-plugin-copy": "^3.1.0",
diff --git a/toolkit-showcase/package.json b/toolkit-showcase/package.json
index 41225eaba9ce18924202120e52d52d69018a4f9c..48622d6c71b46842e5954179542c64701945cef2 100644
--- a/toolkit-showcase/package.json
+++ b/toolkit-showcase/package.json
@@ -28,6 +28,7 @@
         "karma-firefox-launcher": "^2.1.0",
         "karma-mocha": "^2.0.1",
         "mocha": "^9.0.0",
+        "playwright-core": "^1.20.2",
         "prettier": "^2.5.1",
         "rollup": "^2.18.1",
         "rollup-plugin-copy": "^3.3.0",
diff --git a/yarn.lock b/yarn.lock
index 0edff0580d407bb241a62ff0e1a1d18a6d682381..68e9751e29734749dd8306fb7bcf0748fff0da01 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2101,6 +2101,13 @@
   resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756"
   integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==
 
+"@types/yauzl@^2.9.1":
+  version "2.9.2"
+  resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.2.tgz#c48e5d56aff1444409e39fa164b0b4d4552a7b7a"
+  integrity sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==
+  dependencies:
+    "@types/node" "*"
+
 "@typescript-eslint/eslint-plugin@^5.0.0-alpha.42":
   version "5.18.0"
   resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.18.0.tgz#950df411cec65f90d75d6320a03b2c98f6c3af7d"
@@ -2641,6 +2648,11 @@ browserslist@^4.17.5, browserslist@^4.19.1:
     node-releases "^2.0.2"
     picocolors "^1.0.0"
 
+buffer-crc32@~0.2.3:
+  version "0.2.13"
+  resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
+  integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
+
 buffer-equal@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe"
@@ -2951,6 +2963,11 @@ colorette@^1.1.0:
   resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40"
   integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==
 
+colors@1.4.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
+  integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
+
 columnify@^1.5.4:
   version "1.6.0"
   resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3"
@@ -2966,6 +2983,11 @@ combined-stream@^1.0.6, combined-stream@~1.0.6:
   dependencies:
     delayed-stream "~1.0.0"
 
+commander@8.3.0:
+  version "8.3.0"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66"
+  integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
+
 commander@^2.20.0:
   version "2.20.3"
   resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
@@ -3676,6 +3698,11 @@ escape-string-regexp@^1.0.5:
   resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
   integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
 
+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==
+
 eslint-plugin-jsdoc@^38.0.0:
   version "38.1.6"
   resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-38.1.6.tgz#7dfa2a6d38f550935c6a3668a1fc5a05b19e4069"
@@ -3903,6 +3930,17 @@ extglob@^2.0.4:
     snapdragon "^0.8.1"
     to-regex "^3.0.1"
 
+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==
+  dependencies:
+    debug "^4.1.1"
+    get-stream "^5.1.0"
+    yauzl "^2.10.0"
+  optionalDependencies:
+    "@types/yauzl" "^2.9.1"
+
 extsprintf@1.3.0:
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
@@ -3965,6 +4003,13 @@ fastq@^1.6.0:
   dependencies:
     reusify "^1.0.4"
 
+fd-slicer@~1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
+  integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=
+  dependencies:
+    pend "~1.2.0"
+
 figures@^3.0.0:
   version "3.2.0"
   resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
@@ -4233,6 +4278,13 @@ get-port@^5.1.1:
   resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193"
   integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==
 
+get-stream@^5.1.0:
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
+  integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
+  dependencies:
+    pump "^3.0.0"
+
 get-stream@^6.0.0:
   version "6.0.1"
   resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
@@ -4414,7 +4466,7 @@ globby@^11.0.2, globby@^11.0.4:
     merge2 "^1.4.1"
     slash "^3.0.0"
 
-graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.6:
+graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.6:
   version "4.2.10"
   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
   integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
@@ -4601,7 +4653,7 @@ http-signature@~1.2.0:
     jsprim "^1.2.2"
     sshpk "^1.7.0"
 
-https-proxy-agent@^5.0.0:
+https-proxy-agent@5.0.0, https-proxy-agent@^5.0.0:
   version "5.0.0"
   resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2"
   integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==
@@ -5185,6 +5237,11 @@ jose@^4.0.0:
   resolved "https://registry.yarnpkg.com/jose/-/jose-4.6.0.tgz#f3ff007ddcbce462c091d3d41b7af2e35dec348c"
   integrity sha512-0hNAkhMBNi4soKSAX4zYOFV+aqJlEz/4j4fregvasJzEVtjDChvWqRjPvHwLqr5hx28Ayr6bsOs1Kuj87V0O8w==
 
+jpeg-js@0.4.3:
+  version "0.4.3"
+  resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.3.tgz#6158e09f1983ad773813704be80680550eff977b"
+  integrity sha512-ru1HWKek8octvUHFHvE5ZzQ1yAsJmIvRdGWvSoKV52XKyuyYA437QWDttXT8eZXDSbuMpHlLzPDZUPd6idIz+Q==
+
 jquery@>=1.7, jquery@^3.4.1:
   version "3.6.0"
   resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470"
@@ -5798,7 +5855,7 @@ mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34:
   dependencies:
     mime-db "1.52.0"
 
-mime@>=2.4.6:
+mime@3.0.0, mime@>=2.4.6:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7"
   integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==
@@ -6690,6 +6747,11 @@ path-type@^4.0.0:
   resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
   integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
 
+pend@~1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
+  integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
+
 performance-now@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
@@ -6725,6 +6787,13 @@ pify@^5.0.0:
   resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f"
   integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==
 
+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@< 6 >= 5":
   version "5.0.0"
   resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760"
@@ -6739,6 +6808,40 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0:
   dependencies:
     find-up "^4.0.0"
 
+playwright-core@^1.20.2:
+  version "1.20.2"
+  resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.20.2.tgz#02336afd9a631d59a666f11f3492550201c6c31b"
+  integrity sha512-iV6+HftSPalynkq0CYJala1vaTOq7+gU9BRfKCdM9bAxNq/lFLrwbluug2Wt5OoUwbMABcnTThIEm3/qUhCdJQ==
+  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"
+
+pngjs@6.0.0:
+  version "6.0.0"
+  resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-6.0.0.tgz#ca9e5d2aa48db0228a52c419c3308e87720da821"
+  integrity sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==
+
+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==
+
 posix-character-classes@^0.1.0:
   version "0.1.1"
   resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
@@ -6759,6 +6862,11 @@ process-nextick-args@^2.0.0, process-nextick-args@~2.0.0:
   resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
   integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
 
+progress@2.0.3:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
+  integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
 promise-inflight@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
@@ -6779,6 +6887,15 @@ promzard@^0.3.0:
   dependencies:
     read "1"
 
+proper-lockfile@4.1.2:
+  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"
+
 proto-list@~1.2.1:
   version "1.2.4"
   resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
@@ -6789,6 +6906,11 @@ protocols@^1.1.0, protocols@^1.4.0:
   resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8"
   integrity sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==
 
+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==
+
 psl@^1.1.28:
   version "1.8.0"
   resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
@@ -6802,6 +6924,14 @@ pump@^2.0.0:
     end-of-stream "^1.1.0"
     once "^1.3.1"
 
+pump@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+  integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+  dependencies:
+    end-of-stream "^1.1.0"
+    once "^1.3.1"
+
 pumpify@^1.3.5:
   version "1.5.1"
   resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
@@ -7244,6 +7374,13 @@ rfdc@^1.3.0:
   resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b"
   integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==
 
+rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2:
+  version "3.0.2"
+  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
+  integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
+  dependencies:
+    glob "^7.1.3"
+
 rimraf@^2.6.3:
   version "2.7.1"
   resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
@@ -7251,13 +7388,6 @@ rimraf@^2.6.3:
   dependencies:
     glob "^7.1.3"
 
-rimraf@^3.0.0, rimraf@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
-  integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
-  dependencies:
-    glob "^7.1.3"
-
 rollup-plugin-copy@^3.1.0, rollup-plugin-copy@^3.3.0:
   version "3.4.0"
   resolved "https://registry.yarnpkg.com/rollup-plugin-copy/-/rollup-plugin-copy-3.4.0.tgz#f1228a3ffb66ffad8606e2f3fb7ff23141ed3286"
@@ -7580,6 +7710,15 @@ socket.io@^4.2.0:
     socket.io-adapter "~2.3.3"
     socket.io-parser "~4.0.4"
 
+socks-proxy-agent@6.1.1, socks-proxy-agent@^6.0.0:
+  version "6.1.1"
+  resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz#e664e8f1aaf4e1fb3df945f09e3d94f911137f87"
+  integrity sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==
+  dependencies:
+    agent-base "^6.0.2"
+    debug "^4.3.1"
+    socks "^2.6.1"
+
 socks-proxy-agent@^5.0.0:
   version "5.0.1"
   resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e"
@@ -7589,15 +7728,6 @@ socks-proxy-agent@^5.0.0:
     debug "4"
     socks "^2.3.3"
 
-socks-proxy-agent@^6.0.0:
-  version "6.1.1"
-  resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz#e664e8f1aaf4e1fb3df945f09e3d94f911137f87"
-  integrity sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==
-  dependencies:
-    agent-base "^6.0.2"
-    debug "^4.3.1"
-    socks "^2.6.1"
-
 socks@^2.3.3, socks@^2.6.1:
   version "2.6.2"
   resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.2.tgz#ec042d7960073d40d94268ff3bb727dc685f111a"
@@ -7773,6 +7903,13 @@ ssri@^8.0.0, ssri@^8.0.1:
   dependencies:
     minipass "^3.1.1"
 
+stack-utils@2.0.5:
+  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"
+
 static-extend@^0.1.1:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
@@ -8756,6 +8893,11 @@ write-pkg@^4.0.0:
     type-fest "^0.4.1"
     write-json-file "^3.2.0"
 
+ws@8.4.2:
+  version "8.4.2"
+  resolved "https://registry.yarnpkg.com/ws/-/ws-8.4.2.tgz#18e749868d8439f2268368829042894b6907aa0b"
+  integrity sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==
+
 ws@~8.2.3:
   version "8.2.3"
   resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba"
@@ -8849,6 +8991,21 @@ yargs@^15.3.1:
     y18n "^4.0.0"
     yargs-parser "^18.1.2"
 
+yauzl@2.10.0, yauzl@^2.10.0:
+  version "2.10.0"
+  resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
+  integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=
+  dependencies:
+    buffer-crc32 "~0.2.3"
+    fd-slicer "~1.1.0"
+
+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"