mediawiki/extensions/TemplateWizard: main (log #2328565)

sourcepatches

This run took 73 seconds.

From fcd55115e03bd6eab14f0cb2262e2d6e9a226d7b Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Thu, 15 Jan 2026 11:51:44 +0000
Subject: [PATCH] build: Updating npm dependencies
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* @wdio/junit-reporter: 9.15.0 → 9.21.0
* @wdio/local-runner: 9.15.0 → 9.23.0
* @wdio/spec-reporter: 9.15.0 → 9.20.0
* undici: 6.21.3, 7.10.0 → 6.23.0, 7.18.2
  * https://github.com/advisories/GHSA-g9mf-h72j-4rw9

Change-Id: Id3e2ed1207b1d5e92b6930bfa5c8aca9e034b9dd
---
 package-lock.json | 1874 ++++++++++++++++++++++++++++++++++++---------
 package.json      |    6 +-
 2 files changed, 1508 insertions(+), 372 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 7e5aac2..c2c2bcb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,10 +7,10 @@
 			"name": "TemplateWizard",
 			"devDependencies": {
 				"@wdio/cli": "9.18.4",
-				"@wdio/junit-reporter": "9.15.0",
-				"@wdio/local-runner": "9.15.0",
+				"@wdio/junit-reporter": "9.21.0",
+				"@wdio/local-runner": "9.23.0",
 				"@wdio/mocha-framework": "9.15.0",
-				"@wdio/spec-reporter": "9.15.0",
+				"@wdio/spec-reporter": "9.20.0",
 				"eslint-config-wikimedia": "0.32.3",
 				"grunt": "1.6.1",
 				"grunt-banana-checker": "0.13.0",
@@ -1951,24 +1951,6 @@
 				"url": "https://github.com/chalk/strip-ansi?sponsor=1"
 			}
 		},
-		"node_modules/@wdio/cli/node_modules/@wdio/protocols": {
-			"version": "9.16.2",
-			"resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.16.2.tgz",
-			"integrity": "sha512-h3k97/lzmyw5MowqceAuY3HX/wGJojXHkiPXA3WlhGPCaa2h4+GovV2nJtRvknCKsE7UHA1xB5SWeI8MzloBew==",
-			"dev": true
-		},
-		"node_modules/@wdio/cli/node_modules/@wdio/repl": {
-			"version": "9.16.2",
-			"resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.16.2.tgz",
-			"integrity": "sha512-FLTF0VL6+o5BSTCO7yLSXocm3kUnu31zYwzdsz4n9s5YWt83sCtzGZlZpt7TaTzb3jVUfxuHNQDTb8UMkCu0lQ==",
-			"dev": true,
-			"dependencies": {
-				"@types/node": "^20.1.0"
-			},
-			"engines": {
-				"node": ">=18.20.0"
-			}
-		},
 		"node_modules/@wdio/cli/node_modules/@wdio/types": {
 			"version": "9.16.2",
 			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.16.2.tgz",
@@ -2088,12 +2070,6 @@
 				"url": "https://github.com/sponsors/isaacs"
 			}
 		},
-		"node_modules/@wdio/cli/node_modules/htmlfy": {
-			"version": "0.8.1",
-			"resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.8.1.tgz",
-			"integrity": "sha512-xWROBw9+MEGwxpotll0h672KCaLrKKiCYzsyN8ZgL9cQbVumFnyvsk2JqiB9ELAV1GLj1GG/jxZUjV9OZZi/yQ==",
-			"dev": true
-		},
 		"node_modules/@wdio/cli/node_modules/is-plain-obj": {
 			"version": "4.1.0",
 			"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
@@ -2134,21 +2110,6 @@
 				"url": "https://paulmillr.com/funding/"
 			}
 		},
-		"node_modules/@wdio/cli/node_modules/serialize-error": {
-			"version": "12.0.0",
-			"resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-12.0.0.tgz",
-			"integrity": "sha512-ZYkZLAvKTKQXWuh5XpBw7CdbSzagarX39WyZ2H07CDLC5/KfsRGlIXV8d4+tfqX1M7916mRqR1QfNHSij+c9Pw==",
-			"dev": true,
-			"dependencies": {
-				"type-fest": "^4.31.0"
-			},
-			"engines": {
-				"node": ">=18"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
 		"node_modules/@wdio/cli/node_modules/webdriver": {
 			"version": "9.18.0",
 			"resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.18.0.tgz",
@@ -2243,14 +2204,14 @@
 			}
 		},
 		"node_modules/@wdio/config": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.15.0.tgz",
-			"integrity": "sha512-IQzSZx2Y0KdAVWHSdcBLkuUjCmYtOnc1oDY7Psi814wDR7dEPVOuKgMo8ZZ0P1yhioMzqvy5tBemYSzj7CrFTA==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.23.0.tgz",
+			"integrity": "sha512-hhtngUG2uCxYmScSEor+k22EVlsTW3ARXgke8NPVeQA4p1+GC2CvRZi4P7nmhRTZubgLrENYYsveFcYR+1UXhQ==",
 			"dev": true,
 			"dependencies": {
-				"@wdio/logger": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"@wdio/utils": "9.15.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/types": "9.20.0",
+				"@wdio/utils": "9.23.0",
 				"deepmerge-ts": "^7.0.3",
 				"glob": "^10.2.2",
 				"import-meta-resolve": "^4.0.0"
@@ -2259,6 +2220,71 @@
 				"node": ">=18.20.0"
 			}
 		},
+		"node_modules/@wdio/config/node_modules/@wdio/logger": {
+			"version": "9.18.0",
+			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+			"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+			"dev": true,
+			"dependencies": {
+				"chalk": "^5.1.2",
+				"loglevel": "^1.6.0",
+				"loglevel-plugin-prefix": "^0.8.4",
+				"safe-regex2": "^5.0.0",
+				"strip-ansi": "^7.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/@wdio/config/node_modules/@wdio/types": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+			"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "^20.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/@wdio/config/node_modules/@wdio/utils": {
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.23.0.tgz",
+			"integrity": "sha512-WhXuVSxEvPw/i34bL1aCHAOi+4g29kRkIMyBShNSxH+Shxh2G91RJYsXm4IAiPMGcC4H6G8T2VcbZ32qnGPm5Q==",
+			"dev": true,
+			"dependencies": {
+				"@puppeteer/browsers": "^2.2.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/types": "9.20.0",
+				"decamelize": "^6.0.0",
+				"deepmerge-ts": "^7.0.3",
+				"edgedriver": "^6.1.2",
+				"geckodriver": "^6.1.0",
+				"get-port": "^7.0.0",
+				"import-meta-resolve": "^4.0.0",
+				"locate-app": "^2.2.24",
+				"mitt": "^3.0.1",
+				"safaridriver": "^1.0.0",
+				"split2": "^4.2.0",
+				"wait-port": "^1.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/@wdio/config/node_modules/ansi-regex": {
+			"version": "6.2.2",
+			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+			"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+			"dev": true,
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/ansi-regex?sponsor=1"
+			}
+		},
 		"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",
@@ -2268,6 +2294,39 @@
 				"balanced-match": "^1.0.0"
 			}
 		},
+		"node_modules/@wdio/config/node_modules/chalk": {
+			"version": "5.6.2",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+			"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+			"dev": true,
+			"engines": {
+				"node": "^12.17.0 || ^14.13 || >=16.0.0"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/chalk?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/config/node_modules/geckodriver": {
+			"version": "6.1.0",
+			"resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz",
+			"integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==",
+			"dev": true,
+			"hasInstallScript": true,
+			"dependencies": {
+				"@wdio/logger": "^9.18.0",
+				"@zip.js/zip.js": "^2.8.11",
+				"decamelize": "^6.0.1",
+				"http-proxy-agent": "^7.0.2",
+				"https-proxy-agent": "^7.0.6",
+				"modern-tar": "^0.7.2"
+			},
+			"bin": {
+				"geckodriver": "bin/geckodriver.js"
+			},
+			"engines": {
+				"node": ">=20.0.0"
+			}
+		},
 		"node_modules/@wdio/config/node_modules/glob": {
 			"version": "10.5.0",
 			"resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
@@ -2303,24 +2362,51 @@
 				"url": "https://github.com/sponsors/isaacs"
 			}
 		},
+		"node_modules/@wdio/config/node_modules/strip-ansi": {
+			"version": "7.1.2",
+			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+			"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+			"dev": true,
+			"dependencies": {
+				"ansi-regex": "^6.0.1"
+			},
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/strip-ansi?sponsor=1"
+			}
+		},
 		"node_modules/@wdio/dot-reporter": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/dot-reporter/-/dot-reporter-9.15.0.tgz",
-			"integrity": "sha512-dga+nwqZtsruAnERYGXa41O/APPpG6IClXA0gk35zKe24aMez/XgU7ZDHVJ3JYGmr7XTSEGiWXudvthaX/EbSg==",
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/dot-reporter/-/dot-reporter-9.20.0.tgz",
+			"integrity": "sha512-lRhihDQ56dApJcKOIEkVHThl8t2e5h7f3FW3JVmMLcGgbbkkLgXqVWPpbEGJcLld3wL4CipAPojVE/YEWp80hw==",
 			"dev": true,
 			"dependencies": {
-				"@wdio/reporter": "9.15.0",
-				"@wdio/types": "9.15.0",
+				"@wdio/reporter": "9.20.0",
+				"@wdio/types": "9.20.0",
 				"chalk": "^5.0.1"
 			},
 			"engines": {
 				"node": ">=18.20.0"
 			}
 		},
+		"node_modules/@wdio/dot-reporter/node_modules/@wdio/types": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+			"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "^20.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
 		"node_modules/@wdio/dot-reporter/node_modules/chalk": {
-			"version": "5.4.1",
-			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
-			"integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
+			"version": "5.6.2",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+			"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
 			"dev": true,
 			"engines": {
 				"node": "^12.17.0 || ^14.13 || >=16.0.0"
@@ -2330,26 +2416,34 @@
 			}
 		},
 		"node_modules/@wdio/globals": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.15.0.tgz",
-			"integrity": "sha512-4bEnqoHr676x4hyq7yOp+V+wVgclisNeOwMyLPEIJOv+cAAxESzIOdFyiQcbAu7gq+HUIuoWMZGlV9UgDnXh1w==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.23.0.tgz",
+			"integrity": "sha512-OmwPKV8c5ecLqo+EkytN7oUeYfNmRI4uOXGIR1ybP7AK5Zz+l9R0dGfoadEuwi1aZXAL0vwuhtq3p0OL3dfqHQ==",
 			"dev": true,
 			"engines": {
 				"node": ">=18.20.0"
 			},
-			"optionalDependencies": {
-				"expect-webdriverio": "^5.1.0",
-				"webdriverio": "9.15.0"
+			"peerDependencies": {
+				"expect-webdriverio": "^5.3.4",
+				"webdriverio": "^9.0.0"
+			},
+			"peerDependenciesMeta": {
+				"expect-webdriverio": {
+					"optional": false
+				},
+				"webdriverio": {
+					"optional": false
+				}
 			}
 		},
 		"node_modules/@wdio/junit-reporter": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/junit-reporter/-/junit-reporter-9.15.0.tgz",
-			"integrity": "sha512-ZulPH628zp/V1IolHtMkLPEmlWeoAa4Go5hAe46wyfB879PHD9bm5RUXZYJvVAphlvvSljpXd4YOqINN0hWVuQ==",
+			"version": "9.21.0",
+			"resolved": "https://registry.npmjs.org/@wdio/junit-reporter/-/junit-reporter-9.21.0.tgz",
+			"integrity": "sha512-1vuym8VuTqhJMe3Xb71PLxmTUxo9+fcXnzZcqiYdQtKdN3nibKkuctRU8oTAMGQqLY2VPtHd4MbUGmd+CVlaCg==",
 			"dev": true,
 			"dependencies": {
-				"@wdio/reporter": "9.15.0",
-				"@wdio/types": "9.15.0",
+				"@wdio/reporter": "9.20.0",
+				"@wdio/types": "9.20.0",
 				"json-stringify-safe": "^5.0.1",
 				"junit-report-builder": "^5.1.1"
 			},
@@ -2357,18 +2451,32 @@
 				"node": ">=18.20.0"
 			}
 		},
+		"node_modules/@wdio/junit-reporter/node_modules/@wdio/types": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+			"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "^20.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
 		"node_modules/@wdio/local-runner": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-9.15.0.tgz",
-			"integrity": "sha512-SbmQpzXSxaLvvjDAJpHvfRq5Df9nfdD3LxOM/L4QytI09rK3Y94Re2QEFIk1MyFmUAuoIgJ99L4TSRw9hhrIbg==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-9.23.0.tgz",
+			"integrity": "sha512-kBWIqBDbCAJuxENl4t1qiCf8mivHN++cNdgsmlkP8nG7KJ8ebCseqsBHTrvx/YAqRPZIBD50cN6xsB6MZTmUfg==",
 			"dev": true,
 			"dependencies": {
 				"@types/node": "^20.1.0",
-				"@wdio/logger": "9.15.0",
-				"@wdio/repl": "9.4.4",
-				"@wdio/runner": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"async-exit-hook": "^2.0.1",
+				"@wdio/logger": "9.18.0",
+				"@wdio/repl": "9.16.2",
+				"@wdio/runner": "9.23.0",
+				"@wdio/types": "9.20.0",
+				"@wdio/xvfb": "9.20.0",
+				"exit-hook": "^4.0.0",
+				"expect-webdriverio": "^5.3.4",
 				"split2": "^4.1.0",
 				"stream-buffers": "^3.0.2"
 			},
@@ -2376,6 +2484,73 @@
 				"node": ">=18.20.0"
 			}
 		},
+		"node_modules/@wdio/local-runner/node_modules/@wdio/logger": {
+			"version": "9.18.0",
+			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+			"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+			"dev": true,
+			"dependencies": {
+				"chalk": "^5.1.2",
+				"loglevel": "^1.6.0",
+				"loglevel-plugin-prefix": "^0.8.4",
+				"safe-regex2": "^5.0.0",
+				"strip-ansi": "^7.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/@wdio/local-runner/node_modules/@wdio/types": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+			"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "^20.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/@wdio/local-runner/node_modules/ansi-regex": {
+			"version": "6.2.2",
+			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+			"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+			"dev": true,
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/ansi-regex?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/local-runner/node_modules/chalk": {
+			"version": "5.6.2",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+			"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+			"dev": true,
+			"engines": {
+				"node": "^12.17.0 || ^14.13 || >=16.0.0"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/chalk?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/local-runner/node_modules/strip-ansi": {
+			"version": "7.1.2",
+			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+			"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+			"dev": true,
+			"dependencies": {
+				"ansi-regex": "^6.0.1"
+			},
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/strip-ansi?sponsor=1"
+			}
+		},
 		"node_modules/@wdio/logger": {
 			"version": "9.15.0",
 			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.15.0.tgz",
@@ -2448,15 +2623,15 @@
 			}
 		},
 		"node_modules/@wdio/protocols": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.15.0.tgz",
-			"integrity": "sha512-5O7bwiG7t8nmSVOx888YryO/9AQgQ7p/Ecd9rS13UyDQL169HmVKXP0vvJKGH3X+oeE92U1wVrwrIl4Xx3BQ6Q==",
+			"version": "9.16.2",
+			"resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.16.2.tgz",
+			"integrity": "sha512-h3k97/lzmyw5MowqceAuY3HX/wGJojXHkiPXA3WlhGPCaa2h4+GovV2nJtRvknCKsE7UHA1xB5SWeI8MzloBew==",
 			"dev": true
 		},
 		"node_modules/@wdio/repl": {
-			"version": "9.4.4",
-			"resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.4.4.tgz",
-			"integrity": "sha512-kchPRhoG/pCn4KhHGiL/ocNhdpR8OkD2e6sANlSUZ4TGBVi86YSIEjc2yXUwLacHknC/EnQk/SFnqd4MsNjGGg==",
+			"version": "9.16.2",
+			"resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.16.2.tgz",
+			"integrity": "sha512-FLTF0VL6+o5BSTCO7yLSXocm3kUnu31zYwzdsz4n9s5YWt83sCtzGZlZpt7TaTzb3jVUfxuHNQDTb8UMkCu0lQ==",
 			"dev": true,
 			"dependencies": {
 				"@types/node": "^20.1.0"
@@ -2466,61 +2641,252 @@
 			}
 		},
 		"node_modules/@wdio/reporter": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-9.15.0.tgz",
-			"integrity": "sha512-p120dZr+fUQ7HE54L/RDG/7BfE/LkFORyNaZ/G2KE6gEr8gIyL3sW9kVbTZtYOBW68KgU+CC7x4yxfZCXfRUuw==",
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-9.20.0.tgz",
+			"integrity": "sha512-HjKJzm8o0MCcnwGVGprzaCAyau0OB8mWHwH1ZI/ka+z1nmVBr2tsr7H53SdHsGIhAg/XuZObobqdzeVF63ApeA==",
 			"dev": true,
 			"dependencies": {
 				"@types/node": "^20.1.0",
-				"@wdio/logger": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"diff": "^7.0.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/types": "9.20.0",
+				"diff": "^8.0.2",
 				"object-inspect": "^1.12.0"
 			},
 			"engines": {
 				"node": ">=18.20.0"
 			}
 		},
-		"node_modules/@wdio/reporter/node_modules/diff": {
-			"version": "7.0.0",
-			"resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz",
-			"integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==",
+		"node_modules/@wdio/reporter/node_modules/@wdio/logger": {
+			"version": "9.18.0",
+			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+			"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
 			"dev": true,
+			"dependencies": {
+				"chalk": "^5.1.2",
+				"loglevel": "^1.6.0",
+				"loglevel-plugin-prefix": "^0.8.4",
+				"safe-regex2": "^5.0.0",
+				"strip-ansi": "^7.1.0"
+			},
 			"engines": {
-				"node": ">=0.3.1"
+				"node": ">=18.20.0"
 			}
 		},
-		"node_modules/@wdio/runner": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-9.15.0.tgz",
-			"integrity": "sha512-KHDM4L02Aqmmsi83Yum2c026eNqpQysrMPnHiSzZm0+wMmDNLIMwq6xAj/vlBHDiVgrSKho3LlMz7mNyagkkgw==",
+		"node_modules/@wdio/reporter/node_modules/@wdio/types": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+			"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
 			"dev": true,
 			"dependencies": {
-				"@types/node": "^20.11.28",
-				"@wdio/config": "9.15.0",
-				"@wdio/dot-reporter": "9.15.0",
-				"@wdio/globals": "9.15.0",
-				"@wdio/logger": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"@wdio/utils": "9.15.0",
-				"deepmerge-ts": "^7.0.3",
-				"expect-webdriverio": "^5.1.0",
-				"webdriver": "9.15.0",
-				"webdriverio": "9.15.0"
+				"@types/node": "^20.1.0"
 			},
 			"engines": {
 				"node": ">=18.20.0"
 			}
 		},
-		"node_modules/@wdio/spec-reporter": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-9.15.0.tgz",
-			"integrity": "sha512-xu8uVGyk2HEAvdzPmspxTJMJc3UxGzdKjqNIUVpCQpVYkKOd6zm1RH2Cpdb7gsx2j/+ddYZEVhftFGR9YOQF6g==",
+		"node_modules/@wdio/reporter/node_modules/ansi-regex": {
+			"version": "6.2.2",
+			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+			"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
 			"dev": true,
-			"dependencies": {
-				"@wdio/reporter": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"chalk": "^5.1.2",
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/ansi-regex?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/reporter/node_modules/chalk": {
+			"version": "5.6.2",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+			"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+			"dev": true,
+			"engines": {
+				"node": "^12.17.0 || ^14.13 || >=16.0.0"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/chalk?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/reporter/node_modules/diff": {
+			"version": "8.0.3",
+			"resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz",
+			"integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==",
+			"dev": true,
+			"engines": {
+				"node": ">=0.3.1"
+			}
+		},
+		"node_modules/@wdio/reporter/node_modules/strip-ansi": {
+			"version": "7.1.2",
+			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+			"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+			"dev": true,
+			"dependencies": {
+				"ansi-regex": "^6.0.1"
+			},
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/strip-ansi?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/runner": {
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-9.23.0.tgz",
+			"integrity": "sha512-a2afdICcEzzMjSPCwY3g9Hl2kWXXjBFyWv5DxvjaJOmQygnKzz9olFOrpVotgLKXE9ZLuJ4EP98or69sFIeLBg==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "^20.11.28",
+				"@wdio/config": "9.23.0",
+				"@wdio/dot-reporter": "9.20.0",
+				"@wdio/globals": "9.23.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/types": "9.20.0",
+				"@wdio/utils": "9.23.0",
+				"deepmerge-ts": "^7.0.3",
+				"webdriver": "9.23.0",
+				"webdriverio": "9.23.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			},
+			"peerDependencies": {
+				"expect-webdriverio": "^5.3.4",
+				"webdriverio": "^9.0.0"
+			},
+			"peerDependenciesMeta": {
+				"expect-webdriverio": {
+					"optional": false
+				},
+				"webdriverio": {
+					"optional": false
+				}
+			}
+		},
+		"node_modules/@wdio/runner/node_modules/@wdio/logger": {
+			"version": "9.18.0",
+			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+			"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+			"dev": true,
+			"dependencies": {
+				"chalk": "^5.1.2",
+				"loglevel": "^1.6.0",
+				"loglevel-plugin-prefix": "^0.8.4",
+				"safe-regex2": "^5.0.0",
+				"strip-ansi": "^7.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/@wdio/runner/node_modules/@wdio/types": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+			"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "^20.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/@wdio/runner/node_modules/@wdio/utils": {
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.23.0.tgz",
+			"integrity": "sha512-WhXuVSxEvPw/i34bL1aCHAOi+4g29kRkIMyBShNSxH+Shxh2G91RJYsXm4IAiPMGcC4H6G8T2VcbZ32qnGPm5Q==",
+			"dev": true,
+			"dependencies": {
+				"@puppeteer/browsers": "^2.2.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/types": "9.20.0",
+				"decamelize": "^6.0.0",
+				"deepmerge-ts": "^7.0.3",
+				"edgedriver": "^6.1.2",
+				"geckodriver": "^6.1.0",
+				"get-port": "^7.0.0",
+				"import-meta-resolve": "^4.0.0",
+				"locate-app": "^2.2.24",
+				"mitt": "^3.0.1",
+				"safaridriver": "^1.0.0",
+				"split2": "^4.2.0",
+				"wait-port": "^1.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/@wdio/runner/node_modules/ansi-regex": {
+			"version": "6.2.2",
+			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+			"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+			"dev": true,
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/ansi-regex?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/runner/node_modules/chalk": {
+			"version": "5.6.2",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+			"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+			"dev": true,
+			"engines": {
+				"node": "^12.17.0 || ^14.13 || >=16.0.0"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/chalk?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/runner/node_modules/geckodriver": {
+			"version": "6.1.0",
+			"resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz",
+			"integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==",
+			"dev": true,
+			"hasInstallScript": true,
+			"dependencies": {
+				"@wdio/logger": "^9.18.0",
+				"@zip.js/zip.js": "^2.8.11",
+				"decamelize": "^6.0.1",
+				"http-proxy-agent": "^7.0.2",
+				"https-proxy-agent": "^7.0.6",
+				"modern-tar": "^0.7.2"
+			},
+			"bin": {
+				"geckodriver": "bin/geckodriver.js"
+			},
+			"engines": {
+				"node": ">=20.0.0"
+			}
+		},
+		"node_modules/@wdio/runner/node_modules/strip-ansi": {
+			"version": "7.1.2",
+			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+			"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+			"dev": true,
+			"dependencies": {
+				"ansi-regex": "^6.0.1"
+			},
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/strip-ansi?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/spec-reporter": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-9.20.0.tgz",
+			"integrity": "sha512-YHj3kF86RoOVVR+k3eb+e/Fki6Mq1FIrJQ380Cz5SSWbIc9gL8HXG3ydReldY6/80KLFOuHn9ZHvDHrCIXRjiw==",
+			"dev": true,
+			"dependencies": {
+				"@wdio/reporter": "9.20.0",
+				"@wdio/types": "9.20.0",
+				"chalk": "^5.1.2",
 				"easy-table": "^1.2.0",
 				"pretty-ms": "^9.0.0"
 			},
@@ -2528,6 +2894,18 @@
 				"node": ">=18.20.0"
 			}
 		},
+		"node_modules/@wdio/spec-reporter/node_modules/@wdio/types": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+			"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "^20.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
 		"node_modules/@wdio/spec-reporter/node_modules/chalk": {
 			"version": "5.4.1",
 			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
@@ -2576,15 +2954,82 @@
 				"node": ">=18.20.0"
 			}
 		},
+		"node_modules/@wdio/xvfb": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/xvfb/-/xvfb-9.20.0.tgz",
+			"integrity": "sha512-shllZH9CsLiZqTXkqBTJrwi6k/ajBE7/78fQgvafMUIQU1Hpb2RdsmydKfPFZ5NDoA+LNm67PD2cPkvkXy4pSw==",
+			"dev": true,
+			"dependencies": {
+				"@wdio/logger": "9.18.0"
+			},
+			"engines": {
+				"node": ">=18"
+			}
+		},
+		"node_modules/@wdio/xvfb/node_modules/@wdio/logger": {
+			"version": "9.18.0",
+			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+			"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+			"dev": true,
+			"dependencies": {
+				"chalk": "^5.1.2",
+				"loglevel": "^1.6.0",
+				"loglevel-plugin-prefix": "^0.8.4",
+				"safe-regex2": "^5.0.0",
+				"strip-ansi": "^7.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/@wdio/xvfb/node_modules/ansi-regex": {
+			"version": "6.2.2",
+			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+			"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+			"dev": true,
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/ansi-regex?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/xvfb/node_modules/chalk": {
+			"version": "5.6.2",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+			"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+			"dev": true,
+			"engines": {
+				"node": "^12.17.0 || ^14.13 || >=16.0.0"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/chalk?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/xvfb/node_modules/strip-ansi": {
+			"version": "7.1.2",
+			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+			"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+			"dev": true,
+			"dependencies": {
+				"ansi-regex": "^6.0.1"
+			},
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/strip-ansi?sponsor=1"
+			}
+		},
 		"node_modules/@zip.js/zip.js": {
-			"version": "2.7.62",
-			"resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.62.tgz",
-			"integrity": "sha512-OaLvZ8j4gCkLn048ypkZu29KX30r8/OfFF2w4Jo5WXFr+J04J+lzJ5TKZBVgFXhlvSkqNFQdfnY1Q8TMTCyBVA==",
+			"version": "2.8.15",
+			"resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.8.15.tgz",
+			"integrity": "sha512-HZKJLFe4eGVgCe9J87PnijY7T1Zn638bEHS+Fm/ygHZozRpefzWcOYfPaP52S8pqk9g4xN3+LzMDl3Lv9dLglA==",
 			"dev": true,
 			"engines": {
 				"bun": ">=0.7.0",
 				"deno": ">=1.0.0",
-				"node": ">=16.5.0"
+				"node": ">=18.0.0"
 			}
 		},
 		"node_modules/abbrev": {
@@ -3476,9 +3921,9 @@
 			}
 		},
 		"node_modules/cheerio/node_modules/undici": {
-			"version": "7.10.0",
-			"resolved": "https://registry.npmjs.org/undici/-/undici-7.10.0.tgz",
-			"integrity": "sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==",
+			"version": "7.18.2",
+			"resolved": "https://registry.npmjs.org/undici/-/undici-7.18.2.tgz",
+			"integrity": "sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==",
 			"dev": true,
 			"engines": {
 				"node": ">=20.18.1"
@@ -4149,9 +4594,9 @@
 			}
 		},
 		"node_modules/decamelize": {
-			"version": "6.0.0",
-			"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz",
-			"integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==",
+			"version": "6.0.1",
+			"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.1.tgz",
+			"integrity": "sha512-G7Cqgaelq68XHJNGlZ7lrNQyhZGsFqpwtGFexqUv4IQdjKoSYF7ipZ9UuTJZUSQXFj/XaoBLuEVIVqr8EJngEQ==",
 			"dev": true,
 			"engines": {
 				"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
@@ -5585,6 +6030,18 @@
 				"node": ">= 0.8.0"
 			}
 		},
+		"node_modules/exit-hook": {
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-4.0.0.tgz",
+			"integrity": "sha512-Fqs7ChZm72y40wKjOFXBKg7nJZvQJmewP5/7LtePDdnah/+FH9Hp5sgMujSCMPXlxOAW2//1jrW9pnsY7o20vQ==",
+			"dev": true,
+			"engines": {
+				"node": ">=18"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/sindresorhus"
+			}
+		},
 		"node_modules/expand-tilde": {
 			"version": "2.0.2",
 			"resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
@@ -6729,9 +7186,9 @@
 			}
 		},
 		"node_modules/htmlfy": {
-			"version": "0.6.7",
-			"resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.6.7.tgz",
-			"integrity": "sha512-r8hRd+oIM10lufovN+zr3VKPTYEIvIwqXGucidh2XQufmiw6sbUXFUFjWlfjo3AnefIDTyzykVzQ8IUVuT1peQ==",
+			"version": "0.8.1",
+			"resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.8.1.tgz",
+			"integrity": "sha512-xWROBw9+MEGwxpotll0h672KCaLrKKiCYzsyN8ZgL9cQbVumFnyvsk2JqiB9ELAV1GLj1GG/jxZUjV9OZZi/yQ==",
 			"dev": true
 		},
 		"node_modules/htmlparser2": {
@@ -8006,6 +8463,15 @@
 				"url": "https://github.com/chalk/supports-color?sponsor=1"
 			}
 		},
+		"node_modules/modern-tar": {
+			"version": "0.7.3",
+			"resolved": "https://registry.npmjs.org/modern-tar/-/modern-tar-0.7.3.tgz",
+			"integrity": "sha512-4W79zekKGyYU4JXVmB78DOscMFaJth2gGhgfTl2alWE4rNe3nf4N2pqenQ0rEtIewrnD79M687Ouba3YGTLOvg==",
+			"dev": true,
+			"engines": {
+				"node": ">=18.0.0"
+			}
+		},
 		"node_modules/ms": {
 			"version": "2.1.3",
 			"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -9599,27 +10065,15 @@
 			}
 		},
 		"node_modules/serialize-error": {
-			"version": "11.0.3",
-			"resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-11.0.3.tgz",
-			"integrity": "sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g==",
+			"version": "12.0.0",
+			"resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-12.0.0.tgz",
+			"integrity": "sha512-ZYkZLAvKTKQXWuh5XpBw7CdbSzagarX39WyZ2H07CDLC5/KfsRGlIXV8d4+tfqX1M7916mRqR1QfNHSij+c9Pw==",
 			"dev": true,
 			"dependencies": {
-				"type-fest": "^2.12.2"
-			},
-			"engines": {
-				"node": ">=14.16"
+				"type-fest": "^4.31.0"
 			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
-		"node_modules/serialize-error/node_modules/type-fest": {
-			"version": "2.19.0",
-			"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
-			"integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
-			"dev": true,
 			"engines": {
-				"node": ">=12.20"
+				"node": ">=18"
 			},
 			"funding": {
 				"url": "https://github.com/sponsors/sindresorhus"
@@ -10639,9 +11093,9 @@
 			}
 		},
 		"node_modules/undici": {
-			"version": "6.21.3",
-			"resolved": "https://registry.npmjs.org/undici/-/undici-6.21.3.tgz",
-			"integrity": "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==",
+			"version": "6.23.0",
+			"resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz",
+			"integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==",
 			"dev": true,
 			"engines": {
 				"node": ">=18.17"
@@ -10841,47 +11295,161 @@
 			}
 		},
 		"node_modules/webdriver": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.15.0.tgz",
-			"integrity": "sha512-JCW5xvhZtL6kjbckdePgVYMOlvWbh22F1VFkIf9pw3prwXI2EHED5Eq/nfDnNfHiqr0AfFKWmIDPziSafrVv4Q==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.23.0.tgz",
+			"integrity": "sha512-XkZOhjoBOY7maKI3BhDF2rNiDne4wBD6Gw6VUnt4X9b7j9NtfzcCrThBlT0hnA8W77bWNtMRCSpw9Ajy08HqKg==",
 			"dev": true,
 			"dependencies": {
 				"@types/node": "^20.1.0",
 				"@types/ws": "^8.5.3",
-				"@wdio/config": "9.15.0",
-				"@wdio/logger": "9.15.0",
-				"@wdio/protocols": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"@wdio/utils": "9.15.0",
+				"@wdio/config": "9.23.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/protocols": "9.16.2",
+				"@wdio/types": "9.20.0",
+				"@wdio/utils": "9.23.0",
 				"deepmerge-ts": "^7.0.3",
-				"undici": "^6.20.1",
+				"https-proxy-agent": "^7.0.6",
+				"undici": "^6.21.3",
 				"ws": "^8.8.0"
 			},
 			"engines": {
 				"node": ">=18.20.0"
 			}
 		},
-		"node_modules/webdriverio": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.15.0.tgz",
-			"integrity": "sha512-910g6ktwXdAKGyhgCPGw9BzIKOEBBYMFN1bLwC3bW/3mFlxGHO/n70c7Sg9hrsu9VWTzv6m+1Clf27B9uz4a/Q==",
+		"node_modules/webdriver/node_modules/@wdio/logger": {
+			"version": "9.18.0",
+			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+			"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
 			"dev": true,
 			"dependencies": {
-				"@types/node": "^20.11.30",
-				"@types/sinonjs__fake-timers": "^8.1.5",
-				"@wdio/config": "9.15.0",
-				"@wdio/logger": "9.15.0",
-				"@wdio/protocols": "9.15.0",
-				"@wdio/repl": "9.4.4",
-				"@wdio/types": "9.15.0",
-				"@wdio/utils": "9.15.0",
-				"archiver": "^7.0.1",
-				"aria-query": "^5.3.0",
+				"chalk": "^5.1.2",
+				"loglevel": "^1.6.0",
+				"loglevel-plugin-prefix": "^0.8.4",
+				"safe-regex2": "^5.0.0",
+				"strip-ansi": "^7.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/webdriver/node_modules/@wdio/types": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+			"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "^20.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/webdriver/node_modules/@wdio/utils": {
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.23.0.tgz",
+			"integrity": "sha512-WhXuVSxEvPw/i34bL1aCHAOi+4g29kRkIMyBShNSxH+Shxh2G91RJYsXm4IAiPMGcC4H6G8T2VcbZ32qnGPm5Q==",
+			"dev": true,
+			"dependencies": {
+				"@puppeteer/browsers": "^2.2.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/types": "9.20.0",
+				"decamelize": "^6.0.0",
+				"deepmerge-ts": "^7.0.3",
+				"edgedriver": "^6.1.2",
+				"geckodriver": "^6.1.0",
+				"get-port": "^7.0.0",
+				"import-meta-resolve": "^4.0.0",
+				"locate-app": "^2.2.24",
+				"mitt": "^3.0.1",
+				"safaridriver": "^1.0.0",
+				"split2": "^4.2.0",
+				"wait-port": "^1.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/webdriver/node_modules/ansi-regex": {
+			"version": "6.2.2",
+			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+			"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+			"dev": true,
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/ansi-regex?sponsor=1"
+			}
+		},
+		"node_modules/webdriver/node_modules/chalk": {
+			"version": "5.6.2",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+			"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+			"dev": true,
+			"engines": {
+				"node": "^12.17.0 || ^14.13 || >=16.0.0"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/chalk?sponsor=1"
+			}
+		},
+		"node_modules/webdriver/node_modules/geckodriver": {
+			"version": "6.1.0",
+			"resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz",
+			"integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==",
+			"dev": true,
+			"hasInstallScript": true,
+			"dependencies": {
+				"@wdio/logger": "^9.18.0",
+				"@zip.js/zip.js": "^2.8.11",
+				"decamelize": "^6.0.1",
+				"http-proxy-agent": "^7.0.2",
+				"https-proxy-agent": "^7.0.6",
+				"modern-tar": "^0.7.2"
+			},
+			"bin": {
+				"geckodriver": "bin/geckodriver.js"
+			},
+			"engines": {
+				"node": ">=20.0.0"
+			}
+		},
+		"node_modules/webdriver/node_modules/strip-ansi": {
+			"version": "7.1.2",
+			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+			"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+			"dev": true,
+			"dependencies": {
+				"ansi-regex": "^6.0.1"
+			},
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/strip-ansi?sponsor=1"
+			}
+		},
+		"node_modules/webdriverio": {
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.23.0.tgz",
+			"integrity": "sha512-Y5y4jpwHvuduUfup+gXTuCU6AROn/k6qOba3st0laFluKHY+q5SHOpQAJdS8acYLwE8caDQ2dXJhmXyxuJrm0Q==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "^20.11.30",
+				"@types/sinonjs__fake-timers": "^8.1.5",
+				"@wdio/config": "9.23.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/protocols": "9.16.2",
+				"@wdio/repl": "9.16.2",
+				"@wdio/types": "9.20.0",
+				"@wdio/utils": "9.23.0",
+				"archiver": "^7.0.1",
+				"aria-query": "^5.3.0",
 				"cheerio": "^1.0.0-rc.12",
 				"css-shorthand-properties": "^1.1.1",
 				"css-value": "^0.0.1",
 				"grapheme-splitter": "^1.0.4",
-				"htmlfy": "^0.6.0",
+				"htmlfy": "^0.8.1",
 				"is-plain-obj": "^4.1.0",
 				"jszip": "^3.10.1",
 				"lodash.clonedeep": "^4.5.0",
@@ -10889,9 +11457,9 @@
 				"query-selector-shadow-dom": "^1.0.1",
 				"resq": "^1.11.0",
 				"rgb2hex": "0.2.5",
-				"serialize-error": "^11.0.3",
+				"serialize-error": "^12.0.0",
 				"urlpattern-polyfill": "^10.0.0",
-				"webdriver": "9.15.0"
+				"webdriver": "9.23.0"
 			},
 			"engines": {
 				"node": ">=18.20.0"
@@ -10905,6 +11473,104 @@
 				}
 			}
 		},
+		"node_modules/webdriverio/node_modules/@wdio/logger": {
+			"version": "9.18.0",
+			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+			"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+			"dev": true,
+			"dependencies": {
+				"chalk": "^5.1.2",
+				"loglevel": "^1.6.0",
+				"loglevel-plugin-prefix": "^0.8.4",
+				"safe-regex2": "^5.0.0",
+				"strip-ansi": "^7.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/webdriverio/node_modules/@wdio/types": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+			"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "^20.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/webdriverio/node_modules/@wdio/utils": {
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.23.0.tgz",
+			"integrity": "sha512-WhXuVSxEvPw/i34bL1aCHAOi+4g29kRkIMyBShNSxH+Shxh2G91RJYsXm4IAiPMGcC4H6G8T2VcbZ32qnGPm5Q==",
+			"dev": true,
+			"dependencies": {
+				"@puppeteer/browsers": "^2.2.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/types": "9.20.0",
+				"decamelize": "^6.0.0",
+				"deepmerge-ts": "^7.0.3",
+				"edgedriver": "^6.1.2",
+				"geckodriver": "^6.1.0",
+				"get-port": "^7.0.0",
+				"import-meta-resolve": "^4.0.0",
+				"locate-app": "^2.2.24",
+				"mitt": "^3.0.1",
+				"safaridriver": "^1.0.0",
+				"split2": "^4.2.0",
+				"wait-port": "^1.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/webdriverio/node_modules/ansi-regex": {
+			"version": "6.2.2",
+			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+			"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+			"dev": true,
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/ansi-regex?sponsor=1"
+			}
+		},
+		"node_modules/webdriverio/node_modules/chalk": {
+			"version": "5.6.2",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+			"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+			"dev": true,
+			"engines": {
+				"node": "^12.17.0 || ^14.13 || >=16.0.0"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/chalk?sponsor=1"
+			}
+		},
+		"node_modules/webdriverio/node_modules/geckodriver": {
+			"version": "6.1.0",
+			"resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz",
+			"integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==",
+			"dev": true,
+			"hasInstallScript": true,
+			"dependencies": {
+				"@wdio/logger": "^9.18.0",
+				"@zip.js/zip.js": "^2.8.11",
+				"decamelize": "^6.0.1",
+				"http-proxy-agent": "^7.0.2",
+				"https-proxy-agent": "^7.0.6",
+				"modern-tar": "^0.7.2"
+			},
+			"bin": {
+				"geckodriver": "bin/geckodriver.js"
+			},
+			"engines": {
+				"node": ">=20.0.0"
+			}
+		},
 		"node_modules/webdriverio/node_modules/is-plain-obj": {
 			"version": "4.1.0",
 			"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
@@ -10917,6 +11583,21 @@
 				"url": "https://github.com/sponsors/sindresorhus"
 			}
 		},
+		"node_modules/webdriverio/node_modules/strip-ansi": {
+			"version": "7.1.2",
+			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+			"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+			"dev": true,
+			"dependencies": {
+				"ansi-regex": "^6.0.1"
+			},
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/strip-ansi?sponsor=1"
+			}
+		},
 		"node_modules/whatwg-encoding": {
 			"version": "3.1.1",
 			"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
@@ -12444,21 +13125,6 @@
 						}
 					}
 				},
-				"@wdio/protocols": {
-					"version": "9.16.2",
-					"resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.16.2.tgz",
-					"integrity": "sha512-h3k97/lzmyw5MowqceAuY3HX/wGJojXHkiPXA3WlhGPCaa2h4+GovV2nJtRvknCKsE7UHA1xB5SWeI8MzloBew==",
-					"dev": true
-				},
-				"@wdio/repl": {
-					"version": "9.16.2",
-					"resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.16.2.tgz",
-					"integrity": "sha512-FLTF0VL6+o5BSTCO7yLSXocm3kUnu31zYwzdsz4n9s5YWt83sCtzGZlZpt7TaTzb3jVUfxuHNQDTb8UMkCu0lQ==",
-					"dev": true,
-					"requires": {
-						"@types/node": "^20.1.0"
-					}
-				},
 				"@wdio/types": {
 					"version": "9.16.2",
 					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.16.2.tgz",
@@ -12545,12 +13211,6 @@
 						"path-scurry": "^1.11.1"
 					}
 				},
-				"htmlfy": {
-					"version": "0.8.1",
-					"resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.8.1.tgz",
-					"integrity": "sha512-xWROBw9+MEGwxpotll0h672KCaLrKKiCYzsyN8ZgL9cQbVumFnyvsk2JqiB9ELAV1GLj1GG/jxZUjV9OZZi/yQ==",
-					"dev": true
-				},
 				"is-plain-obj": {
 					"version": "4.1.0",
 					"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
@@ -12572,15 +13232,6 @@
 					"integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
 					"dev": true
 				},
-				"serialize-error": {
-					"version": "12.0.0",
-					"resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-12.0.0.tgz",
-					"integrity": "sha512-ZYkZLAvKTKQXWuh5XpBw7CdbSzagarX39WyZ2H07CDLC5/KfsRGlIXV8d4+tfqX1M7916mRqR1QfNHSij+c9Pw==",
-					"dev": true,
-					"requires": {
-						"type-fest": "^4.31.0"
-					}
-				},
 				"webdriver": {
 					"version": "9.18.0",
 					"resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.18.0.tgz",
@@ -12657,19 +13308,69 @@
 			}
 		},
 		"@wdio/config": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.15.0.tgz",
-			"integrity": "sha512-IQzSZx2Y0KdAVWHSdcBLkuUjCmYtOnc1oDY7Psi814wDR7dEPVOuKgMo8ZZ0P1yhioMzqvy5tBemYSzj7CrFTA==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.23.0.tgz",
+			"integrity": "sha512-hhtngUG2uCxYmScSEor+k22EVlsTW3ARXgke8NPVeQA4p1+GC2CvRZi4P7nmhRTZubgLrENYYsveFcYR+1UXhQ==",
 			"dev": true,
 			"requires": {
-				"@wdio/logger": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"@wdio/utils": "9.15.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/types": "9.20.0",
+				"@wdio/utils": "9.23.0",
 				"deepmerge-ts": "^7.0.3",
 				"glob": "^10.2.2",
 				"import-meta-resolve": "^4.0.0"
 			},
 			"dependencies": {
+				"@wdio/logger": {
+					"version": "9.18.0",
+					"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+					"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+					"dev": true,
+					"requires": {
+						"chalk": "^5.1.2",
+						"loglevel": "^1.6.0",
+						"loglevel-plugin-prefix": "^0.8.4",
+						"safe-regex2": "^5.0.0",
+						"strip-ansi": "^7.1.0"
+					}
+				},
+				"@wdio/types": {
+					"version": "9.20.0",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+					"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+					"dev": true,
+					"requires": {
+						"@types/node": "^20.1.0"
+					}
+				},
+				"@wdio/utils": {
+					"version": "9.23.0",
+					"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.23.0.tgz",
+					"integrity": "sha512-WhXuVSxEvPw/i34bL1aCHAOi+4g29kRkIMyBShNSxH+Shxh2G91RJYsXm4IAiPMGcC4H6G8T2VcbZ32qnGPm5Q==",
+					"dev": true,
+					"requires": {
+						"@puppeteer/browsers": "^2.2.0",
+						"@wdio/logger": "9.18.0",
+						"@wdio/types": "9.20.0",
+						"decamelize": "^6.0.0",
+						"deepmerge-ts": "^7.0.3",
+						"edgedriver": "^6.1.2",
+						"geckodriver": "^6.1.0",
+						"get-port": "^7.0.0",
+						"import-meta-resolve": "^4.0.0",
+						"locate-app": "^2.2.24",
+						"mitt": "^3.0.1",
+						"safaridriver": "^1.0.0",
+						"split2": "^4.2.0",
+						"wait-port": "^1.1.0"
+					}
+				},
+				"ansi-regex": {
+					"version": "6.2.2",
+					"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+					"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+					"dev": true
+				},
 				"brace-expansion": {
 					"version": "2.0.2",
 					"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
@@ -12679,6 +13380,26 @@
 						"balanced-match": "^1.0.0"
 					}
 				},
+				"chalk": {
+					"version": "5.6.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+					"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+					"dev": true
+				},
+				"geckodriver": {
+					"version": "6.1.0",
+					"resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz",
+					"integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==",
+					"dev": true,
+					"requires": {
+						"@wdio/logger": "^9.18.0",
+						"@zip.js/zip.js": "^2.8.11",
+						"decamelize": "^6.0.1",
+						"http-proxy-agent": "^7.0.2",
+						"https-proxy-agent": "^7.0.6",
+						"modern-tar": "^0.7.2"
+					}
+				},
 				"glob": {
 					"version": "10.5.0",
 					"resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
@@ -12701,64 +13422,137 @@
 					"requires": {
 						"brace-expansion": "^2.0.1"
 					}
+				},
+				"strip-ansi": {
+					"version": "7.1.2",
+					"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+					"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+					"dev": true,
+					"requires": {
+						"ansi-regex": "^6.0.1"
+					}
 				}
 			}
 		},
 		"@wdio/dot-reporter": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/dot-reporter/-/dot-reporter-9.15.0.tgz",
-			"integrity": "sha512-dga+nwqZtsruAnERYGXa41O/APPpG6IClXA0gk35zKe24aMez/XgU7ZDHVJ3JYGmr7XTSEGiWXudvthaX/EbSg==",
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/dot-reporter/-/dot-reporter-9.20.0.tgz",
+			"integrity": "sha512-lRhihDQ56dApJcKOIEkVHThl8t2e5h7f3FW3JVmMLcGgbbkkLgXqVWPpbEGJcLld3wL4CipAPojVE/YEWp80hw==",
 			"dev": true,
 			"requires": {
-				"@wdio/reporter": "9.15.0",
-				"@wdio/types": "9.15.0",
+				"@wdio/reporter": "9.20.0",
+				"@wdio/types": "9.20.0",
 				"chalk": "^5.0.1"
 			},
 			"dependencies": {
+				"@wdio/types": {
+					"version": "9.20.0",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+					"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+					"dev": true,
+					"requires": {
+						"@types/node": "^20.1.0"
+					}
+				},
 				"chalk": {
-					"version": "5.4.1",
-					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
-					"integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
+					"version": "5.6.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+					"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
 					"dev": true
 				}
 			}
 		},
 		"@wdio/globals": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.15.0.tgz",
-			"integrity": "sha512-4bEnqoHr676x4hyq7yOp+V+wVgclisNeOwMyLPEIJOv+cAAxESzIOdFyiQcbAu7gq+HUIuoWMZGlV9UgDnXh1w==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.23.0.tgz",
+			"integrity": "sha512-OmwPKV8c5ecLqo+EkytN7oUeYfNmRI4uOXGIR1ybP7AK5Zz+l9R0dGfoadEuwi1aZXAL0vwuhtq3p0OL3dfqHQ==",
 			"dev": true,
-			"requires": {
-				"expect-webdriverio": "^5.1.0",
-				"webdriverio": "9.15.0"
-			}
+			"requires": {}
 		},
 		"@wdio/junit-reporter": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/junit-reporter/-/junit-reporter-9.15.0.tgz",
-			"integrity": "sha512-ZulPH628zp/V1IolHtMkLPEmlWeoAa4Go5hAe46wyfB879PHD9bm5RUXZYJvVAphlvvSljpXd4YOqINN0hWVuQ==",
+			"version": "9.21.0",
+			"resolved": "https://registry.npmjs.org/@wdio/junit-reporter/-/junit-reporter-9.21.0.tgz",
+			"integrity": "sha512-1vuym8VuTqhJMe3Xb71PLxmTUxo9+fcXnzZcqiYdQtKdN3nibKkuctRU8oTAMGQqLY2VPtHd4MbUGmd+CVlaCg==",
 			"dev": true,
 			"requires": {
-				"@wdio/reporter": "9.15.0",
-				"@wdio/types": "9.15.0",
+				"@wdio/reporter": "9.20.0",
+				"@wdio/types": "9.20.0",
 				"json-stringify-safe": "^5.0.1",
 				"junit-report-builder": "^5.1.1"
+			},
+			"dependencies": {
+				"@wdio/types": {
+					"version": "9.20.0",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+					"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+					"dev": true,
+					"requires": {
+						"@types/node": "^20.1.0"
+					}
+				}
 			}
 		},
 		"@wdio/local-runner": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-9.15.0.tgz",
-			"integrity": "sha512-SbmQpzXSxaLvvjDAJpHvfRq5Df9nfdD3LxOM/L4QytI09rK3Y94Re2QEFIk1MyFmUAuoIgJ99L4TSRw9hhrIbg==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-9.23.0.tgz",
+			"integrity": "sha512-kBWIqBDbCAJuxENl4t1qiCf8mivHN++cNdgsmlkP8nG7KJ8ebCseqsBHTrvx/YAqRPZIBD50cN6xsB6MZTmUfg==",
 			"dev": true,
 			"requires": {
 				"@types/node": "^20.1.0",
-				"@wdio/logger": "9.15.0",
-				"@wdio/repl": "9.4.4",
-				"@wdio/runner": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"async-exit-hook": "^2.0.1",
+				"@wdio/logger": "9.18.0",
+				"@wdio/repl": "9.16.2",
+				"@wdio/runner": "9.23.0",
+				"@wdio/types": "9.20.0",
+				"@wdio/xvfb": "9.20.0",
+				"exit-hook": "^4.0.0",
+				"expect-webdriverio": "^5.3.4",
 				"split2": "^4.1.0",
 				"stream-buffers": "^3.0.2"
+			},
+			"dependencies": {
+				"@wdio/logger": {
+					"version": "9.18.0",
+					"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+					"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+					"dev": true,
+					"requires": {
+						"chalk": "^5.1.2",
+						"loglevel": "^1.6.0",
+						"loglevel-plugin-prefix": "^0.8.4",
+						"safe-regex2": "^5.0.0",
+						"strip-ansi": "^7.1.0"
+					}
+				},
+				"@wdio/types": {
+					"version": "9.20.0",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+					"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+					"dev": true,
+					"requires": {
+						"@types/node": "^20.1.0"
+					}
+				},
+				"ansi-regex": {
+					"version": "6.2.2",
+					"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+					"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+					"dev": true
+				},
+				"chalk": {
+					"version": "5.6.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+					"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+					"dev": true
+				},
+				"strip-ansi": {
+					"version": "7.1.2",
+					"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+					"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+					"dev": true,
+					"requires": {
+						"ansi-regex": "^6.0.1"
+					}
+				}
 			}
 		},
 		"@wdio/logger": {
@@ -12774,21 +13568,213 @@
 			},
 			"dependencies": {
 				"ansi-regex": {
-					"version": "6.1.0",
-					"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
-					"integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+					"version": "6.1.0",
+					"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+					"integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+					"dev": true
+				},
+				"chalk": {
+					"version": "5.4.1",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
+					"integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
+					"dev": true
+				},
+				"strip-ansi": {
+					"version": "7.1.0",
+					"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+					"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+					"dev": true,
+					"requires": {
+						"ansi-regex": "^6.0.1"
+					}
+				}
+			}
+		},
+		"@wdio/mocha-framework": {
+			"version": "9.15.0",
+			"resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-9.15.0.tgz",
+			"integrity": "sha512-sM9NK3vQA+gITS8OlBB14F85xg4gPD4oBM4kLhgvbFqyCNGMe8yy9P5c9D8Ti0ISUDkkfgAcN2EwMqBp/Ot2Lg==",
+			"dev": true,
+			"requires": {
+				"@types/mocha": "^10.0.6",
+				"@types/node": "^20.11.28",
+				"@wdio/logger": "9.15.0",
+				"@wdio/types": "9.15.0",
+				"@wdio/utils": "9.15.0",
+				"mocha": "^10.3.0"
+			}
+		},
+		"@wdio/protocols": {
+			"version": "9.16.2",
+			"resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.16.2.tgz",
+			"integrity": "sha512-h3k97/lzmyw5MowqceAuY3HX/wGJojXHkiPXA3WlhGPCaa2h4+GovV2nJtRvknCKsE7UHA1xB5SWeI8MzloBew==",
+			"dev": true
+		},
+		"@wdio/repl": {
+			"version": "9.16.2",
+			"resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.16.2.tgz",
+			"integrity": "sha512-FLTF0VL6+o5BSTCO7yLSXocm3kUnu31zYwzdsz4n9s5YWt83sCtzGZlZpt7TaTzb3jVUfxuHNQDTb8UMkCu0lQ==",
+			"dev": true,
+			"requires": {
+				"@types/node": "^20.1.0"
+			}
+		},
+		"@wdio/reporter": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-9.20.0.tgz",
+			"integrity": "sha512-HjKJzm8o0MCcnwGVGprzaCAyau0OB8mWHwH1ZI/ka+z1nmVBr2tsr7H53SdHsGIhAg/XuZObobqdzeVF63ApeA==",
+			"dev": true,
+			"requires": {
+				"@types/node": "^20.1.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/types": "9.20.0",
+				"diff": "^8.0.2",
+				"object-inspect": "^1.12.0"
+			},
+			"dependencies": {
+				"@wdio/logger": {
+					"version": "9.18.0",
+					"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+					"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+					"dev": true,
+					"requires": {
+						"chalk": "^5.1.2",
+						"loglevel": "^1.6.0",
+						"loglevel-plugin-prefix": "^0.8.4",
+						"safe-regex2": "^5.0.0",
+						"strip-ansi": "^7.1.0"
+					}
+				},
+				"@wdio/types": {
+					"version": "9.20.0",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+					"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+					"dev": true,
+					"requires": {
+						"@types/node": "^20.1.0"
+					}
+				},
+				"ansi-regex": {
+					"version": "6.2.2",
+					"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+					"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+					"dev": true
+				},
+				"chalk": {
+					"version": "5.6.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+					"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+					"dev": true
+				},
+				"diff": {
+					"version": "8.0.3",
+					"resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz",
+					"integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==",
+					"dev": true
+				},
+				"strip-ansi": {
+					"version": "7.1.2",
+					"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+					"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+					"dev": true,
+					"requires": {
+						"ansi-regex": "^6.0.1"
+					}
+				}
+			}
+		},
+		"@wdio/runner": {
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-9.23.0.tgz",
+			"integrity": "sha512-a2afdICcEzzMjSPCwY3g9Hl2kWXXjBFyWv5DxvjaJOmQygnKzz9olFOrpVotgLKXE9ZLuJ4EP98or69sFIeLBg==",
+			"dev": true,
+			"requires": {
+				"@types/node": "^20.11.28",
+				"@wdio/config": "9.23.0",
+				"@wdio/dot-reporter": "9.20.0",
+				"@wdio/globals": "9.23.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/types": "9.20.0",
+				"@wdio/utils": "9.23.0",
+				"deepmerge-ts": "^7.0.3",
+				"webdriver": "9.23.0",
+				"webdriverio": "9.23.0"
+			},
+			"dependencies": {
+				"@wdio/logger": {
+					"version": "9.18.0",
+					"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+					"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+					"dev": true,
+					"requires": {
+						"chalk": "^5.1.2",
+						"loglevel": "^1.6.0",
+						"loglevel-plugin-prefix": "^0.8.4",
+						"safe-regex2": "^5.0.0",
+						"strip-ansi": "^7.1.0"
+					}
+				},
+				"@wdio/types": {
+					"version": "9.20.0",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+					"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+					"dev": true,
+					"requires": {
+						"@types/node": "^20.1.0"
+					}
+				},
+				"@wdio/utils": {
+					"version": "9.23.0",
+					"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.23.0.tgz",
+					"integrity": "sha512-WhXuVSxEvPw/i34bL1aCHAOi+4g29kRkIMyBShNSxH+Shxh2G91RJYsXm4IAiPMGcC4H6G8T2VcbZ32qnGPm5Q==",
+					"dev": true,
+					"requires": {
+						"@puppeteer/browsers": "^2.2.0",
+						"@wdio/logger": "9.18.0",
+						"@wdio/types": "9.20.0",
+						"decamelize": "^6.0.0",
+						"deepmerge-ts": "^7.0.3",
+						"edgedriver": "^6.1.2",
+						"geckodriver": "^6.1.0",
+						"get-port": "^7.0.0",
+						"import-meta-resolve": "^4.0.0",
+						"locate-app": "^2.2.24",
+						"mitt": "^3.0.1",
+						"safaridriver": "^1.0.0",
+						"split2": "^4.2.0",
+						"wait-port": "^1.1.0"
+					}
+				},
+				"ansi-regex": {
+					"version": "6.2.2",
+					"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+					"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
 					"dev": true
 				},
 				"chalk": {
-					"version": "5.4.1",
-					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
-					"integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
+					"version": "5.6.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+					"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
 					"dev": true
 				},
+				"geckodriver": {
+					"version": "6.1.0",
+					"resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz",
+					"integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==",
+					"dev": true,
+					"requires": {
+						"@wdio/logger": "^9.18.0",
+						"@zip.js/zip.js": "^2.8.11",
+						"decamelize": "^6.0.1",
+						"http-proxy-agent": "^7.0.2",
+						"https-proxy-agent": "^7.0.6",
+						"modern-tar": "^0.7.2"
+					}
+				},
 				"strip-ansi": {
-					"version": "7.1.0",
-					"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-					"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+					"version": "7.1.2",
+					"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+					"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
 					"dev": true,
 					"requires": {
 						"ansi-regex": "^6.0.1"
@@ -12796,88 +13782,28 @@
 				}
 			}
 		},
-		"@wdio/mocha-framework": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-9.15.0.tgz",
-			"integrity": "sha512-sM9NK3vQA+gITS8OlBB14F85xg4gPD4oBM4kLhgvbFqyCNGMe8yy9P5c9D8Ti0ISUDkkfgAcN2EwMqBp/Ot2Lg==",
-			"dev": true,
-			"requires": {
-				"@types/mocha": "^10.0.6",
-				"@types/node": "^20.11.28",
-				"@wdio/logger": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"@wdio/utils": "9.15.0",
-				"mocha": "^10.3.0"
-			}
-		},
-		"@wdio/protocols": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.15.0.tgz",
-			"integrity": "sha512-5O7bwiG7t8nmSVOx888YryO/9AQgQ7p/Ecd9rS13UyDQL169HmVKXP0vvJKGH3X+oeE92U1wVrwrIl4Xx3BQ6Q==",
-			"dev": true
-		},
-		"@wdio/repl": {
-			"version": "9.4.4",
-			"resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.4.4.tgz",
-			"integrity": "sha512-kchPRhoG/pCn4KhHGiL/ocNhdpR8OkD2e6sANlSUZ4TGBVi86YSIEjc2yXUwLacHknC/EnQk/SFnqd4MsNjGGg==",
-			"dev": true,
-			"requires": {
-				"@types/node": "^20.1.0"
-			}
-		},
-		"@wdio/reporter": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-9.15.0.tgz",
-			"integrity": "sha512-p120dZr+fUQ7HE54L/RDG/7BfE/LkFORyNaZ/G2KE6gEr8gIyL3sW9kVbTZtYOBW68KgU+CC7x4yxfZCXfRUuw==",
-			"dev": true,
-			"requires": {
-				"@types/node": "^20.1.0",
-				"@wdio/logger": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"diff": "^7.0.0",
-				"object-inspect": "^1.12.0"
-			},
-			"dependencies": {
-				"diff": {
-					"version": "7.0.0",
-					"resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz",
-					"integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==",
-					"dev": true
-				}
-			}
-		},
-		"@wdio/runner": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-9.15.0.tgz",
-			"integrity": "sha512-KHDM4L02Aqmmsi83Yum2c026eNqpQysrMPnHiSzZm0+wMmDNLIMwq6xAj/vlBHDiVgrSKho3LlMz7mNyagkkgw==",
-			"dev": true,
-			"requires": {
-				"@types/node": "^20.11.28",
-				"@wdio/config": "9.15.0",
-				"@wdio/dot-reporter": "9.15.0",
-				"@wdio/globals": "9.15.0",
-				"@wdio/logger": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"@wdio/utils": "9.15.0",
-				"deepmerge-ts": "^7.0.3",
-				"expect-webdriverio": "^5.1.0",
-				"webdriver": "9.15.0",
-				"webdriverio": "9.15.0"
-			}
-		},
 		"@wdio/spec-reporter": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-9.15.0.tgz",
-			"integrity": "sha512-xu8uVGyk2HEAvdzPmspxTJMJc3UxGzdKjqNIUVpCQpVYkKOd6zm1RH2Cpdb7gsx2j/+ddYZEVhftFGR9YOQF6g==",
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-9.20.0.tgz",
+			"integrity": "sha512-YHj3kF86RoOVVR+k3eb+e/Fki6Mq1FIrJQ380Cz5SSWbIc9gL8HXG3ydReldY6/80KLFOuHn9ZHvDHrCIXRjiw==",
 			"dev": true,
 			"requires": {
-				"@wdio/reporter": "9.15.0",
-				"@wdio/types": "9.15.0",
+				"@wdio/reporter": "9.20.0",
+				"@wdio/types": "9.20.0",
 				"chalk": "^5.1.2",
 				"easy-table": "^1.2.0",
 				"pretty-ms": "^9.0.0"
 			},
 			"dependencies": {
+				"@wdio/types": {
+					"version": "9.20.0",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+					"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+					"dev": true,
+					"requires": {
+						"@types/node": "^20.1.0"
+					}
+				},
 				"chalk": {
 					"version": "5.4.1",
 					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
@@ -12916,10 +13842,55 @@
 				"wait-port": "^1.1.0"
 			}
 		},
+		"@wdio/xvfb": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/xvfb/-/xvfb-9.20.0.tgz",
+			"integrity": "sha512-shllZH9CsLiZqTXkqBTJrwi6k/ajBE7/78fQgvafMUIQU1Hpb2RdsmydKfPFZ5NDoA+LNm67PD2cPkvkXy4pSw==",
+			"dev": true,
+			"requires": {
+				"@wdio/logger": "9.18.0"
+			},
+			"dependencies": {
+				"@wdio/logger": {
+					"version": "9.18.0",
+					"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+					"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+					"dev": true,
+					"requires": {
+						"chalk": "^5.1.2",
+						"loglevel": "^1.6.0",
+						"loglevel-plugin-prefix": "^0.8.4",
+						"safe-regex2": "^5.0.0",
+						"strip-ansi": "^7.1.0"
+					}
+				},
+				"ansi-regex": {
+					"version": "6.2.2",
+					"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+					"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+					"dev": true
+				},
+				"chalk": {
+					"version": "5.6.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+					"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+					"dev": true
+				},
+				"strip-ansi": {
+					"version": "7.1.2",
+					"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+					"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+					"dev": true,
+					"requires": {
+						"ansi-regex": "^6.0.1"
+					}
+				}
+			}
+		},
 		"@zip.js/zip.js": {
-			"version": "2.7.62",
-			"resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.62.tgz",
-			"integrity": "sha512-OaLvZ8j4gCkLn048ypkZu29KX30r8/OfFF2w4Jo5WXFr+J04J+lzJ5TKZBVgFXhlvSkqNFQdfnY1Q8TMTCyBVA==",
+			"version": "2.8.15",
+			"resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.8.15.tgz",
+			"integrity": "sha512-HZKJLFe4eGVgCe9J87PnijY7T1Zn638bEHS+Fm/ygHZozRpefzWcOYfPaP52S8pqk9g4xN3+LzMDl3Lv9dLglA==",
 			"dev": true
 		},
 		"abbrev": {
@@ -13520,9 +14491,9 @@
 					}
 				},
 				"undici": {
-					"version": "7.10.0",
-					"resolved": "https://registry.npmjs.org/undici/-/undici-7.10.0.tgz",
-					"integrity": "sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==",
+					"version": "7.18.2",
+					"resolved": "https://registry.npmjs.org/undici/-/undici-7.18.2.tgz",
+					"integrity": "sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==",
 					"dev": true
 				}
 			}
@@ -14021,9 +14992,9 @@
 			}
 		},
 		"decamelize": {
-			"version": "6.0.0",
-			"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz",
-			"integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==",
+			"version": "6.0.1",
+			"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.1.tgz",
+			"integrity": "sha512-G7Cqgaelq68XHJNGlZ7lrNQyhZGsFqpwtGFexqUv4IQdjKoSYF7ipZ9UuTJZUSQXFj/XaoBLuEVIVqr8EJngEQ==",
 			"dev": true
 		},
 		"deep-is": {
@@ -15043,6 +16014,12 @@
 			"integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
 			"dev": true
 		},
+		"exit-hook": {
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-4.0.0.tgz",
+			"integrity": "sha512-Fqs7ChZm72y40wKjOFXBKg7nJZvQJmewP5/7LtePDdnah/+FH9Hp5sgMujSCMPXlxOAW2//1jrW9pnsY7o20vQ==",
+			"dev": true
+		},
 		"expand-tilde": {
 			"version": "2.0.2",
 			"resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
@@ -15872,9 +16849,9 @@
 			"dev": true
 		},
 		"htmlfy": {
-			"version": "0.6.7",
-			"resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.6.7.tgz",
-			"integrity": "sha512-r8hRd+oIM10lufovN+zr3VKPTYEIvIwqXGucidh2XQufmiw6sbUXFUFjWlfjo3AnefIDTyzykVzQ8IUVuT1peQ==",
+			"version": "0.8.1",
+			"resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.8.1.tgz",
+			"integrity": "sha512-xWROBw9+MEGwxpotll0h672KCaLrKKiCYzsyN8ZgL9cQbVumFnyvsk2JqiB9ELAV1GLj1GG/jxZUjV9OZZi/yQ==",
 			"dev": true
 		},
 		"htmlparser2": {
@@ -16852,6 +17829,12 @@
 				}
 			}
 		},
+		"modern-tar": {
+			"version": "0.7.3",
+			"resolved": "https://registry.npmjs.org/modern-tar/-/modern-tar-0.7.3.tgz",
+			"integrity": "sha512-4W79zekKGyYU4JXVmB78DOscMFaJth2gGhgfTl2alWE4rNe3nf4N2pqenQ0rEtIewrnD79M687Ouba3YGTLOvg==",
+			"dev": true
+		},
 		"ms": {
 			"version": "2.1.3",
 			"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -18009,20 +18992,12 @@
 			"dev": true
 		},
 		"serialize-error": {
-			"version": "11.0.3",
-			"resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-11.0.3.tgz",
-			"integrity": "sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g==",
+			"version": "12.0.0",
+			"resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-12.0.0.tgz",
+			"integrity": "sha512-ZYkZLAvKTKQXWuh5XpBw7CdbSzagarX39WyZ2H07CDLC5/KfsRGlIXV8d4+tfqX1M7916mRqR1QfNHSij+c9Pw==",
 			"dev": true,
 			"requires": {
-				"type-fest": "^2.12.2"
-			},
-			"dependencies": {
-				"type-fest": {
-					"version": "2.19.0",
-					"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
-					"integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
-					"dev": true
-				}
+				"type-fest": "^4.31.0"
 			}
 		},
 		"serialize-javascript": {
@@ -18725,9 +19700,9 @@
 			}
 		},
 		"undici": {
-			"version": "6.21.3",
-			"resolved": "https://registry.npmjs.org/undici/-/undici-6.21.3.tgz",
-			"integrity": "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==",
+			"version": "6.23.0",
+			"resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz",
+			"integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==",
 			"dev": true
 		},
 		"undici-types": {
@@ -18867,44 +19842,126 @@
 			"dev": true
 		},
 		"webdriver": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.15.0.tgz",
-			"integrity": "sha512-JCW5xvhZtL6kjbckdePgVYMOlvWbh22F1VFkIf9pw3prwXI2EHED5Eq/nfDnNfHiqr0AfFKWmIDPziSafrVv4Q==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.23.0.tgz",
+			"integrity": "sha512-XkZOhjoBOY7maKI3BhDF2rNiDne4wBD6Gw6VUnt4X9b7j9NtfzcCrThBlT0hnA8W77bWNtMRCSpw9Ajy08HqKg==",
 			"dev": true,
 			"requires": {
 				"@types/node": "^20.1.0",
 				"@types/ws": "^8.5.3",
-				"@wdio/config": "9.15.0",
-				"@wdio/logger": "9.15.0",
-				"@wdio/protocols": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"@wdio/utils": "9.15.0",
+				"@wdio/config": "9.23.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/protocols": "9.16.2",
+				"@wdio/types": "9.20.0",
+				"@wdio/utils": "9.23.0",
 				"deepmerge-ts": "^7.0.3",
-				"undici": "^6.20.1",
+				"https-proxy-agent": "^7.0.6",
+				"undici": "^6.21.3",
 				"ws": "^8.8.0"
+			},
+			"dependencies": {
+				"@wdio/logger": {
+					"version": "9.18.0",
+					"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+					"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+					"dev": true,
+					"requires": {
+						"chalk": "^5.1.2",
+						"loglevel": "^1.6.0",
+						"loglevel-plugin-prefix": "^0.8.4",
+						"safe-regex2": "^5.0.0",
+						"strip-ansi": "^7.1.0"
+					}
+				},
+				"@wdio/types": {
+					"version": "9.20.0",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+					"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+					"dev": true,
+					"requires": {
+						"@types/node": "^20.1.0"
+					}
+				},
+				"@wdio/utils": {
+					"version": "9.23.0",
+					"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.23.0.tgz",
+					"integrity": "sha512-WhXuVSxEvPw/i34bL1aCHAOi+4g29kRkIMyBShNSxH+Shxh2G91RJYsXm4IAiPMGcC4H6G8T2VcbZ32qnGPm5Q==",
+					"dev": true,
+					"requires": {
+						"@puppeteer/browsers": "^2.2.0",
+						"@wdio/logger": "9.18.0",
+						"@wdio/types": "9.20.0",
+						"decamelize": "^6.0.0",
+						"deepmerge-ts": "^7.0.3",
+						"edgedriver": "^6.1.2",
+						"geckodriver": "^6.1.0",
+						"get-port": "^7.0.0",
+						"import-meta-resolve": "^4.0.0",
+						"locate-app": "^2.2.24",
+						"mitt": "^3.0.1",
+						"safaridriver": "^1.0.0",
+						"split2": "^4.2.0",
+						"wait-port": "^1.1.0"
+					}
+				},
+				"ansi-regex": {
+					"version": "6.2.2",
+					"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+					"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+					"dev": true
+				},
+				"chalk": {
+					"version": "5.6.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+					"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+					"dev": true
+				},
+				"geckodriver": {
+					"version": "6.1.0",
+					"resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz",
+					"integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==",
+					"dev": true,
+					"requires": {
+						"@wdio/logger": "^9.18.0",
+						"@zip.js/zip.js": "^2.8.11",
+						"decamelize": "^6.0.1",
+						"http-proxy-agent": "^7.0.2",
+						"https-proxy-agent": "^7.0.6",
+						"modern-tar": "^0.7.2"
+					}
+				},
+				"strip-ansi": {
+					"version": "7.1.2",
+					"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+					"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+					"dev": true,
+					"requires": {
+						"ansi-regex": "^6.0.1"
+					}
+				}
 			}
 		},
 		"webdriverio": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.15.0.tgz",
-			"integrity": "sha512-910g6ktwXdAKGyhgCPGw9BzIKOEBBYMFN1bLwC3bW/3mFlxGHO/n70c7Sg9hrsu9VWTzv6m+1Clf27B9uz4a/Q==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.23.0.tgz",
+			"integrity": "sha512-Y5y4jpwHvuduUfup+gXTuCU6AROn/k6qOba3st0laFluKHY+q5SHOpQAJdS8acYLwE8caDQ2dXJhmXyxuJrm0Q==",
 			"dev": true,
 			"requires": {
 				"@types/node": "^20.11.30",
 				"@types/sinonjs__fake-timers": "^8.1.5",
-				"@wdio/config": "9.15.0",
-				"@wdio/logger": "9.15.0",
-				"@wdio/protocols": "9.15.0",
-				"@wdio/repl": "9.4.4",
-				"@wdio/types": "9.15.0",
-				"@wdio/utils": "9.15.0",
+				"@wdio/config": "9.23.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/protocols": "9.16.2",
+				"@wdio/repl": "9.16.2",
+				"@wdio/types": "9.20.0",
+				"@wdio/utils": "9.23.0",
 				"archiver": "^7.0.1",
 				"aria-query": "^5.3.0",
 				"cheerio": "^1.0.0-rc.12",
 				"css-shorthand-properties": "^1.1.1",
 				"css-value": "^0.0.1",
 				"grapheme-splitter": "^1.0.4",
-				"htmlfy": "^0.6.0",
+				"htmlfy": "^0.8.1",
 				"is-plain-obj": "^4.1.0",
 				"jszip": "^3.10.1",
 				"lodash.clonedeep": "^4.5.0",
@@ -18912,16 +19969,95 @@
 				"query-selector-shadow-dom": "^1.0.1",
 				"resq": "^1.11.0",
 				"rgb2hex": "0.2.5",
-				"serialize-error": "^11.0.3",
+				"serialize-error": "^12.0.0",
 				"urlpattern-polyfill": "^10.0.0",
-				"webdriver": "9.15.0"
+				"webdriver": "9.23.0"
 			},
 			"dependencies": {
+				"@wdio/logger": {
+					"version": "9.18.0",
+					"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+					"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+					"dev": true,
+					"requires": {
+						"chalk": "^5.1.2",
+						"loglevel": "^1.6.0",
+						"loglevel-plugin-prefix": "^0.8.4",
+						"safe-regex2": "^5.0.0",
+						"strip-ansi": "^7.1.0"
+					}
+				},
+				"@wdio/types": {
+					"version": "9.20.0",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+					"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+					"dev": true,
+					"requires": {
+						"@types/node": "^20.1.0"
+					}
+				},
+				"@wdio/utils": {
+					"version": "9.23.0",
+					"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.23.0.tgz",
+					"integrity": "sha512-WhXuVSxEvPw/i34bL1aCHAOi+4g29kRkIMyBShNSxH+Shxh2G91RJYsXm4IAiPMGcC4H6G8T2VcbZ32qnGPm5Q==",
+					"dev": true,
+					"requires": {
+						"@puppeteer/browsers": "^2.2.0",
+						"@wdio/logger": "9.18.0",
+						"@wdio/types": "9.20.0",
+						"decamelize": "^6.0.0",
+						"deepmerge-ts": "^7.0.3",
+						"edgedriver": "^6.1.2",
+						"geckodriver": "^6.1.0",
+						"get-port": "^7.0.0",
+						"import-meta-resolve": "^4.0.0",
+						"locate-app": "^2.2.24",
+						"mitt": "^3.0.1",
+						"safaridriver": "^1.0.0",
+						"split2": "^4.2.0",
+						"wait-port": "^1.1.0"
+					}
+				},
+				"ansi-regex": {
+					"version": "6.2.2",
+					"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+					"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+					"dev": true
+				},
+				"chalk": {
+					"version": "5.6.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+					"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+					"dev": true
+				},
+				"geckodriver": {
+					"version": "6.1.0",
+					"resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz",
+					"integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==",
+					"dev": true,
+					"requires": {
+						"@wdio/logger": "^9.18.0",
+						"@zip.js/zip.js": "^2.8.11",
+						"decamelize": "^6.0.1",
+						"http-proxy-agent": "^7.0.2",
+						"https-proxy-agent": "^7.0.6",
+						"modern-tar": "^0.7.2"
+					}
+				},
 				"is-plain-obj": {
 					"version": "4.1.0",
 					"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
 					"integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
 					"dev": true
+				},
+				"strip-ansi": {
+					"version": "7.1.2",
+					"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+					"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+					"dev": true,
+					"requires": {
+						"ansi-regex": "^6.0.1"
+					}
 				}
 			}
 		},
diff --git a/package.json b/package.json
index 80f91be..4575127 100644
--- a/package.json
+++ b/package.json
@@ -8,10 +8,10 @@
 	},
 	"devDependencies": {
 		"@wdio/cli": "9.18.4",
-		"@wdio/junit-reporter": "9.15.0",
-		"@wdio/local-runner": "9.15.0",
+		"@wdio/junit-reporter": "9.21.0",
+		"@wdio/local-runner": "9.23.0",
 		"@wdio/mocha-framework": "9.15.0",
-		"@wdio/spec-reporter": "9.15.0",
+		"@wdio/spec-reporter": "9.20.0",
 		"eslint-config-wikimedia": "0.32.3",
 		"grunt": "1.6.1",
 		"grunt-banana-checker": "0.13.0",
-- 
2.47.3

$ date
--- stdout ---
Thu Jan 15 11:50:46 UTC 2026

--- end ---
$ git clone file:///srv/git/mediawiki-extensions-TemplateWizard.git /src/repo --depth=1 -b master
--- stderr ---
Cloning into '/src/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 ---
d88914db58d396d988f8122ef4a4da61eb600e39 refs/heads/master

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "@wdio/dot-reporter": {
      "name": "@wdio/dot-reporter",
      "severity": "low",
      "isDirect": false,
      "via": [
        "@wdio/reporter"
      ],
      "effects": [
        "@wdio/runner"
      ],
      "range": "7.7.7 - 9.17.0",
      "nodes": [
        "node_modules/@wdio/dot-reporter"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.23.0",
        "isSemVerMajor": false
      }
    },
    "@wdio/junit-reporter": {
      "name": "@wdio/junit-reporter",
      "severity": "low",
      "isDirect": true,
      "via": [
        "@wdio/reporter"
      ],
      "effects": [],
      "range": "7.7.7 - 9.17.0",
      "nodes": [
        "node_modules/@wdio/junit-reporter"
      ],
      "fixAvailable": {
        "name": "@wdio/junit-reporter",
        "version": "9.21.0",
        "isSemVerMajor": false
      }
    },
    "@wdio/local-runner": {
      "name": "@wdio/local-runner",
      "severity": "low",
      "isDirect": true,
      "via": [
        "@wdio/runner"
      ],
      "effects": [],
      "range": "9.6.2 - 9.17.0",
      "nodes": [
        "node_modules/@wdio/local-runner"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.23.0",
        "isSemVerMajor": false
      }
    },
    "@wdio/mocha-framework": {
      "name": "@wdio/mocha-framework",
      "severity": "low",
      "isDirect": true,
      "via": [
        "mocha"
      ],
      "effects": [],
      "range": "*",
      "nodes": [
        "node_modules/@wdio/mocha-framework"
      ],
      "fixAvailable": false
    },
    "@wdio/reporter": {
      "name": "@wdio/reporter",
      "severity": "low",
      "isDirect": false,
      "via": [
        "diff"
      ],
      "effects": [
        "@wdio/dot-reporter",
        "@wdio/junit-reporter",
        "@wdio/spec-reporter"
      ],
      "range": "7.7.7 - 9.17.0",
      "nodes": [
        "node_modules/@wdio/reporter"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.23.0",
        "isSemVerMajor": false
      }
    },
    "@wdio/runner": {
      "name": "@wdio/runner",
      "severity": "low",
      "isDirect": false,
      "via": [
        "@wdio/dot-reporter"
      ],
      "effects": [
        "@wdio/local-runner"
      ],
      "range": "9.6.2 - 9.17.0",
      "nodes": [
        "node_modules/@wdio/runner"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.23.0",
        "isSemVerMajor": false
      }
    },
    "@wdio/spec-reporter": {
      "name": "@wdio/spec-reporter",
      "severity": "low",
      "isDirect": true,
      "via": [
        "@wdio/reporter"
      ],
      "effects": [],
      "range": "7.7.7 - 9.17.0",
      "nodes": [
        "node_modules/@wdio/spec-reporter"
      ],
      "fixAvailable": {
        "name": "@wdio/spec-reporter",
        "version": "9.20.0",
        "isSemVerMajor": false
      }
    },
    "diff": {
      "name": "diff",
      "severity": "low",
      "isDirect": false,
      "via": [
        {
          "source": 1112148,
          "name": "diff",
          "dependency": "diff",
          "title": "jsdiff has a Denial of Service vulnerability in parsePatch and applyPatch",
          "url": "https://github.com/advisories/GHSA-73rr-hh4g-fpgx",
          "severity": "low",
          "cwe": [
            "CWE-400",
            "CWE-1333"
          ],
          "cvss": {
            "score": 0,
            "vectorString": null
          },
          "range": "<8.0.3"
        }
      ],
      "effects": [
        "@wdio/reporter",
        "mocha"
      ],
      "range": "<8.0.3",
      "nodes": [
        "node_modules/@wdio/reporter/node_modules/diff",
        "node_modules/diff"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.23.0",
        "isSemVerMajor": false
      }
    },
    "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.1.0",
        "isSemVerMajor": true
      }
    },
    "mocha": {
      "name": "mocha",
      "severity": "low",
      "isDirect": false,
      "via": [
        "diff"
      ],
      "effects": [
        "@wdio/mocha-framework"
      ],
      "range": "0.14.0 - 12.0.0-beta-3",
      "nodes": [
        "node_modules/mocha"
      ],
      "fixAvailable": false
    },
    "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.1.0",
        "isSemVerMajor": true
      }
    },
    "qs": {
      "name": "qs",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1111755,
          "name": "qs",
          "dependency": "qs",
          "title": "qs's arrayLimit bypass in its bracket notation allows DoS via memory exhaustion",
          "url": "https://github.com/advisories/GHSA-6rw7-vpxm-498p",
          "severity": "high",
          "cwe": [
            "CWE-20"
          ],
          "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.14.1"
        }
      ],
      "effects": [
        "request"
      ],
      "range": "<6.14.1",
      "nodes": [
        "node_modules/qs"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "6.1.0",
        "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",
        "qs",
        "tough-cookie"
      ],
      "effects": [
        "mwbot"
      ],
      "range": "*",
      "nodes": [
        "node_modules/request"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "6.1.0",
        "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.1.0",
        "isSemVerMajor": true
      }
    },
    "undici": {
      "name": "undici",
      "severity": "low",
      "isDirect": false,
      "via": [
        {
          "source": 1112153,
          "name": "undici",
          "dependency": "undici",
          "title": "Undici has an unbounded decompression chain in HTTP responses on Node.js Fetch API via Content-Encoding leads to resource exhaustion",
          "url": "https://github.com/advisories/GHSA-g9mf-h72j-4rw9",
          "severity": "low",
          "cwe": [
            "CWE-770"
          ],
          "cvss": {
            "score": 3.7,
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": "<6.23.0"
        },
        {
          "source": 1112154,
          "name": "undici",
          "dependency": "undici",
          "title": "Undici has an unbounded decompression chain in HTTP responses on Node.js Fetch API via Content-Encoding leads to resource exhaustion",
          "url": "https://github.com/advisories/GHSA-g9mf-h72j-4rw9",
          "severity": "low",
          "cwe": [
            "CWE-770"
          ],
          "cvss": {
            "score": 3.7,
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": ">=7.0.0 <7.18.2"
        }
      ],
      "effects": [],
      "range": "<6.23.0 || >=7.0.0 <7.18.2",
      "nodes": [
        "node_modules/cheerio/node_modules/undici",
        "node_modules/undici"
      ],
      "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.1.0",
        "isSemVerMajor": true
      }
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 10,
      "moderate": 3,
      "high": 1,
      "critical": 2,
      "total": 16
    },
    "dependencies": {
      "prod": 1,
      "dev": 888,
      "optional": 37,
      "peer": 1,
      "peerOptional": 0,
      "total": 888
    }
  }
}

--- 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.4)
  - 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 (v48.0.0)
  - Locking mediawiki/mediawiki-phan-config (0.18.0)
  - Locking mediawiki/minus-x (1.1.3)
  - Locking mediawiki/phan-taint-check-plugin (8.0.0)
  - Locking microsoft/tolerant-php-parser (v0.1.2)
  - Locking netresearch/jsonmapper (v4.5.0)
  - Locking phan/phan (5.5.2)
  - 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.4.0)
  - Locking phpcsstandards/phpcsutils (1.1.1)
  - Locking phpdocumentor/reflection-common (2.2.0)
  - Locking phpdocumentor/reflection-docblock (5.6.6)
  - Locking phpdocumentor/type-resolver (1.12.0)
  - Locking phpstan/phpdoc-parser (2.3.1)
  - Locking psr/container (2.0.2)
  - Locking psr/log (3.0.2)
  - Locking sabre/event (5.1.7)
  - Locking squizlabs/php_codesniffer (3.13.2)
  - Locking symfony/console (v7.4.3)
  - 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 (v8.0.1)
  - Locking tysonandre/var_representation_polyfill (0.1.3)
  - Locking webmozart/assert (2.1.2)
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.13.2): Extracting archive
  - Installing dealerdirect/phpcodesniffer-composer-installer (v1.2.0): Extracting archive
  - Installing composer/pcre (3.3.2): Extracting archive
  - Installing phpcsstandards/phpcsutils (1.1.1): Extracting archive
  - Installing phpcsstandards/phpcsextra (1.4.0): 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.4): Extracting archive
  - Installing mediawiki/mediawiki-codesniffer (v48.0.0): Extracting archive
  - Installing tysonandre/var_representation_polyfill (0.1.3): Extracting archive
  - Installing symfony/polyfill-php80 (v1.33.0): 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 (v8.0.1): 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.4.3): 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 (2.1.2): Extracting archive
  - Installing phpstan/phpdoc-parser (2.3.1): Extracting archive
  - Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
  - Installing doctrine/deprecations (1.1.5): Extracting archive
  - Installing phpdocumentor/type-resolver (1.12.0): Extracting archive
  - Installing phpdocumentor/reflection-docblock (5.6.6): 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.5.2): Extracting archive
  - Installing mediawiki/phan-taint-check-plugin (8.0.0): Extracting archive
  - Installing mediawiki/mediawiki-phan-config (0.18.0): 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%
 28/36 [=====================>------]  77%
 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 ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "@wdio/dot-reporter": {
      "name": "@wdio/dot-reporter",
      "severity": "low",
      "isDirect": false,
      "via": [
        "@wdio/reporter"
      ],
      "effects": [
        "@wdio/runner"
      ],
      "range": "7.7.7 - 9.17.0",
      "nodes": [
        "node_modules/@wdio/dot-reporter"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.23.0",
        "isSemVerMajor": false
      }
    },
    "@wdio/junit-reporter": {
      "name": "@wdio/junit-reporter",
      "severity": "low",
      "isDirect": true,
      "via": [
        "@wdio/reporter"
      ],
      "effects": [],
      "range": "7.7.7 - 9.17.0",
      "nodes": [
        "node_modules/@wdio/junit-reporter"
      ],
      "fixAvailable": {
        "name": "@wdio/junit-reporter",
        "version": "9.21.0",
        "isSemVerMajor": false
      }
    },
    "@wdio/local-runner": {
      "name": "@wdio/local-runner",
      "severity": "low",
      "isDirect": true,
      "via": [
        "@wdio/runner"
      ],
      "effects": [],
      "range": "9.6.2 - 9.17.0",
      "nodes": [
        "node_modules/@wdio/local-runner"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.23.0",
        "isSemVerMajor": false
      }
    },
    "@wdio/mocha-framework": {
      "name": "@wdio/mocha-framework",
      "severity": "low",
      "isDirect": true,
      "via": [
        "mocha"
      ],
      "effects": [],
      "range": "*",
      "nodes": [
        "node_modules/@wdio/mocha-framework"
      ],
      "fixAvailable": false
    },
    "@wdio/reporter": {
      "name": "@wdio/reporter",
      "severity": "low",
      "isDirect": false,
      "via": [
        "diff"
      ],
      "effects": [
        "@wdio/dot-reporter",
        "@wdio/junit-reporter",
        "@wdio/spec-reporter"
      ],
      "range": "7.7.7 - 9.17.0",
      "nodes": [
        "node_modules/@wdio/reporter"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.23.0",
        "isSemVerMajor": false
      }
    },
    "@wdio/runner": {
      "name": "@wdio/runner",
      "severity": "low",
      "isDirect": false,
      "via": [
        "@wdio/dot-reporter"
      ],
      "effects": [
        "@wdio/local-runner"
      ],
      "range": "9.6.2 - 9.17.0",
      "nodes": [
        "node_modules/@wdio/runner"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.23.0",
        "isSemVerMajor": false
      }
    },
    "@wdio/spec-reporter": {
      "name": "@wdio/spec-reporter",
      "severity": "low",
      "isDirect": true,
      "via": [
        "@wdio/reporter"
      ],
      "effects": [],
      "range": "7.7.7 - 9.17.0",
      "nodes": [
        "node_modules/@wdio/spec-reporter"
      ],
      "fixAvailable": {
        "name": "@wdio/spec-reporter",
        "version": "9.20.0",
        "isSemVerMajor": false
      }
    },
    "diff": {
      "name": "diff",
      "severity": "low",
      "isDirect": false,
      "via": [
        {
          "source": 1112148,
          "name": "diff",
          "dependency": "diff",
          "title": "jsdiff has a Denial of Service vulnerability in parsePatch and applyPatch",
          "url": "https://github.com/advisories/GHSA-73rr-hh4g-fpgx",
          "severity": "low",
          "cwe": [
            "CWE-400",
            "CWE-1333"
          ],
          "cvss": {
            "score": 0,
            "vectorString": null
          },
          "range": "<8.0.3"
        }
      ],
      "effects": [
        "@wdio/reporter",
        "mocha"
      ],
      "range": "<8.0.3",
      "nodes": [
        "node_modules/@wdio/reporter/node_modules/diff",
        "node_modules/diff"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "9.23.0",
        "isSemVerMajor": false
      }
    },
    "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.1.0",
        "isSemVerMajor": true
      }
    },
    "mocha": {
      "name": "mocha",
      "severity": "low",
      "isDirect": false,
      "via": [
        "diff"
      ],
      "effects": [
        "@wdio/mocha-framework"
      ],
      "range": "0.14.0 - 12.0.0-beta-3",
      "nodes": [
        "node_modules/mocha"
      ],
      "fixAvailable": false
    },
    "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.1.0",
        "isSemVerMajor": true
      }
    },
    "qs": {
      "name": "qs",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1111755,
          "name": "qs",
          "dependency": "qs",
          "title": "qs's arrayLimit bypass in its bracket notation allows DoS via memory exhaustion",
          "url": "https://github.com/advisories/GHSA-6rw7-vpxm-498p",
          "severity": "high",
          "cwe": [
            "CWE-20"
          ],
          "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.14.1"
        }
      ],
      "effects": [
        "request"
      ],
      "range": "<6.14.1",
      "nodes": [
        "node_modules/qs"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "6.1.0",
        "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",
        "qs",
        "tough-cookie"
      ],
      "effects": [
        "mwbot"
      ],
      "range": "*",
      "nodes": [
        "node_modules/request"
      ],
      "fixAvailable": {
        "name": "wdio-mediawiki",
        "version": "6.1.0",
        "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.1.0",
        "isSemVerMajor": true
      }
    },
    "undici": {
      "name": "undici",
      "severity": "low",
      "isDirect": false,
      "via": [
        {
          "source": 1112153,
          "name": "undici",
          "dependency": "undici",
          "title": "Undici has an unbounded decompression chain in HTTP responses on Node.js Fetch API via Content-Encoding leads to resource exhaustion",
          "url": "https://github.com/advisories/GHSA-g9mf-h72j-4rw9",
          "severity": "low",
          "cwe": [
            "CWE-770"
          ],
          "cvss": {
            "score": 3.7,
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": "<6.23.0"
        },
        {
          "source": 1112154,
          "name": "undici",
          "dependency": "undici",
          "title": "Undici has an unbounded decompression chain in HTTP responses on Node.js Fetch API via Content-Encoding leads to resource exhaustion",
          "url": "https://github.com/advisories/GHSA-g9mf-h72j-4rw9",
          "severity": "low",
          "cwe": [
            "CWE-770"
          ],
          "cvss": {
            "score": 3.7,
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": ">=7.0.0 <7.18.2"
        }
      ],
      "effects": [],
      "range": "<6.23.0 || >=7.0.0 <7.18.2",
      "nodes": [
        "node_modules/cheerio/node_modules/undici",
        "node_modules/undici"
      ],
      "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.1.0",
        "isSemVerMajor": true
      }
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 10,
      "moderate": 3,
      "high": 1,
      "critical": 2,
      "total": 16
    },
    "dependencies": {
      "prod": 1,
      "dev": 888,
      "optional": 37,
      "peer": 1,
      "peerOptional": 0,
      "total": 888
    }
  }
}

--- 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": 888,
  "removed": 0,
  "changed": 0,
  "audited": 889,
  "funding": 193,
  "audit": {
    "auditReportVersion": 2,
    "vulnerabilities": {
      "@wdio/dot-reporter": {
        "name": "@wdio/dot-reporter",
        "severity": "low",
        "isDirect": false,
        "via": [
          "@wdio/reporter"
        ],
        "effects": [
          "@wdio/runner"
        ],
        "range": "7.7.7 - 9.17.0",
        "nodes": [
          "node_modules/@wdio/dot-reporter"
        ],
        "fixAvailable": {
          "name": "@wdio/local-runner",
          "version": "9.23.0",
          "isSemVerMajor": false
        }
      },
      "@wdio/junit-reporter": {
        "name": "@wdio/junit-reporter",
        "severity": "low",
        "isDirect": true,
        "via": [
          "@wdio/reporter"
        ],
        "effects": [],
        "range": "7.7.7 - 9.17.0",
        "nodes": [
          "node_modules/@wdio/junit-reporter"
        ],
        "fixAvailable": {
          "name": "@wdio/junit-reporter",
          "version": "9.21.0",
          "isSemVerMajor": false
        }
      },
      "@wdio/local-runner": {
        "name": "@wdio/local-runner",
        "severity": "low",
        "isDirect": true,
        "via": [
          "@wdio/runner"
        ],
        "effects": [],
        "range": "9.6.2 - 9.17.0",
        "nodes": [
          "node_modules/@wdio/local-runner"
        ],
        "fixAvailable": {
          "name": "@wdio/local-runner",
          "version": "9.23.0",
          "isSemVerMajor": false
        }
      },
      "@wdio/mocha-framework": {
        "name": "@wdio/mocha-framework",
        "severity": "low",
        "isDirect": true,
        "via": [
          "mocha"
        ],
        "effects": [],
        "range": "*",
        "nodes": [
          "node_modules/@wdio/mocha-framework"
        ],
        "fixAvailable": false
      },
      "@wdio/reporter": {
        "name": "@wdio/reporter",
        "severity": "low",
        "isDirect": false,
        "via": [
          "diff"
        ],
        "effects": [
          "@wdio/dot-reporter",
          "@wdio/junit-reporter",
          "@wdio/spec-reporter"
        ],
        "range": "7.7.7 - 9.17.0",
        "nodes": [
          "node_modules/@wdio/reporter"
        ],
        "fixAvailable": {
          "name": "@wdio/local-runner",
          "version": "9.23.0",
          "isSemVerMajor": false
        }
      },
      "@wdio/runner": {
        "name": "@wdio/runner",
        "severity": "low",
        "isDirect": false,
        "via": [
          "@wdio/dot-reporter"
        ],
        "effects": [
          "@wdio/local-runner"
        ],
        "range": "9.6.2 - 9.17.0",
        "nodes": [
          "node_modules/@wdio/runner"
        ],
        "fixAvailable": {
          "name": "@wdio/local-runner",
          "version": "9.23.0",
          "isSemVerMajor": false
        }
      },
      "@wdio/spec-reporter": {
        "name": "@wdio/spec-reporter",
        "severity": "low",
        "isDirect": true,
        "via": [
          "@wdio/reporter"
        ],
        "effects": [],
        "range": "7.7.7 - 9.17.0",
        "nodes": [
          "node_modules/@wdio/spec-reporter"
        ],
        "fixAvailable": {
          "name": "@wdio/spec-reporter",
          "version": "9.20.0",
          "isSemVerMajor": false
        }
      },
      "diff": {
        "name": "diff",
        "severity": "low",
        "isDirect": false,
        "via": [
          {
            "source": 1112148,
            "name": "diff",
            "dependency": "diff",
            "title": "jsdiff has a Denial of Service vulnerability in parsePatch and applyPatch",
            "url": "https://github.com/advisories/GHSA-73rr-hh4g-fpgx",
            "severity": "low",
            "cwe": [
              "CWE-400",
              "CWE-1333"
            ],
            "cvss": {
              "score": 0,
              "vectorString": null
            },
            "range": "<8.0.3"
          }
        ],
        "effects": [
          "@wdio/reporter",
          "mocha"
        ],
        "range": "<8.0.3",
        "nodes": [
          "node_modules/@wdio/reporter/node_modules/diff",
          "node_modules/diff"
        ],
        "fixAvailable": {
          "name": "@wdio/local-runner",
          "version": "9.23.0",
          "isSemVerMajor": false
        }
      },
      "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.1.0",
          "isSemVerMajor": true
        }
      },
      "mocha": {
        "name": "mocha",
        "severity": "low",
        "isDirect": false,
        "via": [
          "diff"
        ],
        "effects": [
          "@wdio/mocha-framework"
        ],
        "range": "0.14.0 - 12.0.0-beta-3",
        "nodes": [
          "node_modules/mocha"
        ],
        "fixAvailable": false
      },
      "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.1.0",
          "isSemVerMajor": true
        }
      },
      "qs": {
        "name": "qs",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1111755,
            "name": "qs",
            "dependency": "qs",
            "title": "qs's arrayLimit bypass in its bracket notation allows DoS via memory exhaustion",
            "url": "https://github.com/advisories/GHSA-6rw7-vpxm-498p",
            "severity": "high",
            "cwe": [
              "CWE-20"
            ],
            "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.14.1"
          }
        ],
        "effects": [
          "request"
        ],
        "range": "<6.14.1",
        "nodes": [
          "node_modules/qs"
        ],
        "fixAvailable": {
          "name": "wdio-mediawiki",
          "version": "6.1.0",
          "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",
          "qs",
          "tough-cookie"
        ],
        "effects": [
          "mwbot"
        ],
        "range": "*",
        "nodes": [
          "node_modules/request"
        ],
        "fixAvailable": {
          "name": "wdio-mediawiki",
          "version": "6.1.0",
          "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.1.0",
          "isSemVerMajor": true
        }
      },
      "undici": {
        "name": "undici",
        "severity": "low",
        "isDirect": false,
        "via": [
          {
            "source": 1112153,
            "name": "undici",
            "dependency": "undici",
            "title": "Undici has an unbounded decompression chain in HTTP responses on Node.js Fetch API via Content-Encoding leads to resource exhaustion",
            "url": "https://github.com/advisories/GHSA-g9mf-h72j-4rw9",
            "severity": "low",
            "cwe": [
              "CWE-770"
            ],
            "cvss": {
              "score": 3.7,
              "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L"
            },
            "range": "<6.23.0"
          },
          {
            "source": 1112154,
            "name": "undici",
            "dependency": "undici",
            "title": "Undici has an unbounded decompression chain in HTTP responses on Node.js Fetch API via Content-Encoding leads to resource exhaustion",
            "url": "https://github.com/advisories/GHSA-g9mf-h72j-4rw9",
            "severity": "low",
            "cwe": [
              "CWE-770"
            ],
            "cvss": {
              "score": 3.7,
              "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L"
            },
            "range": ">=7.0.0 <7.18.2"
          }
        ],
        "effects": [],
        "range": "<6.23.0 || >=7.0.0 <7.18.2",
        "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.1.0",
          "isSemVerMajor": true
        }
      }
    },
    "metadata": {
      "vulnerabilities": {
        "info": 0,
        "low": 10,
        "moderate": 3,
        "high": 1,
        "critical": 2,
        "total": 16
      },
      "dependencies": {
        "prod": 1,
        "dev": 888,
        "optional": 37,
        "peer": 1,
        "peerOptional": 0,
        "total": 888
      }
    }
  }
}

--- end ---
{"added": 888, "removed": 0, "changed": 0, "audited": 889, "funding": 193, "audit": {"auditReportVersion": 2, "vulnerabilities": {"@wdio/dot-reporter": {"name": "@wdio/dot-reporter", "severity": "low", "isDirect": false, "via": ["@wdio/reporter"], "effects": ["@wdio/runner"], "range": "7.7.7 - 9.17.0", "nodes": ["node_modules/@wdio/dot-reporter"], "fixAvailable": {"name": "@wdio/local-runner", "version": "9.23.0", "isSemVerMajor": false}}, "@wdio/junit-reporter": {"name": "@wdio/junit-reporter", "severity": "low", "isDirect": true, "via": ["@wdio/reporter"], "effects": [], "range": "7.7.7 - 9.17.0", "nodes": ["node_modules/@wdio/junit-reporter"], "fixAvailable": {"name": "@wdio/junit-reporter", "version": "9.21.0", "isSemVerMajor": false}}, "@wdio/local-runner": {"name": "@wdio/local-runner", "severity": "low", "isDirect": true, "via": ["@wdio/runner"], "effects": [], "range": "9.6.2 - 9.17.0", "nodes": ["node_modules/@wdio/local-runner"], "fixAvailable": {"name": "@wdio/local-runner", "version": "9.23.0", "isSemVerMajor": false}}, "@wdio/mocha-framework": {"name": "@wdio/mocha-framework", "severity": "low", "isDirect": true, "via": ["mocha"], "effects": [], "range": "*", "nodes": ["node_modules/@wdio/mocha-framework"], "fixAvailable": false}, "@wdio/reporter": {"name": "@wdio/reporter", "severity": "low", "isDirect": false, "via": ["diff"], "effects": ["@wdio/dot-reporter", "@wdio/junit-reporter", "@wdio/spec-reporter"], "range": "7.7.7 - 9.17.0", "nodes": ["node_modules/@wdio/reporter"], "fixAvailable": {"name": "@wdio/local-runner", "version": "9.23.0", "isSemVerMajor": false}}, "@wdio/runner": {"name": "@wdio/runner", "severity": "low", "isDirect": false, "via": ["@wdio/dot-reporter"], "effects": ["@wdio/local-runner"], "range": "9.6.2 - 9.17.0", "nodes": ["node_modules/@wdio/runner"], "fixAvailable": {"name": "@wdio/local-runner", "version": "9.23.0", "isSemVerMajor": false}}, "@wdio/spec-reporter": {"name": "@wdio/spec-reporter", "severity": "low", "isDirect": true, "via": ["@wdio/reporter"], "effects": [], "range": "7.7.7 - 9.17.0", "nodes": ["node_modules/@wdio/spec-reporter"], "fixAvailable": {"name": "@wdio/spec-reporter", "version": "9.20.0", "isSemVerMajor": false}}, "diff": {"name": "diff", "severity": "low", "isDirect": false, "via": [{"source": 1112148, "name": "diff", "dependency": "diff", "title": "jsdiff has a Denial of Service vulnerability in parsePatch and applyPatch", "url": "https://github.com/advisories/GHSA-73rr-hh4g-fpgx", "severity": "low", "cwe": ["CWE-400", "CWE-1333"], "cvss": {"score": 0, "vectorString": null}, "range": "<8.0.3"}], "effects": ["@wdio/reporter", "mocha"], "range": "<8.0.3", "nodes": ["node_modules/@wdio/reporter/node_modules/diff", "node_modules/diff"], "fixAvailable": {"name": "@wdio/local-runner", "version": "9.23.0", "isSemVerMajor": false}}, "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.1.0", "isSemVerMajor": true}}, "mocha": {"name": "mocha", "severity": "low", "isDirect": false, "via": ["diff"], "effects": ["@wdio/mocha-framework"], "range": "0.14.0 - 12.0.0-beta-3", "nodes": ["node_modules/mocha"], "fixAvailable": false}, "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.1.0", "isSemVerMajor": true}}, "qs": {"name": "qs", "severity": "high", "isDirect": false, "via": [{"source": 1111755, "name": "qs", "dependency": "qs", "title": "qs's arrayLimit bypass in its bracket notation allows DoS via memory exhaustion", "url": "https://github.com/advisories/GHSA-6rw7-vpxm-498p", "severity": "high", "cwe": ["CWE-20"], "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.14.1"}], "effects": ["request"], "range": "<6.14.1", "nodes": ["node_modules/qs"], "fixAvailable": {"name": "wdio-mediawiki", "version": "6.1.0", "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", "qs", "tough-cookie"], "effects": ["mwbot"], "range": "*", "nodes": ["node_modules/request"], "fixAvailable": {"name": "wdio-mediawiki", "version": "6.1.0", "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.1.0", "isSemVerMajor": true}}, "undici": {"name": "undici", "severity": "low", "isDirect": false, "via": [{"source": 1112153, "name": "undici", "dependency": "undici", "title": "Undici has an unbounded decompression chain in HTTP responses on Node.js Fetch API via Content-Encoding leads to resource exhaustion", "url": "https://github.com/advisories/GHSA-g9mf-h72j-4rw9", "severity": "low", "cwe": ["CWE-770"], "cvss": {"score": 3.7, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L"}, "range": "<6.23.0"}, {"source": 1112154, "name": "undici", "dependency": "undici", "title": "Undici has an unbounded decompression chain in HTTP responses on Node.js Fetch API via Content-Encoding leads to resource exhaustion", "url": "https://github.com/advisories/GHSA-g9mf-h72j-4rw9", "severity": "low", "cwe": ["CWE-770"], "cvss": {"score": 3.7, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L"}, "range": ">=7.0.0 <7.18.2"}], "effects": [], "range": "<6.23.0 || >=7.0.0 <7.18.2", "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.1.0", "isSemVerMajor": true}}}, "metadata": {"vulnerabilities": {"info": 0, "low": 10, "moderate": 3, "high": 1, "critical": 2, "total": 16}, "dependencies": {"prod": 1, "dev": 888, "optional": 37, "peer": 1, "peerOptional": 0, "total": 888}}}}
{}
Upgrading n:@wdio/junit-reporter from 9.15.0 -> 9.21.0
{}
Upgrading n:@wdio/local-runner from 9.15.0 -> 9.23.0
{}
Upgrading n:@wdio/spec-reporter from 9.15.0 -> 9.20.0
$ /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
npm WARN deprecated lodash.isequal@4.5.0: This package is deprecated. Use require('node:util').isDeepStrictEqual instead.
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 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
npm WARN deprecated node-domexception@1.0.0: Use your platform's native DOMException instead
--- stdout ---

added 906 packages, and audited 907 packages in 16s

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

# npm audit report

diff  <8.0.3
jsdiff has a Denial of Service vulnerability in parsePatch and applyPatch - https://github.com/advisories/GHSA-73rr-hh4g-fpgx
No fix available
node_modules/diff
  mocha  0.14.0 - 12.0.0-beta-3
  Depends on vulnerable versions of diff
  node_modules/mocha
    @wdio/mocha-framework  *
    Depends on vulnerable versions of mocha
    node_modules/@wdio/mocha-framework

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.1.0, which is a breaking change
node_modules/form-data
  request  *
  Depends on vulnerable versions of form-data
  Depends on vulnerable versions of qs
  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

qs  <6.14.1
Severity: high
qs's arrayLimit bypass in its bracket notation allows DoS via memory exhaustion - https://github.com/advisories/GHSA-6rw7-vpxm-498p
fix available via `npm audit fix --force`
Will install wdio-mediawiki@6.1.0, which is a breaking change
node_modules/qs


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.1.0, which is a breaking change
node_modules/tough-cookie

9 vulnerabilities (3 low, 3 moderate, 1 high, 2 critical)

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

Some issues need review, and may require choosing
a different dependency.

--- end ---
Verifying that tests still pass
$ /usr/bin/npm ci
--- stderr ---
npm WARN deprecated lodash.isequal@4.5.0: This package is deprecated. Use require('node:util').isDeepStrictEqual instead.
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 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
npm WARN deprecated node-domexception@1.0.0: Use your platform's native DOMException instead
--- stdout ---

added 906 packages, and audited 907 packages in 18s

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

9 vulnerabilities (3 low, 3 moderate, 1 high, 2 critical)

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

Some issues need review, and may require choosing
a different dependency.

Run `npm audit` for details.

--- end ---
$ /usr/bin/npm test
--- stderr ---
[baseline-browser-mapping] The data in this module is over two months old.  To ensure accurate Baseline data, please update: `npm i baseline-browser-mapping@latest -D`
--- stdout ---

> test
> grunt test

Running "eslint:all" (eslint) task

/src/repo/resources/ext.TemplateWizard.Dialog.js
  216:12  warning  Prefer .then to .fail  no-jquery/no-done-fail

/src/repo/resources/ext.TemplateWizard.SearchField.js
  135:1  warning  This line has a length of 102. Maximum allowed is 100  max-len
  159:1  warning  Invalid JSDoc inline tag name "see"                    jsdoc/check-tag-names
  167:1  warning  Invalid JSDoc inline tag name "see"                    jsdoc/check-tag-names
  189:1  warning  Invalid JSDoc inline tag name "see"                    jsdoc/check-tag-names
  189:1  warning  Invalid JSDoc inline tag name "see"                    jsdoc/check-tag-names
  189:1  warning  Invalid JSDoc inline tag name "see"                    jsdoc/check-tag-names
  189:1  warning  Invalid JSDoc inline tag name "see"                    jsdoc/check-tag-names
  228:1  warning  Invalid JSDoc inline tag name "see"                    jsdoc/check-tag-names
  232:1  warning  Invalid JSDoc inline tag name "see"                    jsdoc/check-tag-names

/src/repo/resources/ext.TemplateWizard.TemplateForm.js
  187:1  warning  This line has a length of 121. Maximum allowed is 100  max-len
  320:1  warning  This line has a length of 103. Maximum allowed is 100  max-len
  411:3  warning  Prefer .then to .fail                                  no-jquery/no-done-fail
  421:1  warning  This line has a length of 108. Maximum allowed is 100  max-len

/src/repo/resources/ext.TemplateWizard.TemplateTitleBar.js
  16:20  warning  OOUI button has no label. Even icon-only buttons should set a label with invisibleLabel set to true  mediawiki/no-unlabeled-buttonwidget

/src/repo/tests/selenium/pageobjects/CreateTemplate.page.js
  16:28  warning  Found readFileSync from package "fs" with non literal argument at index 0  security/detect-non-literal-fs-filename

✖ 16 problems (0 errors, 16 warnings)


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

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

Done.

--- end ---
{"1112153": {"source": 1112153, "name": "undici", "dependency": "undici", "title": "Undici has an unbounded decompression chain in HTTP responses on Node.js Fetch API via Content-Encoding leads to resource exhaustion", "url": "https://github.com/advisories/GHSA-g9mf-h72j-4rw9", "severity": "low", "cwe": ["CWE-770"], "cvss": {"score": 3.7, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L"}, "range": "<6.23.0"}, "1112154": {"source": 1112154, "name": "undici", "dependency": "undici", "title": "Undici has an unbounded decompression chain in HTTP responses on Node.js Fetch API via Content-Encoding leads to resource exhaustion", "url": "https://github.com/advisories/GHSA-g9mf-h72j-4rw9", "severity": "low", "cwe": ["CWE-770"], "cvss": {"score": 3.7, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L"}, "range": ">=7.0.0 <7.18.2"}}
Upgrading n:undici from 6.21.3, 7.10.0 -> 6.23.0, 7.18.2
$ package-lock-lint /src/repo/package-lock.json
--- stdout ---
Checking /src/repo/package-lock.json

--- end ---
build: Updating npm dependencies

* @wdio/junit-reporter: 9.15.0 → 9.21.0
* @wdio/local-runner: 9.15.0 → 9.23.0
* @wdio/spec-reporter: 9.15.0 → 9.20.0
* undici: 6.21.3, 7.10.0 → 6.23.0, 7.18.2
  * https://github.com/advisories/GHSA-g9mf-h72j-4rw9

$ git add .
--- stdout ---

--- end ---
$ git commit -F /tmp/tmpv6i9nqnh
--- stdout ---
[master fcd5511] build: Updating npm dependencies
 2 files changed, 1508 insertions(+), 372 deletions(-)

--- end ---
$ git format-patch HEAD~1 --stdout
--- stdout ---
From fcd55115e03bd6eab14f0cb2262e2d6e9a226d7b Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Thu, 15 Jan 2026 11:51:44 +0000
Subject: [PATCH] build: Updating npm dependencies
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* @wdio/junit-reporter: 9.15.0 → 9.21.0
* @wdio/local-runner: 9.15.0 → 9.23.0
* @wdio/spec-reporter: 9.15.0 → 9.20.0
* undici: 6.21.3, 7.10.0 → 6.23.0, 7.18.2
  * https://github.com/advisories/GHSA-g9mf-h72j-4rw9

Change-Id: Id3e2ed1207b1d5e92b6930bfa5c8aca9e034b9dd
---
 package-lock.json | 1874 ++++++++++++++++++++++++++++++++++++---------
 package.json      |    6 +-
 2 files changed, 1508 insertions(+), 372 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 7e5aac2..c2c2bcb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,10 +7,10 @@
 			"name": "TemplateWizard",
 			"devDependencies": {
 				"@wdio/cli": "9.18.4",
-				"@wdio/junit-reporter": "9.15.0",
-				"@wdio/local-runner": "9.15.0",
+				"@wdio/junit-reporter": "9.21.0",
+				"@wdio/local-runner": "9.23.0",
 				"@wdio/mocha-framework": "9.15.0",
-				"@wdio/spec-reporter": "9.15.0",
+				"@wdio/spec-reporter": "9.20.0",
 				"eslint-config-wikimedia": "0.32.3",
 				"grunt": "1.6.1",
 				"grunt-banana-checker": "0.13.0",
@@ -1951,24 +1951,6 @@
 				"url": "https://github.com/chalk/strip-ansi?sponsor=1"
 			}
 		},
-		"node_modules/@wdio/cli/node_modules/@wdio/protocols": {
-			"version": "9.16.2",
-			"resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.16.2.tgz",
-			"integrity": "sha512-h3k97/lzmyw5MowqceAuY3HX/wGJojXHkiPXA3WlhGPCaa2h4+GovV2nJtRvknCKsE7UHA1xB5SWeI8MzloBew==",
-			"dev": true
-		},
-		"node_modules/@wdio/cli/node_modules/@wdio/repl": {
-			"version": "9.16.2",
-			"resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.16.2.tgz",
-			"integrity": "sha512-FLTF0VL6+o5BSTCO7yLSXocm3kUnu31zYwzdsz4n9s5YWt83sCtzGZlZpt7TaTzb3jVUfxuHNQDTb8UMkCu0lQ==",
-			"dev": true,
-			"dependencies": {
-				"@types/node": "^20.1.0"
-			},
-			"engines": {
-				"node": ">=18.20.0"
-			}
-		},
 		"node_modules/@wdio/cli/node_modules/@wdio/types": {
 			"version": "9.16.2",
 			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.16.2.tgz",
@@ -2088,12 +2070,6 @@
 				"url": "https://github.com/sponsors/isaacs"
 			}
 		},
-		"node_modules/@wdio/cli/node_modules/htmlfy": {
-			"version": "0.8.1",
-			"resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.8.1.tgz",
-			"integrity": "sha512-xWROBw9+MEGwxpotll0h672KCaLrKKiCYzsyN8ZgL9cQbVumFnyvsk2JqiB9ELAV1GLj1GG/jxZUjV9OZZi/yQ==",
-			"dev": true
-		},
 		"node_modules/@wdio/cli/node_modules/is-plain-obj": {
 			"version": "4.1.0",
 			"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
@@ -2134,21 +2110,6 @@
 				"url": "https://paulmillr.com/funding/"
 			}
 		},
-		"node_modules/@wdio/cli/node_modules/serialize-error": {
-			"version": "12.0.0",
-			"resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-12.0.0.tgz",
-			"integrity": "sha512-ZYkZLAvKTKQXWuh5XpBw7CdbSzagarX39WyZ2H07CDLC5/KfsRGlIXV8d4+tfqX1M7916mRqR1QfNHSij+c9Pw==",
-			"dev": true,
-			"dependencies": {
-				"type-fest": "^4.31.0"
-			},
-			"engines": {
-				"node": ">=18"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
 		"node_modules/@wdio/cli/node_modules/webdriver": {
 			"version": "9.18.0",
 			"resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.18.0.tgz",
@@ -2243,14 +2204,14 @@
 			}
 		},
 		"node_modules/@wdio/config": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.15.0.tgz",
-			"integrity": "sha512-IQzSZx2Y0KdAVWHSdcBLkuUjCmYtOnc1oDY7Psi814wDR7dEPVOuKgMo8ZZ0P1yhioMzqvy5tBemYSzj7CrFTA==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.23.0.tgz",
+			"integrity": "sha512-hhtngUG2uCxYmScSEor+k22EVlsTW3ARXgke8NPVeQA4p1+GC2CvRZi4P7nmhRTZubgLrENYYsveFcYR+1UXhQ==",
 			"dev": true,
 			"dependencies": {
-				"@wdio/logger": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"@wdio/utils": "9.15.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/types": "9.20.0",
+				"@wdio/utils": "9.23.0",
 				"deepmerge-ts": "^7.0.3",
 				"glob": "^10.2.2",
 				"import-meta-resolve": "^4.0.0"
@@ -2259,6 +2220,71 @@
 				"node": ">=18.20.0"
 			}
 		},
+		"node_modules/@wdio/config/node_modules/@wdio/logger": {
+			"version": "9.18.0",
+			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+			"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+			"dev": true,
+			"dependencies": {
+				"chalk": "^5.1.2",
+				"loglevel": "^1.6.0",
+				"loglevel-plugin-prefix": "^0.8.4",
+				"safe-regex2": "^5.0.0",
+				"strip-ansi": "^7.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/@wdio/config/node_modules/@wdio/types": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+			"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "^20.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/@wdio/config/node_modules/@wdio/utils": {
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.23.0.tgz",
+			"integrity": "sha512-WhXuVSxEvPw/i34bL1aCHAOi+4g29kRkIMyBShNSxH+Shxh2G91RJYsXm4IAiPMGcC4H6G8T2VcbZ32qnGPm5Q==",
+			"dev": true,
+			"dependencies": {
+				"@puppeteer/browsers": "^2.2.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/types": "9.20.0",
+				"decamelize": "^6.0.0",
+				"deepmerge-ts": "^7.0.3",
+				"edgedriver": "^6.1.2",
+				"geckodriver": "^6.1.0",
+				"get-port": "^7.0.0",
+				"import-meta-resolve": "^4.0.0",
+				"locate-app": "^2.2.24",
+				"mitt": "^3.0.1",
+				"safaridriver": "^1.0.0",
+				"split2": "^4.2.0",
+				"wait-port": "^1.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/@wdio/config/node_modules/ansi-regex": {
+			"version": "6.2.2",
+			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+			"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+			"dev": true,
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/ansi-regex?sponsor=1"
+			}
+		},
 		"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",
@@ -2268,6 +2294,39 @@
 				"balanced-match": "^1.0.0"
 			}
 		},
+		"node_modules/@wdio/config/node_modules/chalk": {
+			"version": "5.6.2",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+			"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+			"dev": true,
+			"engines": {
+				"node": "^12.17.0 || ^14.13 || >=16.0.0"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/chalk?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/config/node_modules/geckodriver": {
+			"version": "6.1.0",
+			"resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz",
+			"integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==",
+			"dev": true,
+			"hasInstallScript": true,
+			"dependencies": {
+				"@wdio/logger": "^9.18.0",
+				"@zip.js/zip.js": "^2.8.11",
+				"decamelize": "^6.0.1",
+				"http-proxy-agent": "^7.0.2",
+				"https-proxy-agent": "^7.0.6",
+				"modern-tar": "^0.7.2"
+			},
+			"bin": {
+				"geckodriver": "bin/geckodriver.js"
+			},
+			"engines": {
+				"node": ">=20.0.0"
+			}
+		},
 		"node_modules/@wdio/config/node_modules/glob": {
 			"version": "10.5.0",
 			"resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
@@ -2303,24 +2362,51 @@
 				"url": "https://github.com/sponsors/isaacs"
 			}
 		},
+		"node_modules/@wdio/config/node_modules/strip-ansi": {
+			"version": "7.1.2",
+			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+			"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+			"dev": true,
+			"dependencies": {
+				"ansi-regex": "^6.0.1"
+			},
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/strip-ansi?sponsor=1"
+			}
+		},
 		"node_modules/@wdio/dot-reporter": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/dot-reporter/-/dot-reporter-9.15.0.tgz",
-			"integrity": "sha512-dga+nwqZtsruAnERYGXa41O/APPpG6IClXA0gk35zKe24aMez/XgU7ZDHVJ3JYGmr7XTSEGiWXudvthaX/EbSg==",
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/dot-reporter/-/dot-reporter-9.20.0.tgz",
+			"integrity": "sha512-lRhihDQ56dApJcKOIEkVHThl8t2e5h7f3FW3JVmMLcGgbbkkLgXqVWPpbEGJcLld3wL4CipAPojVE/YEWp80hw==",
 			"dev": true,
 			"dependencies": {
-				"@wdio/reporter": "9.15.0",
-				"@wdio/types": "9.15.0",
+				"@wdio/reporter": "9.20.0",
+				"@wdio/types": "9.20.0",
 				"chalk": "^5.0.1"
 			},
 			"engines": {
 				"node": ">=18.20.0"
 			}
 		},
+		"node_modules/@wdio/dot-reporter/node_modules/@wdio/types": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+			"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "^20.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
 		"node_modules/@wdio/dot-reporter/node_modules/chalk": {
-			"version": "5.4.1",
-			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
-			"integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
+			"version": "5.6.2",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+			"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
 			"dev": true,
 			"engines": {
 				"node": "^12.17.0 || ^14.13 || >=16.0.0"
@@ -2330,26 +2416,34 @@
 			}
 		},
 		"node_modules/@wdio/globals": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.15.0.tgz",
-			"integrity": "sha512-4bEnqoHr676x4hyq7yOp+V+wVgclisNeOwMyLPEIJOv+cAAxESzIOdFyiQcbAu7gq+HUIuoWMZGlV9UgDnXh1w==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.23.0.tgz",
+			"integrity": "sha512-OmwPKV8c5ecLqo+EkytN7oUeYfNmRI4uOXGIR1ybP7AK5Zz+l9R0dGfoadEuwi1aZXAL0vwuhtq3p0OL3dfqHQ==",
 			"dev": true,
 			"engines": {
 				"node": ">=18.20.0"
 			},
-			"optionalDependencies": {
-				"expect-webdriverio": "^5.1.0",
-				"webdriverio": "9.15.0"
+			"peerDependencies": {
+				"expect-webdriverio": "^5.3.4",
+				"webdriverio": "^9.0.0"
+			},
+			"peerDependenciesMeta": {
+				"expect-webdriverio": {
+					"optional": false
+				},
+				"webdriverio": {
+					"optional": false
+				}
 			}
 		},
 		"node_modules/@wdio/junit-reporter": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/junit-reporter/-/junit-reporter-9.15.0.tgz",
-			"integrity": "sha512-ZulPH628zp/V1IolHtMkLPEmlWeoAa4Go5hAe46wyfB879PHD9bm5RUXZYJvVAphlvvSljpXd4YOqINN0hWVuQ==",
+			"version": "9.21.0",
+			"resolved": "https://registry.npmjs.org/@wdio/junit-reporter/-/junit-reporter-9.21.0.tgz",
+			"integrity": "sha512-1vuym8VuTqhJMe3Xb71PLxmTUxo9+fcXnzZcqiYdQtKdN3nibKkuctRU8oTAMGQqLY2VPtHd4MbUGmd+CVlaCg==",
 			"dev": true,
 			"dependencies": {
-				"@wdio/reporter": "9.15.0",
-				"@wdio/types": "9.15.0",
+				"@wdio/reporter": "9.20.0",
+				"@wdio/types": "9.20.0",
 				"json-stringify-safe": "^5.0.1",
 				"junit-report-builder": "^5.1.1"
 			},
@@ -2357,18 +2451,32 @@
 				"node": ">=18.20.0"
 			}
 		},
+		"node_modules/@wdio/junit-reporter/node_modules/@wdio/types": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+			"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "^20.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
 		"node_modules/@wdio/local-runner": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-9.15.0.tgz",
-			"integrity": "sha512-SbmQpzXSxaLvvjDAJpHvfRq5Df9nfdD3LxOM/L4QytI09rK3Y94Re2QEFIk1MyFmUAuoIgJ99L4TSRw9hhrIbg==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-9.23.0.tgz",
+			"integrity": "sha512-kBWIqBDbCAJuxENl4t1qiCf8mivHN++cNdgsmlkP8nG7KJ8ebCseqsBHTrvx/YAqRPZIBD50cN6xsB6MZTmUfg==",
 			"dev": true,
 			"dependencies": {
 				"@types/node": "^20.1.0",
-				"@wdio/logger": "9.15.0",
-				"@wdio/repl": "9.4.4",
-				"@wdio/runner": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"async-exit-hook": "^2.0.1",
+				"@wdio/logger": "9.18.0",
+				"@wdio/repl": "9.16.2",
+				"@wdio/runner": "9.23.0",
+				"@wdio/types": "9.20.0",
+				"@wdio/xvfb": "9.20.0",
+				"exit-hook": "^4.0.0",
+				"expect-webdriverio": "^5.3.4",
 				"split2": "^4.1.0",
 				"stream-buffers": "^3.0.2"
 			},
@@ -2376,6 +2484,73 @@
 				"node": ">=18.20.0"
 			}
 		},
+		"node_modules/@wdio/local-runner/node_modules/@wdio/logger": {
+			"version": "9.18.0",
+			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+			"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+			"dev": true,
+			"dependencies": {
+				"chalk": "^5.1.2",
+				"loglevel": "^1.6.0",
+				"loglevel-plugin-prefix": "^0.8.4",
+				"safe-regex2": "^5.0.0",
+				"strip-ansi": "^7.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/@wdio/local-runner/node_modules/@wdio/types": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+			"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "^20.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/@wdio/local-runner/node_modules/ansi-regex": {
+			"version": "6.2.2",
+			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+			"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+			"dev": true,
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/ansi-regex?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/local-runner/node_modules/chalk": {
+			"version": "5.6.2",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+			"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+			"dev": true,
+			"engines": {
+				"node": "^12.17.0 || ^14.13 || >=16.0.0"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/chalk?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/local-runner/node_modules/strip-ansi": {
+			"version": "7.1.2",
+			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+			"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+			"dev": true,
+			"dependencies": {
+				"ansi-regex": "^6.0.1"
+			},
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/strip-ansi?sponsor=1"
+			}
+		},
 		"node_modules/@wdio/logger": {
 			"version": "9.15.0",
 			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.15.0.tgz",
@@ -2448,15 +2623,15 @@
 			}
 		},
 		"node_modules/@wdio/protocols": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.15.0.tgz",
-			"integrity": "sha512-5O7bwiG7t8nmSVOx888YryO/9AQgQ7p/Ecd9rS13UyDQL169HmVKXP0vvJKGH3X+oeE92U1wVrwrIl4Xx3BQ6Q==",
+			"version": "9.16.2",
+			"resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.16.2.tgz",
+			"integrity": "sha512-h3k97/lzmyw5MowqceAuY3HX/wGJojXHkiPXA3WlhGPCaa2h4+GovV2nJtRvknCKsE7UHA1xB5SWeI8MzloBew==",
 			"dev": true
 		},
 		"node_modules/@wdio/repl": {
-			"version": "9.4.4",
-			"resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.4.4.tgz",
-			"integrity": "sha512-kchPRhoG/pCn4KhHGiL/ocNhdpR8OkD2e6sANlSUZ4TGBVi86YSIEjc2yXUwLacHknC/EnQk/SFnqd4MsNjGGg==",
+			"version": "9.16.2",
+			"resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.16.2.tgz",
+			"integrity": "sha512-FLTF0VL6+o5BSTCO7yLSXocm3kUnu31zYwzdsz4n9s5YWt83sCtzGZlZpt7TaTzb3jVUfxuHNQDTb8UMkCu0lQ==",
 			"dev": true,
 			"dependencies": {
 				"@types/node": "^20.1.0"
@@ -2466,61 +2641,252 @@
 			}
 		},
 		"node_modules/@wdio/reporter": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-9.15.0.tgz",
-			"integrity": "sha512-p120dZr+fUQ7HE54L/RDG/7BfE/LkFORyNaZ/G2KE6gEr8gIyL3sW9kVbTZtYOBW68KgU+CC7x4yxfZCXfRUuw==",
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-9.20.0.tgz",
+			"integrity": "sha512-HjKJzm8o0MCcnwGVGprzaCAyau0OB8mWHwH1ZI/ka+z1nmVBr2tsr7H53SdHsGIhAg/XuZObobqdzeVF63ApeA==",
 			"dev": true,
 			"dependencies": {
 				"@types/node": "^20.1.0",
-				"@wdio/logger": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"diff": "^7.0.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/types": "9.20.0",
+				"diff": "^8.0.2",
 				"object-inspect": "^1.12.0"
 			},
 			"engines": {
 				"node": ">=18.20.0"
 			}
 		},
-		"node_modules/@wdio/reporter/node_modules/diff": {
-			"version": "7.0.0",
-			"resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz",
-			"integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==",
+		"node_modules/@wdio/reporter/node_modules/@wdio/logger": {
+			"version": "9.18.0",
+			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+			"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
 			"dev": true,
+			"dependencies": {
+				"chalk": "^5.1.2",
+				"loglevel": "^1.6.0",
+				"loglevel-plugin-prefix": "^0.8.4",
+				"safe-regex2": "^5.0.0",
+				"strip-ansi": "^7.1.0"
+			},
 			"engines": {
-				"node": ">=0.3.1"
+				"node": ">=18.20.0"
 			}
 		},
-		"node_modules/@wdio/runner": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-9.15.0.tgz",
-			"integrity": "sha512-KHDM4L02Aqmmsi83Yum2c026eNqpQysrMPnHiSzZm0+wMmDNLIMwq6xAj/vlBHDiVgrSKho3LlMz7mNyagkkgw==",
+		"node_modules/@wdio/reporter/node_modules/@wdio/types": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+			"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
 			"dev": true,
 			"dependencies": {
-				"@types/node": "^20.11.28",
-				"@wdio/config": "9.15.0",
-				"@wdio/dot-reporter": "9.15.0",
-				"@wdio/globals": "9.15.0",
-				"@wdio/logger": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"@wdio/utils": "9.15.0",
-				"deepmerge-ts": "^7.0.3",
-				"expect-webdriverio": "^5.1.0",
-				"webdriver": "9.15.0",
-				"webdriverio": "9.15.0"
+				"@types/node": "^20.1.0"
 			},
 			"engines": {
 				"node": ">=18.20.0"
 			}
 		},
-		"node_modules/@wdio/spec-reporter": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-9.15.0.tgz",
-			"integrity": "sha512-xu8uVGyk2HEAvdzPmspxTJMJc3UxGzdKjqNIUVpCQpVYkKOd6zm1RH2Cpdb7gsx2j/+ddYZEVhftFGR9YOQF6g==",
+		"node_modules/@wdio/reporter/node_modules/ansi-regex": {
+			"version": "6.2.2",
+			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+			"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
 			"dev": true,
-			"dependencies": {
-				"@wdio/reporter": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"chalk": "^5.1.2",
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/ansi-regex?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/reporter/node_modules/chalk": {
+			"version": "5.6.2",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+			"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+			"dev": true,
+			"engines": {
+				"node": "^12.17.0 || ^14.13 || >=16.0.0"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/chalk?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/reporter/node_modules/diff": {
+			"version": "8.0.3",
+			"resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz",
+			"integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==",
+			"dev": true,
+			"engines": {
+				"node": ">=0.3.1"
+			}
+		},
+		"node_modules/@wdio/reporter/node_modules/strip-ansi": {
+			"version": "7.1.2",
+			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+			"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+			"dev": true,
+			"dependencies": {
+				"ansi-regex": "^6.0.1"
+			},
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/strip-ansi?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/runner": {
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-9.23.0.tgz",
+			"integrity": "sha512-a2afdICcEzzMjSPCwY3g9Hl2kWXXjBFyWv5DxvjaJOmQygnKzz9olFOrpVotgLKXE9ZLuJ4EP98or69sFIeLBg==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "^20.11.28",
+				"@wdio/config": "9.23.0",
+				"@wdio/dot-reporter": "9.20.0",
+				"@wdio/globals": "9.23.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/types": "9.20.0",
+				"@wdio/utils": "9.23.0",
+				"deepmerge-ts": "^7.0.3",
+				"webdriver": "9.23.0",
+				"webdriverio": "9.23.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			},
+			"peerDependencies": {
+				"expect-webdriverio": "^5.3.4",
+				"webdriverio": "^9.0.0"
+			},
+			"peerDependenciesMeta": {
+				"expect-webdriverio": {
+					"optional": false
+				},
+				"webdriverio": {
+					"optional": false
+				}
+			}
+		},
+		"node_modules/@wdio/runner/node_modules/@wdio/logger": {
+			"version": "9.18.0",
+			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+			"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+			"dev": true,
+			"dependencies": {
+				"chalk": "^5.1.2",
+				"loglevel": "^1.6.0",
+				"loglevel-plugin-prefix": "^0.8.4",
+				"safe-regex2": "^5.0.0",
+				"strip-ansi": "^7.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/@wdio/runner/node_modules/@wdio/types": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+			"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "^20.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/@wdio/runner/node_modules/@wdio/utils": {
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.23.0.tgz",
+			"integrity": "sha512-WhXuVSxEvPw/i34bL1aCHAOi+4g29kRkIMyBShNSxH+Shxh2G91RJYsXm4IAiPMGcC4H6G8T2VcbZ32qnGPm5Q==",
+			"dev": true,
+			"dependencies": {
+				"@puppeteer/browsers": "^2.2.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/types": "9.20.0",
+				"decamelize": "^6.0.0",
+				"deepmerge-ts": "^7.0.3",
+				"edgedriver": "^6.1.2",
+				"geckodriver": "^6.1.0",
+				"get-port": "^7.0.0",
+				"import-meta-resolve": "^4.0.0",
+				"locate-app": "^2.2.24",
+				"mitt": "^3.0.1",
+				"safaridriver": "^1.0.0",
+				"split2": "^4.2.0",
+				"wait-port": "^1.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/@wdio/runner/node_modules/ansi-regex": {
+			"version": "6.2.2",
+			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+			"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+			"dev": true,
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/ansi-regex?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/runner/node_modules/chalk": {
+			"version": "5.6.2",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+			"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+			"dev": true,
+			"engines": {
+				"node": "^12.17.0 || ^14.13 || >=16.0.0"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/chalk?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/runner/node_modules/geckodriver": {
+			"version": "6.1.0",
+			"resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz",
+			"integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==",
+			"dev": true,
+			"hasInstallScript": true,
+			"dependencies": {
+				"@wdio/logger": "^9.18.0",
+				"@zip.js/zip.js": "^2.8.11",
+				"decamelize": "^6.0.1",
+				"http-proxy-agent": "^7.0.2",
+				"https-proxy-agent": "^7.0.6",
+				"modern-tar": "^0.7.2"
+			},
+			"bin": {
+				"geckodriver": "bin/geckodriver.js"
+			},
+			"engines": {
+				"node": ">=20.0.0"
+			}
+		},
+		"node_modules/@wdio/runner/node_modules/strip-ansi": {
+			"version": "7.1.2",
+			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+			"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+			"dev": true,
+			"dependencies": {
+				"ansi-regex": "^6.0.1"
+			},
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/strip-ansi?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/spec-reporter": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-9.20.0.tgz",
+			"integrity": "sha512-YHj3kF86RoOVVR+k3eb+e/Fki6Mq1FIrJQ380Cz5SSWbIc9gL8HXG3ydReldY6/80KLFOuHn9ZHvDHrCIXRjiw==",
+			"dev": true,
+			"dependencies": {
+				"@wdio/reporter": "9.20.0",
+				"@wdio/types": "9.20.0",
+				"chalk": "^5.1.2",
 				"easy-table": "^1.2.0",
 				"pretty-ms": "^9.0.0"
 			},
@@ -2528,6 +2894,18 @@
 				"node": ">=18.20.0"
 			}
 		},
+		"node_modules/@wdio/spec-reporter/node_modules/@wdio/types": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+			"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "^20.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
 		"node_modules/@wdio/spec-reporter/node_modules/chalk": {
 			"version": "5.4.1",
 			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
@@ -2576,15 +2954,82 @@
 				"node": ">=18.20.0"
 			}
 		},
+		"node_modules/@wdio/xvfb": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/xvfb/-/xvfb-9.20.0.tgz",
+			"integrity": "sha512-shllZH9CsLiZqTXkqBTJrwi6k/ajBE7/78fQgvafMUIQU1Hpb2RdsmydKfPFZ5NDoA+LNm67PD2cPkvkXy4pSw==",
+			"dev": true,
+			"dependencies": {
+				"@wdio/logger": "9.18.0"
+			},
+			"engines": {
+				"node": ">=18"
+			}
+		},
+		"node_modules/@wdio/xvfb/node_modules/@wdio/logger": {
+			"version": "9.18.0",
+			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+			"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+			"dev": true,
+			"dependencies": {
+				"chalk": "^5.1.2",
+				"loglevel": "^1.6.0",
+				"loglevel-plugin-prefix": "^0.8.4",
+				"safe-regex2": "^5.0.0",
+				"strip-ansi": "^7.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/@wdio/xvfb/node_modules/ansi-regex": {
+			"version": "6.2.2",
+			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+			"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+			"dev": true,
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/ansi-regex?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/xvfb/node_modules/chalk": {
+			"version": "5.6.2",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+			"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+			"dev": true,
+			"engines": {
+				"node": "^12.17.0 || ^14.13 || >=16.0.0"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/chalk?sponsor=1"
+			}
+		},
+		"node_modules/@wdio/xvfb/node_modules/strip-ansi": {
+			"version": "7.1.2",
+			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+			"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+			"dev": true,
+			"dependencies": {
+				"ansi-regex": "^6.0.1"
+			},
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/strip-ansi?sponsor=1"
+			}
+		},
 		"node_modules/@zip.js/zip.js": {
-			"version": "2.7.62",
-			"resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.62.tgz",
-			"integrity": "sha512-OaLvZ8j4gCkLn048ypkZu29KX30r8/OfFF2w4Jo5WXFr+J04J+lzJ5TKZBVgFXhlvSkqNFQdfnY1Q8TMTCyBVA==",
+			"version": "2.8.15",
+			"resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.8.15.tgz",
+			"integrity": "sha512-HZKJLFe4eGVgCe9J87PnijY7T1Zn638bEHS+Fm/ygHZozRpefzWcOYfPaP52S8pqk9g4xN3+LzMDl3Lv9dLglA==",
 			"dev": true,
 			"engines": {
 				"bun": ">=0.7.0",
 				"deno": ">=1.0.0",
-				"node": ">=16.5.0"
+				"node": ">=18.0.0"
 			}
 		},
 		"node_modules/abbrev": {
@@ -3476,9 +3921,9 @@
 			}
 		},
 		"node_modules/cheerio/node_modules/undici": {
-			"version": "7.10.0",
-			"resolved": "https://registry.npmjs.org/undici/-/undici-7.10.0.tgz",
-			"integrity": "sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==",
+			"version": "7.18.2",
+			"resolved": "https://registry.npmjs.org/undici/-/undici-7.18.2.tgz",
+			"integrity": "sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==",
 			"dev": true,
 			"engines": {
 				"node": ">=20.18.1"
@@ -4149,9 +4594,9 @@
 			}
 		},
 		"node_modules/decamelize": {
-			"version": "6.0.0",
-			"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz",
-			"integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==",
+			"version": "6.0.1",
+			"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.1.tgz",
+			"integrity": "sha512-G7Cqgaelq68XHJNGlZ7lrNQyhZGsFqpwtGFexqUv4IQdjKoSYF7ipZ9UuTJZUSQXFj/XaoBLuEVIVqr8EJngEQ==",
 			"dev": true,
 			"engines": {
 				"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
@@ -5585,6 +6030,18 @@
 				"node": ">= 0.8.0"
 			}
 		},
+		"node_modules/exit-hook": {
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-4.0.0.tgz",
+			"integrity": "sha512-Fqs7ChZm72y40wKjOFXBKg7nJZvQJmewP5/7LtePDdnah/+FH9Hp5sgMujSCMPXlxOAW2//1jrW9pnsY7o20vQ==",
+			"dev": true,
+			"engines": {
+				"node": ">=18"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/sindresorhus"
+			}
+		},
 		"node_modules/expand-tilde": {
 			"version": "2.0.2",
 			"resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
@@ -6729,9 +7186,9 @@
 			}
 		},
 		"node_modules/htmlfy": {
-			"version": "0.6.7",
-			"resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.6.7.tgz",
-			"integrity": "sha512-r8hRd+oIM10lufovN+zr3VKPTYEIvIwqXGucidh2XQufmiw6sbUXFUFjWlfjo3AnefIDTyzykVzQ8IUVuT1peQ==",
+			"version": "0.8.1",
+			"resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.8.1.tgz",
+			"integrity": "sha512-xWROBw9+MEGwxpotll0h672KCaLrKKiCYzsyN8ZgL9cQbVumFnyvsk2JqiB9ELAV1GLj1GG/jxZUjV9OZZi/yQ==",
 			"dev": true
 		},
 		"node_modules/htmlparser2": {
@@ -8006,6 +8463,15 @@
 				"url": "https://github.com/chalk/supports-color?sponsor=1"
 			}
 		},
+		"node_modules/modern-tar": {
+			"version": "0.7.3",
+			"resolved": "https://registry.npmjs.org/modern-tar/-/modern-tar-0.7.3.tgz",
+			"integrity": "sha512-4W79zekKGyYU4JXVmB78DOscMFaJth2gGhgfTl2alWE4rNe3nf4N2pqenQ0rEtIewrnD79M687Ouba3YGTLOvg==",
+			"dev": true,
+			"engines": {
+				"node": ">=18.0.0"
+			}
+		},
 		"node_modules/ms": {
 			"version": "2.1.3",
 			"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -9599,27 +10065,15 @@
 			}
 		},
 		"node_modules/serialize-error": {
-			"version": "11.0.3",
-			"resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-11.0.3.tgz",
-			"integrity": "sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g==",
+			"version": "12.0.0",
+			"resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-12.0.0.tgz",
+			"integrity": "sha512-ZYkZLAvKTKQXWuh5XpBw7CdbSzagarX39WyZ2H07CDLC5/KfsRGlIXV8d4+tfqX1M7916mRqR1QfNHSij+c9Pw==",
 			"dev": true,
 			"dependencies": {
-				"type-fest": "^2.12.2"
-			},
-			"engines": {
-				"node": ">=14.16"
+				"type-fest": "^4.31.0"
 			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
-		"node_modules/serialize-error/node_modules/type-fest": {
-			"version": "2.19.0",
-			"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
-			"integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
-			"dev": true,
 			"engines": {
-				"node": ">=12.20"
+				"node": ">=18"
 			},
 			"funding": {
 				"url": "https://github.com/sponsors/sindresorhus"
@@ -10639,9 +11093,9 @@
 			}
 		},
 		"node_modules/undici": {
-			"version": "6.21.3",
-			"resolved": "https://registry.npmjs.org/undici/-/undici-6.21.3.tgz",
-			"integrity": "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==",
+			"version": "6.23.0",
+			"resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz",
+			"integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==",
 			"dev": true,
 			"engines": {
 				"node": ">=18.17"
@@ -10841,47 +11295,161 @@
 			}
 		},
 		"node_modules/webdriver": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.15.0.tgz",
-			"integrity": "sha512-JCW5xvhZtL6kjbckdePgVYMOlvWbh22F1VFkIf9pw3prwXI2EHED5Eq/nfDnNfHiqr0AfFKWmIDPziSafrVv4Q==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.23.0.tgz",
+			"integrity": "sha512-XkZOhjoBOY7maKI3BhDF2rNiDne4wBD6Gw6VUnt4X9b7j9NtfzcCrThBlT0hnA8W77bWNtMRCSpw9Ajy08HqKg==",
 			"dev": true,
 			"dependencies": {
 				"@types/node": "^20.1.0",
 				"@types/ws": "^8.5.3",
-				"@wdio/config": "9.15.0",
-				"@wdio/logger": "9.15.0",
-				"@wdio/protocols": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"@wdio/utils": "9.15.0",
+				"@wdio/config": "9.23.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/protocols": "9.16.2",
+				"@wdio/types": "9.20.0",
+				"@wdio/utils": "9.23.0",
 				"deepmerge-ts": "^7.0.3",
-				"undici": "^6.20.1",
+				"https-proxy-agent": "^7.0.6",
+				"undici": "^6.21.3",
 				"ws": "^8.8.0"
 			},
 			"engines": {
 				"node": ">=18.20.0"
 			}
 		},
-		"node_modules/webdriverio": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.15.0.tgz",
-			"integrity": "sha512-910g6ktwXdAKGyhgCPGw9BzIKOEBBYMFN1bLwC3bW/3mFlxGHO/n70c7Sg9hrsu9VWTzv6m+1Clf27B9uz4a/Q==",
+		"node_modules/webdriver/node_modules/@wdio/logger": {
+			"version": "9.18.0",
+			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+			"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
 			"dev": true,
 			"dependencies": {
-				"@types/node": "^20.11.30",
-				"@types/sinonjs__fake-timers": "^8.1.5",
-				"@wdio/config": "9.15.0",
-				"@wdio/logger": "9.15.0",
-				"@wdio/protocols": "9.15.0",
-				"@wdio/repl": "9.4.4",
-				"@wdio/types": "9.15.0",
-				"@wdio/utils": "9.15.0",
-				"archiver": "^7.0.1",
-				"aria-query": "^5.3.0",
+				"chalk": "^5.1.2",
+				"loglevel": "^1.6.0",
+				"loglevel-plugin-prefix": "^0.8.4",
+				"safe-regex2": "^5.0.0",
+				"strip-ansi": "^7.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/webdriver/node_modules/@wdio/types": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+			"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "^20.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/webdriver/node_modules/@wdio/utils": {
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.23.0.tgz",
+			"integrity": "sha512-WhXuVSxEvPw/i34bL1aCHAOi+4g29kRkIMyBShNSxH+Shxh2G91RJYsXm4IAiPMGcC4H6G8T2VcbZ32qnGPm5Q==",
+			"dev": true,
+			"dependencies": {
+				"@puppeteer/browsers": "^2.2.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/types": "9.20.0",
+				"decamelize": "^6.0.0",
+				"deepmerge-ts": "^7.0.3",
+				"edgedriver": "^6.1.2",
+				"geckodriver": "^6.1.0",
+				"get-port": "^7.0.0",
+				"import-meta-resolve": "^4.0.0",
+				"locate-app": "^2.2.24",
+				"mitt": "^3.0.1",
+				"safaridriver": "^1.0.0",
+				"split2": "^4.2.0",
+				"wait-port": "^1.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/webdriver/node_modules/ansi-regex": {
+			"version": "6.2.2",
+			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+			"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+			"dev": true,
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/ansi-regex?sponsor=1"
+			}
+		},
+		"node_modules/webdriver/node_modules/chalk": {
+			"version": "5.6.2",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+			"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+			"dev": true,
+			"engines": {
+				"node": "^12.17.0 || ^14.13 || >=16.0.0"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/chalk?sponsor=1"
+			}
+		},
+		"node_modules/webdriver/node_modules/geckodriver": {
+			"version": "6.1.0",
+			"resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz",
+			"integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==",
+			"dev": true,
+			"hasInstallScript": true,
+			"dependencies": {
+				"@wdio/logger": "^9.18.0",
+				"@zip.js/zip.js": "^2.8.11",
+				"decamelize": "^6.0.1",
+				"http-proxy-agent": "^7.0.2",
+				"https-proxy-agent": "^7.0.6",
+				"modern-tar": "^0.7.2"
+			},
+			"bin": {
+				"geckodriver": "bin/geckodriver.js"
+			},
+			"engines": {
+				"node": ">=20.0.0"
+			}
+		},
+		"node_modules/webdriver/node_modules/strip-ansi": {
+			"version": "7.1.2",
+			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+			"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+			"dev": true,
+			"dependencies": {
+				"ansi-regex": "^6.0.1"
+			},
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/strip-ansi?sponsor=1"
+			}
+		},
+		"node_modules/webdriverio": {
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.23.0.tgz",
+			"integrity": "sha512-Y5y4jpwHvuduUfup+gXTuCU6AROn/k6qOba3st0laFluKHY+q5SHOpQAJdS8acYLwE8caDQ2dXJhmXyxuJrm0Q==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "^20.11.30",
+				"@types/sinonjs__fake-timers": "^8.1.5",
+				"@wdio/config": "9.23.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/protocols": "9.16.2",
+				"@wdio/repl": "9.16.2",
+				"@wdio/types": "9.20.0",
+				"@wdio/utils": "9.23.0",
+				"archiver": "^7.0.1",
+				"aria-query": "^5.3.0",
 				"cheerio": "^1.0.0-rc.12",
 				"css-shorthand-properties": "^1.1.1",
 				"css-value": "^0.0.1",
 				"grapheme-splitter": "^1.0.4",
-				"htmlfy": "^0.6.0",
+				"htmlfy": "^0.8.1",
 				"is-plain-obj": "^4.1.0",
 				"jszip": "^3.10.1",
 				"lodash.clonedeep": "^4.5.0",
@@ -10889,9 +11457,9 @@
 				"query-selector-shadow-dom": "^1.0.1",
 				"resq": "^1.11.0",
 				"rgb2hex": "0.2.5",
-				"serialize-error": "^11.0.3",
+				"serialize-error": "^12.0.0",
 				"urlpattern-polyfill": "^10.0.0",
-				"webdriver": "9.15.0"
+				"webdriver": "9.23.0"
 			},
 			"engines": {
 				"node": ">=18.20.0"
@@ -10905,6 +11473,104 @@
 				}
 			}
 		},
+		"node_modules/webdriverio/node_modules/@wdio/logger": {
+			"version": "9.18.0",
+			"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+			"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+			"dev": true,
+			"dependencies": {
+				"chalk": "^5.1.2",
+				"loglevel": "^1.6.0",
+				"loglevel-plugin-prefix": "^0.8.4",
+				"safe-regex2": "^5.0.0",
+				"strip-ansi": "^7.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/webdriverio/node_modules/@wdio/types": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+			"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+			"dev": true,
+			"dependencies": {
+				"@types/node": "^20.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/webdriverio/node_modules/@wdio/utils": {
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.23.0.tgz",
+			"integrity": "sha512-WhXuVSxEvPw/i34bL1aCHAOi+4g29kRkIMyBShNSxH+Shxh2G91RJYsXm4IAiPMGcC4H6G8T2VcbZ32qnGPm5Q==",
+			"dev": true,
+			"dependencies": {
+				"@puppeteer/browsers": "^2.2.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/types": "9.20.0",
+				"decamelize": "^6.0.0",
+				"deepmerge-ts": "^7.0.3",
+				"edgedriver": "^6.1.2",
+				"geckodriver": "^6.1.0",
+				"get-port": "^7.0.0",
+				"import-meta-resolve": "^4.0.0",
+				"locate-app": "^2.2.24",
+				"mitt": "^3.0.1",
+				"safaridriver": "^1.0.0",
+				"split2": "^4.2.0",
+				"wait-port": "^1.1.0"
+			},
+			"engines": {
+				"node": ">=18.20.0"
+			}
+		},
+		"node_modules/webdriverio/node_modules/ansi-regex": {
+			"version": "6.2.2",
+			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+			"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+			"dev": true,
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/ansi-regex?sponsor=1"
+			}
+		},
+		"node_modules/webdriverio/node_modules/chalk": {
+			"version": "5.6.2",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+			"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+			"dev": true,
+			"engines": {
+				"node": "^12.17.0 || ^14.13 || >=16.0.0"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/chalk?sponsor=1"
+			}
+		},
+		"node_modules/webdriverio/node_modules/geckodriver": {
+			"version": "6.1.0",
+			"resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz",
+			"integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==",
+			"dev": true,
+			"hasInstallScript": true,
+			"dependencies": {
+				"@wdio/logger": "^9.18.0",
+				"@zip.js/zip.js": "^2.8.11",
+				"decamelize": "^6.0.1",
+				"http-proxy-agent": "^7.0.2",
+				"https-proxy-agent": "^7.0.6",
+				"modern-tar": "^0.7.2"
+			},
+			"bin": {
+				"geckodriver": "bin/geckodriver.js"
+			},
+			"engines": {
+				"node": ">=20.0.0"
+			}
+		},
 		"node_modules/webdriverio/node_modules/is-plain-obj": {
 			"version": "4.1.0",
 			"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
@@ -10917,6 +11583,21 @@
 				"url": "https://github.com/sponsors/sindresorhus"
 			}
 		},
+		"node_modules/webdriverio/node_modules/strip-ansi": {
+			"version": "7.1.2",
+			"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+			"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+			"dev": true,
+			"dependencies": {
+				"ansi-regex": "^6.0.1"
+			},
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/chalk/strip-ansi?sponsor=1"
+			}
+		},
 		"node_modules/whatwg-encoding": {
 			"version": "3.1.1",
 			"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
@@ -12444,21 +13125,6 @@
 						}
 					}
 				},
-				"@wdio/protocols": {
-					"version": "9.16.2",
-					"resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.16.2.tgz",
-					"integrity": "sha512-h3k97/lzmyw5MowqceAuY3HX/wGJojXHkiPXA3WlhGPCaa2h4+GovV2nJtRvknCKsE7UHA1xB5SWeI8MzloBew==",
-					"dev": true
-				},
-				"@wdio/repl": {
-					"version": "9.16.2",
-					"resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.16.2.tgz",
-					"integrity": "sha512-FLTF0VL6+o5BSTCO7yLSXocm3kUnu31zYwzdsz4n9s5YWt83sCtzGZlZpt7TaTzb3jVUfxuHNQDTb8UMkCu0lQ==",
-					"dev": true,
-					"requires": {
-						"@types/node": "^20.1.0"
-					}
-				},
 				"@wdio/types": {
 					"version": "9.16.2",
 					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.16.2.tgz",
@@ -12545,12 +13211,6 @@
 						"path-scurry": "^1.11.1"
 					}
 				},
-				"htmlfy": {
-					"version": "0.8.1",
-					"resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.8.1.tgz",
-					"integrity": "sha512-xWROBw9+MEGwxpotll0h672KCaLrKKiCYzsyN8ZgL9cQbVumFnyvsk2JqiB9ELAV1GLj1GG/jxZUjV9OZZi/yQ==",
-					"dev": true
-				},
 				"is-plain-obj": {
 					"version": "4.1.0",
 					"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
@@ -12572,15 +13232,6 @@
 					"integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
 					"dev": true
 				},
-				"serialize-error": {
-					"version": "12.0.0",
-					"resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-12.0.0.tgz",
-					"integrity": "sha512-ZYkZLAvKTKQXWuh5XpBw7CdbSzagarX39WyZ2H07CDLC5/KfsRGlIXV8d4+tfqX1M7916mRqR1QfNHSij+c9Pw==",
-					"dev": true,
-					"requires": {
-						"type-fest": "^4.31.0"
-					}
-				},
 				"webdriver": {
 					"version": "9.18.0",
 					"resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.18.0.tgz",
@@ -12657,19 +13308,69 @@
 			}
 		},
 		"@wdio/config": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.15.0.tgz",
-			"integrity": "sha512-IQzSZx2Y0KdAVWHSdcBLkuUjCmYtOnc1oDY7Psi814wDR7dEPVOuKgMo8ZZ0P1yhioMzqvy5tBemYSzj7CrFTA==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.23.0.tgz",
+			"integrity": "sha512-hhtngUG2uCxYmScSEor+k22EVlsTW3ARXgke8NPVeQA4p1+GC2CvRZi4P7nmhRTZubgLrENYYsveFcYR+1UXhQ==",
 			"dev": true,
 			"requires": {
-				"@wdio/logger": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"@wdio/utils": "9.15.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/types": "9.20.0",
+				"@wdio/utils": "9.23.0",
 				"deepmerge-ts": "^7.0.3",
 				"glob": "^10.2.2",
 				"import-meta-resolve": "^4.0.0"
 			},
 			"dependencies": {
+				"@wdio/logger": {
+					"version": "9.18.0",
+					"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+					"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+					"dev": true,
+					"requires": {
+						"chalk": "^5.1.2",
+						"loglevel": "^1.6.0",
+						"loglevel-plugin-prefix": "^0.8.4",
+						"safe-regex2": "^5.0.0",
+						"strip-ansi": "^7.1.0"
+					}
+				},
+				"@wdio/types": {
+					"version": "9.20.0",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+					"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+					"dev": true,
+					"requires": {
+						"@types/node": "^20.1.0"
+					}
+				},
+				"@wdio/utils": {
+					"version": "9.23.0",
+					"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.23.0.tgz",
+					"integrity": "sha512-WhXuVSxEvPw/i34bL1aCHAOi+4g29kRkIMyBShNSxH+Shxh2G91RJYsXm4IAiPMGcC4H6G8T2VcbZ32qnGPm5Q==",
+					"dev": true,
+					"requires": {
+						"@puppeteer/browsers": "^2.2.0",
+						"@wdio/logger": "9.18.0",
+						"@wdio/types": "9.20.0",
+						"decamelize": "^6.0.0",
+						"deepmerge-ts": "^7.0.3",
+						"edgedriver": "^6.1.2",
+						"geckodriver": "^6.1.0",
+						"get-port": "^7.0.0",
+						"import-meta-resolve": "^4.0.0",
+						"locate-app": "^2.2.24",
+						"mitt": "^3.0.1",
+						"safaridriver": "^1.0.0",
+						"split2": "^4.2.0",
+						"wait-port": "^1.1.0"
+					}
+				},
+				"ansi-regex": {
+					"version": "6.2.2",
+					"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+					"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+					"dev": true
+				},
 				"brace-expansion": {
 					"version": "2.0.2",
 					"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
@@ -12679,6 +13380,26 @@
 						"balanced-match": "^1.0.0"
 					}
 				},
+				"chalk": {
+					"version": "5.6.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+					"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+					"dev": true
+				},
+				"geckodriver": {
+					"version": "6.1.0",
+					"resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz",
+					"integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==",
+					"dev": true,
+					"requires": {
+						"@wdio/logger": "^9.18.0",
+						"@zip.js/zip.js": "^2.8.11",
+						"decamelize": "^6.0.1",
+						"http-proxy-agent": "^7.0.2",
+						"https-proxy-agent": "^7.0.6",
+						"modern-tar": "^0.7.2"
+					}
+				},
 				"glob": {
 					"version": "10.5.0",
 					"resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
@@ -12701,64 +13422,137 @@
 					"requires": {
 						"brace-expansion": "^2.0.1"
 					}
+				},
+				"strip-ansi": {
+					"version": "7.1.2",
+					"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+					"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+					"dev": true,
+					"requires": {
+						"ansi-regex": "^6.0.1"
+					}
 				}
 			}
 		},
 		"@wdio/dot-reporter": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/dot-reporter/-/dot-reporter-9.15.0.tgz",
-			"integrity": "sha512-dga+nwqZtsruAnERYGXa41O/APPpG6IClXA0gk35zKe24aMez/XgU7ZDHVJ3JYGmr7XTSEGiWXudvthaX/EbSg==",
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/dot-reporter/-/dot-reporter-9.20.0.tgz",
+			"integrity": "sha512-lRhihDQ56dApJcKOIEkVHThl8t2e5h7f3FW3JVmMLcGgbbkkLgXqVWPpbEGJcLld3wL4CipAPojVE/YEWp80hw==",
 			"dev": true,
 			"requires": {
-				"@wdio/reporter": "9.15.0",
-				"@wdio/types": "9.15.0",
+				"@wdio/reporter": "9.20.0",
+				"@wdio/types": "9.20.0",
 				"chalk": "^5.0.1"
 			},
 			"dependencies": {
+				"@wdio/types": {
+					"version": "9.20.0",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+					"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+					"dev": true,
+					"requires": {
+						"@types/node": "^20.1.0"
+					}
+				},
 				"chalk": {
-					"version": "5.4.1",
-					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
-					"integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
+					"version": "5.6.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+					"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
 					"dev": true
 				}
 			}
 		},
 		"@wdio/globals": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.15.0.tgz",
-			"integrity": "sha512-4bEnqoHr676x4hyq7yOp+V+wVgclisNeOwMyLPEIJOv+cAAxESzIOdFyiQcbAu7gq+HUIuoWMZGlV9UgDnXh1w==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.23.0.tgz",
+			"integrity": "sha512-OmwPKV8c5ecLqo+EkytN7oUeYfNmRI4uOXGIR1ybP7AK5Zz+l9R0dGfoadEuwi1aZXAL0vwuhtq3p0OL3dfqHQ==",
 			"dev": true,
-			"requires": {
-				"expect-webdriverio": "^5.1.0",
-				"webdriverio": "9.15.0"
-			}
+			"requires": {}
 		},
 		"@wdio/junit-reporter": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/junit-reporter/-/junit-reporter-9.15.0.tgz",
-			"integrity": "sha512-ZulPH628zp/V1IolHtMkLPEmlWeoAa4Go5hAe46wyfB879PHD9bm5RUXZYJvVAphlvvSljpXd4YOqINN0hWVuQ==",
+			"version": "9.21.0",
+			"resolved": "https://registry.npmjs.org/@wdio/junit-reporter/-/junit-reporter-9.21.0.tgz",
+			"integrity": "sha512-1vuym8VuTqhJMe3Xb71PLxmTUxo9+fcXnzZcqiYdQtKdN3nibKkuctRU8oTAMGQqLY2VPtHd4MbUGmd+CVlaCg==",
 			"dev": true,
 			"requires": {
-				"@wdio/reporter": "9.15.0",
-				"@wdio/types": "9.15.0",
+				"@wdio/reporter": "9.20.0",
+				"@wdio/types": "9.20.0",
 				"json-stringify-safe": "^5.0.1",
 				"junit-report-builder": "^5.1.1"
+			},
+			"dependencies": {
+				"@wdio/types": {
+					"version": "9.20.0",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+					"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+					"dev": true,
+					"requires": {
+						"@types/node": "^20.1.0"
+					}
+				}
 			}
 		},
 		"@wdio/local-runner": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-9.15.0.tgz",
-			"integrity": "sha512-SbmQpzXSxaLvvjDAJpHvfRq5Df9nfdD3LxOM/L4QytI09rK3Y94Re2QEFIk1MyFmUAuoIgJ99L4TSRw9hhrIbg==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-9.23.0.tgz",
+			"integrity": "sha512-kBWIqBDbCAJuxENl4t1qiCf8mivHN++cNdgsmlkP8nG7KJ8ebCseqsBHTrvx/YAqRPZIBD50cN6xsB6MZTmUfg==",
 			"dev": true,
 			"requires": {
 				"@types/node": "^20.1.0",
-				"@wdio/logger": "9.15.0",
-				"@wdio/repl": "9.4.4",
-				"@wdio/runner": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"async-exit-hook": "^2.0.1",
+				"@wdio/logger": "9.18.0",
+				"@wdio/repl": "9.16.2",
+				"@wdio/runner": "9.23.0",
+				"@wdio/types": "9.20.0",
+				"@wdio/xvfb": "9.20.0",
+				"exit-hook": "^4.0.0",
+				"expect-webdriverio": "^5.3.4",
 				"split2": "^4.1.0",
 				"stream-buffers": "^3.0.2"
+			},
+			"dependencies": {
+				"@wdio/logger": {
+					"version": "9.18.0",
+					"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+					"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+					"dev": true,
+					"requires": {
+						"chalk": "^5.1.2",
+						"loglevel": "^1.6.0",
+						"loglevel-plugin-prefix": "^0.8.4",
+						"safe-regex2": "^5.0.0",
+						"strip-ansi": "^7.1.0"
+					}
+				},
+				"@wdio/types": {
+					"version": "9.20.0",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+					"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+					"dev": true,
+					"requires": {
+						"@types/node": "^20.1.0"
+					}
+				},
+				"ansi-regex": {
+					"version": "6.2.2",
+					"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+					"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+					"dev": true
+				},
+				"chalk": {
+					"version": "5.6.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+					"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+					"dev": true
+				},
+				"strip-ansi": {
+					"version": "7.1.2",
+					"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+					"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+					"dev": true,
+					"requires": {
+						"ansi-regex": "^6.0.1"
+					}
+				}
 			}
 		},
 		"@wdio/logger": {
@@ -12774,21 +13568,213 @@
 			},
 			"dependencies": {
 				"ansi-regex": {
-					"version": "6.1.0",
-					"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
-					"integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+					"version": "6.1.0",
+					"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+					"integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+					"dev": true
+				},
+				"chalk": {
+					"version": "5.4.1",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
+					"integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
+					"dev": true
+				},
+				"strip-ansi": {
+					"version": "7.1.0",
+					"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+					"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+					"dev": true,
+					"requires": {
+						"ansi-regex": "^6.0.1"
+					}
+				}
+			}
+		},
+		"@wdio/mocha-framework": {
+			"version": "9.15.0",
+			"resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-9.15.0.tgz",
+			"integrity": "sha512-sM9NK3vQA+gITS8OlBB14F85xg4gPD4oBM4kLhgvbFqyCNGMe8yy9P5c9D8Ti0ISUDkkfgAcN2EwMqBp/Ot2Lg==",
+			"dev": true,
+			"requires": {
+				"@types/mocha": "^10.0.6",
+				"@types/node": "^20.11.28",
+				"@wdio/logger": "9.15.0",
+				"@wdio/types": "9.15.0",
+				"@wdio/utils": "9.15.0",
+				"mocha": "^10.3.0"
+			}
+		},
+		"@wdio/protocols": {
+			"version": "9.16.2",
+			"resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.16.2.tgz",
+			"integrity": "sha512-h3k97/lzmyw5MowqceAuY3HX/wGJojXHkiPXA3WlhGPCaa2h4+GovV2nJtRvknCKsE7UHA1xB5SWeI8MzloBew==",
+			"dev": true
+		},
+		"@wdio/repl": {
+			"version": "9.16.2",
+			"resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.16.2.tgz",
+			"integrity": "sha512-FLTF0VL6+o5BSTCO7yLSXocm3kUnu31zYwzdsz4n9s5YWt83sCtzGZlZpt7TaTzb3jVUfxuHNQDTb8UMkCu0lQ==",
+			"dev": true,
+			"requires": {
+				"@types/node": "^20.1.0"
+			}
+		},
+		"@wdio/reporter": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-9.20.0.tgz",
+			"integrity": "sha512-HjKJzm8o0MCcnwGVGprzaCAyau0OB8mWHwH1ZI/ka+z1nmVBr2tsr7H53SdHsGIhAg/XuZObobqdzeVF63ApeA==",
+			"dev": true,
+			"requires": {
+				"@types/node": "^20.1.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/types": "9.20.0",
+				"diff": "^8.0.2",
+				"object-inspect": "^1.12.0"
+			},
+			"dependencies": {
+				"@wdio/logger": {
+					"version": "9.18.0",
+					"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+					"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+					"dev": true,
+					"requires": {
+						"chalk": "^5.1.2",
+						"loglevel": "^1.6.0",
+						"loglevel-plugin-prefix": "^0.8.4",
+						"safe-regex2": "^5.0.0",
+						"strip-ansi": "^7.1.0"
+					}
+				},
+				"@wdio/types": {
+					"version": "9.20.0",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+					"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+					"dev": true,
+					"requires": {
+						"@types/node": "^20.1.0"
+					}
+				},
+				"ansi-regex": {
+					"version": "6.2.2",
+					"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+					"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+					"dev": true
+				},
+				"chalk": {
+					"version": "5.6.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+					"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+					"dev": true
+				},
+				"diff": {
+					"version": "8.0.3",
+					"resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz",
+					"integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==",
+					"dev": true
+				},
+				"strip-ansi": {
+					"version": "7.1.2",
+					"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+					"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+					"dev": true,
+					"requires": {
+						"ansi-regex": "^6.0.1"
+					}
+				}
+			}
+		},
+		"@wdio/runner": {
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-9.23.0.tgz",
+			"integrity": "sha512-a2afdICcEzzMjSPCwY3g9Hl2kWXXjBFyWv5DxvjaJOmQygnKzz9olFOrpVotgLKXE9ZLuJ4EP98or69sFIeLBg==",
+			"dev": true,
+			"requires": {
+				"@types/node": "^20.11.28",
+				"@wdio/config": "9.23.0",
+				"@wdio/dot-reporter": "9.20.0",
+				"@wdio/globals": "9.23.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/types": "9.20.0",
+				"@wdio/utils": "9.23.0",
+				"deepmerge-ts": "^7.0.3",
+				"webdriver": "9.23.0",
+				"webdriverio": "9.23.0"
+			},
+			"dependencies": {
+				"@wdio/logger": {
+					"version": "9.18.0",
+					"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+					"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+					"dev": true,
+					"requires": {
+						"chalk": "^5.1.2",
+						"loglevel": "^1.6.0",
+						"loglevel-plugin-prefix": "^0.8.4",
+						"safe-regex2": "^5.0.0",
+						"strip-ansi": "^7.1.0"
+					}
+				},
+				"@wdio/types": {
+					"version": "9.20.0",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+					"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+					"dev": true,
+					"requires": {
+						"@types/node": "^20.1.0"
+					}
+				},
+				"@wdio/utils": {
+					"version": "9.23.0",
+					"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.23.0.tgz",
+					"integrity": "sha512-WhXuVSxEvPw/i34bL1aCHAOi+4g29kRkIMyBShNSxH+Shxh2G91RJYsXm4IAiPMGcC4H6G8T2VcbZ32qnGPm5Q==",
+					"dev": true,
+					"requires": {
+						"@puppeteer/browsers": "^2.2.0",
+						"@wdio/logger": "9.18.0",
+						"@wdio/types": "9.20.0",
+						"decamelize": "^6.0.0",
+						"deepmerge-ts": "^7.0.3",
+						"edgedriver": "^6.1.2",
+						"geckodriver": "^6.1.0",
+						"get-port": "^7.0.0",
+						"import-meta-resolve": "^4.0.0",
+						"locate-app": "^2.2.24",
+						"mitt": "^3.0.1",
+						"safaridriver": "^1.0.0",
+						"split2": "^4.2.0",
+						"wait-port": "^1.1.0"
+					}
+				},
+				"ansi-regex": {
+					"version": "6.2.2",
+					"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+					"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
 					"dev": true
 				},
 				"chalk": {
-					"version": "5.4.1",
-					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
-					"integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
+					"version": "5.6.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+					"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
 					"dev": true
 				},
+				"geckodriver": {
+					"version": "6.1.0",
+					"resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz",
+					"integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==",
+					"dev": true,
+					"requires": {
+						"@wdio/logger": "^9.18.0",
+						"@zip.js/zip.js": "^2.8.11",
+						"decamelize": "^6.0.1",
+						"http-proxy-agent": "^7.0.2",
+						"https-proxy-agent": "^7.0.6",
+						"modern-tar": "^0.7.2"
+					}
+				},
 				"strip-ansi": {
-					"version": "7.1.0",
-					"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-					"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+					"version": "7.1.2",
+					"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+					"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
 					"dev": true,
 					"requires": {
 						"ansi-regex": "^6.0.1"
@@ -12796,88 +13782,28 @@
 				}
 			}
 		},
-		"@wdio/mocha-framework": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-9.15.0.tgz",
-			"integrity": "sha512-sM9NK3vQA+gITS8OlBB14F85xg4gPD4oBM4kLhgvbFqyCNGMe8yy9P5c9D8Ti0ISUDkkfgAcN2EwMqBp/Ot2Lg==",
-			"dev": true,
-			"requires": {
-				"@types/mocha": "^10.0.6",
-				"@types/node": "^20.11.28",
-				"@wdio/logger": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"@wdio/utils": "9.15.0",
-				"mocha": "^10.3.0"
-			}
-		},
-		"@wdio/protocols": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.15.0.tgz",
-			"integrity": "sha512-5O7bwiG7t8nmSVOx888YryO/9AQgQ7p/Ecd9rS13UyDQL169HmVKXP0vvJKGH3X+oeE92U1wVrwrIl4Xx3BQ6Q==",
-			"dev": true
-		},
-		"@wdio/repl": {
-			"version": "9.4.4",
-			"resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.4.4.tgz",
-			"integrity": "sha512-kchPRhoG/pCn4KhHGiL/ocNhdpR8OkD2e6sANlSUZ4TGBVi86YSIEjc2yXUwLacHknC/EnQk/SFnqd4MsNjGGg==",
-			"dev": true,
-			"requires": {
-				"@types/node": "^20.1.0"
-			}
-		},
-		"@wdio/reporter": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-9.15.0.tgz",
-			"integrity": "sha512-p120dZr+fUQ7HE54L/RDG/7BfE/LkFORyNaZ/G2KE6gEr8gIyL3sW9kVbTZtYOBW68KgU+CC7x4yxfZCXfRUuw==",
-			"dev": true,
-			"requires": {
-				"@types/node": "^20.1.0",
-				"@wdio/logger": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"diff": "^7.0.0",
-				"object-inspect": "^1.12.0"
-			},
-			"dependencies": {
-				"diff": {
-					"version": "7.0.0",
-					"resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz",
-					"integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==",
-					"dev": true
-				}
-			}
-		},
-		"@wdio/runner": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-9.15.0.tgz",
-			"integrity": "sha512-KHDM4L02Aqmmsi83Yum2c026eNqpQysrMPnHiSzZm0+wMmDNLIMwq6xAj/vlBHDiVgrSKho3LlMz7mNyagkkgw==",
-			"dev": true,
-			"requires": {
-				"@types/node": "^20.11.28",
-				"@wdio/config": "9.15.0",
-				"@wdio/dot-reporter": "9.15.0",
-				"@wdio/globals": "9.15.0",
-				"@wdio/logger": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"@wdio/utils": "9.15.0",
-				"deepmerge-ts": "^7.0.3",
-				"expect-webdriverio": "^5.1.0",
-				"webdriver": "9.15.0",
-				"webdriverio": "9.15.0"
-			}
-		},
 		"@wdio/spec-reporter": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-9.15.0.tgz",
-			"integrity": "sha512-xu8uVGyk2HEAvdzPmspxTJMJc3UxGzdKjqNIUVpCQpVYkKOd6zm1RH2Cpdb7gsx2j/+ddYZEVhftFGR9YOQF6g==",
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-9.20.0.tgz",
+			"integrity": "sha512-YHj3kF86RoOVVR+k3eb+e/Fki6Mq1FIrJQ380Cz5SSWbIc9gL8HXG3ydReldY6/80KLFOuHn9ZHvDHrCIXRjiw==",
 			"dev": true,
 			"requires": {
-				"@wdio/reporter": "9.15.0",
-				"@wdio/types": "9.15.0",
+				"@wdio/reporter": "9.20.0",
+				"@wdio/types": "9.20.0",
 				"chalk": "^5.1.2",
 				"easy-table": "^1.2.0",
 				"pretty-ms": "^9.0.0"
 			},
 			"dependencies": {
+				"@wdio/types": {
+					"version": "9.20.0",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+					"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+					"dev": true,
+					"requires": {
+						"@types/node": "^20.1.0"
+					}
+				},
 				"chalk": {
 					"version": "5.4.1",
 					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
@@ -12916,10 +13842,55 @@
 				"wait-port": "^1.1.0"
 			}
 		},
+		"@wdio/xvfb": {
+			"version": "9.20.0",
+			"resolved": "https://registry.npmjs.org/@wdio/xvfb/-/xvfb-9.20.0.tgz",
+			"integrity": "sha512-shllZH9CsLiZqTXkqBTJrwi6k/ajBE7/78fQgvafMUIQU1Hpb2RdsmydKfPFZ5NDoA+LNm67PD2cPkvkXy4pSw==",
+			"dev": true,
+			"requires": {
+				"@wdio/logger": "9.18.0"
+			},
+			"dependencies": {
+				"@wdio/logger": {
+					"version": "9.18.0",
+					"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+					"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+					"dev": true,
+					"requires": {
+						"chalk": "^5.1.2",
+						"loglevel": "^1.6.0",
+						"loglevel-plugin-prefix": "^0.8.4",
+						"safe-regex2": "^5.0.0",
+						"strip-ansi": "^7.1.0"
+					}
+				},
+				"ansi-regex": {
+					"version": "6.2.2",
+					"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+					"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+					"dev": true
+				},
+				"chalk": {
+					"version": "5.6.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+					"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+					"dev": true
+				},
+				"strip-ansi": {
+					"version": "7.1.2",
+					"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+					"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+					"dev": true,
+					"requires": {
+						"ansi-regex": "^6.0.1"
+					}
+				}
+			}
+		},
 		"@zip.js/zip.js": {
-			"version": "2.7.62",
-			"resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.62.tgz",
-			"integrity": "sha512-OaLvZ8j4gCkLn048ypkZu29KX30r8/OfFF2w4Jo5WXFr+J04J+lzJ5TKZBVgFXhlvSkqNFQdfnY1Q8TMTCyBVA==",
+			"version": "2.8.15",
+			"resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.8.15.tgz",
+			"integrity": "sha512-HZKJLFe4eGVgCe9J87PnijY7T1Zn638bEHS+Fm/ygHZozRpefzWcOYfPaP52S8pqk9g4xN3+LzMDl3Lv9dLglA==",
 			"dev": true
 		},
 		"abbrev": {
@@ -13520,9 +14491,9 @@
 					}
 				},
 				"undici": {
-					"version": "7.10.0",
-					"resolved": "https://registry.npmjs.org/undici/-/undici-7.10.0.tgz",
-					"integrity": "sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==",
+					"version": "7.18.2",
+					"resolved": "https://registry.npmjs.org/undici/-/undici-7.18.2.tgz",
+					"integrity": "sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==",
 					"dev": true
 				}
 			}
@@ -14021,9 +14992,9 @@
 			}
 		},
 		"decamelize": {
-			"version": "6.0.0",
-			"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz",
-			"integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==",
+			"version": "6.0.1",
+			"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.1.tgz",
+			"integrity": "sha512-G7Cqgaelq68XHJNGlZ7lrNQyhZGsFqpwtGFexqUv4IQdjKoSYF7ipZ9UuTJZUSQXFj/XaoBLuEVIVqr8EJngEQ==",
 			"dev": true
 		},
 		"deep-is": {
@@ -15043,6 +16014,12 @@
 			"integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
 			"dev": true
 		},
+		"exit-hook": {
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-4.0.0.tgz",
+			"integrity": "sha512-Fqs7ChZm72y40wKjOFXBKg7nJZvQJmewP5/7LtePDdnah/+FH9Hp5sgMujSCMPXlxOAW2//1jrW9pnsY7o20vQ==",
+			"dev": true
+		},
 		"expand-tilde": {
 			"version": "2.0.2",
 			"resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
@@ -15872,9 +16849,9 @@
 			"dev": true
 		},
 		"htmlfy": {
-			"version": "0.6.7",
-			"resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.6.7.tgz",
-			"integrity": "sha512-r8hRd+oIM10lufovN+zr3VKPTYEIvIwqXGucidh2XQufmiw6sbUXFUFjWlfjo3AnefIDTyzykVzQ8IUVuT1peQ==",
+			"version": "0.8.1",
+			"resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.8.1.tgz",
+			"integrity": "sha512-xWROBw9+MEGwxpotll0h672KCaLrKKiCYzsyN8ZgL9cQbVumFnyvsk2JqiB9ELAV1GLj1GG/jxZUjV9OZZi/yQ==",
 			"dev": true
 		},
 		"htmlparser2": {
@@ -16852,6 +17829,12 @@
 				}
 			}
 		},
+		"modern-tar": {
+			"version": "0.7.3",
+			"resolved": "https://registry.npmjs.org/modern-tar/-/modern-tar-0.7.3.tgz",
+			"integrity": "sha512-4W79zekKGyYU4JXVmB78DOscMFaJth2gGhgfTl2alWE4rNe3nf4N2pqenQ0rEtIewrnD79M687Ouba3YGTLOvg==",
+			"dev": true
+		},
 		"ms": {
 			"version": "2.1.3",
 			"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -18009,20 +18992,12 @@
 			"dev": true
 		},
 		"serialize-error": {
-			"version": "11.0.3",
-			"resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-11.0.3.tgz",
-			"integrity": "sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g==",
+			"version": "12.0.0",
+			"resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-12.0.0.tgz",
+			"integrity": "sha512-ZYkZLAvKTKQXWuh5XpBw7CdbSzagarX39WyZ2H07CDLC5/KfsRGlIXV8d4+tfqX1M7916mRqR1QfNHSij+c9Pw==",
 			"dev": true,
 			"requires": {
-				"type-fest": "^2.12.2"
-			},
-			"dependencies": {
-				"type-fest": {
-					"version": "2.19.0",
-					"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
-					"integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
-					"dev": true
-				}
+				"type-fest": "^4.31.0"
 			}
 		},
 		"serialize-javascript": {
@@ -18725,9 +19700,9 @@
 			}
 		},
 		"undici": {
-			"version": "6.21.3",
-			"resolved": "https://registry.npmjs.org/undici/-/undici-6.21.3.tgz",
-			"integrity": "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==",
+			"version": "6.23.0",
+			"resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz",
+			"integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==",
 			"dev": true
 		},
 		"undici-types": {
@@ -18867,44 +19842,126 @@
 			"dev": true
 		},
 		"webdriver": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.15.0.tgz",
-			"integrity": "sha512-JCW5xvhZtL6kjbckdePgVYMOlvWbh22F1VFkIf9pw3prwXI2EHED5Eq/nfDnNfHiqr0AfFKWmIDPziSafrVv4Q==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.23.0.tgz",
+			"integrity": "sha512-XkZOhjoBOY7maKI3BhDF2rNiDne4wBD6Gw6VUnt4X9b7j9NtfzcCrThBlT0hnA8W77bWNtMRCSpw9Ajy08HqKg==",
 			"dev": true,
 			"requires": {
 				"@types/node": "^20.1.0",
 				"@types/ws": "^8.5.3",
-				"@wdio/config": "9.15.0",
-				"@wdio/logger": "9.15.0",
-				"@wdio/protocols": "9.15.0",
-				"@wdio/types": "9.15.0",
-				"@wdio/utils": "9.15.0",
+				"@wdio/config": "9.23.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/protocols": "9.16.2",
+				"@wdio/types": "9.20.0",
+				"@wdio/utils": "9.23.0",
 				"deepmerge-ts": "^7.0.3",
-				"undici": "^6.20.1",
+				"https-proxy-agent": "^7.0.6",
+				"undici": "^6.21.3",
 				"ws": "^8.8.0"
+			},
+			"dependencies": {
+				"@wdio/logger": {
+					"version": "9.18.0",
+					"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+					"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+					"dev": true,
+					"requires": {
+						"chalk": "^5.1.2",
+						"loglevel": "^1.6.0",
+						"loglevel-plugin-prefix": "^0.8.4",
+						"safe-regex2": "^5.0.0",
+						"strip-ansi": "^7.1.0"
+					}
+				},
+				"@wdio/types": {
+					"version": "9.20.0",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+					"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+					"dev": true,
+					"requires": {
+						"@types/node": "^20.1.0"
+					}
+				},
+				"@wdio/utils": {
+					"version": "9.23.0",
+					"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.23.0.tgz",
+					"integrity": "sha512-WhXuVSxEvPw/i34bL1aCHAOi+4g29kRkIMyBShNSxH+Shxh2G91RJYsXm4IAiPMGcC4H6G8T2VcbZ32qnGPm5Q==",
+					"dev": true,
+					"requires": {
+						"@puppeteer/browsers": "^2.2.0",
+						"@wdio/logger": "9.18.0",
+						"@wdio/types": "9.20.0",
+						"decamelize": "^6.0.0",
+						"deepmerge-ts": "^7.0.3",
+						"edgedriver": "^6.1.2",
+						"geckodriver": "^6.1.0",
+						"get-port": "^7.0.0",
+						"import-meta-resolve": "^4.0.0",
+						"locate-app": "^2.2.24",
+						"mitt": "^3.0.1",
+						"safaridriver": "^1.0.0",
+						"split2": "^4.2.0",
+						"wait-port": "^1.1.0"
+					}
+				},
+				"ansi-regex": {
+					"version": "6.2.2",
+					"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+					"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+					"dev": true
+				},
+				"chalk": {
+					"version": "5.6.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+					"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+					"dev": true
+				},
+				"geckodriver": {
+					"version": "6.1.0",
+					"resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz",
+					"integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==",
+					"dev": true,
+					"requires": {
+						"@wdio/logger": "^9.18.0",
+						"@zip.js/zip.js": "^2.8.11",
+						"decamelize": "^6.0.1",
+						"http-proxy-agent": "^7.0.2",
+						"https-proxy-agent": "^7.0.6",
+						"modern-tar": "^0.7.2"
+					}
+				},
+				"strip-ansi": {
+					"version": "7.1.2",
+					"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+					"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+					"dev": true,
+					"requires": {
+						"ansi-regex": "^6.0.1"
+					}
+				}
 			}
 		},
 		"webdriverio": {
-			"version": "9.15.0",
-			"resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.15.0.tgz",
-			"integrity": "sha512-910g6ktwXdAKGyhgCPGw9BzIKOEBBYMFN1bLwC3bW/3mFlxGHO/n70c7Sg9hrsu9VWTzv6m+1Clf27B9uz4a/Q==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.23.0.tgz",
+			"integrity": "sha512-Y5y4jpwHvuduUfup+gXTuCU6AROn/k6qOba3st0laFluKHY+q5SHOpQAJdS8acYLwE8caDQ2dXJhmXyxuJrm0Q==",
 			"dev": true,
 			"requires": {
 				"@types/node": "^20.11.30",
 				"@types/sinonjs__fake-timers": "^8.1.5",
-				"@wdio/config": "9.15.0",
-				"@wdio/logger": "9.15.0",
-				"@wdio/protocols": "9.15.0",
-				"@wdio/repl": "9.4.4",
-				"@wdio/types": "9.15.0",
-				"@wdio/utils": "9.15.0",
+				"@wdio/config": "9.23.0",
+				"@wdio/logger": "9.18.0",
+				"@wdio/protocols": "9.16.2",
+				"@wdio/repl": "9.16.2",
+				"@wdio/types": "9.20.0",
+				"@wdio/utils": "9.23.0",
 				"archiver": "^7.0.1",
 				"aria-query": "^5.3.0",
 				"cheerio": "^1.0.0-rc.12",
 				"css-shorthand-properties": "^1.1.1",
 				"css-value": "^0.0.1",
 				"grapheme-splitter": "^1.0.4",
-				"htmlfy": "^0.6.0",
+				"htmlfy": "^0.8.1",
 				"is-plain-obj": "^4.1.0",
 				"jszip": "^3.10.1",
 				"lodash.clonedeep": "^4.5.0",
@@ -18912,16 +19969,95 @@
 				"query-selector-shadow-dom": "^1.0.1",
 				"resq": "^1.11.0",
 				"rgb2hex": "0.2.5",
-				"serialize-error": "^11.0.3",
+				"serialize-error": "^12.0.0",
 				"urlpattern-polyfill": "^10.0.0",
-				"webdriver": "9.15.0"
+				"webdriver": "9.23.0"
 			},
 			"dependencies": {
+				"@wdio/logger": {
+					"version": "9.18.0",
+					"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz",
+					"integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==",
+					"dev": true,
+					"requires": {
+						"chalk": "^5.1.2",
+						"loglevel": "^1.6.0",
+						"loglevel-plugin-prefix": "^0.8.4",
+						"safe-regex2": "^5.0.0",
+						"strip-ansi": "^7.1.0"
+					}
+				},
+				"@wdio/types": {
+					"version": "9.20.0",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz",
+					"integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==",
+					"dev": true,
+					"requires": {
+						"@types/node": "^20.1.0"
+					}
+				},
+				"@wdio/utils": {
+					"version": "9.23.0",
+					"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.23.0.tgz",
+					"integrity": "sha512-WhXuVSxEvPw/i34bL1aCHAOi+4g29kRkIMyBShNSxH+Shxh2G91RJYsXm4IAiPMGcC4H6G8T2VcbZ32qnGPm5Q==",
+					"dev": true,
+					"requires": {
+						"@puppeteer/browsers": "^2.2.0",
+						"@wdio/logger": "9.18.0",
+						"@wdio/types": "9.20.0",
+						"decamelize": "^6.0.0",
+						"deepmerge-ts": "^7.0.3",
+						"edgedriver": "^6.1.2",
+						"geckodriver": "^6.1.0",
+						"get-port": "^7.0.0",
+						"import-meta-resolve": "^4.0.0",
+						"locate-app": "^2.2.24",
+						"mitt": "^3.0.1",
+						"safaridriver": "^1.0.0",
+						"split2": "^4.2.0",
+						"wait-port": "^1.1.0"
+					}
+				},
+				"ansi-regex": {
+					"version": "6.2.2",
+					"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+					"integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+					"dev": true
+				},
+				"chalk": {
+					"version": "5.6.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+					"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+					"dev": true
+				},
+				"geckodriver": {
+					"version": "6.1.0",
+					"resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz",
+					"integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==",
+					"dev": true,
+					"requires": {
+						"@wdio/logger": "^9.18.0",
+						"@zip.js/zip.js": "^2.8.11",
+						"decamelize": "^6.0.1",
+						"http-proxy-agent": "^7.0.2",
+						"https-proxy-agent": "^7.0.6",
+						"modern-tar": "^0.7.2"
+					}
+				},
 				"is-plain-obj": {
 					"version": "4.1.0",
 					"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
 					"integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
 					"dev": true
+				},
+				"strip-ansi": {
+					"version": "7.1.2",
+					"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+					"integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+					"dev": true,
+					"requires": {
+						"ansi-regex": "^6.0.1"
+					}
 				}
 			}
 		},
diff --git a/package.json b/package.json
index 80f91be..4575127 100644
--- a/package.json
+++ b/package.json
@@ -8,10 +8,10 @@
 	},
 	"devDependencies": {
 		"@wdio/cli": "9.18.4",
-		"@wdio/junit-reporter": "9.15.0",
-		"@wdio/local-runner": "9.15.0",
+		"@wdio/junit-reporter": "9.21.0",
+		"@wdio/local-runner": "9.23.0",
 		"@wdio/mocha-framework": "9.15.0",
-		"@wdio/spec-reporter": "9.15.0",
+		"@wdio/spec-reporter": "9.20.0",
 		"eslint-config-wikimedia": "0.32.3",
 		"grunt": "1.6.1",
 		"grunt-banana-checker": "0.13.0",
-- 
2.47.3


--- end ---
Source code is licensed under the AGPL.