mediawiki/extensions/AchievementBadges (main)

sourcepatches
From 9718f88c5d9f0027874cca464cbe3116ad936b66 Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Thu, 20 Nov 2025 01:09:57 +0000
Subject: [PATCH] build: Updating dependencies
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

composer:
* mediawiki/mediawiki-codesniffer: 45.0.0 → 48.0.0
* mediawiki/mediawiki-phan-config: 0.15.1 → 0.17.0

npm:
* @wdio/cli: 7.16.13 → 7.40.0
* @wdio/junit-reporter: 7.16.13 → 7.40.0
* @wdio/local-runner: 7.16.13 → 7.40.0
* @wdio/mocha-framework: 7.33.0 → 7.40.0
* wdio-mediawiki: 2.3.0 → 2.7.1
* @wdio/spec-reporter: 7.16.13 → 7.40.0
* brace-expansion: 1.1.11, 2.0.1, 2.0.2 → 1.1.12, 2.0.2
  * https://github.com/advisories/GHSA-v6h2-p8h4-qcjw
* js-yaml: 3.14.1, 4.1.0 → 3.14.2, 4.1.1
  * https://github.com/advisories/GHSA-mh29-5h37-fv8m
* validator: 13.11.0 → 13.15.23
  * https://github.com/advisories/GHSA-9965-vmph-33xx

Additional changes:
* Enable stylelint caching.

Change-Id: I797d5b635c19eb0dfa9dea7fa60f2daa8307dcd0
---
 .gitignore        |   1 +
 Gruntfile.js      |   3 +
 composer.json     |   4 +-
 package-lock.json | 726 +++++++++++++++++++++++++++-------------------
 package.json      |  12 +-
 5 files changed, 435 insertions(+), 311 deletions(-)

diff --git a/.gitignore b/.gitignore
index bf9ec97..a52f8bf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@ tests/selenium/log
 # composer dependencies
 /vendor/
 composer.lock
+/.stylelintcache
diff --git a/Gruntfile.js b/Gruntfile.js
index 0006157..88559a2 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -13,6 +13,9 @@ module.exports = function ( grunt ) {
 			all: '.'
 		},
 		stylelint: {
+			options: {
+				cache: true
+			},
 			all: [
 				'**/*.{css,less}',
 				'!node_modules/**',
diff --git a/composer.json b/composer.json
index 4054c63..ff4fea8 100644
--- a/composer.json
+++ b/composer.json
@@ -2,8 +2,8 @@
 	"name": "femiwiki/achievement-badges",
 	"description": "Provides an achievement system",
 	"require-dev": {
-		"mediawiki/mediawiki-codesniffer": "45.0.0",
-		"mediawiki/mediawiki-phan-config": "0.15.1",
+		"mediawiki/mediawiki-codesniffer": "48.0.0",
+		"mediawiki/mediawiki-phan-config": "0.17.0",
 		"mediawiki/minus-x": "1.1.3",
 		"php-parallel-lint/php-console-highlighter": "1.0.0",
 		"php-parallel-lint/php-parallel-lint": "1.4.0"
diff --git a/package-lock.json b/package-lock.json
index 7a7a5eb..99b387d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,11 +7,11 @@
 			"name": "AchievementBadges",
 			"devDependencies": {
 				"@prettier/plugin-xml": "^2.2.0",
-				"@wdio/cli": "7.16.13",
-				"@wdio/junit-reporter": "7.16.13",
-				"@wdio/local-runner": "7.16.13",
-				"@wdio/mocha-framework": "7.33.0",
-				"@wdio/spec-reporter": "7.16.13",
+				"@wdio/cli": "7.40.0",
+				"@wdio/junit-reporter": "7.40.0",
+				"@wdio/local-runner": "7.40.0",
+				"@wdio/mocha-framework": "7.40.0",
+				"@wdio/spec-reporter": "7.40.0",
 				"eslint-config-wikimedia": "0.28.2",
 				"grunt": "1.6.1",
 				"grunt-banana-checker": "0.13.0",
@@ -19,7 +19,7 @@
 				"grunt-stylelint": "0.20.1",
 				"stylelint-config-wikimedia": "0.18.0",
 				"svgo": "3.2.0",
-				"wdio-mediawiki": "2.3.0"
+				"wdio-mediawiki": "2.7.1"
 			}
 		},
 		"node_modules/@aashutoshrathi/word-wrap": {
@@ -598,16 +598,20 @@
 			}
 		},
 		"node_modules/@types/diff": {
-			"version": "5.0.9",
-			"resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.0.9.tgz",
-			"integrity": "sha512-RWVEhh/zGXpAVF/ZChwNnv7r4rvqzJ7lYNSmZSVTxjV0PBLf6Qu7RNg+SUtkpzxmiNkjCx0Xn2tPp7FIkshJwQ==",
+			"version": "5.2.3",
+			"resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.2.3.tgz",
+			"integrity": "sha512-K0Oqlrq3kQMaO2RhfrNQX5trmt+XLyom88zS0u84nnIcLvFnRUMRRHmrGny5GSM+kNO9IZLARsdQHDzkhAgmrQ==",
 			"dev": true
 		},
 		"node_modules/@types/easy-table": {
-			"version": "0.0.33",
-			"resolved": "https://registry.npmjs.org/@types/easy-table/-/easy-table-0.0.33.tgz",
-			"integrity": "sha512-/vvqcJPmZUfQwCgemL0/34G7bIQnCuvgls379ygRlcC1FqNqk3n+VZ15dAO51yl6JNDoWd8vsk+kT8zfZ1VZSw==",
-			"dev": true
+			"version": "1.2.3",
+			"resolved": "https://registry.npmjs.org/@types/easy-table/-/easy-table-1.2.3.tgz",
+			"integrity": "sha512-uT9nuF3D1+KgNXRCft0/Z4BL5S/73D7dZ+Ky4796MvWPgwUp6gLudt1YOfvtOuuet+buFk+WqUR7j1K77gMnAw==",
+			"deprecated": "This is a stub types definition. easy-table provides its own type definitions, so you do not need this installed.",
+			"dev": true,
+			"dependencies": {
+				"easy-table": "*"
+			}
 		},
 		"node_modules/@types/ejs": {
 			"version": "3.1.5",
@@ -632,14 +636,31 @@
 			"dev": true
 		},
 		"node_modules/@types/fs-extra": {
-			"version": "9.0.13",
-			"resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz",
-			"integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==",
+			"version": "11.0.4",
+			"resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz",
+			"integrity": "sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==",
 			"dev": true,
 			"dependencies": {
+				"@types/jsonfile": "*",
 				"@types/node": "*"
 			}
 		},
+		"node_modules/@types/glob": {
+			"version": "8.1.0",
+			"resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz",
+			"integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==",
+			"dev": true,
+			"dependencies": {
+				"@types/minimatch": "^5.1.2",
+				"@types/node": "*"
+			}
+		},
+		"node_modules/@types/glob/node_modules/@types/minimatch": {
+			"version": "5.1.2",
+			"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
+			"integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
+			"dev": true
+		},
 		"node_modules/@types/http-cache-semantics": {
 			"version": "4.0.4",
 			"resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
@@ -692,6 +713,15 @@
 			"integrity": "sha512-oNOjRxLfPeYbBSQ60maucaFNqbslVOPU4WWs5t/sHvAh6tyo/CThXSG+E24tEzkgh/fzvxyDrYdOJufgeNy1sQ==",
 			"dev": true
 		},
+		"node_modules/@types/jsonfile": {
+			"version": "6.1.4",
+			"resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz",
+			"integrity": "sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "*"
+			}
+		},
 		"node_modules/@types/keyv": {
 			"version": "3.1.4",
 			"resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
@@ -747,10 +777,13 @@
 			"dev": true
 		},
 		"node_modules/@types/node": {
-			"version": "17.0.45",
-			"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz",
-			"integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==",
-			"dev": true
+			"version": "18.19.130",
+			"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz",
+			"integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==",
+			"dev": true,
+			"dependencies": {
+				"undici-types": "~5.26.4"
+			}
 		},
 		"node_modules/@types/normalize-package-data": {
 			"version": "2.4.4",
@@ -759,9 +792,9 @@
 			"dev": true
 		},
 		"node_modules/@types/object-inspect": {
-			"version": "1.8.4",
-			"resolved": "https://registry.npmjs.org/@types/object-inspect/-/object-inspect-1.8.4.tgz",
-			"integrity": "sha512-2yh72JxmDney1h7LQvkyO8p8FOmNMQXGs8HjuXS3SXvE/dLydLLjBqKCdHqcTUo66CQVHfn7yFR680bvi9jlVw==",
+			"version": "1.13.0",
+			"resolved": "https://registry.npmjs.org/@types/object-inspect/-/object-inspect-1.13.0.tgz",
+			"integrity": "sha512-lwGTVESDDV+XsQ1pH4UifpJ1f7OtXzQ6QBOX2Afq2bM/T3oOt8hF6exJMjjIjtEWeAN2YAo25J7HxWh97CCz9w==",
 			"dev": true
 		},
 		"node_modules/@types/recursive-readdir": {
@@ -920,9 +953,9 @@
 			}
 		},
 		"node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
-			"version": "2.0.1",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-			"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+			"version": "2.0.2",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+			"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
 			"dev": true,
 			"dependencies": {
 				"balanced-match": "^1.0.0"
@@ -989,36 +1022,37 @@
 			"dev": true
 		},
 		"node_modules/@wdio/cli": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.16.13.tgz",
-			"integrity": "sha512-y0C/eLLyLCVWrsJVimozUQBQWD/goIUxmtB91rjMAqTjeLn5b0VoPhr+EKXGCHXz3ylvXGGJ3RaI0l1vz9Cf8w==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.40.0.tgz",
+			"integrity": "sha512-M0txYEqqamBvJe4FEuqwWq1jd879sElF047BXSv2GRu4R1/iEBPYJHjn9KuL60Fkkpp/L1NMHTl7gW9i445edQ==",
 			"dev": true,
 			"dependencies": {
 				"@types/ejs": "^3.0.5",
-				"@types/fs-extra": "^9.0.4",
+				"@types/fs-extra": "^11.0.1",
 				"@types/inquirer": "^8.1.2",
 				"@types/lodash.flattendeep": "^4.4.6",
 				"@types/lodash.pickby": "^4.6.6",
 				"@types/lodash.union": "^4.6.6",
-				"@types/node": "^17.0.4",
+				"@types/node": "^18.0.0",
 				"@types/recursive-readdir": "^2.2.0",
-				"@wdio/config": "7.16.13",
-				"@wdio/logger": "7.16.0",
-				"@wdio/types": "7.16.13",
-				"@wdio/utils": "7.16.13",
+				"@wdio/config": "7.40.0",
+				"@wdio/logger": "7.26.0",
+				"@wdio/protocols": "7.27.0",
+				"@wdio/types": "7.40.0",
+				"@wdio/utils": "7.40.0",
 				"async-exit-hook": "^2.0.1",
 				"chalk": "^4.0.0",
 				"chokidar": "^3.0.0",
 				"cli-spinners": "^2.1.0",
 				"ejs": "^3.0.1",
-				"fs-extra": "^10.0.0",
-				"inquirer": "8.1.5",
+				"fs-extra": "^11.1.1",
+				"inquirer": "8.2.4",
 				"lodash.flattendeep": "^4.4.0",
 				"lodash.pickby": "^4.6.0",
 				"lodash.union": "^4.6.0",
-				"mkdirp": "^1.0.4",
+				"mkdirp": "^3.0.0",
 				"recursive-readdir": "^2.2.2",
-				"webdriverio": "7.16.13",
+				"webdriverio": "7.40.0",
 				"yargs": "^17.0.0",
 				"yarn-install": "^1.0.0"
 			},
@@ -1030,30 +1064,73 @@
 			}
 		},
 		"node_modules/@wdio/config": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.16.13.tgz",
-			"integrity": "sha512-LSGoa83tWQIBppB+LeHjY40B9tuuvmDV1qdBLVXR1ROcOUWWz/oQP3NFLtLm3266LXoJUbwebzGcRIK1EcNk3Q==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.40.0.tgz",
+			"integrity": "sha512-ayQELXyxa+k9/2a509F5a1oTsCa/w8D1nDrd+hzm+1mYb4Te2lceWCCzm+atGKkMpvjLH4GvhrEBYLh3rIWk2A==",
 			"dev": true,
 			"dependencies": {
-				"@wdio/logger": "7.16.0",
-				"@wdio/types": "7.16.13",
+				"@types/glob": "^8.1.0",
+				"@wdio/logger": "7.26.0",
+				"@wdio/types": "7.40.0",
+				"@wdio/utils": "7.40.0",
 				"deepmerge": "^4.0.0",
-				"glob": "^7.1.2"
+				"glob": "^8.0.3"
 			},
 			"engines": {
 				"node": ">=12.0.0"
 			}
 		},
+		"node_modules/@wdio/config/node_modules/brace-expansion": {
+			"version": "2.0.2",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+			"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+			"dev": true,
+			"dependencies": {
+				"balanced-match": "^1.0.0"
+			}
+		},
+		"node_modules/@wdio/config/node_modules/glob": {
+			"version": "8.1.0",
+			"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+			"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+			"deprecated": "Glob versions prior to v9 are no longer supported",
+			"dev": true,
+			"dependencies": {
+				"fs.realpath": "^1.0.0",
+				"inflight": "^1.0.4",
+				"inherits": "2",
+				"minimatch": "^5.0.1",
+				"once": "^1.3.0"
+			},
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/isaacs"
+			}
+		},
+		"node_modules/@wdio/config/node_modules/minimatch": {
+			"version": "5.1.6",
+			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+			"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+			"dev": true,
+			"dependencies": {
+				"brace-expansion": "^2.0.1"
+			},
+			"engines": {
+				"node": ">=10"
+			}
+		},
 		"node_modules/@wdio/junit-reporter": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/@wdio/junit-reporter/-/junit-reporter-7.16.13.tgz",
-			"integrity": "sha512-VKhly72NZY2/SNnfbYXO/HHov9oj+pk0aaq5TNzIJJoqtH4uqDz+L2p7wu9nKnRnywmwvaTm7pbYZGlOuty26A==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/junit-reporter/-/junit-reporter-7.40.0.tgz",
+			"integrity": "sha512-nGxzvdCBHUQOtKbCrihO+MjLdfyeYPVeoCAWBNbPHP06nnjsoVDT7k1Ic7BwAbrDZn1SUOVhwdGOxqDdc1E8Fg==",
 			"dev": true,
 			"dependencies": {
 				"@types/json-stringify-safe": "^5.0.0",
 				"@types/validator": "^13.1.3",
-				"@wdio/reporter": "7.16.13",
-				"@wdio/types": "7.16.13",
+				"@wdio/reporter": "7.40.0",
+				"@wdio/types": "7.40.0",
 				"json-stringify-safe": "^5.0.1",
 				"junit-report-builder": "^3.0.0",
 				"validator": "^13.0.0"
@@ -1066,16 +1143,16 @@
 			}
 		},
 		"node_modules/@wdio/local-runner": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-7.16.13.tgz",
-			"integrity": "sha512-Ri8R6RHD5VjI4m2CramKO9w+4jD7VwEoQFWqFzUI1g31UAuN1zy67R3UiYv0ohiBTW4MZt90CMLgumQNk7C5kA==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-7.40.0.tgz",
+			"integrity": "sha512-OBuN7TlFhbPUH7Wbh2S8OKZOjeW4rHXOfuGzJfaKkzjHje2Dqide/uC3Gd25MwmzgZcVkOo9DUYiGFCHXc44ug==",
 			"dev": true,
 			"dependencies": {
 				"@types/stream-buffers": "^3.0.3",
-				"@wdio/logger": "7.16.0",
-				"@wdio/repl": "7.16.13",
-				"@wdio/runner": "7.16.13",
-				"@wdio/types": "7.16.13",
+				"@wdio/logger": "7.26.0",
+				"@wdio/repl": "7.40.0",
+				"@wdio/runner": "7.40.0",
+				"@wdio/types": "7.40.0",
 				"async-exit-hook": "^2.0.1",
 				"split2": "^4.0.0",
 				"stream-buffers": "^3.0.2"
@@ -1088,9 +1165,9 @@
 			}
 		},
 		"node_modules/@wdio/logger": {
-			"version": "7.16.0",
-			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.16.0.tgz",
-			"integrity": "sha512-/6lOGb2Iow5eSsy7RJOl1kCwsP4eMlG+/QKro5zUJsuyNJSQXf2ejhpkzyKWLgQbHu83WX6cM1014AZuLkzoQg==",
+			"version": "7.26.0",
+			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.26.0.tgz",
+			"integrity": "sha512-kQj9s5JudAG9qB+zAAcYGPHVfATl2oqKgqj47yjehOQ1zzG33xmtL1ArFbQKWhDG32y1A8sN6b0pIqBEIwgg8Q==",
 			"dev": true,
 			"dependencies": {
 				"chalk": "^4.0.0",
@@ -1103,15 +1180,15 @@
 			}
 		},
 		"node_modules/@wdio/mocha-framework": {
-			"version": "7.33.0",
-			"resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.33.0.tgz",
-			"integrity": "sha512-y6+iBF+QrqeiXC+mNwW/o0vRsB+qaRznxoh+ds6Xz9V0tui55cn4kl2gYkBu3oHX8h+9R52ykLyaY9wv+r2aeg==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.40.0.tgz",
+			"integrity": "sha512-Pc+c4M07qhz3CdhitETWq8htMPb3xwmmQF5CKUpcy+F6nBTy4Q3wDOSLRQnFD7iP+JqnpJ2o3k1NPeuNYc7+CQ==",
 			"dev": true,
 			"dependencies": {
 				"@types/mocha": "^10.0.0",
 				"@wdio/logger": "7.26.0",
-				"@wdio/types": "7.33.0",
-				"@wdio/utils": "7.33.0",
+				"@wdio/types": "7.40.0",
+				"@wdio/utils": "7.40.0",
 				"expect-webdriverio": "^3.0.0",
 				"mocha": "^10.0.0"
 			},
@@ -1119,100 +1196,41 @@
 				"node": ">=12.0.0"
 			}
 		},
-		"node_modules/@wdio/mocha-framework/node_modules/@types/node": {
-			"version": "18.19.67",
-			"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.67.tgz",
-			"integrity": "sha512-wI8uHusga+0ZugNp0Ol/3BqQfEcCCNfojtO6Oou9iVNGPTL6QNSdnUdqq85fRgIorLhLMuPIKpsN98QE9Nh+KQ==",
-			"dev": true,
-			"dependencies": {
-				"undici-types": "~5.26.4"
-			}
-		},
-		"node_modules/@wdio/mocha-framework/node_modules/@wdio/logger": {
-			"version": "7.26.0",
-			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.26.0.tgz",
-			"integrity": "sha512-kQj9s5JudAG9qB+zAAcYGPHVfATl2oqKgqj47yjehOQ1zzG33xmtL1ArFbQKWhDG32y1A8sN6b0pIqBEIwgg8Q==",
-			"dev": true,
-			"dependencies": {
-				"chalk": "^4.0.0",
-				"loglevel": "^1.6.0",
-				"loglevel-plugin-prefix": "^0.8.4",
-				"strip-ansi": "^6.0.0"
-			},
-			"engines": {
-				"node": ">=12.0.0"
-			}
-		},
-		"node_modules/@wdio/mocha-framework/node_modules/@wdio/types": {
-			"version": "7.33.0",
-			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.33.0.tgz",
-			"integrity": "sha512-tNcuN5Kl+i5CffaeTYV1omzAo4rVjiI1m9raIA8ph6iVteWdCzYv2/ImpGgFiBPb7Mf6VokU3+q9Slh5Jitaww==",
-			"dev": true,
-			"dependencies": {
-				"@types/node": "^18.0.0",
-				"got": "^11.8.1"
-			},
-			"engines": {
-				"node": ">=12.0.0"
-			},
-			"peerDependencies": {
-				"typescript": "^4.6.2"
-			},
-			"peerDependenciesMeta": {
-				"typescript": {
-					"optional": true
-				}
-			}
-		},
-		"node_modules/@wdio/mocha-framework/node_modules/@wdio/utils": {
-			"version": "7.33.0",
-			"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.33.0.tgz",
-			"integrity": "sha512-4kQQ86EvEN6fBY5+u7M08cT6LfJtpk1rHd203xyxmbmV9lpNv/OCl4CsC+SD0jGT0aZZqYSIJ/Pil07pAh5K0g==",
-			"dev": true,
-			"dependencies": {
-				"@wdio/logger": "7.26.0",
-				"@wdio/types": "7.33.0",
-				"p-iteration": "^1.1.8"
-			},
-			"engines": {
-				"node": ">=12.0.0"
-			}
-		},
 		"node_modules/@wdio/protocols": {
-			"version": "7.16.7",
-			"resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.16.7.tgz",
-			"integrity": "sha512-Wv40pNQcLiPzQ3o98Mv4A8T1EBQ6k4khglz/e2r16CTm+F3DDYh8eLMAsU5cgnmuwwDKX1EyOiFwieykBn5MCg==",
+			"version": "7.27.0",
+			"resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.27.0.tgz",
+			"integrity": "sha512-hT/U22R5i3HhwPjkaKAG0yd59eaOaZB0eibRj2+esCImkb5Y6rg8FirrlYRxIGFVBl0+xZV0jKHzR5+o097nvg==",
 			"dev": true,
 			"engines": {
 				"node": ">=12.0.0"
 			}
 		},
 		"node_modules/@wdio/repl": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-7.16.13.tgz",
-			"integrity": "sha512-XWh3dzp6U8LLL4cNGWFra+quVyXZ25Ym38zpsBVtV0/z5NCHJmjRS4ytyvvkzbQ8SyqQ7Y3G8MjfGNi2sBNkIQ==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-7.40.0.tgz",
+			"integrity": "sha512-6tzT7lOMxBwdqMVdW4QxlzrQadGPta4HedFcJo4LyRz9PkXPTF68qeIGs0GyZvy/5AqspNWaAJvIR7f3T3tCyw==",
 			"dev": true,
 			"dependencies": {
-				"@wdio/utils": "7.16.13"
+				"@wdio/utils": "7.40.0"
 			},
 			"engines": {
 				"node": ">=12.0.0"
 			}
 		},
 		"node_modules/@wdio/reporter": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-7.16.13.tgz",
-			"integrity": "sha512-S7OH96yfSCJwmirsvT8khfWUfoMTiw0O1+UyiOYS/g0l+IideVK83kpyXYWfsALPahL2te0g57lPazriSfNAyA==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-7.40.0.tgz",
+			"integrity": "sha512-nWVh20JONsN4xf2PRWAS+81r1a6t6M5OtlVOti7G8/pODCul1kxmi9l07s0JaU9g64C1nDc4bOxvAPOWR3/wIw==",
 			"dev": true,
 			"dependencies": {
 				"@types/diff": "^5.0.0",
-				"@types/node": "^17.0.4",
+				"@types/node": "^18.0.0",
 				"@types/object-inspect": "^1.8.0",
 				"@types/supports-color": "^8.1.0",
 				"@types/tmp": "^0.2.0",
-				"@wdio/types": "7.16.13",
+				"@wdio/types": "7.40.0",
 				"diff": "^5.0.0",
-				"fs-extra": "^10.0.0",
+				"fs-extra": "^11.1.1",
 				"object-inspect": "^1.10.3",
 				"supports-color": "8.1.1"
 			},
@@ -1221,33 +1239,33 @@
 			}
 		},
 		"node_modules/@wdio/runner": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-7.16.13.tgz",
-			"integrity": "sha512-/PJUK+8orHsUd5v8edWv5XS3pKx/si7DoYkU8PsgQX9FnU2y3oRfHrQwzI8s3TOnGag79f+yrGzzGCZFmmW0cw==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-7.40.0.tgz",
+			"integrity": "sha512-3dGn8sU9Oc0kTq+hcxNSqkF1acqiTAzamyNWsWXAX7V0FOfZxp0wmD9aMqY+sVT6g8mUE5aePT1ydONE5o+6QA==",
 			"dev": true,
 			"dependencies": {
-				"@wdio/config": "7.16.13",
-				"@wdio/logger": "7.16.0",
-				"@wdio/types": "7.16.13",
-				"@wdio/utils": "7.16.13",
+				"@wdio/config": "7.40.0",
+				"@wdio/logger": "7.26.0",
+				"@wdio/types": "7.40.0",
+				"@wdio/utils": "7.40.0",
 				"deepmerge": "^4.0.0",
 				"gaze": "^1.1.2",
-				"webdriver": "7.16.13",
-				"webdriverio": "7.16.13"
+				"webdriver": "7.40.0",
+				"webdriverio": "7.40.0"
 			},
 			"engines": {
 				"node": ">=12.0.0"
 			}
 		},
 		"node_modules/@wdio/spec-reporter": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-7.16.13.tgz",
-			"integrity": "sha512-4gnflBJU+QDcmWgRy3tSRD47cqZmdjPLEJhsfhv/aBNtWPWMJtQru7nDFcLkxKLFPiN0D1F7gUMWbUMaDVlojg==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-7.40.0.tgz",
+			"integrity": "sha512-DhkfnWrN/X0DKpj/maIsk76yr5iG0t/ZbbajtBXLv9lMn8j+ALY34dfj0mvvTKX77wlzDtgeuC+8BzxPKBWU6g==",
 			"dev": true,
 			"dependencies": {
-				"@types/easy-table": "^0.0.33",
-				"@wdio/reporter": "7.16.13",
-				"@wdio/types": "7.16.13",
+				"@types/easy-table": "^1.2.0",
+				"@wdio/reporter": "7.40.0",
+				"@wdio/types": "7.40.0",
 				"chalk": "^4.0.0",
 				"easy-table": "^1.1.1",
 				"pretty-ms": "^7.0.0"
@@ -1260,26 +1278,34 @@
 			}
 		},
 		"node_modules/@wdio/types": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.16.13.tgz",
-			"integrity": "sha512-HIeXKCL+mUjyJxvnHSoaIo3NRgZLbeekyRIwo6USfd9qGlQ8dQ6fyCR3ZU9VqNz9j4+JIn+LRQ7imbz5SdnGbw==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.40.0.tgz",
+			"integrity": "sha512-MWMbU+8uk+JrF7ygP/TJDsaSvFozKauiW6EnG7rxx9+GvU1Q1B3l4UjAc7GDbgLKjwt8T2y5GDRiDoD3UOjVyw==",
 			"dev": true,
 			"dependencies": {
-				"@types/node": "^17.0.4",
+				"@types/node": "^18.0.0",
 				"got": "^11.8.1"
 			},
 			"engines": {
 				"node": ">=12.0.0"
+			},
+			"peerDependencies": {
+				"typescript": "^4.6.2"
+			},
+			"peerDependenciesMeta": {
+				"typescript": {
+					"optional": true
+				}
 			}
 		},
 		"node_modules/@wdio/utils": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.16.13.tgz",
-			"integrity": "sha512-O6D89Ghtm5XtTv4DPKvCBKZOZYNONIcBM5/hmdr3V9mzVrTFq8Q3uE8pmmq303Oh91KcoN8Em5zoAG7Zpc5tRg==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.40.0.tgz",
+			"integrity": "sha512-jLF57xHmz5nnGuM6ZRWjVYa/LQb22CS7yG50dUFa9wJ509mC1HlUzaA01Gjk9TV5jf9vnwE/yZfUMCoecTgG9w==",
 			"dev": true,
 			"dependencies": {
-				"@wdio/logger": "7.16.0",
-				"@wdio/types": "7.16.13",
+				"@wdio/logger": "7.26.0",
+				"@wdio/types": "7.40.0",
 				"p-iteration": "^1.1.8"
 			},
 			"engines": {
@@ -1508,12 +1534,12 @@
 			"dev": true
 		},
 		"node_modules/aria-query": {
-			"version": "5.3.0",
-			"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
-			"integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
+			"version": "5.3.2",
+			"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
+			"integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
 			"dev": true,
-			"dependencies": {
-				"dequal": "^2.0.3"
+			"engines": {
+				"node": ">= 0.4"
 			}
 		},
 		"node_modules/array-differ": {
@@ -1701,9 +1727,9 @@
 			"dev": true
 		},
 		"node_modules/brace-expansion": {
-			"version": "1.1.11",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-			"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+			"version": "1.1.12",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+			"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
 			"dev": true,
 			"dependencies": {
 				"balanced-match": "^1.0.0",
@@ -2471,9 +2497,9 @@
 			}
 		},
 		"node_modules/css-shorthand-properties": {
-			"version": "1.1.1",
-			"resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.1.tgz",
-			"integrity": "sha512-Md+Juc7M3uOdbAFwOYlTrccIZ7oCFuzrhKYQjdeUEW/sE1hv17Jp/Bws+ReOPpGVBTYCBoYo+G17V5Qo8QQ75A==",
+			"version": "1.1.2",
+			"resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.2.tgz",
+			"integrity": "sha512-C2AugXIpRGQTxaCW0N7n5jD/p5irUmCrwl03TrnMFBHDbdq44CFWR2zO7rK9xPN4Eo3pUxC4vQzQgbIpzrD1PQ==",
 			"dev": true
 		},
 		"node_modules/css-tokenize": {
@@ -2717,15 +2743,6 @@
 				"node": ">=0.4.0"
 			}
 		},
-		"node_modules/dequal": {
-			"version": "2.0.3",
-			"resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
-			"integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
-			"dev": true,
-			"engines": {
-				"node": ">=6"
-			}
-		},
 		"node_modules/detect-file": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
@@ -2736,44 +2753,128 @@
 			}
 		},
 		"node_modules/devtools": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/devtools/-/devtools-7.16.13.tgz",
-			"integrity": "sha512-jm/DL5tlOUUMe0pUgahDqixw3z+NANLN6DYDeZPFv7z0CBtmnaTyOe2zbT0apLxCBpi800VeXaISVZwmKE2NiQ==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/devtools/-/devtools-7.40.0.tgz",
+			"integrity": "sha512-hiDPCNG/mpD+bSgegxoe5nwyxWav+QpIvT+7H9D0dUwjB0q04OF473qGflSQ1QpGig6l4qG92tA7dVnLsdP75A==",
 			"dev": true,
 			"dependencies": {
-				"@types/node": "^17.0.4",
+				"@types/node": "^18.0.0",
 				"@types/ua-parser-js": "^0.7.33",
-				"@wdio/config": "7.16.13",
-				"@wdio/logger": "7.16.0",
-				"@wdio/protocols": "7.16.7",
-				"@wdio/types": "7.16.13",
-				"@wdio/utils": "7.16.13",
+				"@wdio/config": "7.40.0",
+				"@wdio/logger": "7.26.0",
+				"@wdio/protocols": "7.27.0",
+				"@wdio/types": "7.40.0",
+				"@wdio/utils": "7.40.0",
 				"chrome-launcher": "^0.15.0",
 				"edge-paths": "^2.1.0",
-				"puppeteer-core": "^13.0.0",
+				"puppeteer-core": "13.1.3",
 				"query-selector-shadow-dom": "^1.0.0",
 				"ua-parser-js": "^1.0.1",
-				"uuid": "^8.0.0"
+				"uuid": "^9.0.0"
 			},
 			"engines": {
 				"node": ">=12.0.0"
 			}
 		},
 		"node_modules/devtools-protocol": {
-			"version": "0.0.953906",
-			"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.953906.tgz",
-			"integrity": "sha512-Z2vAafCNnl0Iw/u7TUjqOXW1sOhAMDOviflmUoUIxfq2rgfsoCO3qruB/LUJCdqF9aTJ32DUjXyMsX3+if6kDQ==",
+			"version": "0.0.1260888",
+			"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1260888.tgz",
+			"integrity": "sha512-9rTIZ4ZjWwalCPiaY+kPiALLfOKgAz5CTi/Zb1L+qSZ8PH3zVo1T8JcgXIIqg1iM3pZ6hF+n9xO5r2jZ/SF+jg==",
+			"dev": true
+		},
+		"node_modules/devtools/node_modules/debug": {
+			"version": "4.3.2",
+			"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+			"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+			"dev": true,
+			"dependencies": {
+				"ms": "2.1.2"
+			},
+			"engines": {
+				"node": ">=6.0"
+			},
+			"peerDependenciesMeta": {
+				"supports-color": {
+					"optional": true
+				}
+			}
+		},
+		"node_modules/devtools/node_modules/devtools-protocol": {
+			"version": "0.0.948846",
+			"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.948846.tgz",
+			"integrity": "sha512-5fGyt9xmMqUl2VI7+rnUkKCiAQIpLns8sfQtTENy5L70ktbNw0Z3TFJ1JoFNYdx/jffz4YXU45VF75wKZD7sZQ==",
 			"dev": true
 		},
+		"node_modules/devtools/node_modules/https-proxy-agent": {
+			"version": "5.0.0",
+			"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
+			"integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
+			"dev": true,
+			"dependencies": {
+				"agent-base": "6",
+				"debug": "4"
+			},
+			"engines": {
+				"node": ">= 6"
+			}
+		},
+		"node_modules/devtools/node_modules/puppeteer-core": {
+			"version": "13.1.3",
+			"resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.1.3.tgz",
+			"integrity": "sha512-96pzvVBzq5lUGt3L/QrIH3mxn3NfZylHeusNhq06xBAHPI0Upc0SC/9u7tXjL0oRnmcExeVRJivr1lj7Ah/yDQ==",
+			"dev": true,
+			"dependencies": {
+				"debug": "4.3.2",
+				"devtools-protocol": "0.0.948846",
+				"extract-zip": "2.0.1",
+				"https-proxy-agent": "5.0.0",
+				"node-fetch": "2.6.7",
+				"pkg-dir": "4.2.0",
+				"progress": "2.0.3",
+				"proxy-from-env": "1.1.0",
+				"rimraf": "3.0.2",
+				"tar-fs": "2.1.1",
+				"unbzip2-stream": "1.4.3",
+				"ws": "8.2.3"
+			},
+			"engines": {
+				"node": ">=10.18.1"
+			}
+		},
 		"node_modules/devtools/node_modules/uuid": {
-			"version": "8.3.2",
-			"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
-			"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+			"version": "9.0.1",
+			"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+			"integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
 			"dev": true,
+			"funding": [
+				"https://github.com/sponsors/broofa",
+				"https://github.com/sponsors/ctavan"
+			],
 			"bin": {
 				"uuid": "dist/bin/uuid"
 			}
 		},
+		"node_modules/devtools/node_modules/ws": {
+			"version": "8.2.3",
+			"resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz",
+			"integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==",
+			"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_modules/diff": {
 			"version": "5.2.0",
 			"resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
@@ -3301,9 +3402,9 @@
 			}
 		},
 		"node_modules/eslint-plugin-n/node_modules/brace-expansion": {
-			"version": "2.0.1",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-			"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+			"version": "2.0.2",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+			"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
 			"dev": true,
 			"dependencies": {
 				"balanced-match": "^1.0.0"
@@ -3896,9 +3997,9 @@
 			}
 		},
 		"node_modules/filelist/node_modules/brace-expansion": {
-			"version": "2.0.1",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-			"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+			"version": "2.0.2",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+			"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
 			"dev": true,
 			"dependencies": {
 				"balanced-match": "^1.0.0"
@@ -4064,9 +4165,9 @@
 			"dev": true
 		},
 		"node_modules/fs-extra": {
-			"version": "10.1.0",
-			"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
-			"integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+			"version": "11.3.2",
+			"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz",
+			"integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==",
 			"dev": true,
 			"dependencies": {
 				"graceful-fs": "^4.2.0",
@@ -4074,7 +4175,7 @@
 				"universalify": "^2.0.0"
 			},
 			"engines": {
-				"node": ">=12"
+				"node": ">=14.14"
 			}
 		},
 		"node_modules/fs.realpath": {
@@ -4127,18 +4228,6 @@
 				"node": "6.* || 8.* || >= 10.*"
 			}
 		},
-		"node_modules/get-port": {
-			"version": "5.1.1",
-			"resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz",
-			"integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==",
-			"dev": true,
-			"engines": {
-				"node": ">=8"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
 		"node_modules/get-stream": {
 			"version": "5.2.0",
 			"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
@@ -4313,6 +4402,7 @@
 			"version": "7.1.7",
 			"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
 			"integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+			"deprecated": "Glob versions prior to v9 are no longer supported",
 			"dev": true,
 			"dependencies": {
 				"fs.realpath": "^1.0.0",
@@ -4589,9 +4679,9 @@
 			}
 		},
 		"node_modules/grunt/node_modules/js-yaml": {
-			"version": "3.14.1",
-			"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
-			"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+			"version": "3.14.2",
+			"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
+			"integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
 			"dev": true,
 			"dependencies": {
 				"argparse": "^1.0.7",
@@ -4752,9 +4842,9 @@
 			}
 		},
 		"node_modules/http-cache-semantics": {
-			"version": "4.1.1",
-			"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
-			"integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
+			"version": "4.2.0",
+			"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
+			"integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==",
 			"dev": true
 		},
 		"node_modules/http-signature": {
@@ -4896,9 +4986,9 @@
 			"dev": true
 		},
 		"node_modules/inquirer": {
-			"version": "8.1.5",
-			"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.5.tgz",
-			"integrity": "sha512-G6/9xUqmt/r+UvufSyrPpt84NYwhKZ9jLsgMbQzlx804XErNupor8WQdBnBRrXmBfTPpuwf1sV+ss2ovjgdXIg==",
+			"version": "8.2.4",
+			"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz",
+			"integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==",
 			"dev": true,
 			"dependencies": {
 				"ansi-escapes": "^4.2.1",
@@ -4911,13 +5001,14 @@
 				"mute-stream": "0.0.8",
 				"ora": "^5.4.1",
 				"run-async": "^2.4.0",
-				"rxjs": "^7.2.0",
+				"rxjs": "^7.5.5",
 				"string-width": "^4.1.0",
 				"strip-ansi": "^6.0.0",
-				"through": "^2.3.6"
+				"through": "^2.3.6",
+				"wrap-ansi": "^7.0.0"
 			},
 			"engines": {
-				"node": ">=8.0.0"
+				"node": ">=12.0.0"
 			}
 		},
 		"node_modules/interpret": {
@@ -5274,9 +5365,9 @@
 			"dev": true
 		},
 		"node_modules/js-yaml": {
-			"version": "4.1.0",
-			"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
-			"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+			"version": "4.1.1",
+			"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
+			"integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
 			"dev": true,
 			"dependencies": {
 				"argparse": "^2.0.1"
@@ -5349,9 +5440,9 @@
 			"dev": true
 		},
 		"node_modules/jsonfile": {
-			"version": "6.1.0",
-			"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
-			"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+			"version": "6.2.0",
+			"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+			"integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
 			"dev": true,
 			"dependencies": {
 				"universalify": "^2.0.0"
@@ -5415,9 +5506,9 @@
 			"dev": true
 		},
 		"node_modules/ky": {
-			"version": "0.28.7",
-			"resolved": "https://registry.npmjs.org/ky/-/ky-0.28.7.tgz",
-			"integrity": "sha512-a23i6qSr/ep15vdtw/zyEQIDLoUaKDg9Jf04CYl/0ns/wXNYna26zJpI+MeIFaPeDvkrjLPrKtKOiiI3IE53RQ==",
+			"version": "0.30.0",
+			"resolved": "https://registry.npmjs.org/ky/-/ky-0.30.0.tgz",
+			"integrity": "sha512-X/u76z4JtDVq10u1JA5UQfatPxgPaVDMYTrgHyiTpGN2z4TMEJkIHsoSBBSg9SWZEIXTKsi9kHgiQ9o3Y/4yog==",
 			"dev": true,
 			"engines": {
 				"node": ">=12"
@@ -5690,9 +5781,9 @@
 			}
 		},
 		"node_modules/loglevel": {
-			"version": "1.9.1",
-			"resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz",
-			"integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==",
+			"version": "1.9.2",
+			"resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz",
+			"integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==",
 			"dev": true,
 			"engines": {
 				"node": ">= 0.6.0"
@@ -5763,9 +5854,9 @@
 			}
 		},
 		"node_modules/marky": {
-			"version": "1.2.5",
-			"resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz",
-			"integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==",
+			"version": "1.3.0",
+			"resolved": "https://registry.npmjs.org/marky/-/marky-1.3.0.tgz",
+			"integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==",
 			"dev": true
 		},
 		"node_modules/mathml-tag-names": {
@@ -5888,15 +5979,18 @@
 			}
 		},
 		"node_modules/mkdirp": {
-			"version": "1.0.4",
-			"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-			"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
+			"integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
 			"dev": true,
 			"bin": {
-				"mkdirp": "bin/cmd.js"
+				"mkdirp": "dist/cjs/src/bin.js"
 			},
 			"engines": {
 				"node": ">=10"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/isaacs"
 			}
 		},
 		"node_modules/mkdirp-classic": {
@@ -5941,9 +6035,9 @@
 			}
 		},
 		"node_modules/mocha/node_modules/brace-expansion": {
-			"version": "2.0.1",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-			"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+			"version": "2.0.2",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+			"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
 			"dev": true,
 			"dependencies": {
 				"balanced-match": "^1.0.0"
@@ -6205,10 +6299,13 @@
 			}
 		},
 		"node_modules/object-inspect": {
-			"version": "1.13.1",
-			"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
-			"integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+			"version": "1.13.4",
+			"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
+			"integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
 			"dev": true,
+			"engines": {
+				"node": ">= 0.4"
+			},
 			"funding": {
 				"url": "https://github.com/sponsors/ljharb"
 			}
@@ -6884,9 +6981,9 @@
 			"dev": true
 		},
 		"node_modules/pump": {
-			"version": "3.0.0",
-			"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
-			"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+			"version": "3.0.3",
+			"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
+			"integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
 			"dev": true,
 			"dependencies": {
 				"end-of-stream": "^1.1.0",
@@ -7125,9 +7222,9 @@
 			}
 		},
 		"node_modules/readdir-glob/node_modules/brace-expansion": {
-			"version": "2.0.1",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-			"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+			"version": "2.0.2",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+			"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
 			"dev": true,
 			"dependencies": {
 				"balanced-match": "^1.0.0"
@@ -8488,9 +8585,9 @@
 			}
 		},
 		"node_modules/ua-parser-js": {
-			"version": "1.0.37",
-			"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz",
-			"integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==",
+			"version": "1.0.41",
+			"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.41.tgz",
+			"integrity": "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==",
 			"dev": true,
 			"funding": [
 				{
@@ -8506,6 +8603,9 @@
 					"url": "https://github.com/sponsors/faisalman"
 				}
 			],
+			"bin": {
+				"ua-parser-js": "script/cli.js"
+			},
 			"engines": {
 				"node": "*"
 			}
@@ -8645,9 +8745,9 @@
 			}
 		},
 		"node_modules/validator": {
-			"version": "13.11.0",
-			"resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz",
-			"integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==",
+			"version": "13.15.23",
+			"resolved": "https://registry.npmjs.org/validator/-/validator-13.15.23.tgz",
+			"integrity": "sha512-4yoz1kEWqUjzi5zsPbAS/903QXSYp0UOtHsPpp7p9rHAw/W+dkInskAE386Fat3oKRROwO98d9ZB0G4cObgUyw==",
 			"dev": true,
 			"engines": {
 				"node": ">= 0.10"
@@ -8701,31 +8801,28 @@
 			}
 		},
 		"node_modules/wdio-mediawiki": {
-			"version": "2.3.0",
-			"resolved": "https://registry.npmjs.org/wdio-mediawiki/-/wdio-mediawiki-2.3.0.tgz",
-			"integrity": "sha512-JFiCve+xS1uFBi9es7bOTtmX95Zl+x0TcTUHlMWUZUiWNWoF2bk8l8zMMggoSFF9alF636LzPag8aAnGHDUaHQ==",
+			"version": "2.7.1",
+			"resolved": "https://registry.npmjs.org/wdio-mediawiki/-/wdio-mediawiki-2.7.1.tgz",
+			"integrity": "sha512-GMNnz/TIdASuD0Ufo76P7EkUCAW8Cs1c/T9XAVG2PgBWrw7KDM0oOqRRuXKcuCOKqn6VwNXTDkXwiL4u4AU7Fg==",
 			"dev": true,
 			"dependencies": {
 				"mwbot": "2.1.3"
-			},
-			"engines": {
-				"node": ">=10.0"
 			}
 		},
 		"node_modules/webdriver": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.16.13.tgz",
-			"integrity": "sha512-Vfr952W1uIgDeWHPGzqH43dYLeRSZshh3TzA9ICUkvnC+Q7YziQdv/8xI8tuuyvb7lSr3VsuB2cGzyCRoC/NWw==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.40.0.tgz",
+			"integrity": "sha512-CKi3cDWgNVE/ibcsBfdtA+pQVeZ4oYlecLlwemulVxJdgr4l5bv+nXuoIhnYeVb6aAI4naK772vmWQ0XuRYhDQ==",
 			"dev": true,
 			"dependencies": {
-				"@types/node": "^17.0.4",
-				"@wdio/config": "7.16.13",
-				"@wdio/logger": "7.16.0",
-				"@wdio/protocols": "7.16.7",
-				"@wdio/types": "7.16.13",
-				"@wdio/utils": "7.16.13",
+				"@types/node": "^18.0.0",
+				"@wdio/config": "7.40.0",
+				"@wdio/logger": "7.26.0",
+				"@wdio/protocols": "7.27.0",
+				"@wdio/types": "7.40.0",
+				"@wdio/utils": "7.40.0",
 				"got": "^11.0.2",
-				"ky": "^0.28.5",
+				"ky": "0.30.0",
 				"lodash.merge": "^4.6.1"
 			},
 			"engines": {
@@ -8733,44 +8830,67 @@
 			}
 		},
 		"node_modules/webdriverio": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.16.13.tgz",
-			"integrity": "sha512-jl1VRZYL1+cPeG6klskKX7mCEBWNQWDFaNtaIl5pwWgtKWPau6fCzKntSARzfNV8+hKJKwJ2mZn5Nsxfw28Oeg==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.40.0.tgz",
+			"integrity": "sha512-UswBOjpWwk7ziGi9beZGX/XFrp4m1Ws0ni5HI9mzAkOlpKKKWhnX6i95pWQV6sPF4Urv4RJf8WXayHhTbzXzdA==",
 			"dev": true,
 			"dependencies": {
 				"@types/aria-query": "^5.0.0",
-				"@types/node": "^17.0.4",
-				"@wdio/config": "7.16.13",
-				"@wdio/logger": "7.16.0",
-				"@wdio/protocols": "7.16.7",
-				"@wdio/repl": "7.16.13",
-				"@wdio/types": "7.16.13",
-				"@wdio/utils": "7.16.13",
+				"@types/node": "^18.0.0",
+				"@wdio/config": "7.40.0",
+				"@wdio/logger": "7.26.0",
+				"@wdio/protocols": "7.27.0",
+				"@wdio/repl": "7.40.0",
+				"@wdio/types": "7.40.0",
+				"@wdio/utils": "7.40.0",
 				"archiver": "^5.0.0",
-				"aria-query": "^5.0.0",
+				"aria-query": "^5.2.1",
 				"css-shorthand-properties": "^1.1.1",
 				"css-value": "^0.0.1",
-				"devtools": "7.16.13",
-				"devtools-protocol": "^0.0.953906",
-				"fs-extra": "^10.0.0",
-				"get-port": "^5.1.1",
+				"devtools": "7.40.0",
+				"devtools-protocol": "^0.0.1260888",
+				"fs-extra": "^11.1.1",
 				"grapheme-splitter": "^1.0.2",
 				"lodash.clonedeep": "^4.5.0",
 				"lodash.isobject": "^3.0.2",
 				"lodash.isplainobject": "^4.0.6",
 				"lodash.zip": "^4.2.0",
-				"minimatch": "^3.0.4",
-				"puppeteer-core": "^13.0.0",
+				"minimatch": "^6.0.4",
+				"puppeteer-core": "^13.1.3",
 				"query-selector-shadow-dom": "^1.0.0",
 				"resq": "^1.9.1",
 				"rgb2hex": "0.2.5",
 				"serialize-error": "^8.0.0",
-				"webdriver": "7.16.13"
+				"webdriver": "7.40.0"
 			},
 			"engines": {
 				"node": ">=12.0.0"
 			}
 		},
+		"node_modules/webdriverio/node_modules/brace-expansion": {
+			"version": "2.0.2",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+			"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+			"dev": true,
+			"dependencies": {
+				"balanced-match": "^1.0.0"
+			}
+		},
+		"node_modules/webdriverio/node_modules/minimatch": {
+			"version": "6.2.0",
+			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz",
+			"integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==",
+			"dev": true,
+			"dependencies": {
+				"brace-expansion": "^2.0.1"
+			},
+			"engines": {
+				"node": ">=10"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/isaacs"
+			}
+		},
 		"node_modules/webidl-conversions": {
 			"version": "3.0.1",
 			"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
diff --git a/package.json b/package.json
index 6320e68..931ef50 100644
--- a/package.json
+++ b/package.json
@@ -9,11 +9,11 @@
 	},
 	"devDependencies": {
 		"@prettier/plugin-xml": "^2.2.0",
-		"@wdio/cli": "7.16.13",
-		"@wdio/junit-reporter": "7.16.13",
-		"@wdio/local-runner": "7.16.13",
-		"@wdio/mocha-framework": "7.33.0",
-		"@wdio/spec-reporter": "7.16.13",
+		"@wdio/cli": "7.40.0",
+		"@wdio/junit-reporter": "7.40.0",
+		"@wdio/local-runner": "7.40.0",
+		"@wdio/mocha-framework": "7.40.0",
+		"@wdio/spec-reporter": "7.40.0",
 		"eslint-config-wikimedia": "0.28.2",
 		"grunt": "1.6.1",
 		"grunt-banana-checker": "0.13.0",
@@ -21,6 +21,6 @@
 		"grunt-stylelint": "0.20.1",
 		"stylelint-config-wikimedia": "0.18.0",
 		"svgo": "3.2.0",
-		"wdio-mediawiki": "2.3.0"
+		"wdio-mediawiki": "2.7.1"
 	}
 }
-- 
2.47.3

$ date
--- stdout ---
Thu Nov 20 01:08:47 UTC 2025

--- end ---
$ git clone file:///srv/git/mediawiki-extensions-AchievementBadges.git repo --depth=1 -b master
--- stderr ---
Cloning into 'repo'...
--- stdout ---

--- end ---
$ git config user.name libraryupgrader
--- stdout ---

--- end ---
$ git config user.email tools.libraryupgrader@tools.wmflabs.org
--- stdout ---

--- end ---
$ git submodule update --init
--- stdout ---

--- end ---
$ grr init
--- stdout ---
Installed commit-msg hook.

--- end ---
$ git show-ref refs/heads/master
--- stdout ---
2be945117c6d56d484cf8c28d1948f787a97a5c4 refs/heads/master

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "@wdio/cli": {
      "name": "@wdio/cli",
      "severity": "high",
      "isDirect": true,
      "via": [
        "inquirer",
        "webdriverio",
        "yarn-install"
      ],
      "effects": [
        "@wdio/junit-reporter",
        "@wdio/local-runner",
        "@wdio/spec-reporter"
      ],
      "range": "<=9.0.0-alpha.426",
      "nodes": [
        "node_modules/@wdio/cli"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "@wdio/junit-reporter": {
      "name": "@wdio/junit-reporter",
      "severity": "high",
      "isDirect": true,
      "via": [
        "@wdio/cli"
      ],
      "effects": [],
      "range": "6.0.4 - 8.0.0-alpha.631",
      "nodes": [
        "node_modules/@wdio/junit-reporter"
      ],
      "fixAvailable": {
        "name": "@wdio/junit-reporter",
        "version": "9.20.0",
        "isSemVerMajor": true
      }
    },
    "@wdio/local-runner": {
      "name": "@wdio/local-runner",
      "severity": "high",
      "isDirect": true,
      "via": [
        "@wdio/cli",
        "@wdio/runner"
      ],
      "effects": [],
      "range": "6.0.4 - 8.10.2",
      "nodes": [
        "node_modules/@wdio/local-runner"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "@wdio/runner": {
      "name": "@wdio/runner",
      "severity": "high",
      "isDirect": false,
      "via": [
        "webdriverio"
      ],
      "effects": [
        "@wdio/local-runner"
      ],
      "range": "7.7.6 - 8.10.2",
      "nodes": [
        "node_modules/@wdio/runner"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "@wdio/spec-reporter": {
      "name": "@wdio/spec-reporter",
      "severity": "high",
      "isDirect": true,
      "via": [
        "@wdio/cli"
      ],
      "effects": [],
      "range": "6.0.4 - 8.0.0-alpha.631",
      "nodes": [
        "node_modules/@wdio/spec-reporter"
      ],
      "fixAvailable": {
        "name": "@wdio/spec-reporter",
        "version": "9.20.0",
        "isSemVerMajor": true
      }
    },
    "brace-expansion": {
      "name": "brace-expansion",
      "severity": "low",
      "isDirect": false,
      "via": [
        {
          "source": 1105443,
          "name": "brace-expansion",
          "dependency": "brace-expansion",
          "title": "brace-expansion Regular Expression Denial of Service vulnerability",
          "url": "https://github.com/advisories/GHSA-v6h2-p8h4-qcjw",
          "severity": "low",
          "cwe": [
            "CWE-400"
          ],
          "cvss": {
            "score": 3.1,
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": ">=1.0.0 <=1.1.11"
        },
        {
          "source": 1105444,
          "name": "brace-expansion",
          "dependency": "brace-expansion",
          "title": "brace-expansion Regular Expression Denial of Service vulnerability",
          "url": "https://github.com/advisories/GHSA-v6h2-p8h4-qcjw",
          "severity": "low",
          "cwe": [
            "CWE-400"
          ],
          "cvss": {
            "score": 3.1,
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": ">=2.0.0 <=2.0.1"
        }
      ],
      "effects": [],
      "range": "1.0.0 - 1.1.11 || 2.0.0 - 2.0.1",
      "nodes": [
        "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion",
        "node_modules/brace-expansion",
        "node_modules/eslint-plugin-n/node_modules/brace-expansion",
        "node_modules/filelist/node_modules/brace-expansion",
        "node_modules/mocha/node_modules/brace-expansion",
        "node_modules/readdir-glob/node_modules/brace-expansion"
      ],
      "fixAvailable": true
    },
    "cross-spawn": {
      "name": "cross-spawn",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1104663,
          "name": "cross-spawn",
          "dependency": "cross-spawn",
          "title": "Regular Expression Denial of Service (ReDoS) in cross-spawn",
          "url": "https://github.com/advisories/GHSA-3xgq-45jj-v275",
          "severity": "high",
          "cwe": [
            "CWE-1333"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": "<6.0.6"
        }
      ],
      "effects": [
        "yarn-install"
      ],
      "range": "<6.0.6",
      "nodes": [
        "node_modules/yarn-install/node_modules/cross-spawn"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "devtools": {
      "name": "devtools",
      "severity": "high",
      "isDirect": false,
      "via": [
        "puppeteer-core"
      ],
      "effects": [],
      "range": "7.7.6 - 8.10.2",
      "nodes": [
        "node_modules/devtools"
      ],
      "fixAvailable": true
    },
    "external-editor": {
      "name": "external-editor",
      "severity": "low",
      "isDirect": false,
      "via": [
        "tmp"
      ],
      "effects": [
        "inquirer"
      ],
      "range": ">=1.1.1",
      "nodes": [
        "node_modules/external-editor"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "form-data": {
      "name": "form-data",
      "severity": "critical",
      "isDirect": false,
      "via": [
        {
          "source": 1109540,
          "name": "form-data",
          "dependency": "form-data",
          "title": "form-data uses unsafe random function in form-data for choosing boundary",
          "url": "https://github.com/advisories/GHSA-fjxv-7rqg-78g4",
          "severity": "critical",
          "cwe": [
            "CWE-330"
          ],
          "cvss": {
            "score": 0,
            "vectorString": null
          },
          "range": "<2.5.4"
        }
      ],
      "effects": [
        "request"
      ],
      "range": "<2.5.4",
      "nodes": [
        "node_modules/form-data"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "6.0.0",
        "isSemVerMajor": true
      }
    },
    "inquirer": {
      "name": "inquirer",
      "severity": "low",
      "isDirect": false,
      "via": [
        "external-editor"
      ],
      "effects": [
        "@wdio/cli"
      ],
      "range": "3.0.0 - 8.2.6 || 9.0.0 - 9.3.7",
      "nodes": [
        "node_modules/inquirer"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "js-yaml": {
      "name": "js-yaml",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1109801,
          "name": "js-yaml",
          "dependency": "js-yaml",
          "title": "js-yaml has prototype pollution in merge (<<)",
          "url": "https://github.com/advisories/GHSA-mh29-5h37-fv8m",
          "severity": "moderate",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 5.3,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"
          },
          "range": "<3.14.2"
        },
        {
          "source": 1109802,
          "name": "js-yaml",
          "dependency": "js-yaml",
          "title": "js-yaml has prototype pollution in merge (<<)",
          "url": "https://github.com/advisories/GHSA-mh29-5h37-fv8m",
          "severity": "moderate",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 5.3,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"
          },
          "range": ">=4.0.0 <4.1.1"
        }
      ],
      "effects": [],
      "range": "<3.14.2 || >=4.0.0 <4.1.1",
      "nodes": [
        "node_modules/grunt/node_modules/js-yaml",
        "node_modules/js-yaml"
      ],
      "fixAvailable": true
    },
    "mwbot": {
      "name": "mwbot",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "request"
      ],
      "effects": [
        "wdio-mediawiki"
      ],
      "range": ">=0.1.6",
      "nodes": [
        "node_modules/mwbot"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "6.0.0",
        "isSemVerMajor": true
      }
    },
    "puppeteer-core": {
      "name": "puppeteer-core",
      "severity": "high",
      "isDirect": false,
      "via": [
        "tar-fs",
        "ws"
      ],
      "effects": [
        "devtools",
        "webdriverio"
      ],
      "range": "10.0.0 - 22.11.1",
      "nodes": [
        "node_modules/puppeteer-core"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "request": {
      "name": "request",
      "severity": "critical",
      "isDirect": false,
      "via": [
        {
          "source": 1096727,
          "name": "request",
          "dependency": "request",
          "title": "Server-Side Request Forgery in Request",
          "url": "https://github.com/advisories/GHSA-p8p7-x288-28g6",
          "severity": "moderate",
          "cwe": [
            "CWE-918"
          ],
          "cvss": {
            "score": 6.1,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
          },
          "range": "<=2.88.2"
        },
        "form-data",
        "tough-cookie"
      ],
      "effects": [
        "mwbot"
      ],
      "range": "*",
      "nodes": [
        "node_modules/request"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "6.0.0",
        "isSemVerMajor": true
      }
    },
    "tar-fs": {
      "name": "tar-fs",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1109532,
          "name": "tar-fs",
          "dependency": "tar-fs",
          "title": "tar-fs has a symlink validation bypass if destination directory is predictable with a specific tarball",
          "url": "https://github.com/advisories/GHSA-vj76-c3g6-qr5v",
          "severity": "high",
          "cwe": [
            "CWE-22",
            "CWE-61"
          ],
          "cvss": {
            "score": 0,
            "vectorString": null
          },
          "range": ">=2.0.0 <2.1.4"
        },
        {
          "source": 1109543,
          "name": "tar-fs",
          "dependency": "tar-fs",
          "title": "tar-fs can extract outside the specified dir with a specific tarball",
          "url": "https://github.com/advisories/GHSA-8cj5-5rvv-wf4v",
          "severity": "high",
          "cwe": [
            "CWE-22"
          ],
          "cvss": {
            "score": 0,
            "vectorString": null
          },
          "range": ">=2.0.0 <2.1.3"
        },
        {
          "source": 1109552,
          "name": "tar-fs",
          "dependency": "tar-fs",
          "title": "tar-fs Vulnerable to Link Following and Path Traversal via Extracting a Crafted tar File",
          "url": "https://github.com/advisories/GHSA-pq67-2wwv-3xjx",
          "severity": "high",
          "cwe": [
            "CWE-22"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
          },
          "range": ">=2.0.0 <2.1.2"
        }
      ],
      "effects": [
        "puppeteer-core"
      ],
      "range": "2.0.0 - 2.1.3",
      "nodes": [
        "node_modules/tar-fs"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "tmp": {
      "name": "tmp",
      "severity": "low",
      "isDirect": false,
      "via": [
        {
          "source": 1109537,
          "name": "tmp",
          "dependency": "tmp",
          "title": "tmp allows arbitrary temporary file / directory write via symbolic link `dir` parameter",
          "url": "https://github.com/advisories/GHSA-52f5-9888-hmc6",
          "severity": "low",
          "cwe": [
            "CWE-59"
          ],
          "cvss": {
            "score": 2.5,
            "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N"
          },
          "range": "<=0.2.3"
        }
      ],
      "effects": [
        "external-editor"
      ],
      "range": "<=0.2.3",
      "nodes": [
        "node_modules/tmp"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "tough-cookie": {
      "name": "tough-cookie",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1097682,
          "name": "tough-cookie",
          "dependency": "tough-cookie",
          "title": "tough-cookie Prototype Pollution vulnerability",
          "url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3",
          "severity": "moderate",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 6.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"
          },
          "range": "<4.1.3"
        }
      ],
      "effects": [
        "request"
      ],
      "range": "<4.1.3",
      "nodes": [
        "node_modules/tough-cookie"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "6.0.0",
        "isSemVerMajor": true
      }
    },
    "validator": {
      "name": "validator",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1109241,
          "name": "validator",
          "dependency": "validator",
          "title": "validator.js has a URL validation bypass vulnerability in its isURL function",
          "url": "https://github.com/advisories/GHSA-9965-vmph-33xx",
          "severity": "moderate",
          "cwe": [
            "CWE-79"
          ],
          "cvss": {
            "score": 6.1,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
          },
          "range": "<13.15.20"
        }
      ],
      "effects": [],
      "range": "<13.15.20",
      "nodes": [
        "node_modules/validator"
      ],
      "fixAvailable": true
    },
    "wdio-mediawiki": {
      "name": "wdio-mediawiki",
      "severity": "moderate",
      "isDirect": true,
      "via": [
        "mwbot"
      ],
      "effects": [],
      "range": "<=5.1.0",
      "nodes": [
        "node_modules/wdio-mediawiki"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "6.0.0",
        "isSemVerMajor": true
      }
    },
    "webdriverio": {
      "name": "webdriverio",
      "severity": "high",
      "isDirect": false,
      "via": [
        "devtools",
        "puppeteer-core"
      ],
      "effects": [
        "@wdio/cli",
        "@wdio/runner"
      ],
      "range": "7.7.6 - 8.10.2",
      "nodes": [
        "node_modules/webdriverio"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "ws": {
      "name": "ws",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1098392,
          "name": "ws",
          "dependency": "ws",
          "title": "ws affected by a DoS when handling a request with many HTTP headers",
          "url": "https://github.com/advisories/GHSA-3h5v-q93c-6h6q",
          "severity": "high",
          "cwe": [
            "CWE-476"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": ">=8.0.0 <8.17.1"
        }
      ],
      "effects": [
        "puppeteer-core"
      ],
      "range": "8.0.0 - 8.17.0",
      "nodes": [
        "node_modules/ws"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "yarn-install": {
      "name": "yarn-install",
      "severity": "high",
      "isDirect": false,
      "via": [
        "cross-spawn"
      ],
      "effects": [
        "@wdio/cli"
      ],
      "range": "*",
      "nodes": [
        "node_modules/yarn-install"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 4,
      "moderate": 5,
      "high": 12,
      "critical": 2,
      "total": 23
    },
    "dependencies": {
      "prod": 1,
      "dev": 780,
      "optional": 2,
      "peer": 1,
      "peerOptional": 0,
      "total": 780
    }
  }
}

--- end ---
$ /usr/bin/composer install
--- stderr ---
No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.
Loading composer repositories with package information
Updating dependencies
Lock file operations: 38 installs, 0 updates, 0 removals
  - Locking composer/pcre (3.3.2)
  - Locking composer/semver (3.4.3)
  - Locking composer/spdx-licenses (1.5.9)
  - Locking composer/xdebug-handler (3.0.5)
  - Locking dealerdirect/phpcodesniffer-composer-installer (v1.2.0)
  - Locking doctrine/deprecations (1.1.5)
  - Locking felixfbecker/advanced-json-rpc (v3.2.1)
  - Locking mediawiki/mediawiki-codesniffer (v45.0.0)
  - Locking mediawiki/mediawiki-phan-config (0.15.1)
  - Locking mediawiki/minus-x (1.1.3)
  - Locking mediawiki/phan-taint-check-plugin (6.1.0)
  - Locking microsoft/tolerant-php-parser (v0.1.2)
  - Locking netresearch/jsonmapper (v4.5.0)
  - Locking phan/phan (5.4.5)
  - Locking php-parallel-lint/php-console-color (v1.0.1)
  - Locking php-parallel-lint/php-console-highlighter (v1.0.0)
  - Locking php-parallel-lint/php-parallel-lint (v1.4.0)
  - Locking phpcsstandards/phpcsextra (1.2.1)
  - Locking phpcsstandards/phpcsutils (1.0.12)
  - Locking phpdocumentor/reflection-common (2.2.0)
  - Locking phpdocumentor/reflection-docblock (5.6.4)
  - Locking phpdocumentor/type-resolver (1.10.1)
  - Locking phpstan/phpdoc-parser (2.3.0)
  - Locking psr/container (2.0.2)
  - Locking psr/log (3.0.2)
  - Locking sabre/event (5.1.7)
  - Locking squizlabs/php_codesniffer (3.10.3)
  - Locking symfony/console (v7.3.6)
  - Locking symfony/deprecation-contracts (v3.6.0)
  - Locking symfony/polyfill-ctype (v1.33.0)
  - Locking symfony/polyfill-intl-grapheme (v1.33.0)
  - Locking symfony/polyfill-intl-normalizer (v1.33.0)
  - Locking symfony/polyfill-mbstring (v1.33.0)
  - Locking symfony/polyfill-php80 (v1.33.0)
  - Locking symfony/service-contracts (v3.6.1)
  - Locking symfony/string (v7.3.4)
  - Locking tysonandre/var_representation_polyfill (0.1.3)
  - Locking webmozart/assert (1.12.1)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 38 installs, 0 updates, 0 removals
    0 [>---------------------------]    0 [->--------------------------]
  - Installing squizlabs/php_codesniffer (3.10.3): Extracting archive
  - Installing dealerdirect/phpcodesniffer-composer-installer (v1.2.0): Extracting archive
  - Installing composer/pcre (3.3.2): Extracting archive
  - Installing symfony/polyfill-php80 (v1.33.0): Extracting archive
  - Installing phpcsstandards/phpcsutils (1.0.12): Extracting archive
  - Installing phpcsstandards/phpcsextra (1.2.1): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.33.0): Extracting archive
  - Installing composer/spdx-licenses (1.5.9): Extracting archive
  - Installing composer/semver (3.4.3): Extracting archive
  - Installing mediawiki/mediawiki-codesniffer (v45.0.0): Extracting archive
  - Installing tysonandre/var_representation_polyfill (0.1.3): Extracting archive
  - Installing symfony/polyfill-intl-normalizer (v1.33.0): Extracting archive
  - Installing symfony/polyfill-intl-grapheme (v1.33.0): Extracting archive
  - Installing symfony/polyfill-ctype (v1.33.0): Extracting archive
  - Installing symfony/string (v7.3.4): Extracting archive
  - Installing symfony/deprecation-contracts (v3.6.0): Extracting archive
  - Installing psr/container (2.0.2): Extracting archive
  - Installing symfony/service-contracts (v3.6.1): Extracting archive
  - Installing symfony/console (v7.3.6): Extracting archive
  - Installing sabre/event (5.1.7): Extracting archive
  - Installing netresearch/jsonmapper (v4.5.0): Extracting archive
  - Installing microsoft/tolerant-php-parser (v0.1.2): Extracting archive
  - Installing webmozart/assert (1.12.1): Extracting archive
  - Installing phpstan/phpdoc-parser (2.3.0): Extracting archive
  - Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
  - Installing doctrine/deprecations (1.1.5): Extracting archive
  - Installing phpdocumentor/type-resolver (1.10.1): Extracting archive
  - Installing phpdocumentor/reflection-docblock (5.6.4): Extracting archive
  - Installing felixfbecker/advanced-json-rpc (v3.2.1): Extracting archive
  - Installing psr/log (3.0.2): Extracting archive
  - Installing composer/xdebug-handler (3.0.5): Extracting archive
  - Installing phan/phan (5.4.5): Extracting archive
  - Installing mediawiki/phan-taint-check-plugin (6.1.0): Extracting archive
  - Installing mediawiki/mediawiki-phan-config (0.15.1): Extracting archive
  - Installing mediawiki/minus-x (1.1.3): Extracting archive
  - Installing php-parallel-lint/php-console-color (v1.0.1): Extracting archive
  - Installing php-parallel-lint/php-console-highlighter (v1.0.0): Extracting archive
  - Installing php-parallel-lint/php-parallel-lint (v1.4.0): Extracting archive
  0/36 [>---------------------------]   0%
 27/36 [=====================>------]  75%
 35/36 [===========================>]  97%
 36/36 [============================] 100%
1 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
17 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---
PHP CodeSniffer Config installed_paths set to ../../mediawiki/mediawiki-codesniffer,../../phpcsstandards/phpcsextra,../../phpcsstandards/phpcsutils

--- end ---
Upgrading n:@wdio/cli from 7.16.13 -> 7.40.0
Upgrading n:@wdio/junit-reporter from 7.16.13 -> 7.40.0
Upgrading n:@wdio/local-runner from 7.16.13 -> 7.40.0
Upgrading n:@wdio/mocha-framework from 7.33.0 -> 7.40.0
Upgrading n:wdio-mediawiki from 2.3.0 -> 2.7.1
Upgrading n:@wdio/spec-reporter from 7.16.13 -> 7.40.0
$ /usr/bin/npm install
--- stderr ---
npm WARN deprecated @types/easy-table@1.2.3: This is a stub types definition. easy-table provides its own type definitions, so you do not need this installed.
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.1.7: Glob versions prior to v9 are no longer supported
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
--- stdout ---

added 786 packages, and audited 787 packages in 13s

137 packages are looking for funding
  run `npm fund` for details

23 vulnerabilities (4 low, 5 moderate, 12 high, 2 critical)

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

--- end ---
$ package-lock-lint /src/repo/package-lock.json
--- stdout ---
Checking /src/repo/package-lock.json

--- end ---
$ /usr/bin/npm ci
--- stderr ---
npm WARN deprecated @types/easy-table@1.2.3: This is a stub types definition. easy-table provides its own type definitions, so you do not need this installed.
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.1.7: Glob versions prior to v9 are no longer supported
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
--- stdout ---

added 786 packages, and audited 787 packages in 10s

137 packages are looking for funding
  run `npm fund` for details

23 vulnerabilities (4 low, 5 moderate, 12 high, 2 critical)

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

--- end ---
$ /usr/bin/npm test
--- stdout ---

> test
> grunt test

Running "eslint:all" (eslint) task

Running "stylelint:all" (stylelint) task
>> Linted 2 files without errors

Running "banana:AchievementBadges" (banana) task
>> 1 message directory checked.

Done.

--- end ---
Upgrading c:mediawiki/mediawiki-codesniffer from 45.0.0 -> 48.0.0
Upgrading c:mediawiki/mediawiki-phan-config from 0.15.1 -> 0.17.0
$ /usr/bin/composer update
--- stderr ---
Loading composer repositories with package information
Updating dependencies
Lock file operations: 0 installs, 8 updates, 0 removals
  - Upgrading composer/semver (3.4.3 => 3.4.4)
  - Upgrading mediawiki/mediawiki-codesniffer (v45.0.0 => v48.0.0)
  - Upgrading mediawiki/mediawiki-phan-config (0.15.1 => 0.17.0)
  - Upgrading mediawiki/phan-taint-check-plugin (6.1.0 => 7.0.0)
  - Upgrading phan/phan (5.4.5 => 5.5.1)
  - Upgrading phpcsstandards/phpcsextra (1.2.1 => 1.4.0)
  - Upgrading phpcsstandards/phpcsutils (1.0.12 => 1.1.1)
  - Upgrading squizlabs/php_codesniffer (3.10.3 => 3.13.2)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 0 installs, 8 updates, 0 removals
    0 [>---------------------------]    0 [->--------------------------]
  - Upgrading squizlabs/php_codesniffer (3.10.3 => 3.13.2): Extracting archive
  - Upgrading phpcsstandards/phpcsutils (1.0.12 => 1.1.1): Extracting archive
  - Upgrading phpcsstandards/phpcsextra (1.2.1 => 1.4.0): Extracting archive
  - Upgrading composer/semver (3.4.3 => 3.4.4): Extracting archive
  - Upgrading mediawiki/mediawiki-codesniffer (v45.0.0 => v48.0.0): Extracting archive
  - Upgrading phan/phan (5.4.5 => 5.5.1): Extracting archive
  - Upgrading mediawiki/phan-taint-check-plugin (6.1.0 => 7.0.0): Extracting archive
  - Upgrading mediawiki/mediawiki-phan-config (0.15.1 => 0.17.0): Extracting archive
 0/8 [>---------------------------]   0%
 6/8 [=====================>------]  75%
 7/8 [========================>---]  87%
 8/8 [============================] 100%
Generating autoload files
17 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
No security vulnerability advisories found.
--- stdout ---
PHP CodeSniffer Config installed_paths set to ../../mediawiki/mediawiki-codesniffer,../../phpcsstandards/phpcsextra,../../phpcsstandards/phpcsutils

--- end ---
$ vendor/bin/phpcs --report=json
--- stdout ---
{"totals":{"errors":0,"warnings":0,"fixable":0},"files":{"\/src\/repo\/includes\/Hooks\/SpecialAchievementsBeforeGetEarnedHook.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/LogFormatter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/Hooks\/BeforeCreateAchievementHook.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/unit\/HookRunnerTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/AchievementBadges.i18n.alias.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/ServiceWiring.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/Hooks\/HookRunner.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/.phan\/config.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/HookHandler\/MediaWikiServices.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/Constants.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/integration\/Special\/SpecialShareAchievementTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/EarnEchoEventPresentationModel.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/integration\/Special\/SpecialAchievementsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/HookHandler\/Main.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/HookHandler\/AchievementRegister.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/integration\/AchieveTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/integration\/AchievementTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/Special\/SpecialAchievements.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/Achievement.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/Special\/SpecialShareAchievement.php":{"errors":0,"warnings":0,"messages":[]}}}

--- end ---
$ /usr/bin/composer install
--- stderr ---
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Nothing to install, update or remove
Generating autoload files
17 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---

--- end ---
$ /usr/bin/composer test
--- stderr ---
> parallel-lint . --exclude node_modules --exclude vendor
> phpcs -sp --cache
> minus-x check .
--- stdout ---
PHP 8.4.11 | 10 parallel jobs
....................                                         20/20 (100%)


Checked 20 files in 0.1 seconds
No syntax error found
.................... 20 / 20 (100%)


Time: 186ms; Memory: 8MB

MinusX
======
Processing /src/repo...
.............................................................
..........................................................
All good!

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "@wdio/cli": {
      "name": "@wdio/cli",
      "severity": "high",
      "isDirect": true,
      "via": [
        "inquirer",
        "webdriverio",
        "yarn-install"
      ],
      "effects": [
        "@wdio/junit-reporter",
        "@wdio/local-runner",
        "@wdio/spec-reporter"
      ],
      "range": "<=9.0.0-alpha.426",
      "nodes": [
        "node_modules/@wdio/cli"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "@wdio/junit-reporter": {
      "name": "@wdio/junit-reporter",
      "severity": "high",
      "isDirect": true,
      "via": [
        "@wdio/cli"
      ],
      "effects": [],
      "range": "6.0.4 - 8.0.0-alpha.631",
      "nodes": [
        "node_modules/@wdio/junit-reporter"
      ],
      "fixAvailable": {
        "name": "@wdio/junit-reporter",
        "version": "9.20.0",
        "isSemVerMajor": true
      }
    },
    "@wdio/local-runner": {
      "name": "@wdio/local-runner",
      "severity": "high",
      "isDirect": true,
      "via": [
        "@wdio/cli",
        "@wdio/runner"
      ],
      "effects": [],
      "range": "6.0.4 - 8.46.0",
      "nodes": [
        "node_modules/@wdio/local-runner"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "@wdio/runner": {
      "name": "@wdio/runner",
      "severity": "high",
      "isDirect": false,
      "via": [
        "webdriverio"
      ],
      "effects": [
        "@wdio/local-runner"
      ],
      "range": "7.16.5 - 8.46.0",
      "nodes": [
        "node_modules/@wdio/runner"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "@wdio/spec-reporter": {
      "name": "@wdio/spec-reporter",
      "severity": "high",
      "isDirect": true,
      "via": [
        "@wdio/cli"
      ],
      "effects": [],
      "range": "6.0.4 - 8.0.0-alpha.631",
      "nodes": [
        "node_modules/@wdio/spec-reporter"
      ],
      "fixAvailable": {
        "name": "@wdio/spec-reporter",
        "version": "9.20.0",
        "isSemVerMajor": true
      }
    },
    "brace-expansion": {
      "name": "brace-expansion",
      "severity": "low",
      "isDirect": false,
      "via": [
        {
          "source": 1105443,
          "name": "brace-expansion",
          "dependency": "brace-expansion",
          "title": "brace-expansion Regular Expression Denial of Service vulnerability",
          "url": "https://github.com/advisories/GHSA-v6h2-p8h4-qcjw",
          "severity": "low",
          "cwe": [
            "CWE-400"
          ],
          "cvss": {
            "score": 3.1,
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": ">=1.0.0 <=1.1.11"
        },
        {
          "source": 1105444,
          "name": "brace-expansion",
          "dependency": "brace-expansion",
          "title": "brace-expansion Regular Expression Denial of Service vulnerability",
          "url": "https://github.com/advisories/GHSA-v6h2-p8h4-qcjw",
          "severity": "low",
          "cwe": [
            "CWE-400"
          ],
          "cvss": {
            "score": 3.1,
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": ">=2.0.0 <=2.0.1"
        }
      ],
      "effects": [],
      "range": "1.0.0 - 1.1.11 || 2.0.0 - 2.0.1",
      "nodes": [
        "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion",
        "node_modules/brace-expansion",
        "node_modules/eslint-plugin-n/node_modules/brace-expansion",
        "node_modules/filelist/node_modules/brace-expansion",
        "node_modules/mocha/node_modules/brace-expansion"
      ],
      "fixAvailable": true
    },
    "cross-spawn": {
      "name": "cross-spawn",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1104663,
          "name": "cross-spawn",
          "dependency": "cross-spawn",
          "title": "Regular Expression Denial of Service (ReDoS) in cross-spawn",
          "url": "https://github.com/advisories/GHSA-3xgq-45jj-v275",
          "severity": "high",
          "cwe": [
            "CWE-1333"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": "<6.0.6"
        }
      ],
      "effects": [
        "yarn-install"
      ],
      "range": "<6.0.6",
      "nodes": [
        "node_modules/yarn-install/node_modules/cross-spawn"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "devtools": {
      "name": "devtools",
      "severity": "high",
      "isDirect": false,
      "via": [
        "puppeteer-core"
      ],
      "effects": [],
      "range": ">=7.16.5",
      "nodes": [
        "node_modules/devtools"
      ],
      "fixAvailable": true
    },
    "external-editor": {
      "name": "external-editor",
      "severity": "low",
      "isDirect": false,
      "via": [
        "tmp"
      ],
      "effects": [
        "inquirer"
      ],
      "range": ">=1.1.1",
      "nodes": [
        "node_modules/external-editor"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "form-data": {
      "name": "form-data",
      "severity": "critical",
      "isDirect": false,
      "via": [
        {
          "source": 1109540,
          "name": "form-data",
          "dependency": "form-data",
          "title": "form-data uses unsafe random function in form-data for choosing boundary",
          "url": "https://github.com/advisories/GHSA-fjxv-7rqg-78g4",
          "severity": "critical",
          "cwe": [
            "CWE-330"
          ],
          "cvss": {
            "score": 0,
            "vectorString": null
          },
          "range": "<2.5.4"
        }
      ],
      "effects": [
        "request"
      ],
      "range": "<2.5.4",
      "nodes": [
        "node_modules/form-data"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "6.0.0",
        "isSemVerMajor": true
      }
    },
    "inquirer": {
      "name": "inquirer",
      "severity": "low",
      "isDirect": false,
      "via": [
        "external-editor"
      ],
      "effects": [
        "@wdio/cli"
      ],
      "range": "3.0.0 - 8.2.6 || 9.0.0 - 9.3.7",
      "nodes": [
        "node_modules/inquirer"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "js-yaml": {
      "name": "js-yaml",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1109801,
          "name": "js-yaml",
          "dependency": "js-yaml",
          "title": "js-yaml has prototype pollution in merge (<<)",
          "url": "https://github.com/advisories/GHSA-mh29-5h37-fv8m",
          "severity": "moderate",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 5.3,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"
          },
          "range": "<3.14.2"
        },
        {
          "source": 1109802,
          "name": "js-yaml",
          "dependency": "js-yaml",
          "title": "js-yaml has prototype pollution in merge (<<)",
          "url": "https://github.com/advisories/GHSA-mh29-5h37-fv8m",
          "severity": "moderate",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 5.3,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"
          },
          "range": ">=4.0.0 <4.1.1"
        }
      ],
      "effects": [],
      "range": "<3.14.2 || >=4.0.0 <4.1.1",
      "nodes": [
        "node_modules/grunt/node_modules/js-yaml",
        "node_modules/js-yaml"
      ],
      "fixAvailable": true
    },
    "mwbot": {
      "name": "mwbot",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "request"
      ],
      "effects": [
        "wdio-mediawiki"
      ],
      "range": ">=0.1.6",
      "nodes": [
        "node_modules/mwbot"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "6.0.0",
        "isSemVerMajor": true
      }
    },
    "puppeteer-core": {
      "name": "puppeteer-core",
      "severity": "high",
      "isDirect": false,
      "via": [
        "tar-fs",
        "ws"
      ],
      "effects": [
        "devtools",
        "webdriverio"
      ],
      "range": "10.0.0 - 22.11.1",
      "nodes": [
        "node_modules/devtools/node_modules/puppeteer-core",
        "node_modules/puppeteer-core"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "request": {
      "name": "request",
      "severity": "critical",
      "isDirect": false,
      "via": [
        {
          "source": 1096727,
          "name": "request",
          "dependency": "request",
          "title": "Server-Side Request Forgery in Request",
          "url": "https://github.com/advisories/GHSA-p8p7-x288-28g6",
          "severity": "moderate",
          "cwe": [
            "CWE-918"
          ],
          "cvss": {
            "score": 6.1,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
          },
          "range": "<=2.88.2"
        },
        "form-data",
        "tough-cookie"
      ],
      "effects": [
        "mwbot"
      ],
      "range": "*",
      "nodes": [
        "node_modules/request"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "6.0.0",
        "isSemVerMajor": true
      }
    },
    "tar-fs": {
      "name": "tar-fs",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1109532,
          "name": "tar-fs",
          "dependency": "tar-fs",
          "title": "tar-fs has a symlink validation bypass if destination directory is predictable with a specific tarball",
          "url": "https://github.com/advisories/GHSA-vj76-c3g6-qr5v",
          "severity": "high",
          "cwe": [
            "CWE-22",
            "CWE-61"
          ],
          "cvss": {
            "score": 0,
            "vectorString": null
          },
          "range": ">=2.0.0 <2.1.4"
        },
        {
          "source": 1109543,
          "name": "tar-fs",
          "dependency": "tar-fs",
          "title": "tar-fs can extract outside the specified dir with a specific tarball",
          "url": "https://github.com/advisories/GHSA-8cj5-5rvv-wf4v",
          "severity": "high",
          "cwe": [
            "CWE-22"
          ],
          "cvss": {
            "score": 0,
            "vectorString": null
          },
          "range": ">=2.0.0 <2.1.3"
        },
        {
          "source": 1109552,
          "name": "tar-fs",
          "dependency": "tar-fs",
          "title": "tar-fs Vulnerable to Link Following and Path Traversal via Extracting a Crafted tar File",
          "url": "https://github.com/advisories/GHSA-pq67-2wwv-3xjx",
          "severity": "high",
          "cwe": [
            "CWE-22"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
          },
          "range": ">=2.0.0 <2.1.2"
        }
      ],
      "effects": [
        "puppeteer-core"
      ],
      "range": "2.0.0 - 2.1.3",
      "nodes": [
        "node_modules/tar-fs"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "tmp": {
      "name": "tmp",
      "severity": "low",
      "isDirect": false,
      "via": [
        {
          "source": 1109537,
          "name": "tmp",
          "dependency": "tmp",
          "title": "tmp allows arbitrary temporary file / directory write via symbolic link `dir` parameter",
          "url": "https://github.com/advisories/GHSA-52f5-9888-hmc6",
          "severity": "low",
          "cwe": [
            "CWE-59"
          ],
          "cvss": {
            "score": 2.5,
            "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N"
          },
          "range": "<=0.2.3"
        }
      ],
      "effects": [
        "external-editor"
      ],
      "range": "<=0.2.3",
      "nodes": [
        "node_modules/tmp"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "tough-cookie": {
      "name": "tough-cookie",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1097682,
          "name": "tough-cookie",
          "dependency": "tough-cookie",
          "title": "tough-cookie Prototype Pollution vulnerability",
          "url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3",
          "severity": "moderate",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 6.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"
          },
          "range": "<4.1.3"
        }
      ],
      "effects": [
        "request"
      ],
      "range": "<4.1.3",
      "nodes": [
        "node_modules/tough-cookie"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "6.0.0",
        "isSemVerMajor": true
      }
    },
    "validator": {
      "name": "validator",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1109241,
          "name": "validator",
          "dependency": "validator",
          "title": "validator.js has a URL validation bypass vulnerability in its isURL function",
          "url": "https://github.com/advisories/GHSA-9965-vmph-33xx",
          "severity": "moderate",
          "cwe": [
            "CWE-79"
          ],
          "cvss": {
            "score": 6.1,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
          },
          "range": "<13.15.20"
        }
      ],
      "effects": [],
      "range": "<13.15.20",
      "nodes": [
        "node_modules/validator"
      ],
      "fixAvailable": true
    },
    "wdio-mediawiki": {
      "name": "wdio-mediawiki",
      "severity": "moderate",
      "isDirect": true,
      "via": [
        "mwbot"
      ],
      "effects": [],
      "range": "<=5.1.0",
      "nodes": [
        "node_modules/wdio-mediawiki"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "6.0.0",
        "isSemVerMajor": true
      }
    },
    "webdriverio": {
      "name": "webdriverio",
      "severity": "high",
      "isDirect": false,
      "via": [
        "devtools",
        "puppeteer-core"
      ],
      "effects": [
        "@wdio/cli",
        "@wdio/runner"
      ],
      "range": "7.16.5 - 8.46.0",
      "nodes": [
        "node_modules/webdriverio"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "ws": {
      "name": "ws",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1098392,
          "name": "ws",
          "dependency": "ws",
          "title": "ws affected by a DoS when handling a request with many HTTP headers",
          "url": "https://github.com/advisories/GHSA-3h5v-q93c-6h6q",
          "severity": "high",
          "cwe": [
            "CWE-476"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": ">=8.0.0 <8.17.1"
        }
      ],
      "effects": [
        "puppeteer-core"
      ],
      "range": "8.0.0 - 8.17.0",
      "nodes": [
        "node_modules/devtools/node_modules/ws",
        "node_modules/ws"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    },
    "yarn-install": {
      "name": "yarn-install",
      "severity": "high",
      "isDirect": false,
      "via": [
        "cross-spawn"
      ],
      "effects": [
        "@wdio/cli"
      ],
      "range": "*",
      "nodes": [
        "node_modules/yarn-install"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "9.20.1",
        "isSemVerMajor": true
      }
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 4,
      "moderate": 5,
      "high": 12,
      "critical": 2,
      "total": 23
    },
    "dependencies": {
      "prod": 1,
      "dev": 787,
      "optional": 2,
      "peer": 1,
      "peerOptional": 0,
      "total": 787
    }
  }
}

--- end ---
Attempting to npm audit fix
$ /usr/bin/npm audit fix --dry-run --only=dev --json
--- stderr ---
npm WARN invalid config only="dev" set in command line options
npm WARN invalid config Must be one of: null, prod, production
--- stdout ---
{
  "added": 1,
  "removed": 0,
  "changed": 8,
  "audited": 788,
  "funding": 137,
  "audit": {
    "auditReportVersion": 2,
    "vulnerabilities": {
      "@wdio/cli": {
        "name": "@wdio/cli",
        "severity": "high",
        "isDirect": true,
        "via": [
          "inquirer",
          "webdriverio",
          "yarn-install"
        ],
        "effects": [
          "@wdio/junit-reporter",
          "@wdio/local-runner",
          "@wdio/spec-reporter"
        ],
        "range": "<=9.0.0-alpha.426",
        "nodes": [
          "node_modules/@wdio/cli"
        ],
        "fixAvailable": {
          "name": "@wdio/cli",
          "version": "9.20.1",
          "isSemVerMajor": true
        }
      },
      "@wdio/junit-reporter": {
        "name": "@wdio/junit-reporter",
        "severity": "high",
        "isDirect": true,
        "via": [
          "@wdio/cli"
        ],
        "effects": [],
        "range": "6.0.4 - 8.0.0-alpha.631",
        "nodes": [
          "node_modules/@wdio/junit-reporter"
        ],
        "fixAvailable": {
          "name": "@wdio/junit-reporter",
          "version": "9.20.0",
          "isSemVerMajor": true
        }
      },
      "@wdio/local-runner": {
        "name": "@wdio/local-runner",
        "severity": "high",
        "isDirect": true,
        "via": [
          "@wdio/cli",
          "@wdio/runner"
        ],
        "effects": [],
        "range": "6.0.4 - 8.46.0",
        "nodes": [
          "node_modules/@wdio/local-runner"
        ],
        "fixAvailable": {
          "name": "@wdio/local-runner",
          "version": "9.20.1",
          "isSemVerMajor": true
        }
      },
      "@wdio/runner": {
        "name": "@wdio/runner",
        "severity": "high",
        "isDirect": false,
        "via": [
          "webdriverio"
        ],
        "effects": [
          "@wdio/local-runner"
        ],
        "range": "7.16.5 - 8.46.0",
        "nodes": [
          "node_modules/@wdio/runner"
        ],
        "fixAvailable": {
          "name": "@wdio/local-runner",
          "version": "9.20.1",
          "isSemVerMajor": true
        }
      },
      "@wdio/spec-reporter": {
        "name": "@wdio/spec-reporter",
        "severity": "high",
        "isDirect": true,
        "via": [
          "@wdio/cli"
        ],
        "effects": [],
        "range": "6.0.4 - 8.0.0-alpha.631",
        "nodes": [
          "node_modules/@wdio/spec-reporter"
        ],
        "fixAvailable": {
          "name": "@wdio/spec-reporter",
          "version": "9.20.0",
          "isSemVerMajor": true
        }
      },
      "brace-expansion": {
        "name": "brace-expansion",
        "severity": "low",
        "isDirect": false,
        "via": [
          {
            "source": 1105443,
            "name": "brace-expansion",
            "dependency": "brace-expansion",
            "title": "brace-expansion Regular Expression Denial of Service vulnerability",
            "url": "https://github.com/advisories/GHSA-v6h2-p8h4-qcjw",
            "severity": "low",
            "cwe": [
              "CWE-400"
            ],
            "cvss": {
              "score": 3.1,
              "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L"
            },
            "range": ">=1.0.0 <=1.1.11"
          },
          {
            "source": 1105444,
            "name": "brace-expansion",
            "dependency": "brace-expansion",
            "title": "brace-expansion Regular Expression Denial of Service vulnerability",
            "url": "https://github.com/advisories/GHSA-v6h2-p8h4-qcjw",
            "severity": "low",
            "cwe": [
              "CWE-400"
            ],
            "cvss": {
              "score": 3.1,
              "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L"
            },
            "range": ">=2.0.0 <=2.0.1"
          }
        ],
        "effects": [],
        "range": "1.0.0 - 1.1.11 || 2.0.0 - 2.0.1",
        "nodes": [
          "",
          "",
          "",
          "",
          ""
        ],
        "fixAvailable": true
      },
      "cross-spawn": {
        "name": "cross-spawn",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1104663,
            "name": "cross-spawn",
            "dependency": "cross-spawn",
            "title": "Regular Expression Denial of Service (ReDoS) in cross-spawn",
            "url": "https://github.com/advisories/GHSA-3xgq-45jj-v275",
            "severity": "high",
            "cwe": [
              "CWE-1333"
            ],
            "cvss": {
              "score": 7.5,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
            },
            "range": "<6.0.6"
          }
        ],
        "effects": [
          "yarn-install"
        ],
        "range": "<6.0.6",
        "nodes": [
          "node_modules/yarn-install/node_modules/cross-spawn"
        ],
        "fixAvailable": {
          "name": "@wdio/cli",
          "version": "9.20.1",
          "isSemVerMajor": true
        }
      },
      "devtools": {
        "name": "devtools",
        "severity": "high",
        "isDirect": false,
        "via": [
          "puppeteer-core"
        ],
        "effects": [],
        "range": ">=7.16.5",
        "nodes": [
          "node_modules/devtools"
        ],
        "fixAvailable": true
      },
      "external-editor": {
        "name": "external-editor",
        "severity": "low",
        "isDirect": false,
        "via": [
          "tmp"
        ],
        "effects": [
          "inquirer"
        ],
        "range": ">=1.1.1",
        "nodes": [
          "node_modules/external-editor"
        ],
        "fixAvailable": {
          "name": "@wdio/cli",
          "version": "9.20.1",
          "isSemVerMajor": true
        }
      },
      "form-data": {
        "name": "form-data",
        "severity": "critical",
        "isDirect": false,
        "via": [
          {
            "source": 1109540,
            "name": "form-data",
            "dependency": "form-data",
            "title": "form-data uses unsafe random function in form-data for choosing boundary",
            "url": "https://github.com/advisories/GHSA-fjxv-7rqg-78g4",
            "severity": "critical",
            "cwe": [
              "CWE-330"
            ],
            "cvss": {
              "score": 0,
              "vectorString": null
            },
            "range": "<2.5.4"
          }
        ],
        "effects": [
          "request"
        ],
        "range": "<2.5.4",
        "nodes": [
          "node_modules/form-data"
        ],
        "fixAvailable": {
          "name": "wdio-mediawiki",
          "version": "6.0.0",
          "isSemVerMajor": true
        }
      },
      "inquirer": {
        "name": "inquirer",
        "severity": "low",
        "isDirect": false,
        "via": [
          "external-editor"
        ],
        "effects": [
          "@wdio/cli"
        ],
        "range": "3.0.0 - 8.2.6 || 9.0.0 - 9.3.7",
        "nodes": [
          "node_modules/inquirer"
        ],
        "fixAvailable": {
          "name": "@wdio/cli",
          "version": "9.20.1",
          "isSemVerMajor": true
        }
      },
      "js-yaml": {
        "name": "js-yaml",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          {
            "source": 1109801,
            "name": "js-yaml",
            "dependency": "js-yaml",
            "title": "js-yaml has prototype pollution in merge (<<)",
            "url": "https://github.com/advisories/GHSA-mh29-5h37-fv8m",
            "severity": "moderate",
            "cwe": [
              "CWE-1321"
            ],
            "cvss": {
              "score": 5.3,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"
            },
            "range": "<3.14.2"
          },
          {
            "source": 1109802,
            "name": "js-yaml",
            "dependency": "js-yaml",
            "title": "js-yaml has prototype pollution in merge (<<)",
            "url": "https://github.com/advisories/GHSA-mh29-5h37-fv8m",
            "severity": "moderate",
            "cwe": [
              "CWE-1321"
            ],
            "cvss": {
              "score": 5.3,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"
            },
            "range": ">=4.0.0 <4.1.1"
          }
        ],
        "effects": [],
        "range": "<3.14.2 || >=4.0.0 <4.1.1",
        "nodes": [
          "",
          ""
        ],
        "fixAvailable": true
      },
      "mwbot": {
        "name": "mwbot",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          "request"
        ],
        "effects": [
          "wdio-mediawiki"
        ],
        "range": ">=0.1.6",
        "nodes": [
          "node_modules/mwbot"
        ],
        "fixAvailable": {
          "name": "wdio-mediawiki",
          "version": "6.0.0",
          "isSemVerMajor": true
        }
      },
      "puppeteer-core": {
        "name": "puppeteer-core",
        "severity": "high",
        "isDirect": false,
        "via": [
          "tar-fs",
          "ws"
        ],
        "effects": [
          "devtools",
          "webdriverio"
        ],
        "range": "10.0.0 - 22.11.1",
        "nodes": [
          "node_modules/devtools/node_modules/puppeteer-core",
          "node_modules/puppeteer-core"
        ],
        "fixAvailable": {
          "name": "@wdio/cli",
          "version": "9.20.1",
          "isSemVerMajor": true
        }
      },
      "request": {
        "name": "request",
        "severity": "critical",
        "isDirect": false,
        "via": [
          {
            "source": 1096727,
            "name": "request",
            "dependency": "request",
            "title": "Server-Side Request Forgery in Request",
            "url": "https://github.com/advisories/GHSA-p8p7-x288-28g6",
            "severity": "moderate",
            "cwe": [
              "CWE-918"
            ],
            "cvss": {
              "score": 6.1,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
            },
            "range": "<=2.88.2"
          },
          "form-data",
          "tough-cookie"
        ],
        "effects": [
          "mwbot"
        ],
        "range": "*",
        "nodes": [
          "node_modules/request"
        ],
        "fixAvailable": {
          "name": "wdio-mediawiki",
          "version": "6.0.0",
          "isSemVerMajor": true
        }
      },
      "tar-fs": {
        "name": "tar-fs",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1109532,
            "name": "tar-fs",
            "dependency": "tar-fs",
            "title": "tar-fs has a symlink validation bypass if destination directory is predictable with a specific tarball",
            "url": "https://github.com/advisories/GHSA-vj76-c3g6-qr5v",
            "severity": "high",
            "cwe": [
              "CWE-22",
              "CWE-61"
            ],
            "cvss": {
              "score": 0,
              "vectorString": null
            },
            "range": ">=2.0.0 <2.1.4"
          },
          {
            "source": 1109543,
            "name": "tar-fs",
            "dependency": "tar-fs",
            "title": "tar-fs can extract outside the specified dir with a specific tarball",
            "url": "https://github.com/advisories/GHSA-8cj5-5rvv-wf4v",
            "severity": "high",
            "cwe": [
              "CWE-22"
            ],
            "cvss": {
              "score": 0,
              "vectorString": null
            },
            "range": ">=2.0.0 <2.1.3"
          },
          {
            "source": 1109552,
            "name": "tar-fs",
            "dependency": "tar-fs",
            "title": "tar-fs Vulnerable to Link Following and Path Traversal via Extracting a Crafted tar File",
            "url": "https://github.com/advisories/GHSA-pq67-2wwv-3xjx",
            "severity": "high",
            "cwe": [
              "CWE-22"
            ],
            "cvss": {
              "score": 7.5,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
            },
            "range": ">=2.0.0 <2.1.2"
          }
        ],
        "effects": [
          "puppeteer-core"
        ],
        "range": "2.0.0 - 2.1.3",
        "nodes": [
          "node_modules/tar-fs"
        ],
        "fixAvailable": {
          "name": "@wdio/cli",
          "version": "9.20.1",
          "isSemVerMajor": true
        }
      },
      "tmp": {
        "name": "tmp",
        "severity": "low",
        "isDirect": false,
        "via": [
          {
            "source": 1109537,
            "name": "tmp",
            "dependency": "tmp",
            "title": "tmp allows arbitrary temporary file / directory write via symbolic link `dir` parameter",
            "url": "https://github.com/advisories/GHSA-52f5-9888-hmc6",
            "severity": "low",
            "cwe": [
              "CWE-59"
            ],
            "cvss": {
              "score": 2.5,
              "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N"
            },
            "range": "<=0.2.3"
          }
        ],
        "effects": [
          "external-editor"
        ],
        "range": "<=0.2.3",
        "nodes": [
          "node_modules/tmp"
        ],
        "fixAvailable": {
          "name": "@wdio/cli",
          "version": "9.20.1",
          "isSemVerMajor": true
        }
      },
      "tough-cookie": {
        "name": "tough-cookie",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          {
            "source": 1097682,
            "name": "tough-cookie",
            "dependency": "tough-cookie",
            "title": "tough-cookie Prototype Pollution vulnerability",
            "url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3",
            "severity": "moderate",
            "cwe": [
              "CWE-1321"
            ],
            "cvss": {
              "score": 6.5,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"
            },
            "range": "<4.1.3"
          }
        ],
        "effects": [
          "request"
        ],
        "range": "<4.1.3",
        "nodes": [
          "node_modules/tough-cookie"
        ],
        "fixAvailable": {
          "name": "wdio-mediawiki",
          "version": "6.0.0",
          "isSemVerMajor": true
        }
      },
      "validator": {
        "name": "validator",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          {
            "source": 1109241,
            "name": "validator",
            "dependency": "validator",
            "title": "validator.js has a URL validation bypass vulnerability in its isURL function",
            "url": "https://github.com/advisories/GHSA-9965-vmph-33xx",
            "severity": "moderate",
            "cwe": [
              "CWE-79"
            ],
            "cvss": {
              "score": 6.1,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
            },
            "range": "<13.15.20"
          }
        ],
        "effects": [],
        "range": "<13.15.20",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "wdio-mediawiki": {
        "name": "wdio-mediawiki",
        "severity": "moderate",
        "isDirect": true,
        "via": [
          "mwbot"
        ],
        "effects": [],
        "range": "<=5.1.0",
        "nodes": [
          "node_modules/wdio-mediawiki"
        ],
        "fixAvailable": {
          "name": "wdio-mediawiki",
          "version": "6.0.0",
          "isSemVerMajor": true
        }
      },
      "webdriverio": {
        "name": "webdriverio",
        "severity": "high",
        "isDirect": false,
        "via": [
          "devtools",
          "puppeteer-core"
        ],
        "effects": [
          "@wdio/cli",
          "@wdio/runner"
        ],
        "range": "7.16.5 - 8.46.0",
        "nodes": [
          "node_modules/webdriverio"
        ],
        "fixAvailable": {
          "name": "@wdio/cli",
          "version": "9.20.1",
          "isSemVerMajor": true
        }
      },
      "ws": {
        "name": "ws",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1098392,
            "name": "ws",
            "dependency": "ws",
            "title": "ws affected by a DoS when handling a request with many HTTP headers",
            "url": "https://github.com/advisories/GHSA-3h5v-q93c-6h6q",
            "severity": "high",
            "cwe": [
              "CWE-476"
            ],
            "cvss": {
              "score": 7.5,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
            },
            "range": ">=8.0.0 <8.17.1"
          }
        ],
        "effects": [
          "puppeteer-core"
        ],
        "range": "8.0.0 - 8.17.0",
        "nodes": [
          "node_modules/devtools/node_modules/ws",
          "node_modules/ws"
        ],
        "fixAvailable": {
          "name": "@wdio/cli",
          "version": "9.20.1",
          "isSemVerMajor": true
        }
      },
      "yarn-install": {
        "name": "yarn-install",
        "severity": "high",
        "isDirect": false,
        "via": [
          "cross-spawn"
        ],
        "effects": [
          "@wdio/cli"
        ],
        "range": "*",
        "nodes": [
          "node_modules/yarn-install"
        ],
        "fixAvailable": {
          "name": "@wdio/cli",
          "version": "9.20.1",
          "isSemVerMajor": true
        }
      }
    },
    "metadata": {
      "vulnerabilities": {
        "info": 0,
        "low": 4,
        "moderate": 5,
        "high": 12,
        "critical": 2,
        "total": 23
      },
      "dependencies": {
        "prod": 1,
        "dev": 787,
        "optional": 2,
        "peer": 1,
        "peerOptional": 0,
        "total": 787
      }
    }
  }
}

--- end ---
{"added": 1, "removed": 0, "changed": 8, "audited": 788, "funding": 137, "audit": {"auditReportVersion": 2, "vulnerabilities": {"@wdio/cli": {"name": "@wdio/cli", "severity": "high", "isDirect": true, "via": ["inquirer", "webdriverio", "yarn-install"], "effects": ["@wdio/junit-reporter", "@wdio/local-runner", "@wdio/spec-reporter"], "range": "<=9.0.0-alpha.426", "nodes": ["node_modules/@wdio/cli"], "fixAvailable": {"name": "@wdio/cli", "version": "9.20.1", "isSemVerMajor": true}}, "@wdio/junit-reporter": {"name": "@wdio/junit-reporter", "severity": "high", "isDirect": true, "via": ["@wdio/cli"], "effects": [], "range": "6.0.4 - 8.0.0-alpha.631", "nodes": ["node_modules/@wdio/junit-reporter"], "fixAvailable": {"name": "@wdio/junit-reporter", "version": "9.20.0", "isSemVerMajor": true}}, "@wdio/local-runner": {"name": "@wdio/local-runner", "severity": "high", "isDirect": true, "via": ["@wdio/cli", "@wdio/runner"], "effects": [], "range": "6.0.4 - 8.46.0", "nodes": ["node_modules/@wdio/local-runner"], "fixAvailable": {"name": "@wdio/local-runner", "version": "9.20.1", "isSemVerMajor": true}}, "@wdio/runner": {"name": "@wdio/runner", "severity": "high", "isDirect": false, "via": ["webdriverio"], "effects": ["@wdio/local-runner"], "range": "7.16.5 - 8.46.0", "nodes": ["node_modules/@wdio/runner"], "fixAvailable": {"name": "@wdio/local-runner", "version": "9.20.1", "isSemVerMajor": true}}, "@wdio/spec-reporter": {"name": "@wdio/spec-reporter", "severity": "high", "isDirect": true, "via": ["@wdio/cli"], "effects": [], "range": "6.0.4 - 8.0.0-alpha.631", "nodes": ["node_modules/@wdio/spec-reporter"], "fixAvailable": {"name": "@wdio/spec-reporter", "version": "9.20.0", "isSemVerMajor": true}}, "brace-expansion": {"name": "brace-expansion", "severity": "low", "isDirect": false, "via": [{"source": 1105443, "name": "brace-expansion", "dependency": "brace-expansion", "title": "brace-expansion Regular Expression Denial of Service vulnerability", "url": "https://github.com/advisories/GHSA-v6h2-p8h4-qcjw", "severity": "low", "cwe": ["CWE-400"], "cvss": {"score": 3.1, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L"}, "range": ">=1.0.0 <=1.1.11"}, {"source": 1105444, "name": "brace-expansion", "dependency": "brace-expansion", "title": "brace-expansion Regular Expression Denial of Service vulnerability", "url": "https://github.com/advisories/GHSA-v6h2-p8h4-qcjw", "severity": "low", "cwe": ["CWE-400"], "cvss": {"score": 3.1, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L"}, "range": ">=2.0.0 <=2.0.1"}], "effects": [], "range": "1.0.0 - 1.1.11 || 2.0.0 - 2.0.1", "nodes": ["", "", "", "", ""], "fixAvailable": true}, "cross-spawn": {"name": "cross-spawn", "severity": "high", "isDirect": false, "via": [{"source": 1104663, "name": "cross-spawn", "dependency": "cross-spawn", "title": "Regular Expression Denial of Service (ReDoS) in cross-spawn", "url": "https://github.com/advisories/GHSA-3xgq-45jj-v275", "severity": "high", "cwe": ["CWE-1333"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": "<6.0.6"}], "effects": ["yarn-install"], "range": "<6.0.6", "nodes": ["node_modules/yarn-install/node_modules/cross-spawn"], "fixAvailable": {"name": "@wdio/cli", "version": "9.20.1", "isSemVerMajor": true}}, "devtools": {"name": "devtools", "severity": "high", "isDirect": false, "via": ["puppeteer-core"], "effects": [], "range": ">=7.16.5", "nodes": ["node_modules/devtools"], "fixAvailable": true}, "external-editor": {"name": "external-editor", "severity": "low", "isDirect": false, "via": ["tmp"], "effects": ["inquirer"], "range": ">=1.1.1", "nodes": ["node_modules/external-editor"], "fixAvailable": {"name": "@wdio/cli", "version": "9.20.1", "isSemVerMajor": true}}, "form-data": {"name": "form-data", "severity": "critical", "isDirect": false, "via": [{"source": 1109540, "name": "form-data", "dependency": "form-data", "title": "form-data uses unsafe random function in form-data for choosing boundary", "url": "https://github.com/advisories/GHSA-fjxv-7rqg-78g4", "severity": "critical", "cwe": ["CWE-330"], "cvss": {"score": 0, "vectorString": null}, "range": "<2.5.4"}], "effects": ["request"], "range": "<2.5.4", "nodes": ["node_modules/form-data"], "fixAvailable": {"name": "wdio-mediawiki", "version": "6.0.0", "isSemVerMajor": true}}, "inquirer": {"name": "inquirer", "severity": "low", "isDirect": false, "via": ["external-editor"], "effects": ["@wdio/cli"], "range": "3.0.0 - 8.2.6 || 9.0.0 - 9.3.7", "nodes": ["node_modules/inquirer"], "fixAvailable": {"name": "@wdio/cli", "version": "9.20.1", "isSemVerMajor": true}}, "js-yaml": {"name": "js-yaml", "severity": "moderate", "isDirect": false, "via": [{"source": 1109801, "name": "js-yaml", "dependency": "js-yaml", "title": "js-yaml has prototype pollution in merge (<<)", "url": "https://github.com/advisories/GHSA-mh29-5h37-fv8m", "severity": "moderate", "cwe": ["CWE-1321"], "cvss": {"score": 5.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"}, "range": "<3.14.2"}, {"source": 1109802, "name": "js-yaml", "dependency": "js-yaml", "title": "js-yaml has prototype pollution in merge (<<)", "url": "https://github.com/advisories/GHSA-mh29-5h37-fv8m", "severity": "moderate", "cwe": ["CWE-1321"], "cvss": {"score": 5.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"}, "range": ">=4.0.0 <4.1.1"}], "effects": [], "range": "<3.14.2 || >=4.0.0 <4.1.1", "nodes": ["", ""], "fixAvailable": true}, "mwbot": {"name": "mwbot", "severity": "moderate", "isDirect": false, "via": ["request"], "effects": ["wdio-mediawiki"], "range": ">=0.1.6", "nodes": ["node_modules/mwbot"], "fixAvailable": {"name": "wdio-mediawiki", "version": "6.0.0", "isSemVerMajor": true}}, "puppeteer-core": {"name": "puppeteer-core", "severity": "high", "isDirect": false, "via": ["tar-fs", "ws"], "effects": ["devtools", "webdriverio"], "range": "10.0.0 - 22.11.1", "nodes": ["node_modules/devtools/node_modules/puppeteer-core", "node_modules/puppeteer-core"], "fixAvailable": {"name": "@wdio/cli", "version": "9.20.1", "isSemVerMajor": true}}, "request": {"name": "request", "severity": "critical", "isDirect": false, "via": [{"source": 1096727, "name": "request", "dependency": "request", "title": "Server-Side Request Forgery in Request", "url": "https://github.com/advisories/GHSA-p8p7-x288-28g6", "severity": "moderate", "cwe": ["CWE-918"], "cvss": {"score": 6.1, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"}, "range": "<=2.88.2"}, "form-data", "tough-cookie"], "effects": ["mwbot"], "range": "*", "nodes": ["node_modules/request"], "fixAvailable": {"name": "wdio-mediawiki", "version": "6.0.0", "isSemVerMajor": true}}, "tar-fs": {"name": "tar-fs", "severity": "high", "isDirect": false, "via": [{"source": 1109532, "name": "tar-fs", "dependency": "tar-fs", "title": "tar-fs has a symlink validation bypass if destination directory is predictable with a specific tarball", "url": "https://github.com/advisories/GHSA-vj76-c3g6-qr5v", "severity": "high", "cwe": ["CWE-22", "CWE-61"], "cvss": {"score": 0, "vectorString": null}, "range": ">=2.0.0 <2.1.4"}, {"source": 1109543, "name": "tar-fs", "dependency": "tar-fs", "title": "tar-fs can extract outside the specified dir with a specific tarball", "url": "https://github.com/advisories/GHSA-8cj5-5rvv-wf4v", "severity": "high", "cwe": ["CWE-22"], "cvss": {"score": 0, "vectorString": null}, "range": ">=2.0.0 <2.1.3"}, {"source": 1109552, "name": "tar-fs", "dependency": "tar-fs", "title": "tar-fs Vulnerable to Link Following and Path Traversal via Extracting a Crafted tar File", "url": "https://github.com/advisories/GHSA-pq67-2wwv-3xjx", "severity": "high", "cwe": ["CWE-22"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"}, "range": ">=2.0.0 <2.1.2"}], "effects": ["puppeteer-core"], "range": "2.0.0 - 2.1.3", "nodes": ["node_modules/tar-fs"], "fixAvailable": {"name": "@wdio/cli", "version": "9.20.1", "isSemVerMajor": true}}, "tmp": {"name": "tmp", "severity": "low", "isDirect": false, "via": [{"source": 1109537, "name": "tmp", "dependency": "tmp", "title": "tmp allows arbitrary temporary file / directory write via symbolic link `dir` parameter", "url": "https://github.com/advisories/GHSA-52f5-9888-hmc6", "severity": "low", "cwe": ["CWE-59"], "cvss": {"score": 2.5, "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N"}, "range": "<=0.2.3"}], "effects": ["external-editor"], "range": "<=0.2.3", "nodes": ["node_modules/tmp"], "fixAvailable": {"name": "@wdio/cli", "version": "9.20.1", "isSemVerMajor": true}}, "tough-cookie": {"name": "tough-cookie", "severity": "moderate", "isDirect": false, "via": [{"source": 1097682, "name": "tough-cookie", "dependency": "tough-cookie", "title": "tough-cookie Prototype Pollution vulnerability", "url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3", "severity": "moderate", "cwe": ["CWE-1321"], "cvss": {"score": 6.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"}, "range": "<4.1.3"}], "effects": ["request"], "range": "<4.1.3", "nodes": ["node_modules/tough-cookie"], "fixAvailable": {"name": "wdio-mediawiki", "version": "6.0.0", "isSemVerMajor": true}}, "validator": {"name": "validator", "severity": "moderate", "isDirect": false, "via": [{"source": 1109241, "name": "validator", "dependency": "validator", "title": "validator.js has a URL validation bypass vulnerability in its isURL function", "url": "https://github.com/advisories/GHSA-9965-vmph-33xx", "severity": "moderate", "cwe": ["CWE-79"], "cvss": {"score": 6.1, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"}, "range": "<13.15.20"}], "effects": [], "range": "<13.15.20", "nodes": [""], "fixAvailable": true}, "wdio-mediawiki": {"name": "wdio-mediawiki", "severity": "moderate", "isDirect": true, "via": ["mwbot"], "effects": [], "range": "<=5.1.0", "nodes": ["node_modules/wdio-mediawiki"], "fixAvailable": {"name": "wdio-mediawiki", "version": "6.0.0", "isSemVerMajor": true}}, "webdriverio": {"name": "webdriverio", "severity": "high", "isDirect": false, "via": ["devtools", "puppeteer-core"], "effects": ["@wdio/cli", "@wdio/runner"], "range": "7.16.5 - 8.46.0", "nodes": ["node_modules/webdriverio"], "fixAvailable": {"name": "@wdio/cli", "version": "9.20.1", "isSemVerMajor": true}}, "ws": {"name": "ws", "severity": "high", "isDirect": false, "via": [{"source": 1098392, "name": "ws", "dependency": "ws", "title": "ws affected by a DoS when handling a request with many HTTP headers", "url": "https://github.com/advisories/GHSA-3h5v-q93c-6h6q", "severity": "high", "cwe": ["CWE-476"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": ">=8.0.0 <8.17.1"}], "effects": ["puppeteer-core"], "range": "8.0.0 - 8.17.0", "nodes": ["node_modules/devtools/node_modules/ws", "node_modules/ws"], "fixAvailable": {"name": "@wdio/cli", "version": "9.20.1", "isSemVerMajor": true}}, "yarn-install": {"name": "yarn-install", "severity": "high", "isDirect": false, "via": ["cross-spawn"], "effects": ["@wdio/cli"], "range": "*", "nodes": ["node_modules/yarn-install"], "fixAvailable": {"name": "@wdio/cli", "version": "9.20.1", "isSemVerMajor": true}}}, "metadata": {"vulnerabilities": {"info": 0, "low": 4, "moderate": 5, "high": 12, "critical": 2, "total": 23}, "dependencies": {"prod": 1, "dev": 787, "optional": 2, "peer": 1, "peerOptional": 0, "total": 787}}}}
$ /usr/bin/npm audit fix --only=dev
--- stderr ---
npm WARN invalid config only="dev" set in command line options
npm WARN invalid config Must be one of: null, prod, production
--- stdout ---

changed 8 packages, and audited 787 packages in 4s

137 packages are looking for funding
  run `npm fund` for details

# npm audit report

cross-spawn  <6.0.6
Severity: high
Regular Expression Denial of Service (ReDoS) in cross-spawn - https://github.com/advisories/GHSA-3xgq-45jj-v275
fix available via `npm audit fix --force`
Will install @wdio/cli@9.20.1, which is a breaking change
node_modules/yarn-install/node_modules/cross-spawn
  yarn-install  *
  Depends on vulnerable versions of cross-spawn
  node_modules/yarn-install
    @wdio/cli  <=9.0.0-alpha.426
    Depends on vulnerable versions of inquirer
    Depends on vulnerable versions of webdriverio
    Depends on vulnerable versions of yarn-install
    node_modules/@wdio/cli
      @wdio/junit-reporter  6.0.4 - 8.0.0-alpha.631
      Depends on vulnerable versions of @wdio/cli
      node_modules/@wdio/junit-reporter
      @wdio/local-runner  6.0.4 - 8.46.0
      Depends on vulnerable versions of @wdio/cli
      Depends on vulnerable versions of @wdio/runner
      node_modules/@wdio/local-runner
      @wdio/spec-reporter  6.0.4 - 8.0.0-alpha.631
      Depends on vulnerable versions of @wdio/cli
      node_modules/@wdio/spec-reporter

form-data  <2.5.4
Severity: critical
form-data uses unsafe random function in form-data for choosing boundary - https://github.com/advisories/GHSA-fjxv-7rqg-78g4
fix available via `npm audit fix --force`
Will install wdio-mediawiki@6.0.0, which is a breaking change
node_modules/form-data
  request  *
  Depends on vulnerable versions of form-data
  Depends on vulnerable versions of tough-cookie
  node_modules/request
    mwbot  >=0.1.6
    Depends on vulnerable versions of request
    node_modules/mwbot
      wdio-mediawiki  <=5.1.0
      Depends on vulnerable versions of mwbot
      node_modules/wdio-mediawiki


tar-fs  2.0.0 - 2.1.3
Severity: high
tar-fs has a symlink validation bypass if destination directory is predictable with a specific tarball - https://github.com/advisories/GHSA-vj76-c3g6-qr5v
tar-fs can extract outside the specified dir with a specific tarball - https://github.com/advisories/GHSA-8cj5-5rvv-wf4v
tar-fs Vulnerable to Link Following and Path Traversal via Extracting a Crafted tar File - https://github.com/advisories/GHSA-pq67-2wwv-3xjx
fix available via `npm audit fix --force`
Will install @wdio/cli@9.20.1, which is a breaking change
node_modules/tar-fs
  puppeteer-core  10.0.0 - 22.11.1
  Depends on vulnerable versions of tar-fs
  Depends on vulnerable versions of ws
  node_modules/devtools/node_modules/puppeteer-core
  node_modules/puppeteer-core
    devtools  >=7.16.5
    Depends on vulnerable versions of puppeteer-core
    node_modules/devtools
    webdriverio  7.16.5 - 8.46.0
    Depends on vulnerable versions of devtools
    Depends on vulnerable versions of puppeteer-core
    node_modules/webdriverio
      @wdio/runner  7.16.5 - 8.46.0
      Depends on vulnerable versions of webdriverio
      node_modules/@wdio/runner

tmp  <=0.2.3
tmp allows arbitrary temporary file / directory write via symbolic link `dir` parameter - https://github.com/advisories/GHSA-52f5-9888-hmc6
fix available via `npm audit fix --force`
Will install @wdio/cli@9.20.1, which is a breaking change
node_modules/tmp
  external-editor  >=1.1.1
  Depends on vulnerable versions of tmp
  node_modules/external-editor
    inquirer  3.0.0 - 8.2.6 || 9.0.0 - 9.3.7
    Depends on vulnerable versions of external-editor
    node_modules/inquirer

tough-cookie  <4.1.3
Severity: moderate
tough-cookie Prototype Pollution vulnerability - https://github.com/advisories/GHSA-72xf-g2v4-qvf3
fix available via `npm audit fix --force`
Will install wdio-mediawiki@6.0.0, which is a breaking change
node_modules/tough-cookie

ws  8.0.0 - 8.17.0
Severity: high
ws affected by a DoS when handling a request with many HTTP headers - https://github.com/advisories/GHSA-3h5v-q93c-6h6q
fix available via `npm audit fix --force`
Will install @wdio/cli@9.20.1, which is a breaking change
node_modules/devtools/node_modules/ws
node_modules/ws

20 vulnerabilities (3 low, 3 moderate, 12 high, 2 critical)

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

--- end ---
Verifying that tests still pass
$ /usr/bin/npm ci
--- stderr ---
npm WARN deprecated @types/easy-table@1.2.3: This is a stub types definition. easy-table provides its own type definitions, so you do not need this installed.
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.1.7: Glob versions prior to v9 are no longer supported
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
--- stdout ---

added 786 packages, and audited 787 packages in 9s

137 packages are looking for funding
  run `npm fund` for details

20 vulnerabilities (3 low, 3 moderate, 12 high, 2 critical)

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

--- end ---
$ /usr/bin/npm test
--- stdout ---

> test
> grunt test

Running "eslint:all" (eslint) task

Running "stylelint:all" (stylelint) task
>> Linted 2 files without errors

Running "banana:AchievementBadges" (banana) task
>> 1 message directory checked.

Done.

--- end ---
{"1105443": {"source": 1105443, "name": "brace-expansion", "dependency": "brace-expansion", "title": "brace-expansion Regular Expression Denial of Service vulnerability", "url": "https://github.com/advisories/GHSA-v6h2-p8h4-qcjw", "severity": "low", "cwe": ["CWE-400"], "cvss": {"score": 3.1, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L"}, "range": ">=1.0.0 <=1.1.11"}, "1105444": {"source": 1105444, "name": "brace-expansion", "dependency": "brace-expansion", "title": "brace-expansion Regular Expression Denial of Service vulnerability", "url": "https://github.com/advisories/GHSA-v6h2-p8h4-qcjw", "severity": "low", "cwe": ["CWE-400"], "cvss": {"score": 3.1, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L"}, "range": ">=2.0.0 <=2.0.1"}}
Upgrading n:brace-expansion from 1.1.11, 2.0.1, 2.0.2 -> 1.1.12, 2.0.2
{}
{"1109801": {"source": 1109801, "name": "js-yaml", "dependency": "js-yaml", "title": "js-yaml has prototype pollution in merge (<<)", "url": "https://github.com/advisories/GHSA-mh29-5h37-fv8m", "severity": "moderate", "cwe": ["CWE-1321"], "cvss": {"score": 5.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"}, "range": "<3.14.2"}, "1109802": {"source": 1109802, "name": "js-yaml", "dependency": "js-yaml", "title": "js-yaml has prototype pollution in merge (<<)", "url": "https://github.com/advisories/GHSA-mh29-5h37-fv8m", "severity": "moderate", "cwe": ["CWE-1321"], "cvss": {"score": 5.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"}, "range": ">=4.0.0 <4.1.1"}}
Upgrading n:js-yaml from 3.14.1, 4.1.0 -> 3.14.2, 4.1.1
{"1109241": {"source": 1109241, "name": "validator", "dependency": "validator", "title": "validator.js has a URL validation bypass vulnerability in its isURL function", "url": "https://github.com/advisories/GHSA-9965-vmph-33xx", "severity": "moderate", "cwe": ["CWE-79"], "cvss": {"score": 6.1, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"}, "range": "<13.15.20"}}
Upgrading n:validator from 13.11.0 -> 13.15.23
$ package-lock-lint /src/repo/package-lock.json
--- stdout ---
Checking /src/repo/package-lock.json

--- end ---
build: Updating dependencies

composer:
* mediawiki/mediawiki-codesniffer: 45.0.0 → 48.0.0
* mediawiki/mediawiki-phan-config: 0.15.1 → 0.17.0

npm:
* @wdio/cli: 7.16.13 → 7.40.0
* @wdio/junit-reporter: 7.16.13 → 7.40.0
* @wdio/local-runner: 7.16.13 → 7.40.0
* @wdio/mocha-framework: 7.33.0 → 7.40.0
* wdio-mediawiki: 2.3.0 → 2.7.1
* @wdio/spec-reporter: 7.16.13 → 7.40.0
* brace-expansion: 1.1.11, 2.0.1, 2.0.2 → 1.1.12, 2.0.2
  * https://github.com/advisories/GHSA-v6h2-p8h4-qcjw
* js-yaml: 3.14.1, 4.1.0 → 3.14.2, 4.1.1
  * https://github.com/advisories/GHSA-mh29-5h37-fv8m
* validator: 13.11.0 → 13.15.23
  * https://github.com/advisories/GHSA-9965-vmph-33xx


Additional changes:
* Enable stylelint caching.

$ git add .
--- stdout ---

--- end ---
$ git commit -F /tmp/tmp47sxjbn9
--- stdout ---
[master 9718f88] build: Updating dependencies
 5 files changed, 435 insertions(+), 311 deletions(-)

--- end ---
$ git format-patch HEAD~1 --stdout
--- stdout ---
From 9718f88c5d9f0027874cca464cbe3116ad936b66 Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Thu, 20 Nov 2025 01:09:57 +0000
Subject: [PATCH] build: Updating dependencies
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

composer:
* mediawiki/mediawiki-codesniffer: 45.0.0 → 48.0.0
* mediawiki/mediawiki-phan-config: 0.15.1 → 0.17.0

npm:
* @wdio/cli: 7.16.13 → 7.40.0
* @wdio/junit-reporter: 7.16.13 → 7.40.0
* @wdio/local-runner: 7.16.13 → 7.40.0
* @wdio/mocha-framework: 7.33.0 → 7.40.0
* wdio-mediawiki: 2.3.0 → 2.7.1
* @wdio/spec-reporter: 7.16.13 → 7.40.0
* brace-expansion: 1.1.11, 2.0.1, 2.0.2 → 1.1.12, 2.0.2
  * https://github.com/advisories/GHSA-v6h2-p8h4-qcjw
* js-yaml: 3.14.1, 4.1.0 → 3.14.2, 4.1.1
  * https://github.com/advisories/GHSA-mh29-5h37-fv8m
* validator: 13.11.0 → 13.15.23
  * https://github.com/advisories/GHSA-9965-vmph-33xx

Additional changes:
* Enable stylelint caching.

Change-Id: I797d5b635c19eb0dfa9dea7fa60f2daa8307dcd0
---
 .gitignore        |   1 +
 Gruntfile.js      |   3 +
 composer.json     |   4 +-
 package-lock.json | 726 +++++++++++++++++++++++++++-------------------
 package.json      |  12 +-
 5 files changed, 435 insertions(+), 311 deletions(-)

diff --git a/.gitignore b/.gitignore
index bf9ec97..a52f8bf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@ tests/selenium/log
 # composer dependencies
 /vendor/
 composer.lock
+/.stylelintcache
diff --git a/Gruntfile.js b/Gruntfile.js
index 0006157..88559a2 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -13,6 +13,9 @@ module.exports = function ( grunt ) {
 			all: '.'
 		},
 		stylelint: {
+			options: {
+				cache: true
+			},
 			all: [
 				'**/*.{css,less}',
 				'!node_modules/**',
diff --git a/composer.json b/composer.json
index 4054c63..ff4fea8 100644
--- a/composer.json
+++ b/composer.json
@@ -2,8 +2,8 @@
 	"name": "femiwiki/achievement-badges",
 	"description": "Provides an achievement system",
 	"require-dev": {
-		"mediawiki/mediawiki-codesniffer": "45.0.0",
-		"mediawiki/mediawiki-phan-config": "0.15.1",
+		"mediawiki/mediawiki-codesniffer": "48.0.0",
+		"mediawiki/mediawiki-phan-config": "0.17.0",
 		"mediawiki/minus-x": "1.1.3",
 		"php-parallel-lint/php-console-highlighter": "1.0.0",
 		"php-parallel-lint/php-parallel-lint": "1.4.0"
diff --git a/package-lock.json b/package-lock.json
index 7a7a5eb..99b387d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,11 +7,11 @@
 			"name": "AchievementBadges",
 			"devDependencies": {
 				"@prettier/plugin-xml": "^2.2.0",
-				"@wdio/cli": "7.16.13",
-				"@wdio/junit-reporter": "7.16.13",
-				"@wdio/local-runner": "7.16.13",
-				"@wdio/mocha-framework": "7.33.0",
-				"@wdio/spec-reporter": "7.16.13",
+				"@wdio/cli": "7.40.0",
+				"@wdio/junit-reporter": "7.40.0",
+				"@wdio/local-runner": "7.40.0",
+				"@wdio/mocha-framework": "7.40.0",
+				"@wdio/spec-reporter": "7.40.0",
 				"eslint-config-wikimedia": "0.28.2",
 				"grunt": "1.6.1",
 				"grunt-banana-checker": "0.13.0",
@@ -19,7 +19,7 @@
 				"grunt-stylelint": "0.20.1",
 				"stylelint-config-wikimedia": "0.18.0",
 				"svgo": "3.2.0",
-				"wdio-mediawiki": "2.3.0"
+				"wdio-mediawiki": "2.7.1"
 			}
 		},
 		"node_modules/@aashutoshrathi/word-wrap": {
@@ -598,16 +598,20 @@
 			}
 		},
 		"node_modules/@types/diff": {
-			"version": "5.0.9",
-			"resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.0.9.tgz",
-			"integrity": "sha512-RWVEhh/zGXpAVF/ZChwNnv7r4rvqzJ7lYNSmZSVTxjV0PBLf6Qu7RNg+SUtkpzxmiNkjCx0Xn2tPp7FIkshJwQ==",
+			"version": "5.2.3",
+			"resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.2.3.tgz",
+			"integrity": "sha512-K0Oqlrq3kQMaO2RhfrNQX5trmt+XLyom88zS0u84nnIcLvFnRUMRRHmrGny5GSM+kNO9IZLARsdQHDzkhAgmrQ==",
 			"dev": true
 		},
 		"node_modules/@types/easy-table": {
-			"version": "0.0.33",
-			"resolved": "https://registry.npmjs.org/@types/easy-table/-/easy-table-0.0.33.tgz",
-			"integrity": "sha512-/vvqcJPmZUfQwCgemL0/34G7bIQnCuvgls379ygRlcC1FqNqk3n+VZ15dAO51yl6JNDoWd8vsk+kT8zfZ1VZSw==",
-			"dev": true
+			"version": "1.2.3",
+			"resolved": "https://registry.npmjs.org/@types/easy-table/-/easy-table-1.2.3.tgz",
+			"integrity": "sha512-uT9nuF3D1+KgNXRCft0/Z4BL5S/73D7dZ+Ky4796MvWPgwUp6gLudt1YOfvtOuuet+buFk+WqUR7j1K77gMnAw==",
+			"deprecated": "This is a stub types definition. easy-table provides its own type definitions, so you do not need this installed.",
+			"dev": true,
+			"dependencies": {
+				"easy-table": "*"
+			}
 		},
 		"node_modules/@types/ejs": {
 			"version": "3.1.5",
@@ -632,14 +636,31 @@
 			"dev": true
 		},
 		"node_modules/@types/fs-extra": {
-			"version": "9.0.13",
-			"resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz",
-			"integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==",
+			"version": "11.0.4",
+			"resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz",
+			"integrity": "sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==",
 			"dev": true,
 			"dependencies": {
+				"@types/jsonfile": "*",
 				"@types/node": "*"
 			}
 		},
+		"node_modules/@types/glob": {
+			"version": "8.1.0",
+			"resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz",
+			"integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==",
+			"dev": true,
+			"dependencies": {
+				"@types/minimatch": "^5.1.2",
+				"@types/node": "*"
+			}
+		},
+		"node_modules/@types/glob/node_modules/@types/minimatch": {
+			"version": "5.1.2",
+			"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
+			"integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
+			"dev": true
+		},
 		"node_modules/@types/http-cache-semantics": {
 			"version": "4.0.4",
 			"resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
@@ -692,6 +713,15 @@
 			"integrity": "sha512-oNOjRxLfPeYbBSQ60maucaFNqbslVOPU4WWs5t/sHvAh6tyo/CThXSG+E24tEzkgh/fzvxyDrYdOJufgeNy1sQ==",
 			"dev": true
 		},
+		"node_modules/@types/jsonfile": {
+			"version": "6.1.4",
+			"resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz",
+			"integrity": "sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "*"
+			}
+		},
 		"node_modules/@types/keyv": {
 			"version": "3.1.4",
 			"resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
@@ -747,10 +777,13 @@
 			"dev": true
 		},
 		"node_modules/@types/node": {
-			"version": "17.0.45",
-			"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz",
-			"integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==",
-			"dev": true
+			"version": "18.19.130",
+			"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz",
+			"integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==",
+			"dev": true,
+			"dependencies": {
+				"undici-types": "~5.26.4"
+			}
 		},
 		"node_modules/@types/normalize-package-data": {
 			"version": "2.4.4",
@@ -759,9 +792,9 @@
 			"dev": true
 		},
 		"node_modules/@types/object-inspect": {
-			"version": "1.8.4",
-			"resolved": "https://registry.npmjs.org/@types/object-inspect/-/object-inspect-1.8.4.tgz",
-			"integrity": "sha512-2yh72JxmDney1h7LQvkyO8p8FOmNMQXGs8HjuXS3SXvE/dLydLLjBqKCdHqcTUo66CQVHfn7yFR680bvi9jlVw==",
+			"version": "1.13.0",
+			"resolved": "https://registry.npmjs.org/@types/object-inspect/-/object-inspect-1.13.0.tgz",
+			"integrity": "sha512-lwGTVESDDV+XsQ1pH4UifpJ1f7OtXzQ6QBOX2Afq2bM/T3oOt8hF6exJMjjIjtEWeAN2YAo25J7HxWh97CCz9w==",
 			"dev": true
 		},
 		"node_modules/@types/recursive-readdir": {
@@ -920,9 +953,9 @@
 			}
 		},
 		"node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
-			"version": "2.0.1",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-			"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+			"version": "2.0.2",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+			"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
 			"dev": true,
 			"dependencies": {
 				"balanced-match": "^1.0.0"
@@ -989,36 +1022,37 @@
 			"dev": true
 		},
 		"node_modules/@wdio/cli": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.16.13.tgz",
-			"integrity": "sha512-y0C/eLLyLCVWrsJVimozUQBQWD/goIUxmtB91rjMAqTjeLn5b0VoPhr+EKXGCHXz3ylvXGGJ3RaI0l1vz9Cf8w==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.40.0.tgz",
+			"integrity": "sha512-M0txYEqqamBvJe4FEuqwWq1jd879sElF047BXSv2GRu4R1/iEBPYJHjn9KuL60Fkkpp/L1NMHTl7gW9i445edQ==",
 			"dev": true,
 			"dependencies": {
 				"@types/ejs": "^3.0.5",
-				"@types/fs-extra": "^9.0.4",
+				"@types/fs-extra": "^11.0.1",
 				"@types/inquirer": "^8.1.2",
 				"@types/lodash.flattendeep": "^4.4.6",
 				"@types/lodash.pickby": "^4.6.6",
 				"@types/lodash.union": "^4.6.6",
-				"@types/node": "^17.0.4",
+				"@types/node": "^18.0.0",
 				"@types/recursive-readdir": "^2.2.0",
-				"@wdio/config": "7.16.13",
-				"@wdio/logger": "7.16.0",
-				"@wdio/types": "7.16.13",
-				"@wdio/utils": "7.16.13",
+				"@wdio/config": "7.40.0",
+				"@wdio/logger": "7.26.0",
+				"@wdio/protocols": "7.27.0",
+				"@wdio/types": "7.40.0",
+				"@wdio/utils": "7.40.0",
 				"async-exit-hook": "^2.0.1",
 				"chalk": "^4.0.0",
 				"chokidar": "^3.0.0",
 				"cli-spinners": "^2.1.0",
 				"ejs": "^3.0.1",
-				"fs-extra": "^10.0.0",
-				"inquirer": "8.1.5",
+				"fs-extra": "^11.1.1",
+				"inquirer": "8.2.4",
 				"lodash.flattendeep": "^4.4.0",
 				"lodash.pickby": "^4.6.0",
 				"lodash.union": "^4.6.0",
-				"mkdirp": "^1.0.4",
+				"mkdirp": "^3.0.0",
 				"recursive-readdir": "^2.2.2",
-				"webdriverio": "7.16.13",
+				"webdriverio": "7.40.0",
 				"yargs": "^17.0.0",
 				"yarn-install": "^1.0.0"
 			},
@@ -1030,30 +1064,73 @@
 			}
 		},
 		"node_modules/@wdio/config": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.16.13.tgz",
-			"integrity": "sha512-LSGoa83tWQIBppB+LeHjY40B9tuuvmDV1qdBLVXR1ROcOUWWz/oQP3NFLtLm3266LXoJUbwebzGcRIK1EcNk3Q==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.40.0.tgz",
+			"integrity": "sha512-ayQELXyxa+k9/2a509F5a1oTsCa/w8D1nDrd+hzm+1mYb4Te2lceWCCzm+atGKkMpvjLH4GvhrEBYLh3rIWk2A==",
 			"dev": true,
 			"dependencies": {
-				"@wdio/logger": "7.16.0",
-				"@wdio/types": "7.16.13",
+				"@types/glob": "^8.1.0",
+				"@wdio/logger": "7.26.0",
+				"@wdio/types": "7.40.0",
+				"@wdio/utils": "7.40.0",
 				"deepmerge": "^4.0.0",
-				"glob": "^7.1.2"
+				"glob": "^8.0.3"
 			},
 			"engines": {
 				"node": ">=12.0.0"
 			}
 		},
+		"node_modules/@wdio/config/node_modules/brace-expansion": {
+			"version": "2.0.2",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+			"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+			"dev": true,
+			"dependencies": {
+				"balanced-match": "^1.0.0"
+			}
+		},
+		"node_modules/@wdio/config/node_modules/glob": {
+			"version": "8.1.0",
+			"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+			"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+			"deprecated": "Glob versions prior to v9 are no longer supported",
+			"dev": true,
+			"dependencies": {
+				"fs.realpath": "^1.0.0",
+				"inflight": "^1.0.4",
+				"inherits": "2",
+				"minimatch": "^5.0.1",
+				"once": "^1.3.0"
+			},
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/isaacs"
+			}
+		},
+		"node_modules/@wdio/config/node_modules/minimatch": {
+			"version": "5.1.6",
+			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+			"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+			"dev": true,
+			"dependencies": {
+				"brace-expansion": "^2.0.1"
+			},
+			"engines": {
+				"node": ">=10"
+			}
+		},
 		"node_modules/@wdio/junit-reporter": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/@wdio/junit-reporter/-/junit-reporter-7.16.13.tgz",
-			"integrity": "sha512-VKhly72NZY2/SNnfbYXO/HHov9oj+pk0aaq5TNzIJJoqtH4uqDz+L2p7wu9nKnRnywmwvaTm7pbYZGlOuty26A==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/junit-reporter/-/junit-reporter-7.40.0.tgz",
+			"integrity": "sha512-nGxzvdCBHUQOtKbCrihO+MjLdfyeYPVeoCAWBNbPHP06nnjsoVDT7k1Ic7BwAbrDZn1SUOVhwdGOxqDdc1E8Fg==",
 			"dev": true,
 			"dependencies": {
 				"@types/json-stringify-safe": "^5.0.0",
 				"@types/validator": "^13.1.3",
-				"@wdio/reporter": "7.16.13",
-				"@wdio/types": "7.16.13",
+				"@wdio/reporter": "7.40.0",
+				"@wdio/types": "7.40.0",
 				"json-stringify-safe": "^5.0.1",
 				"junit-report-builder": "^3.0.0",
 				"validator": "^13.0.0"
@@ -1066,16 +1143,16 @@
 			}
 		},
 		"node_modules/@wdio/local-runner": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-7.16.13.tgz",
-			"integrity": "sha512-Ri8R6RHD5VjI4m2CramKO9w+4jD7VwEoQFWqFzUI1g31UAuN1zy67R3UiYv0ohiBTW4MZt90CMLgumQNk7C5kA==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-7.40.0.tgz",
+			"integrity": "sha512-OBuN7TlFhbPUH7Wbh2S8OKZOjeW4rHXOfuGzJfaKkzjHje2Dqide/uC3Gd25MwmzgZcVkOo9DUYiGFCHXc44ug==",
 			"dev": true,
 			"dependencies": {
 				"@types/stream-buffers": "^3.0.3",
-				"@wdio/logger": "7.16.0",
-				"@wdio/repl": "7.16.13",
-				"@wdio/runner": "7.16.13",
-				"@wdio/types": "7.16.13",
+				"@wdio/logger": "7.26.0",
+				"@wdio/repl": "7.40.0",
+				"@wdio/runner": "7.40.0",
+				"@wdio/types": "7.40.0",
 				"async-exit-hook": "^2.0.1",
 				"split2": "^4.0.0",
 				"stream-buffers": "^3.0.2"
@@ -1088,9 +1165,9 @@
 			}
 		},
 		"node_modules/@wdio/logger": {
-			"version": "7.16.0",
-			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.16.0.tgz",
-			"integrity": "sha512-/6lOGb2Iow5eSsy7RJOl1kCwsP4eMlG+/QKro5zUJsuyNJSQXf2ejhpkzyKWLgQbHu83WX6cM1014AZuLkzoQg==",
+			"version": "7.26.0",
+			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.26.0.tgz",
+			"integrity": "sha512-kQj9s5JudAG9qB+zAAcYGPHVfATl2oqKgqj47yjehOQ1zzG33xmtL1ArFbQKWhDG32y1A8sN6b0pIqBEIwgg8Q==",
 			"dev": true,
 			"dependencies": {
 				"chalk": "^4.0.0",
@@ -1103,15 +1180,15 @@
 			}
 		},
 		"node_modules/@wdio/mocha-framework": {
-			"version": "7.33.0",
-			"resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.33.0.tgz",
-			"integrity": "sha512-y6+iBF+QrqeiXC+mNwW/o0vRsB+qaRznxoh+ds6Xz9V0tui55cn4kl2gYkBu3oHX8h+9R52ykLyaY9wv+r2aeg==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.40.0.tgz",
+			"integrity": "sha512-Pc+c4M07qhz3CdhitETWq8htMPb3xwmmQF5CKUpcy+F6nBTy4Q3wDOSLRQnFD7iP+JqnpJ2o3k1NPeuNYc7+CQ==",
 			"dev": true,
 			"dependencies": {
 				"@types/mocha": "^10.0.0",
 				"@wdio/logger": "7.26.0",
-				"@wdio/types": "7.33.0",
-				"@wdio/utils": "7.33.0",
+				"@wdio/types": "7.40.0",
+				"@wdio/utils": "7.40.0",
 				"expect-webdriverio": "^3.0.0",
 				"mocha": "^10.0.0"
 			},
@@ -1119,100 +1196,41 @@
 				"node": ">=12.0.0"
 			}
 		},
-		"node_modules/@wdio/mocha-framework/node_modules/@types/node": {
-			"version": "18.19.67",
-			"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.67.tgz",
-			"integrity": "sha512-wI8uHusga+0ZugNp0Ol/3BqQfEcCCNfojtO6Oou9iVNGPTL6QNSdnUdqq85fRgIorLhLMuPIKpsN98QE9Nh+KQ==",
-			"dev": true,
-			"dependencies": {
-				"undici-types": "~5.26.4"
-			}
-		},
-		"node_modules/@wdio/mocha-framework/node_modules/@wdio/logger": {
-			"version": "7.26.0",
-			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.26.0.tgz",
-			"integrity": "sha512-kQj9s5JudAG9qB+zAAcYGPHVfATl2oqKgqj47yjehOQ1zzG33xmtL1ArFbQKWhDG32y1A8sN6b0pIqBEIwgg8Q==",
-			"dev": true,
-			"dependencies": {
-				"chalk": "^4.0.0",
-				"loglevel": "^1.6.0",
-				"loglevel-plugin-prefix": "^0.8.4",
-				"strip-ansi": "^6.0.0"
-			},
-			"engines": {
-				"node": ">=12.0.0"
-			}
-		},
-		"node_modules/@wdio/mocha-framework/node_modules/@wdio/types": {
-			"version": "7.33.0",
-			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.33.0.tgz",
-			"integrity": "sha512-tNcuN5Kl+i5CffaeTYV1omzAo4rVjiI1m9raIA8ph6iVteWdCzYv2/ImpGgFiBPb7Mf6VokU3+q9Slh5Jitaww==",
-			"dev": true,
-			"dependencies": {
-				"@types/node": "^18.0.0",
-				"got": "^11.8.1"
-			},
-			"engines": {
-				"node": ">=12.0.0"
-			},
-			"peerDependencies": {
-				"typescript": "^4.6.2"
-			},
-			"peerDependenciesMeta": {
-				"typescript": {
-					"optional": true
-				}
-			}
-		},
-		"node_modules/@wdio/mocha-framework/node_modules/@wdio/utils": {
-			"version": "7.33.0",
-			"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.33.0.tgz",
-			"integrity": "sha512-4kQQ86EvEN6fBY5+u7M08cT6LfJtpk1rHd203xyxmbmV9lpNv/OCl4CsC+SD0jGT0aZZqYSIJ/Pil07pAh5K0g==",
-			"dev": true,
-			"dependencies": {
-				"@wdio/logger": "7.26.0",
-				"@wdio/types": "7.33.0",
-				"p-iteration": "^1.1.8"
-			},
-			"engines": {
-				"node": ">=12.0.0"
-			}
-		},
 		"node_modules/@wdio/protocols": {
-			"version": "7.16.7",
-			"resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.16.7.tgz",
-			"integrity": "sha512-Wv40pNQcLiPzQ3o98Mv4A8T1EBQ6k4khglz/e2r16CTm+F3DDYh8eLMAsU5cgnmuwwDKX1EyOiFwieykBn5MCg==",
+			"version": "7.27.0",
+			"resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.27.0.tgz",
+			"integrity": "sha512-hT/U22R5i3HhwPjkaKAG0yd59eaOaZB0eibRj2+esCImkb5Y6rg8FirrlYRxIGFVBl0+xZV0jKHzR5+o097nvg==",
 			"dev": true,
 			"engines": {
 				"node": ">=12.0.0"
 			}
 		},
 		"node_modules/@wdio/repl": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-7.16.13.tgz",
-			"integrity": "sha512-XWh3dzp6U8LLL4cNGWFra+quVyXZ25Ym38zpsBVtV0/z5NCHJmjRS4ytyvvkzbQ8SyqQ7Y3G8MjfGNi2sBNkIQ==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-7.40.0.tgz",
+			"integrity": "sha512-6tzT7lOMxBwdqMVdW4QxlzrQadGPta4HedFcJo4LyRz9PkXPTF68qeIGs0GyZvy/5AqspNWaAJvIR7f3T3tCyw==",
 			"dev": true,
 			"dependencies": {
-				"@wdio/utils": "7.16.13"
+				"@wdio/utils": "7.40.0"
 			},
 			"engines": {
 				"node": ">=12.0.0"
 			}
 		},
 		"node_modules/@wdio/reporter": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-7.16.13.tgz",
-			"integrity": "sha512-S7OH96yfSCJwmirsvT8khfWUfoMTiw0O1+UyiOYS/g0l+IideVK83kpyXYWfsALPahL2te0g57lPazriSfNAyA==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-7.40.0.tgz",
+			"integrity": "sha512-nWVh20JONsN4xf2PRWAS+81r1a6t6M5OtlVOti7G8/pODCul1kxmi9l07s0JaU9g64C1nDc4bOxvAPOWR3/wIw==",
 			"dev": true,
 			"dependencies": {
 				"@types/diff": "^5.0.0",
-				"@types/node": "^17.0.4",
+				"@types/node": "^18.0.0",
 				"@types/object-inspect": "^1.8.0",
 				"@types/supports-color": "^8.1.0",
 				"@types/tmp": "^0.2.0",
-				"@wdio/types": "7.16.13",
+				"@wdio/types": "7.40.0",
 				"diff": "^5.0.0",
-				"fs-extra": "^10.0.0",
+				"fs-extra": "^11.1.1",
 				"object-inspect": "^1.10.3",
 				"supports-color": "8.1.1"
 			},
@@ -1221,33 +1239,33 @@
 			}
 		},
 		"node_modules/@wdio/runner": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-7.16.13.tgz",
-			"integrity": "sha512-/PJUK+8orHsUd5v8edWv5XS3pKx/si7DoYkU8PsgQX9FnU2y3oRfHrQwzI8s3TOnGag79f+yrGzzGCZFmmW0cw==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-7.40.0.tgz",
+			"integrity": "sha512-3dGn8sU9Oc0kTq+hcxNSqkF1acqiTAzamyNWsWXAX7V0FOfZxp0wmD9aMqY+sVT6g8mUE5aePT1ydONE5o+6QA==",
 			"dev": true,
 			"dependencies": {
-				"@wdio/config": "7.16.13",
-				"@wdio/logger": "7.16.0",
-				"@wdio/types": "7.16.13",
-				"@wdio/utils": "7.16.13",
+				"@wdio/config": "7.40.0",
+				"@wdio/logger": "7.26.0",
+				"@wdio/types": "7.40.0",
+				"@wdio/utils": "7.40.0",
 				"deepmerge": "^4.0.0",
 				"gaze": "^1.1.2",
-				"webdriver": "7.16.13",
-				"webdriverio": "7.16.13"
+				"webdriver": "7.40.0",
+				"webdriverio": "7.40.0"
 			},
 			"engines": {
 				"node": ">=12.0.0"
 			}
 		},
 		"node_modules/@wdio/spec-reporter": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-7.16.13.tgz",
-			"integrity": "sha512-4gnflBJU+QDcmWgRy3tSRD47cqZmdjPLEJhsfhv/aBNtWPWMJtQru7nDFcLkxKLFPiN0D1F7gUMWbUMaDVlojg==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-7.40.0.tgz",
+			"integrity": "sha512-DhkfnWrN/X0DKpj/maIsk76yr5iG0t/ZbbajtBXLv9lMn8j+ALY34dfj0mvvTKX77wlzDtgeuC+8BzxPKBWU6g==",
 			"dev": true,
 			"dependencies": {
-				"@types/easy-table": "^0.0.33",
-				"@wdio/reporter": "7.16.13",
-				"@wdio/types": "7.16.13",
+				"@types/easy-table": "^1.2.0",
+				"@wdio/reporter": "7.40.0",
+				"@wdio/types": "7.40.0",
 				"chalk": "^4.0.0",
 				"easy-table": "^1.1.1",
 				"pretty-ms": "^7.0.0"
@@ -1260,26 +1278,34 @@
 			}
 		},
 		"node_modules/@wdio/types": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.16.13.tgz",
-			"integrity": "sha512-HIeXKCL+mUjyJxvnHSoaIo3NRgZLbeekyRIwo6USfd9qGlQ8dQ6fyCR3ZU9VqNz9j4+JIn+LRQ7imbz5SdnGbw==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.40.0.tgz",
+			"integrity": "sha512-MWMbU+8uk+JrF7ygP/TJDsaSvFozKauiW6EnG7rxx9+GvU1Q1B3l4UjAc7GDbgLKjwt8T2y5GDRiDoD3UOjVyw==",
 			"dev": true,
 			"dependencies": {
-				"@types/node": "^17.0.4",
+				"@types/node": "^18.0.0",
 				"got": "^11.8.1"
 			},
 			"engines": {
 				"node": ">=12.0.0"
+			},
+			"peerDependencies": {
+				"typescript": "^4.6.2"
+			},
+			"peerDependenciesMeta": {
+				"typescript": {
+					"optional": true
+				}
 			}
 		},
 		"node_modules/@wdio/utils": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.16.13.tgz",
-			"integrity": "sha512-O6D89Ghtm5XtTv4DPKvCBKZOZYNONIcBM5/hmdr3V9mzVrTFq8Q3uE8pmmq303Oh91KcoN8Em5zoAG7Zpc5tRg==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.40.0.tgz",
+			"integrity": "sha512-jLF57xHmz5nnGuM6ZRWjVYa/LQb22CS7yG50dUFa9wJ509mC1HlUzaA01Gjk9TV5jf9vnwE/yZfUMCoecTgG9w==",
 			"dev": true,
 			"dependencies": {
-				"@wdio/logger": "7.16.0",
-				"@wdio/types": "7.16.13",
+				"@wdio/logger": "7.26.0",
+				"@wdio/types": "7.40.0",
 				"p-iteration": "^1.1.8"
 			},
 			"engines": {
@@ -1508,12 +1534,12 @@
 			"dev": true
 		},
 		"node_modules/aria-query": {
-			"version": "5.3.0",
-			"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
-			"integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
+			"version": "5.3.2",
+			"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
+			"integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
 			"dev": true,
-			"dependencies": {
-				"dequal": "^2.0.3"
+			"engines": {
+				"node": ">= 0.4"
 			}
 		},
 		"node_modules/array-differ": {
@@ -1701,9 +1727,9 @@
 			"dev": true
 		},
 		"node_modules/brace-expansion": {
-			"version": "1.1.11",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-			"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+			"version": "1.1.12",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+			"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
 			"dev": true,
 			"dependencies": {
 				"balanced-match": "^1.0.0",
@@ -2471,9 +2497,9 @@
 			}
 		},
 		"node_modules/css-shorthand-properties": {
-			"version": "1.1.1",
-			"resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.1.tgz",
-			"integrity": "sha512-Md+Juc7M3uOdbAFwOYlTrccIZ7oCFuzrhKYQjdeUEW/sE1hv17Jp/Bws+ReOPpGVBTYCBoYo+G17V5Qo8QQ75A==",
+			"version": "1.1.2",
+			"resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.2.tgz",
+			"integrity": "sha512-C2AugXIpRGQTxaCW0N7n5jD/p5irUmCrwl03TrnMFBHDbdq44CFWR2zO7rK9xPN4Eo3pUxC4vQzQgbIpzrD1PQ==",
 			"dev": true
 		},
 		"node_modules/css-tokenize": {
@@ -2717,15 +2743,6 @@
 				"node": ">=0.4.0"
 			}
 		},
-		"node_modules/dequal": {
-			"version": "2.0.3",
-			"resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
-			"integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
-			"dev": true,
-			"engines": {
-				"node": ">=6"
-			}
-		},
 		"node_modules/detect-file": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
@@ -2736,44 +2753,128 @@
 			}
 		},
 		"node_modules/devtools": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/devtools/-/devtools-7.16.13.tgz",
-			"integrity": "sha512-jm/DL5tlOUUMe0pUgahDqixw3z+NANLN6DYDeZPFv7z0CBtmnaTyOe2zbT0apLxCBpi800VeXaISVZwmKE2NiQ==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/devtools/-/devtools-7.40.0.tgz",
+			"integrity": "sha512-hiDPCNG/mpD+bSgegxoe5nwyxWav+QpIvT+7H9D0dUwjB0q04OF473qGflSQ1QpGig6l4qG92tA7dVnLsdP75A==",
 			"dev": true,
 			"dependencies": {
-				"@types/node": "^17.0.4",
+				"@types/node": "^18.0.0",
 				"@types/ua-parser-js": "^0.7.33",
-				"@wdio/config": "7.16.13",
-				"@wdio/logger": "7.16.0",
-				"@wdio/protocols": "7.16.7",
-				"@wdio/types": "7.16.13",
-				"@wdio/utils": "7.16.13",
+				"@wdio/config": "7.40.0",
+				"@wdio/logger": "7.26.0",
+				"@wdio/protocols": "7.27.0",
+				"@wdio/types": "7.40.0",
+				"@wdio/utils": "7.40.0",
 				"chrome-launcher": "^0.15.0",
 				"edge-paths": "^2.1.0",
-				"puppeteer-core": "^13.0.0",
+				"puppeteer-core": "13.1.3",
 				"query-selector-shadow-dom": "^1.0.0",
 				"ua-parser-js": "^1.0.1",
-				"uuid": "^8.0.0"
+				"uuid": "^9.0.0"
 			},
 			"engines": {
 				"node": ">=12.0.0"
 			}
 		},
 		"node_modules/devtools-protocol": {
-			"version": "0.0.953906",
-			"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.953906.tgz",
-			"integrity": "sha512-Z2vAafCNnl0Iw/u7TUjqOXW1sOhAMDOviflmUoUIxfq2rgfsoCO3qruB/LUJCdqF9aTJ32DUjXyMsX3+if6kDQ==",
+			"version": "0.0.1260888",
+			"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1260888.tgz",
+			"integrity": "sha512-9rTIZ4ZjWwalCPiaY+kPiALLfOKgAz5CTi/Zb1L+qSZ8PH3zVo1T8JcgXIIqg1iM3pZ6hF+n9xO5r2jZ/SF+jg==",
+			"dev": true
+		},
+		"node_modules/devtools/node_modules/debug": {
+			"version": "4.3.2",
+			"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+			"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+			"dev": true,
+			"dependencies": {
+				"ms": "2.1.2"
+			},
+			"engines": {
+				"node": ">=6.0"
+			},
+			"peerDependenciesMeta": {
+				"supports-color": {
+					"optional": true
+				}
+			}
+		},
+		"node_modules/devtools/node_modules/devtools-protocol": {
+			"version": "0.0.948846",
+			"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.948846.tgz",
+			"integrity": "sha512-5fGyt9xmMqUl2VI7+rnUkKCiAQIpLns8sfQtTENy5L70ktbNw0Z3TFJ1JoFNYdx/jffz4YXU45VF75wKZD7sZQ==",
 			"dev": true
 		},
+		"node_modules/devtools/node_modules/https-proxy-agent": {
+			"version": "5.0.0",
+			"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
+			"integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
+			"dev": true,
+			"dependencies": {
+				"agent-base": "6",
+				"debug": "4"
+			},
+			"engines": {
+				"node": ">= 6"
+			}
+		},
+		"node_modules/devtools/node_modules/puppeteer-core": {
+			"version": "13.1.3",
+			"resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.1.3.tgz",
+			"integrity": "sha512-96pzvVBzq5lUGt3L/QrIH3mxn3NfZylHeusNhq06xBAHPI0Upc0SC/9u7tXjL0oRnmcExeVRJivr1lj7Ah/yDQ==",
+			"dev": true,
+			"dependencies": {
+				"debug": "4.3.2",
+				"devtools-protocol": "0.0.948846",
+				"extract-zip": "2.0.1",
+				"https-proxy-agent": "5.0.0",
+				"node-fetch": "2.6.7",
+				"pkg-dir": "4.2.0",
+				"progress": "2.0.3",
+				"proxy-from-env": "1.1.0",
+				"rimraf": "3.0.2",
+				"tar-fs": "2.1.1",
+				"unbzip2-stream": "1.4.3",
+				"ws": "8.2.3"
+			},
+			"engines": {
+				"node": ">=10.18.1"
+			}
+		},
 		"node_modules/devtools/node_modules/uuid": {
-			"version": "8.3.2",
-			"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
-			"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+			"version": "9.0.1",
+			"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+			"integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
 			"dev": true,
+			"funding": [
+				"https://github.com/sponsors/broofa",
+				"https://github.com/sponsors/ctavan"
+			],
 			"bin": {
 				"uuid": "dist/bin/uuid"
 			}
 		},
+		"node_modules/devtools/node_modules/ws": {
+			"version": "8.2.3",
+			"resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz",
+			"integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==",
+			"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_modules/diff": {
 			"version": "5.2.0",
 			"resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
@@ -3301,9 +3402,9 @@
 			}
 		},
 		"node_modules/eslint-plugin-n/node_modules/brace-expansion": {
-			"version": "2.0.1",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-			"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+			"version": "2.0.2",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+			"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
 			"dev": true,
 			"dependencies": {
 				"balanced-match": "^1.0.0"
@@ -3896,9 +3997,9 @@
 			}
 		},
 		"node_modules/filelist/node_modules/brace-expansion": {
-			"version": "2.0.1",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-			"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+			"version": "2.0.2",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+			"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
 			"dev": true,
 			"dependencies": {
 				"balanced-match": "^1.0.0"
@@ -4064,9 +4165,9 @@
 			"dev": true
 		},
 		"node_modules/fs-extra": {
-			"version": "10.1.0",
-			"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
-			"integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+			"version": "11.3.2",
+			"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz",
+			"integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==",
 			"dev": true,
 			"dependencies": {
 				"graceful-fs": "^4.2.0",
@@ -4074,7 +4175,7 @@
 				"universalify": "^2.0.0"
 			},
 			"engines": {
-				"node": ">=12"
+				"node": ">=14.14"
 			}
 		},
 		"node_modules/fs.realpath": {
@@ -4127,18 +4228,6 @@
 				"node": "6.* || 8.* || >= 10.*"
 			}
 		},
-		"node_modules/get-port": {
-			"version": "5.1.1",
-			"resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz",
-			"integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==",
-			"dev": true,
-			"engines": {
-				"node": ">=8"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
 		"node_modules/get-stream": {
 			"version": "5.2.0",
 			"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
@@ -4313,6 +4402,7 @@
 			"version": "7.1.7",
 			"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
 			"integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+			"deprecated": "Glob versions prior to v9 are no longer supported",
 			"dev": true,
 			"dependencies": {
 				"fs.realpath": "^1.0.0",
@@ -4589,9 +4679,9 @@
 			}
 		},
 		"node_modules/grunt/node_modules/js-yaml": {
-			"version": "3.14.1",
-			"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
-			"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+			"version": "3.14.2",
+			"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
+			"integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
 			"dev": true,
 			"dependencies": {
 				"argparse": "^1.0.7",
@@ -4752,9 +4842,9 @@
 			}
 		},
 		"node_modules/http-cache-semantics": {
-			"version": "4.1.1",
-			"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
-			"integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
+			"version": "4.2.0",
+			"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
+			"integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==",
 			"dev": true
 		},
 		"node_modules/http-signature": {
@@ -4896,9 +4986,9 @@
 			"dev": true
 		},
 		"node_modules/inquirer": {
-			"version": "8.1.5",
-			"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.5.tgz",
-			"integrity": "sha512-G6/9xUqmt/r+UvufSyrPpt84NYwhKZ9jLsgMbQzlx804XErNupor8WQdBnBRrXmBfTPpuwf1sV+ss2ovjgdXIg==",
+			"version": "8.2.4",
+			"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz",
+			"integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==",
 			"dev": true,
 			"dependencies": {
 				"ansi-escapes": "^4.2.1",
@@ -4911,13 +5001,14 @@
 				"mute-stream": "0.0.8",
 				"ora": "^5.4.1",
 				"run-async": "^2.4.0",
-				"rxjs": "^7.2.0",
+				"rxjs": "^7.5.5",
 				"string-width": "^4.1.0",
 				"strip-ansi": "^6.0.0",
-				"through": "^2.3.6"
+				"through": "^2.3.6",
+				"wrap-ansi": "^7.0.0"
 			},
 			"engines": {
-				"node": ">=8.0.0"
+				"node": ">=12.0.0"
 			}
 		},
 		"node_modules/interpret": {
@@ -5274,9 +5365,9 @@
 			"dev": true
 		},
 		"node_modules/js-yaml": {
-			"version": "4.1.0",
-			"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
-			"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+			"version": "4.1.1",
+			"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
+			"integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
 			"dev": true,
 			"dependencies": {
 				"argparse": "^2.0.1"
@@ -5349,9 +5440,9 @@
 			"dev": true
 		},
 		"node_modules/jsonfile": {
-			"version": "6.1.0",
-			"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
-			"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+			"version": "6.2.0",
+			"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+			"integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
 			"dev": true,
 			"dependencies": {
 				"universalify": "^2.0.0"
@@ -5415,9 +5506,9 @@
 			"dev": true
 		},
 		"node_modules/ky": {
-			"version": "0.28.7",
-			"resolved": "https://registry.npmjs.org/ky/-/ky-0.28.7.tgz",
-			"integrity": "sha512-a23i6qSr/ep15vdtw/zyEQIDLoUaKDg9Jf04CYl/0ns/wXNYna26zJpI+MeIFaPeDvkrjLPrKtKOiiI3IE53RQ==",
+			"version": "0.30.0",
+			"resolved": "https://registry.npmjs.org/ky/-/ky-0.30.0.tgz",
+			"integrity": "sha512-X/u76z4JtDVq10u1JA5UQfatPxgPaVDMYTrgHyiTpGN2z4TMEJkIHsoSBBSg9SWZEIXTKsi9kHgiQ9o3Y/4yog==",
 			"dev": true,
 			"engines": {
 				"node": ">=12"
@@ -5690,9 +5781,9 @@
 			}
 		},
 		"node_modules/loglevel": {
-			"version": "1.9.1",
-			"resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz",
-			"integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==",
+			"version": "1.9.2",
+			"resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz",
+			"integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==",
 			"dev": true,
 			"engines": {
 				"node": ">= 0.6.0"
@@ -5763,9 +5854,9 @@
 			}
 		},
 		"node_modules/marky": {
-			"version": "1.2.5",
-			"resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz",
-			"integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==",
+			"version": "1.3.0",
+			"resolved": "https://registry.npmjs.org/marky/-/marky-1.3.0.tgz",
+			"integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==",
 			"dev": true
 		},
 		"node_modules/mathml-tag-names": {
@@ -5888,15 +5979,18 @@
 			}
 		},
 		"node_modules/mkdirp": {
-			"version": "1.0.4",
-			"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-			"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
+			"integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
 			"dev": true,
 			"bin": {
-				"mkdirp": "bin/cmd.js"
+				"mkdirp": "dist/cjs/src/bin.js"
 			},
 			"engines": {
 				"node": ">=10"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/isaacs"
 			}
 		},
 		"node_modules/mkdirp-classic": {
@@ -5941,9 +6035,9 @@
 			}
 		},
 		"node_modules/mocha/node_modules/brace-expansion": {
-			"version": "2.0.1",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-			"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+			"version": "2.0.2",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+			"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
 			"dev": true,
 			"dependencies": {
 				"balanced-match": "^1.0.0"
@@ -6205,10 +6299,13 @@
 			}
 		},
 		"node_modules/object-inspect": {
-			"version": "1.13.1",
-			"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
-			"integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+			"version": "1.13.4",
+			"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
+			"integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
 			"dev": true,
+			"engines": {
+				"node": ">= 0.4"
+			},
 			"funding": {
 				"url": "https://github.com/sponsors/ljharb"
 			}
@@ -6884,9 +6981,9 @@
 			"dev": true
 		},
 		"node_modules/pump": {
-			"version": "3.0.0",
-			"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
-			"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+			"version": "3.0.3",
+			"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
+			"integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
 			"dev": true,
 			"dependencies": {
 				"end-of-stream": "^1.1.0",
@@ -7125,9 +7222,9 @@
 			}
 		},
 		"node_modules/readdir-glob/node_modules/brace-expansion": {
-			"version": "2.0.1",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-			"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+			"version": "2.0.2",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+			"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
 			"dev": true,
 			"dependencies": {
 				"balanced-match": "^1.0.0"
@@ -8488,9 +8585,9 @@
 			}
 		},
 		"node_modules/ua-parser-js": {
-			"version": "1.0.37",
-			"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz",
-			"integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==",
+			"version": "1.0.41",
+			"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.41.tgz",
+			"integrity": "sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==",
 			"dev": true,
 			"funding": [
 				{
@@ -8506,6 +8603,9 @@
 					"url": "https://github.com/sponsors/faisalman"
 				}
 			],
+			"bin": {
+				"ua-parser-js": "script/cli.js"
+			},
 			"engines": {
 				"node": "*"
 			}
@@ -8645,9 +8745,9 @@
 			}
 		},
 		"node_modules/validator": {
-			"version": "13.11.0",
-			"resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz",
-			"integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==",
+			"version": "13.15.23",
+			"resolved": "https://registry.npmjs.org/validator/-/validator-13.15.23.tgz",
+			"integrity": "sha512-4yoz1kEWqUjzi5zsPbAS/903QXSYp0UOtHsPpp7p9rHAw/W+dkInskAE386Fat3oKRROwO98d9ZB0G4cObgUyw==",
 			"dev": true,
 			"engines": {
 				"node": ">= 0.10"
@@ -8701,31 +8801,28 @@
 			}
 		},
 		"node_modules/wdio-mediawiki": {
-			"version": "2.3.0",
-			"resolved": "https://registry.npmjs.org/wdio-mediawiki/-/wdio-mediawiki-2.3.0.tgz",
-			"integrity": "sha512-JFiCve+xS1uFBi9es7bOTtmX95Zl+x0TcTUHlMWUZUiWNWoF2bk8l8zMMggoSFF9alF636LzPag8aAnGHDUaHQ==",
+			"version": "2.7.1",
+			"resolved": "https://registry.npmjs.org/wdio-mediawiki/-/wdio-mediawiki-2.7.1.tgz",
+			"integrity": "sha512-GMNnz/TIdASuD0Ufo76P7EkUCAW8Cs1c/T9XAVG2PgBWrw7KDM0oOqRRuXKcuCOKqn6VwNXTDkXwiL4u4AU7Fg==",
 			"dev": true,
 			"dependencies": {
 				"mwbot": "2.1.3"
-			},
-			"engines": {
-				"node": ">=10.0"
 			}
 		},
 		"node_modules/webdriver": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.16.13.tgz",
-			"integrity": "sha512-Vfr952W1uIgDeWHPGzqH43dYLeRSZshh3TzA9ICUkvnC+Q7YziQdv/8xI8tuuyvb7lSr3VsuB2cGzyCRoC/NWw==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.40.0.tgz",
+			"integrity": "sha512-CKi3cDWgNVE/ibcsBfdtA+pQVeZ4oYlecLlwemulVxJdgr4l5bv+nXuoIhnYeVb6aAI4naK772vmWQ0XuRYhDQ==",
 			"dev": true,
 			"dependencies": {
-				"@types/node": "^17.0.4",
-				"@wdio/config": "7.16.13",
-				"@wdio/logger": "7.16.0",
-				"@wdio/protocols": "7.16.7",
-				"@wdio/types": "7.16.13",
-				"@wdio/utils": "7.16.13",
+				"@types/node": "^18.0.0",
+				"@wdio/config": "7.40.0",
+				"@wdio/logger": "7.26.0",
+				"@wdio/protocols": "7.27.0",
+				"@wdio/types": "7.40.0",
+				"@wdio/utils": "7.40.0",
 				"got": "^11.0.2",
-				"ky": "^0.28.5",
+				"ky": "0.30.0",
 				"lodash.merge": "^4.6.1"
 			},
 			"engines": {
@@ -8733,44 +8830,67 @@
 			}
 		},
 		"node_modules/webdriverio": {
-			"version": "7.16.13",
-			"resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.16.13.tgz",
-			"integrity": "sha512-jl1VRZYL1+cPeG6klskKX7mCEBWNQWDFaNtaIl5pwWgtKWPau6fCzKntSARzfNV8+hKJKwJ2mZn5Nsxfw28Oeg==",
+			"version": "7.40.0",
+			"resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.40.0.tgz",
+			"integrity": "sha512-UswBOjpWwk7ziGi9beZGX/XFrp4m1Ws0ni5HI9mzAkOlpKKKWhnX6i95pWQV6sPF4Urv4RJf8WXayHhTbzXzdA==",
 			"dev": true,
 			"dependencies": {
 				"@types/aria-query": "^5.0.0",
-				"@types/node": "^17.0.4",
-				"@wdio/config": "7.16.13",
-				"@wdio/logger": "7.16.0",
-				"@wdio/protocols": "7.16.7",
-				"@wdio/repl": "7.16.13",
-				"@wdio/types": "7.16.13",
-				"@wdio/utils": "7.16.13",
+				"@types/node": "^18.0.0",
+				"@wdio/config": "7.40.0",
+				"@wdio/logger": "7.26.0",
+				"@wdio/protocols": "7.27.0",
+				"@wdio/repl": "7.40.0",
+				"@wdio/types": "7.40.0",
+				"@wdio/utils": "7.40.0",
 				"archiver": "^5.0.0",
-				"aria-query": "^5.0.0",
+				"aria-query": "^5.2.1",
 				"css-shorthand-properties": "^1.1.1",
 				"css-value": "^0.0.1",
-				"devtools": "7.16.13",
-				"devtools-protocol": "^0.0.953906",
-				"fs-extra": "^10.0.0",
-				"get-port": "^5.1.1",
+				"devtools": "7.40.0",
+				"devtools-protocol": "^0.0.1260888",
+				"fs-extra": "^11.1.1",
 				"grapheme-splitter": "^1.0.2",
 				"lodash.clonedeep": "^4.5.0",
 				"lodash.isobject": "^3.0.2",
 				"lodash.isplainobject": "^4.0.6",
 				"lodash.zip": "^4.2.0",
-				"minimatch": "^3.0.4",
-				"puppeteer-core": "^13.0.0",
+				"minimatch": "^6.0.4",
+				"puppeteer-core": "^13.1.3",
 				"query-selector-shadow-dom": "^1.0.0",
 				"resq": "^1.9.1",
 				"rgb2hex": "0.2.5",
 				"serialize-error": "^8.0.0",
-				"webdriver": "7.16.13"
+				"webdriver": "7.40.0"
 			},
 			"engines": {
 				"node": ">=12.0.0"
 			}
 		},
+		"node_modules/webdriverio/node_modules/brace-expansion": {
+			"version": "2.0.2",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+			"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+			"dev": true,
+			"dependencies": {
+				"balanced-match": "^1.0.0"
+			}
+		},
+		"node_modules/webdriverio/node_modules/minimatch": {
+			"version": "6.2.0",
+			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz",
+			"integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==",
+			"dev": true,
+			"dependencies": {
+				"brace-expansion": "^2.0.1"
+			},
+			"engines": {
+				"node": ">=10"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/isaacs"
+			}
+		},
 		"node_modules/webidl-conversions": {
 			"version": "3.0.1",
 			"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
diff --git a/package.json b/package.json
index 6320e68..931ef50 100644
--- a/package.json
+++ b/package.json
@@ -9,11 +9,11 @@
 	},
 	"devDependencies": {
 		"@prettier/plugin-xml": "^2.2.0",
-		"@wdio/cli": "7.16.13",
-		"@wdio/junit-reporter": "7.16.13",
-		"@wdio/local-runner": "7.16.13",
-		"@wdio/mocha-framework": "7.33.0",
-		"@wdio/spec-reporter": "7.16.13",
+		"@wdio/cli": "7.40.0",
+		"@wdio/junit-reporter": "7.40.0",
+		"@wdio/local-runner": "7.40.0",
+		"@wdio/mocha-framework": "7.40.0",
+		"@wdio/spec-reporter": "7.40.0",
 		"eslint-config-wikimedia": "0.28.2",
 		"grunt": "1.6.1",
 		"grunt-banana-checker": "0.13.0",
@@ -21,6 +21,6 @@
 		"grunt-stylelint": "0.20.1",
 		"stylelint-config-wikimedia": "0.18.0",
 		"svgo": "3.2.0",
-		"wdio-mediawiki": "2.3.0"
+		"wdio-mediawiki": "2.7.1"
 	}
 }
-- 
2.47.3


--- end ---

composer dependencies

Development dependencies

npm dependencies

Development dependencies

Logs

Source code is licensed under the AGPL.