From f4b75ac28480098b5e9d0f2e8ea98cced6c2e746 Mon Sep 17 00:00:00 2001 From: Rhys Berrow Date: Wed, 19 Feb 2025 14:11:33 +0000 Subject: [PATCH 1/8] Upgrade wdio local-runner to v9.9.3 --- package-lock.json | 2093 +++-------------- package.json | 8 +- tests/functional/helpers.js | 9 +- tests/functional/spec/checkbox.spec.js | 4 +- .../spec/components/address/address.spec.js | 1 - .../checkbox_detail_answer_multiple.spec.js | 17 +- .../mutually_exclusive_currency.spec.js | 4 +- ...ally_exclusive_day_month_year_date.spec.js | 4 +- .../mutually_exclusive_duration.spec.js | 4 +- ...mutually_exclusive_month_year_date.spec.js | 4 +- ...usive_multiple_day_month_year_date.spec.js | 4 +- ...ually_exclusive_multiple_textfield.spec.js | 4 +- .../mutually_exclusive_number.spec.js | 4 +- .../mutually_exclusive_percentage.spec.js | 4 +- .../mutually_exclusive_textarea.spec.js | 4 +- .../mutually_exclusive_textfield.spec.js | 4 +- .../mutually_exclusive_unit.spec.js | 4 +- .../mutually_exclusive_year_date.spec.js | 4 +- .../functional/spec/components/radio/radio.js | 4 +- tests/functional/spec/cookie_banner.spec.js | 1 + .../supplementary_data.spec.js | 2 + tests/functional/spec/introduction.spec.js | 3 - .../hub_and_spoke/hub_and_spoke.spec.js | 54 +- .../hub_and_spoke_supplementary_data.spec.js | 97 + .../list_collector_primary_person.spec.js | 16 - .../spec/question_description.spec.js | 3 +- tests/functional/spec/theme_dbt.spec.js | 2 +- tests/functional/spec/theme_dbt_dsit.spec.js | 4 +- .../functional/spec/theme_dbt_dsit_ni.spec.js | 6 +- tests/functional/spec/theme_dbt_ni.spec.js | 4 +- tests/functional/spec/theme_desnz.spec.js | 2 +- tests/functional/spec/theme_desnz_ni.spec.js | 4 +- tests/functional/spec/theme_nhse.spec.js | 4 +- .../spec/theme_northernireland.spec.js | 2 +- tests/functional/spec/theme_orr.spec.js | 2 +- tests/functional/spec/theme_ukhsa_ons.spec.js | 4 +- .../functional/spec/timeout/timeout_modal.js | 2 +- 37 files changed, 445 insertions(+), 1951 deletions(-) create mode 100644 tests/functional/spec/journeys/hub_and_spoke/hub_and_spoke_supplementary_data.spec.js diff --git a/package-lock.json b/package-lock.json index f57a5498d9..e9eabc589f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,10 +13,10 @@ "@babel/preset-env": "^7.25.8", "@babel/register": "^7.25.7", "@babel/runtime": "^7.25.7", - "@wdio/cli": "^9.2.1", - "@wdio/local-runner": "^8.14.3", - "@wdio/mocha-framework": "^9.1.3", - "@wdio/spec-reporter": "^9.1.3", + "@wdio/cli": "^9.9.3", + "@wdio/local-runner": "^9.9.3", + "@wdio/mocha-framework": "^9.9.0", + "@wdio/spec-reporter": "^9.9.0", "eslint": "^v8.57.1", "eslint-cli": "^1.1.1", "eslint-config-standard": "^17.1.0", @@ -2565,19 +2565,6 @@ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true }, - "node_modules/@sindresorhus/is": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", - "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, "node_modules/@sindresorhus/merge-streams": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", @@ -2590,32 +2577,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@szmarczak/http-timer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", - "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", - "dev": true, - "license": "MIT", - "dependencies": { - "defer-to-connect": "^2.0.1" - }, - "engines": { - "node": ">=14.16" - } - }, "node_modules/@tootallnate/quickjs-emscripten": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", "dev": true }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -2701,9 +2668,9 @@ "dev": true }, "node_modules/@types/ws": { - "version": "8.5.12", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", - "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.14.tgz", + "integrity": "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==", "dev": true, "dependencies": { "@types/node": "*" @@ -2767,20 +2734,19 @@ } }, "node_modules/@wdio/cli": { - "version": "9.7.1", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-9.7.1.tgz", - "integrity": "sha512-oPCmjle4+UEFs2WAql3HQNfRgTu3orwb139jt79cS9XtNtGku4iiAgD/lND+c555TnVJin2BWdu1D4kZdCTVBw==", + "version": "9.9.3", + "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-9.9.3.tgz", + "integrity": "sha512-CmXIWpefuJ5+GXWZ4/Fx9Wc5TkQGin6tx7F9gHu66/4iotu80DsYyS6CYb9pgNivM27aGi0wVTw8eCkbkrKPfg==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "^20.1.1", "@vitest/snapshot": "^2.1.1", - "@wdio/config": "9.6.4", - "@wdio/globals": "9.7.1", + "@wdio/config": "9.9.0", + "@wdio/globals": "9.9.3", "@wdio/logger": "9.4.4", "@wdio/protocols": "9.7.0", - "@wdio/types": "9.6.3", - "@wdio/utils": "9.6.4", + "@wdio/types": "9.9.0", + "@wdio/utils": "9.9.0", "async-exit-hook": "^2.0.1", "chalk": "^5.2.0", "chokidar": "^4.0.0", @@ -2795,7 +2761,7 @@ "read-pkg-up": "^10.0.0", "recursive-readdir": "^2.2.3", "tsx": "^4.7.2", - "webdriverio": "9.7.1", + "webdriverio": "9.9.3", "yargs": "^17.7.2" }, "bin": { @@ -2818,15 +2784,14 @@ } }, "node_modules/@wdio/config": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.6.4.tgz", - "integrity": "sha512-oTNXVVzaZ0qaM7oX8tyS3YBr4A3ij2py3Umew3ez0IS2vHpRs1LvLfVWoHRSqrhJIVnfjV3+zqcl9BWALNVD/g==", + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.9.0.tgz", + "integrity": "sha512-TonCzSBjfk6fLV9zEvH58Opg3te4gl+VapZeShwfJWuL5T8YAWfSKIUVbb9auIEaOWx2OtOap4DK+jK9CLSTVA==", "dev": true, - "license": "MIT", "dependencies": { "@wdio/logger": "9.4.4", - "@wdio/types": "9.6.3", - "@wdio/utils": "9.6.4", + "@wdio/types": "9.9.0", + "@wdio/utils": "9.9.0", "deepmerge-ts": "^7.0.3", "glob": "^10.2.2", "import-meta-resolve": "^4.0.0" @@ -2835,97 +2800,64 @@ "node": ">=18.20.0" } }, - "node_modules/@wdio/globals": { - "version": "9.7.1", - "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.7.1.tgz", - "integrity": "sha512-o3Zaiyi/amH3VF+D2+lB+UXcaksWx44SIIVZjkgYgHsKAnmrv04JfkneQo+x05J/vNc+BM6jwTgTAtmkfF/t5w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.20.0" - }, - "optionalDependencies": { - "expect-webdriverio": "^5.0.1", - "webdriverio": "9.7.1" - } - }, - "node_modules/@wdio/local-runner": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-8.41.0.tgz", - "integrity": "sha512-A5msAjAC8gqiWvtFl+VNm9BBlVb5q3a2o7i+L+Cw7idV3aFY5etigB2wLYMtyBWgB8cXvbZaxXizHhGvZ+iB8Q==", + "node_modules/@wdio/dot-reporter": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@wdio/dot-reporter/-/dot-reporter-9.9.0.tgz", + "integrity": "sha512-Ja/2IMqaNrLPkpwrZrsR8PBXgN50wan3aBr4jCReVWaVaAN1LMIXZJStDJKre5F6Pc/H3NZQyw0M95EZk7WtQA==", "dev": true, - "license": "MIT", "dependencies": { - "@types/node": "^22.2.0", - "@wdio/logger": "8.38.0", - "@wdio/repl": "8.40.3", - "@wdio/runner": "8.41.0", - "@wdio/types": "8.41.0", - "async-exit-hook": "^2.0.1", - "split2": "^4.1.0", - "stream-buffers": "^3.0.2" + "@wdio/reporter": "9.9.0", + "@wdio/types": "9.9.0", + "chalk": "^5.0.1" }, "engines": { - "node": "^16.13 || >=18" + "node": ">=18.20.0" } }, - "node_modules/@wdio/local-runner/node_modules/@types/node": { - "version": "22.10.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.10.tgz", - "integrity": "sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww==", + "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==", "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" + "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/@wdio/logger": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.38.0.tgz", - "integrity": "sha512-kcHL86RmNbcQP+Gq/vQUGlArfU6IIcbbnNp32rRIraitomZow+iEoc519rdQmSVusDozMS5DZthkgDdxK+vz6Q==", + "node_modules/@wdio/globals": { + "version": "9.9.3", + "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.9.3.tgz", + "integrity": "sha512-Gv/nO4N3NoQ+XJvLzlZKp7DUld2wjP7xyQIMdGy0jN7989HlvLH+EyyBhx81svBgMulkGueacTJ6hsCCuRI02g==", "dev": true, - "dependencies": { - "chalk": "^5.1.2", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^7.1.0" - }, "engines": { - "node": "^16.13 || >=18" + "node": ">=18.20.0" + }, + "optionalDependencies": { + "expect-webdriverio": "^5.1.0", + "webdriverio": "9.9.3" } }, - "node_modules/@wdio/local-runner/node_modules/@wdio/types": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.41.0.tgz", - "integrity": "sha512-t4NaNTvJZci3Xv/yUZPH4eTL0hxrVTf5wdwNnYIBrzMnlRDbNefjQ0P7FM7ZjQCLaH92AEH6t/XanUId7Webug==", + "node_modules/@wdio/local-runner": { + "version": "9.9.3", + "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-9.9.3.tgz", + "integrity": "sha512-zv/BzI1fqykrsiidglKVVL9od0qvyPIoHcon6EZEg2daaT3bWdmDNI3WTsS2eHdW/SGgxoiTZWQbx2CFfAImQA==", "dev": true, - "license": "MIT", "dependencies": { - "@types/node": "^22.2.0" + "@types/node": "^20.1.0", + "@wdio/logger": "9.4.4", + "@wdio/repl": "9.4.4", + "@wdio/runner": "9.9.3", + "@wdio/types": "9.9.0", + "async-exit-hook": "^2.0.1", + "split2": "^4.1.0", + "stream-buffers": "^3.0.2" }, "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/@wdio/local-runner/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=18.20.0" } }, - "node_modules/@wdio/local-runner/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "dev": true, - "license": "MIT" - }, "node_modules/@wdio/logger": { "version": "9.4.4", "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.4.4.tgz", @@ -2955,17 +2887,16 @@ } }, "node_modules/@wdio/mocha-framework": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-9.6.4.tgz", - "integrity": "sha512-8TqCIKGz5CkA2uSJSLXLLjINCeZ/UGvegZiB82Fr9hO3RvirPXbYVV+P6vqB9jqSACZ5kxX22cTUhqXgFxUjyQ==", + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-9.9.0.tgz", + "integrity": "sha512-k+b1R7K9588OHf7oltKC87+mmks/LdTkesahqgiKYTHNpepZmpsneT6wuC6CYe4bnXUZCe11aBHqmFZ1BUcq6Q==", "dev": true, - "license": "MIT", "dependencies": { "@types/mocha": "^10.0.6", "@types/node": "^20.11.28", "@wdio/logger": "9.4.4", - "@wdio/types": "9.6.3", - "@wdio/utils": "9.6.4", + "@wdio/types": "9.9.0", + "@wdio/utils": "9.9.0", "mocha": "^10.3.0" }, "engines": { @@ -2980,45 +2911,26 @@ "license": "MIT" }, "node_modules/@wdio/repl": { - "version": "8.40.3", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-8.40.3.tgz", - "integrity": "sha512-mWEiBbaC7CgxvSd2/ozpbZWebnRIc8KRu/J81Hlw/txUWio27S7IpXBlZGVvhEsNzq0+cuxB/8gDkkXvMPbesw==", + "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, - "license": "MIT", "dependencies": { - "@types/node": "^22.2.0" + "@types/node": "^20.1.0" }, "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/@wdio/repl/node_modules/@types/node": { - "version": "22.10.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.10.tgz", - "integrity": "sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" + "node": ">=18.20.0" } }, - "node_modules/@wdio/repl/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "dev": true, - "license": "MIT" - }, "node_modules/@wdio/reporter": { - "version": "9.6.3", - "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-9.6.3.tgz", - "integrity": "sha512-OwuwhRtqDZDPU8/6TBSMg+bvw9DKgUVfGu160zamBt8jPg8LZ5VU2VoZlRBNZMAHl3OnSwj+ih2/meEoLf3DUg==", + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-9.9.0.tgz", + "integrity": "sha512-JYZa2a40egdlYmJo4mJn931xp8o4x/o0+zFXt2Mvm5qPuQX+r2hKJxmnstbldP63WJw9MjXpS+8+Q3/d6x7mLQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "^20.1.0", "@wdio/logger": "9.4.4", - "@wdio/types": "9.6.3", + "@wdio/types": "9.9.0", "diff": "^7.0.0", "object-inspect": "^1.12.0" }, @@ -3027,656 +2939,201 @@ } }, "node_modules/@wdio/runner": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.41.0.tgz", - "integrity": "sha512-eQ9vZaHIXBLw7XqiKsasiUGjC8PgJawnHFMPKS0i/4ds+5arHo6ciX0s2uhJ3j/EHw3PYvFPCREp/sXetRuNlQ==", + "version": "9.9.3", + "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-9.9.3.tgz", + "integrity": "sha512-DQkZExfmhUZVQxHLBPKsSr1V8xynqzJY6CCqyfwnYFCttommzVDER+PbLharvGy7oKji18XdzxjuCku36nrwVQ==", "dev": true, - "license": "MIT", "dependencies": { - "@types/node": "^22.2.0", - "@wdio/config": "8.41.0", - "@wdio/globals": "8.41.0", - "@wdio/logger": "8.38.0", - "@wdio/types": "8.41.0", - "@wdio/utils": "8.41.0", - "deepmerge-ts": "^5.1.0", - "expect-webdriverio": "^4.12.0", - "gaze": "^1.1.3", - "webdriver": "8.41.0", - "webdriverio": "8.41.0" + "@types/node": "^20.11.28", + "@wdio/config": "9.9.0", + "@wdio/dot-reporter": "9.9.0", + "@wdio/globals": "9.9.3", + "@wdio/logger": "9.4.4", + "@wdio/types": "9.9.0", + "@wdio/utils": "9.9.0", + "deepmerge-ts": "^7.0.3", + "expect-webdriverio": "^5.1.0", + "webdriver": "9.9.1", + "webdriverio": "9.9.3" }, "engines": { - "node": "^16.13 || >=18" + "node": ">=18.20.0" } }, - "node_modules/@wdio/runner/node_modules/@puppeteer/browsers": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.9.1.tgz", - "integrity": "sha512-PuvK6xZzGhKPvlx3fpfdM2kYY3P/hB1URtK8wA7XUJ6prn6pp22zvJHu48th0SGcHL9SutbPHrFuQgfXTFobWA==", + "node_modules/@wdio/spec-reporter": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-9.9.0.tgz", + "integrity": "sha512-9Zb6J7Ku8NvthO3RNxZ90o2S0ApYnNwZE4W6zKTzFKj0z7YrPGbLl6k8lrrpgH+aL5Q9cqAnXFz9QRPTBL/CoQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "debug": "4.3.4", - "extract-zip": "2.0.1", - "progress": "2.0.3", - "proxy-agent": "6.3.1", - "tar-fs": "3.0.4", - "unbzip2-stream": "1.4.3", - "yargs": "17.7.2" - }, - "bin": { - "browsers": "lib/cjs/main-cli.js" + "@wdio/reporter": "9.9.0", + "@wdio/types": "9.9.0", + "chalk": "^5.1.2", + "easy-table": "^1.2.0", + "pretty-ms": "^9.0.0" }, "engines": { - "node": ">=16.3.0" + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/spec-reporter/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "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/@types/node": { - "version": "22.10.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.10.tgz", - "integrity": "sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww==", + "node_modules/@wdio/types": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.9.0.tgz", + "integrity": "sha512-Mh7ryL7uWKECStKcF6pWSbYkC51OemOwQR2pmvymP5HOfG74s6RVbJ+Z6Om8ffiJeTI5nZuvNDzYNkUpm7Elzg==", "dev": true, - "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "@types/node": "^20.1.0" + }, + "engines": { + "node": ">=18.20.0" } }, - "node_modules/@wdio/runner/node_modules/@wdio/config": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.41.0.tgz", - "integrity": "sha512-/6Z3sfSyhX5oVde0l01fyHimbqRYIVUDBnhDG2EMSCoC2lsaJX3Bm3IYpYHYHHFsgoDCi3B3Gv++t9dn2eSZZw==", + "node_modules/@wdio/utils": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.9.0.tgz", + "integrity": "sha512-CgPE/fh4SLTZmQZO99/B/swrQ8uwaavlVfeUtxQ5iZ5rTpXKx+V4ScCSuU0qX5Kwm9e1ZG6ALuzDTo8zQ1gJ4w==", "dev": true, - "license": "MIT", "dependencies": { - "@wdio/logger": "8.38.0", - "@wdio/types": "8.41.0", - "@wdio/utils": "8.41.0", + "@puppeteer/browsers": "^2.2.0", + "@wdio/logger": "9.4.4", + "@wdio/types": "9.9.0", "decamelize": "^6.0.0", - "deepmerge-ts": "^5.0.0", - "glob": "^10.2.2", - "import-meta-resolve": "^4.0.0" + "deepmerge-ts": "^7.0.3", + "edgedriver": "^6.1.1", + "geckodriver": "^5.0.0", + "get-port": "^7.0.0", + "import-meta-resolve": "^4.0.0", + "locate-app": "^2.2.24", + "safaridriver": "^1.0.0", + "split2": "^4.2.0", + "wait-port": "^1.1.0" }, "engines": { - "node": "^16.13 || >=18" + "node": ">=18.20.0" } }, - "node_modules/@wdio/runner/node_modules/@wdio/globals": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.41.0.tgz", - "integrity": "sha512-xfUpEppdKzMHy4qoSoQN1cXoBPPh7oMeX+U/jtdvOtla+dd/YZ8pu47zLhQ/GM3gDVrBGnO4w3u4L6Zf/P3KEw==", + "node_modules/@zip.js/zip.js": { + "version": "2.7.54", + "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.54.tgz", + "integrity": "sha512-qMrJVg2hoEsZJjMJez9yI2+nZlBUxgYzGV3mqcb2B/6T1ihXp0fWBDYlVHlHquuorgNUQP5a8qSmX6HF5rFJNg==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "engines": { - "node": "^16.13 || >=18" - }, - "optionalDependencies": { - "expect-webdriverio": "^4.11.2", - "webdriverio": "8.41.0" + "bun": ">=0.7.0", + "deno": ">=1.0.0", + "node": ">=16.5.0" } }, - "node_modules/@wdio/runner/node_modules/@wdio/logger": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.38.0.tgz", - "integrity": "sha512-kcHL86RmNbcQP+Gq/vQUGlArfU6IIcbbnNp32rRIraitomZow+iEoc519rdQmSVusDozMS5DZthkgDdxK+vz6Q==", + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "dev": true, - "license": "MIT", "dependencies": { - "chalk": "^5.1.2", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^7.1.0" + "event-target-shim": "^5.0.0" }, "engines": { - "node": "^16.13 || >=18" + "node": ">=6.5" } }, - "node_modules/@wdio/runner/node_modules/@wdio/protocols": { - "version": "8.40.3", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.40.3.tgz", - "integrity": "sha512-wK7+eyrB3TAei8RwbdkcyoNk2dPu+mduMBOdPJjp8jf/mavd15nIUXLID1zA+w5m1Qt1DsT1NbvaeO9+aJQ33A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@wdio/runner/node_modules/@wdio/types": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.41.0.tgz", - "integrity": "sha512-t4NaNTvJZci3Xv/yUZPH4eTL0hxrVTf5wdwNnYIBrzMnlRDbNefjQ0P7FM7ZjQCLaH92AEH6t/XanUId7Webug==", + "node_modules/acorn": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", + "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "^22.2.0" + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": "^16.13 || >=18" + "node": ">=0.4.0" } }, - "node_modules/@wdio/runner/node_modules/@wdio/utils": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.41.0.tgz", - "integrity": "sha512-0TcTjBiax1VxtJQ/iQA0ZyYOSHjjX2ARVmEI0AMo9+AuIq+xBfnY561+v8k9GqOMPKsiH/HrK3xwjx8xCVS03g==", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, - "license": "MIT", "dependencies": { - "@puppeteer/browsers": "^1.6.0", - "@wdio/logger": "8.38.0", - "@wdio/types": "8.41.0", - "decamelize": "^6.0.0", - "deepmerge-ts": "^5.1.0", - "edgedriver": "^5.5.0", - "geckodriver": "~4.2.0", - "get-port": "^7.0.0", - "import-meta-resolve": "^4.0.0", - "locate-app": "^2.1.0", - "safaridriver": "^0.1.0", - "split2": "^4.2.0", - "wait-port": "^1.0.4" + "debug": "^4.3.4" }, "engines": { - "node": "^16.13 || >=18" + "node": ">= 14" } }, - "node_modules/@wdio/runner/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@wdio/runner/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, - "license": "MIT", "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=6" } }, - "node_modules/@wdio/runner/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, - "license": "MIT", "dependencies": { - "ms": "2.1.2" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=6.0" + "node": ">=8" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@wdio/runner/node_modules/deepmerge-ts": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-5.1.0.tgz", - "integrity": "sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==", + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "license": "BSD-3-Clause", "engines": { - "node": ">=16.0.0" + "node": ">=8" } }, - "node_modules/@wdio/runner/node_modules/expect-webdriverio": { - "version": "4.15.4", - "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-4.15.4.tgz", - "integrity": "sha512-Op1xZoevlv1pohCq7g2Og5Gr3xP2NhY7MQueOApmopVxgweoJ/BqJxyvMNP0A//QsMg8v0WsN/1j81Sx2er9Wg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/snapshot": "^2.0.3", - "expect": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "lodash.isequal": "^4.5.0" - }, - "engines": { - "node": ">=16 || >=18 || >=20" - }, - "optionalDependencies": { - "@wdio/globals": "^8.29.3", - "@wdio/logger": "^8.28.0", - "webdriverio": "^8.29.3" - } - }, - "node_modules/@wdio/runner/node_modules/geckodriver": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-4.2.1.tgz", - "integrity": "sha512-4m/CRk0OI8MaANRuFIahvOxYTSjlNAO2p9JmE14zxueknq6cdtB5M9UGRQ8R9aMV0bLGNVHHDnDXmoXdOwJfWg==", - "dev": true, - "hasInstallScript": true, - "license": "MPL-2.0", - "dependencies": { - "@wdio/logger": "^8.11.0", - "decamelize": "^6.0.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "node-fetch": "^3.3.1", - "tar-fs": "^3.0.4", - "unzipper": "^0.10.14", - "which": "^4.0.0" - }, - "bin": { - "geckodriver": "bin/geckodriver.js" - }, - "engines": { - "node": "^16.13 || >=18 || >=20" - } - }, - "node_modules/@wdio/runner/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/@wdio/runner/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@wdio/runner/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@wdio/runner/node_modules/proxy-agent": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz", - "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.2", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.1", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.2" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@wdio/runner/node_modules/puppeteer-core": { - "version": "21.11.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-21.11.0.tgz", - "integrity": "sha512-ArbnyA3U5SGHokEvkfWjW+O8hOxV1RSJxOgriX/3A4xZRqixt9ZFHD0yPgZQF05Qj0oAqi8H/7stDorjoHY90Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@puppeteer/browsers": "1.9.1", - "chromium-bidi": "0.5.8", - "cross-fetch": "4.0.0", - "debug": "4.3.4", - "devtools-protocol": "0.0.1232444", - "ws": "8.16.0" - }, - "engines": { - "node": ">=16.13.2" - } - }, - "node_modules/@wdio/runner/node_modules/puppeteer-core/node_modules/chromium-bidi": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.8.tgz", - "integrity": "sha512-blqh+1cEQbHBKmok3rVJkBlBxt9beKBgOsxbFgs7UJcoVbbeZ+K7+6liAsjgpc8l1Xd55cQUy14fXZdGSb4zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "mitt": "3.0.1", - "urlpattern-polyfill": "10.0.0" - }, - "peerDependencies": { - "devtools-protocol": "*" - } - }, - "node_modules/@wdio/runner/node_modules/puppeteer-core/node_modules/devtools-protocol": { - "version": "0.0.1232444", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1232444.tgz", - "integrity": "sha512-pM27vqEfxSxRkTMnF+XCmxSEb6duO5R+t8A9DEEJgy4Wz2RVanje2mmj99B6A3zv2r/qGfYlOvYznUhuokizmg==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@wdio/runner/node_modules/tar-fs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - } - }, - "node_modules/@wdio/runner/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@wdio/runner/node_modules/webdriverio": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.41.0.tgz", - "integrity": "sha512-WlQfw0mUEhTS8DPr+TBSYMhEnqXkFr2dcUwPb5XkffTB+i0wftf+BLXJPSVD9M1PTLyYcFdCIu68pqR54dq5BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "^22.2.0", - "@wdio/config": "8.41.0", - "@wdio/logger": "8.38.0", - "@wdio/protocols": "8.40.3", - "@wdio/repl": "8.40.3", - "@wdio/types": "8.41.0", - "@wdio/utils": "8.41.0", - "archiver": "^7.0.0", - "aria-query": "^5.0.0", - "css-shorthand-properties": "^1.1.1", - "css-value": "^0.0.1", - "devtools-protocol": "^0.0.1359167", - "grapheme-splitter": "^1.0.2", - "import-meta-resolve": "^4.0.0", - "is-plain-obj": "^4.1.0", - "jszip": "^3.10.1", - "lodash.clonedeep": "^4.5.0", - "lodash.zip": "^4.2.0", - "minimatch": "^9.0.0", - "puppeteer-core": "^21.11.0", - "query-selector-shadow-dom": "^1.0.0", - "resq": "^1.9.1", - "rgb2hex": "0.2.5", - "serialize-error": "^11.0.1", - "webdriver": "8.41.0" - }, - "engines": { - "node": "^16.13 || >=18" - }, - "peerDependencies": { - "devtools": "^8.14.0" - }, - "peerDependenciesMeta": { - "devtools": { - "optional": true - } - } - }, - "node_modules/@wdio/runner/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@wdio/spec-reporter": { - "version": "9.6.3", - "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-9.6.3.tgz", - "integrity": "sha512-P9zi8PfdhUWGnwb1tcl7EyLGKHFiCOkS04I7nBnVRAkTTfeQ+jpuDIlefW8DkW91yHHOpoAOOVeMqVBGRc8OoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@wdio/reporter": "9.6.3", - "@wdio/types": "9.6.3", - "chalk": "^5.1.2", - "easy-table": "^1.2.0", - "pretty-ms": "^9.0.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, - "node_modules/@wdio/spec-reporter/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@wdio/types": { - "version": "9.6.3", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.6.3.tgz", - "integrity": "sha512-K3Lu7K5g5bsUcQV6/95XaS3jMwcGUn2pDdryYibKZafklhHjVt3o/xnw6Vgd/JzoSneCKHdwj941n+yDpTJHAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "^20.1.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, - "node_modules/@wdio/utils": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.6.4.tgz", - "integrity": "sha512-FMI/F5ju0h0HKC4RRQKW/H9So2cgtK6dd0JCmVdBzQ+/LMluEzlZmQva14HYmNd2t2ZmejYRqAJPV3aAsMAMZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@puppeteer/browsers": "^2.2.0", - "@wdio/logger": "9.4.4", - "@wdio/types": "9.6.3", - "decamelize": "^6.0.0", - "deepmerge-ts": "^7.0.3", - "edgedriver": "^6.1.1", - "geckodriver": "^5.0.0", - "get-port": "^7.0.0", - "import-meta-resolve": "^4.0.0", - "locate-app": "^2.2.24", - "safaridriver": "^1.0.0", - "split2": "^4.2.0", - "wait-port": "^1.1.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, - "node_modules/@wdio/utils/node_modules/edgedriver": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/edgedriver/-/edgedriver-6.1.1.tgz", - "integrity": "sha512-/dM/PoBf22Xg3yypMWkmRQrBKEnSyNaZ7wHGCT9+qqT14izwtFT+QvdR89rjNkMfXwW+bSFoqOfbcvM+2Cyc7w==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@wdio/logger": "^9.1.3", - "@zip.js/zip.js": "^2.7.53", - "decamelize": "^6.0.0", - "edge-paths": "^3.0.5", - "fast-xml-parser": "^4.5.0", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "node-fetch": "^3.3.2", - "which": "^5.0.0" - }, - "bin": { - "edgedriver": "bin/edgedriver.js" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@wdio/utils/node_modules/safaridriver": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safaridriver/-/safaridriver-1.0.0.tgz", - "integrity": "sha512-J92IFbskyo7OYB3Dt4aTdyhag1GlInrfbPCmMteb7aBK7PwlnGz1HI0+oyNN97j7pV9DqUAVoVgkNRMrfY47mQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@wdio/utils/node_modules/which": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", - "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@zip.js/zip.js": { - "version": "2.7.54", - "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.54.tgz", - "integrity": "sha512-qMrJVg2hoEsZJjMJez9yI2+nZlBUxgYzGV3mqcb2B/6T1ihXp0fWBDYlVHlHquuorgNUQP5a8qSmX6HF5rFJNg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "bun": ">=0.7.0", - "deno": ">=1.0.0", - "node": ">=16.5.0" - } - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/acorn": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", - "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "dependencies": { "color-convert": "^1.9.0" @@ -4064,30 +3521,6 @@ "node": ">=10.0.0" } }, - "node_modules/big-integer": { - "version": "1.6.52", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", - "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", - "dev": true, - "license": "Unlicense", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -4100,13 +3533,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", - "dev": true, - "license": "MIT" - }, "node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", @@ -4218,25 +3644,6 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "node_modules/buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", - "dev": true, - "engines": { - "node": ">=0.2.0" - } - }, "node_modules/builtin-modules": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", @@ -4270,48 +3677,6 @@ "node": ">=10" } }, - "node_modules/cacheable-lookup": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", - "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - } - }, - "node_modules/cacheable-request": { - "version": "10.2.14", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", - "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-cache-semantics": "^4.0.2", - "get-stream": "^6.0.1", - "http-cache-semantics": "^4.1.1", - "keyv": "^4.5.3", - "mimic-response": "^4.0.0", - "normalize-url": "^8.0.0", - "responselike": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/call-bind": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", @@ -4372,19 +3737,6 @@ } ] }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", - "dev": true, - "license": "MIT/X11", - "dependencies": { - "traverse": ">=0.3.0 <0.4" - }, - "engines": { - "node": "*" - } - }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -4806,37 +4158,6 @@ "node": ">= 14" } }, - "node_modules/cross-fetch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", - "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "node-fetch": "^2.6.12" - } - }, - "node_modules/cross-fetch/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -5002,35 +4323,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -5059,16 +4351,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -5121,14 +4403,15 @@ "version": "0.0.1359167", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1359167.tgz", "integrity": "sha512-f/9PeTaSH3weS/WAwrQb5/s9R3KMOeTGe+Jkhg5952yInub7iDPjdlzRdrDgpLZfxHbTrBuG9aUkAMM+ocVkXQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/diff": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } @@ -5221,56 +4504,6 @@ "url": "https://dotenvx.com" } }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/duplexer2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/duplexer2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/duplexer2/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/duplexer2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -5327,49 +4560,27 @@ } }, "node_modules/edgedriver": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/edgedriver/-/edgedriver-5.6.1.tgz", - "integrity": "sha512-3Ve9cd5ziLByUdigw6zovVeWJjVs8QHVmqOB0sJ0WNeVPcwf4p18GnxMmVvlFmYRloUwf5suNuorea4QzwBIOA==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/edgedriver/-/edgedriver-6.1.1.tgz", + "integrity": "sha512-/dM/PoBf22Xg3yypMWkmRQrBKEnSyNaZ7wHGCT9+qqT14izwtFT+QvdR89rjNkMfXwW+bSFoqOfbcvM+2Cyc7w==", "dev": true, "hasInstallScript": true, "dependencies": { - "@wdio/logger": "^8.38.0", - "@zip.js/zip.js": "^2.7.48", + "@wdio/logger": "^9.1.3", + "@zip.js/zip.js": "^2.7.53", "decamelize": "^6.0.0", "edge-paths": "^3.0.5", - "fast-xml-parser": "^4.4.1", + "fast-xml-parser": "^4.5.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", "node-fetch": "^3.3.2", - "which": "^4.0.0" + "which": "^5.0.0" }, "bin": { "edgedriver": "bin/edgedriver.js" - } - }, - "node_modules/edgedriver/node_modules/@wdio/logger": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.38.0.tgz", - "integrity": "sha512-kcHL86RmNbcQP+Gq/vQUGlArfU6IIcbbnNp32rRIraitomZow+iEoc519rdQmSVusDozMS5DZthkgDdxK+vz6Q==", - "dev": true, - "dependencies": { - "chalk": "^5.1.2", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^7.1.0" }, "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/edgedriver/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=18.0.0" } }, "node_modules/ejs": { @@ -6392,12 +5603,10 @@ } }, "node_modules/expect-webdriverio": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-5.0.5.tgz", - "integrity": "sha512-h04OGd7ZksVj8bgv3bYdjFpmJuKeCnyRrBmpMxYpMDmYSspxg9vsSr0kD5p9oOM16bX0ZXEVXr42RbI2hoLpTw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-5.1.0.tgz", + "integrity": "sha512-4u3q+Dqx/lXNgvCx1gKia4CfS28z1UxGGfVUkoMNbrsBlTBB2fYqXG+4+YtYoerxvp/XPwIb/+89IGEdyPbDXQ==", "dev": true, - "license": "MIT", - "optional": true, "dependencies": { "@vitest/snapshot": "^2.0.5", "expect": "^29.7.0", @@ -6498,18 +5707,14 @@ "dev": true }, "node_modules/fast-xml-parser": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz", - "integrity": "sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.2.tgz", + "integrity": "sha512-xmnYV9o0StIz/0ArdzmWTxn9oDy0lH8Z80/8X/TD2EUQKXY4DHxoT9mYBqgGIG17DgddCJtH1M6DriMbalNsAA==", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" } ], "dependencies": { @@ -6713,16 +5918,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/form-data-encoder": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", - "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.17" - } - }, "node_modules/formdata-polyfill": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", @@ -6760,66 +5955,13 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "deprecated": "This package is no longer supported.", - "dev": true, - "license": "ISC", - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/fstream/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fstream/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, "node_modules/function-bind": { @@ -6858,19 +6000,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "globule": "^1.0.0" - }, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/geckodriver": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-5.0.0.tgz", @@ -6895,22 +6024,6 @@ "node": ">=18.0.0" } }, - "node_modules/geckodriver/node_modules/which": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", - "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -7122,56 +6235,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globule": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz", - "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob": "~7.1.1", - "lodash": "^4.17.21", - "minimatch": "~3.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/globule/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/globule/node_modules/minimatch": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", - "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -7184,45 +6247,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/got": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", - "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^5.2.0", - "@szmarczak/http-timer": "^5.0.1", - "cacheable-lookup": "^7.0.0", - "cacheable-request": "^10.2.8", - "decompress-response": "^6.0.0", - "form-data-encoder": "^2.1.2", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/got/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -7350,11 +6374,10 @@ "dev": true }, "node_modules/htmlfy": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.5.1.tgz", - "integrity": "sha512-nb66M9g0zKrvmR3kk/WOM+5tOT3DzO1yJ4yEJXsz2zfZ3gXiCTrlGvbc4lQzTZyylJj7at+XSVDxFvAVH6J6tQ==", - "dev": true, - "license": "MIT" + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.6.0.tgz", + "integrity": "sha512-EV1RNjYuG6xIxwA8zDjAUQVeS/SsPE0nhFsdjM8ALopS22ZRAcePocdrhKaaV26PYiTkUrKplJuSZkGRN6Y0Rg==", + "dev": true }, "node_modules/htmlparser2": { "version": "9.1.0", @@ -7375,13 +6398,6 @@ "entities": "^4.5.0" } }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true, - "license": "BSD-2-Clause" - }, "node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", @@ -7395,20 +6411,6 @@ "node": ">= 14" } }, - "node_modules/http2-wrapper": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", - "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, "node_modules/https-proxy-agent": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", @@ -8590,19 +7592,6 @@ "node": ">=0.10.0" } }, - "node_modules/ky": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/ky/-/ky-0.33.3.tgz", - "integrity": "sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/ky?sponsor=1" - } - }, "node_modules/lazystream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", @@ -8846,13 +7835,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", - "dev": true, - "license": "ISC" - }, "node_modules/listr2": { "version": "8.2.5", "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz", @@ -9070,6 +8052,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", "dev": true }, "node_modules/lodash.merge": { @@ -9336,19 +8319,6 @@ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", "dev": true }, - "node_modules/lowercase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", - "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -9432,19 +8402,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mimic-response": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", - "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -9485,27 +8442,9 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "dev": true - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true, - "license": "MIT" + "optional": true, + "peer": true }, "node_modules/mocha": { "version": "10.7.3", @@ -9943,19 +8882,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-url": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", - "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/npm-run-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", @@ -10140,16 +9066,6 @@ "node": ">=0.10.0" } }, - "node_modules/p-cancelable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", - "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -10784,19 +9700,6 @@ "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", "dev": true }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -11148,13 +10051,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true, - "license": "MIT" - }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -11173,22 +10069,6 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, - "node_modules/responselike": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", - "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lowercase-keys": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/resq": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/resq/-/resq-1.11.0.tgz", @@ -11321,10 +10201,13 @@ } }, "node_modules/safaridriver": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/safaridriver/-/safaridriver-0.1.2.tgz", - "integrity": "sha512-4R309+gWflJktzPXBQCobbWEHlzC4aK3a+Ov3tz2Ib2aBxiwd11phkdIBH1l0EO22x24CJMUQkpKFumRriCSRg==", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safaridriver/-/safaridriver-1.0.0.tgz", + "integrity": "sha512-J92IFbskyo7OYB3Dt4aTdyhag1GlInrfbPCmMteb7aBK7PwlnGz1HI0+oyNN97j7pV9DqUAVoVgkNRMrfY47mQ==", + "dev": true, + "engines": { + "node": ">=18.0.0" + } }, "node_modules/safe-array-concat": { "version": "1.1.2", @@ -12039,23 +10922,6 @@ "node": ">=8.0" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", - "dev": true, - "license": "MIT/X11", - "engines": { - "node": "*" - } - }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -12326,79 +11192,20 @@ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unzipper": { - "version": "0.10.14", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", - "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - } - }, - "node_modules/unzipper/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/unzipper/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/unzipper/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/unzipper/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" + "engines": { + "node": ">= 10.0.0" } }, "node_modules/update-browserslist-db": { @@ -12638,267 +11445,31 @@ } }, "node_modules/webdriver": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.41.0.tgz", - "integrity": "sha512-n8OrFnVT4hAaGa0Advr3T8ObJdeKNTRklHIEzM2CYVx/5DZt+2KwaKSxWsURNd4zU7FbsfaJUU4rQWCmvozQLg==", + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.9.1.tgz", + "integrity": "sha512-VqHDph80Pd/HmeEtoNiqX/ixML/ub8Rw54oviVYm6V7cbnzACrSbSlt9zpdWfjEk+Qkm/CytyYFggan30RfAiQ==", "dev": true, - "license": "MIT", "dependencies": { - "@types/node": "^22.2.0", + "@types/node": "^20.1.0", "@types/ws": "^8.5.3", - "@wdio/config": "8.41.0", - "@wdio/logger": "8.38.0", - "@wdio/protocols": "8.40.3", - "@wdio/types": "8.41.0", - "@wdio/utils": "8.41.0", - "deepmerge-ts": "^5.1.0", - "got": "^12.6.1", - "ky": "^0.33.0", + "@wdio/config": "9.9.0", + "@wdio/logger": "9.4.4", + "@wdio/protocols": "9.7.0", + "@wdio/types": "9.9.0", + "@wdio/utils": "9.9.0", + "deepmerge-ts": "^7.0.3", + "undici": "^6.20.1", "ws": "^8.8.0" }, "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/webdriver/node_modules/@puppeteer/browsers": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.9.1.tgz", - "integrity": "sha512-PuvK6xZzGhKPvlx3fpfdM2kYY3P/hB1URtK8wA7XUJ6prn6pp22zvJHu48th0SGcHL9SutbPHrFuQgfXTFobWA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "debug": "4.3.4", - "extract-zip": "2.0.1", - "progress": "2.0.3", - "proxy-agent": "6.3.1", - "tar-fs": "3.0.4", - "unbzip2-stream": "1.4.3", - "yargs": "17.7.2" - }, - "bin": { - "browsers": "lib/cjs/main-cli.js" - }, - "engines": { - "node": ">=16.3.0" - } - }, - "node_modules/webdriver/node_modules/@types/node": { - "version": "22.10.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.10.tgz", - "integrity": "sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/webdriver/node_modules/@wdio/config": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.41.0.tgz", - "integrity": "sha512-/6Z3sfSyhX5oVde0l01fyHimbqRYIVUDBnhDG2EMSCoC2lsaJX3Bm3IYpYHYHHFsgoDCi3B3Gv++t9dn2eSZZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@wdio/logger": "8.38.0", - "@wdio/types": "8.41.0", - "@wdio/utils": "8.41.0", - "decamelize": "^6.0.0", - "deepmerge-ts": "^5.0.0", - "glob": "^10.2.2", - "import-meta-resolve": "^4.0.0" - }, - "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/webdriver/node_modules/@wdio/logger": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.38.0.tgz", - "integrity": "sha512-kcHL86RmNbcQP+Gq/vQUGlArfU6IIcbbnNp32rRIraitomZow+iEoc519rdQmSVusDozMS5DZthkgDdxK+vz6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^5.1.2", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/webdriver/node_modules/@wdio/protocols": { - "version": "8.40.3", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.40.3.tgz", - "integrity": "sha512-wK7+eyrB3TAei8RwbdkcyoNk2dPu+mduMBOdPJjp8jf/mavd15nIUXLID1zA+w5m1Qt1DsT1NbvaeO9+aJQ33A==", - "dev": true, - "license": "MIT" - }, - "node_modules/webdriver/node_modules/@wdio/types": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.41.0.tgz", - "integrity": "sha512-t4NaNTvJZci3Xv/yUZPH4eTL0hxrVTf5wdwNnYIBrzMnlRDbNefjQ0P7FM7ZjQCLaH92AEH6t/XanUId7Webug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "^22.2.0" - }, - "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/webdriver/node_modules/@wdio/utils": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.41.0.tgz", - "integrity": "sha512-0TcTjBiax1VxtJQ/iQA0ZyYOSHjjX2ARVmEI0AMo9+AuIq+xBfnY561+v8k9GqOMPKsiH/HrK3xwjx8xCVS03g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@puppeteer/browsers": "^1.6.0", - "@wdio/logger": "8.38.0", - "@wdio/types": "8.41.0", - "decamelize": "^6.0.0", - "deepmerge-ts": "^5.1.0", - "edgedriver": "^5.5.0", - "geckodriver": "~4.2.0", - "get-port": "^7.0.0", - "import-meta-resolve": "^4.0.0", - "locate-app": "^2.1.0", - "safaridriver": "^0.1.0", - "split2": "^4.2.0", - "wait-port": "^1.0.4" - }, - "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/webdriver/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/webdriver/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/webdriver/node_modules/deepmerge-ts": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-5.1.0.tgz", - "integrity": "sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/webdriver/node_modules/geckodriver": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-4.2.1.tgz", - "integrity": "sha512-4m/CRk0OI8MaANRuFIahvOxYTSjlNAO2p9JmE14zxueknq6cdtB5M9UGRQ8R9aMV0bLGNVHHDnDXmoXdOwJfWg==", - "dev": true, - "hasInstallScript": true, - "license": "MPL-2.0", - "dependencies": { - "@wdio/logger": "^8.11.0", - "decamelize": "^6.0.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "node-fetch": "^3.3.1", - "tar-fs": "^3.0.4", - "unzipper": "^0.10.14", - "which": "^4.0.0" - }, - "bin": { - "geckodriver": "bin/geckodriver.js" - }, - "engines": { - "node": "^16.13 || >=18 || >=20" - } - }, - "node_modules/webdriver/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/webdriver/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/webdriver/node_modules/proxy-agent": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz", - "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.2", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.1", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.2" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/webdriver/node_modules/tar-fs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^3.1.5" + "node": ">=18.20.0" } }, - "node_modules/webdriver/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "dev": true, - "license": "MIT" - }, "node_modules/webdriver/node_modules/ws": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -12916,39 +11487,36 @@ } }, "node_modules/webdriverio": { - "version": "9.7.1", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.7.1.tgz", - "integrity": "sha512-P1roVTpXwtzSgNKl9j92LF4+5i2eGd0n9EMvMRdLNnI0v1ws7dNJOHNgsEAepZqMikYPgh2m+5DyXR1Ygoa+nQ==", + "version": "9.9.3", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.9.3.tgz", + "integrity": "sha512-cxPdMYU48Pcw4W6t9zZcOGM/jMyWoCc/b7zjrpQnlU3uMrOx0uGIMqhDCxG5GpCCJF9iIRlmtBf8gWDA9hhl6g==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "^20.11.30", "@types/sinonjs__fake-timers": "^8.1.5", - "@wdio/config": "9.6.4", + "@wdio/config": "9.9.0", "@wdio/logger": "9.4.4", "@wdio/protocols": "9.7.0", "@wdio/repl": "9.4.4", - "@wdio/types": "9.6.3", - "@wdio/utils": "9.6.4", + "@wdio/types": "9.9.0", + "@wdio/utils": "9.9.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.5.0", - "import-meta-resolve": "^4.0.0", + "htmlfy": "^0.6.0", "is-plain-obj": "^4.1.0", "jszip": "^3.10.1", "lodash.clonedeep": "^4.5.0", "lodash.zip": "^4.2.0", - "minimatch": "^9.0.3", "query-selector-shadow-dom": "^1.0.1", "resq": "^1.11.0", "rgb2hex": "0.2.5", "serialize-error": "^11.0.3", "urlpattern-polyfill": "^10.0.0", - "webdriver": "9.7.0" + "webdriver": "9.9.1" }, "engines": { "node": ">=18.20.0" @@ -12962,94 +11530,6 @@ } } }, - "node_modules/webdriverio/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "^20.1.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, - "node_modules/webdriverio/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/webdriverio/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/webdriverio/node_modules/webdriver": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.7.0.tgz", - "integrity": "sha512-O/Ce4I7HcsqlP3kx9L0F14olOsarKkXUz+hSunOTC9YxsiVoOu5yIcRrHyWUQziYgA4K5gobZSKrTuAr+edA4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "^20.1.0", - "@types/ws": "^8.5.3", - "@wdio/config": "9.6.4", - "@wdio/logger": "9.4.4", - "@wdio/protocols": "9.7.0", - "@wdio/types": "9.6.3", - "@wdio/utils": "9.6.4", - "deepmerge-ts": "^7.0.3", - "undici": "^6.20.1", - "ws": "^8.8.0" - }, - "engines": { - "node": ">=18.20.0" - } - }, - "node_modules/webdriverio/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true, - "license": "BSD-2-Clause" - }, "node_modules/whatwg-encoding": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", @@ -13083,21 +11563,10 @@ "node": ">=18" } }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, "dependencies": { "isexe": "^3.1.1" @@ -13106,7 +11575,7 @@ "node-which": "bin/which.js" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/which-boxed-primitive": { diff --git a/package.json b/package.json index 4d96f56862..06d0e25323 100644 --- a/package.json +++ b/package.json @@ -28,10 +28,10 @@ "@babel/preset-env": "^7.25.8", "@babel/register": "^7.25.7", "@babel/runtime": "^7.25.7", - "@wdio/cli": "^9.2.1", - "@wdio/local-runner": "^8.14.3", - "@wdio/mocha-framework": "^9.1.3", - "@wdio/spec-reporter": "^9.1.3", + "@wdio/cli": "^9.9.3", + "@wdio/local-runner": "^9.9.3", + "@wdio/mocha-framework": "^9.9.0", + "@wdio/spec-reporter": "^9.9.0", "eslint": "^v8.57.1", "eslint-cli": "^1.1.1", "eslint-config-standard": "^17.1.0", diff --git a/tests/functional/helpers.js b/tests/functional/helpers.js index 2bd7be5287..1f97a8e446 100644 --- a/tests/functional/helpers.js +++ b/tests/functional/helpers.js @@ -45,8 +45,13 @@ export const click = async (selector) => { // but clicks down on the very top of the button which moves down and just below the mouse. When the mouse click is released // it's no longer over the button and the click silently fails. This means that when the test comes to do assertions on the following page // they fail, as we never navigated to that page. - await $(selector).scrollIntoView({ block: "center", inline: "center" }); - await $(selector).click(); + const element = await $(selector); + await element.waitForDisplayed(); + await browser.execute((el) => { + el.scrollIntoView({ behavior: "smooth", block: "center", inline: "center" }); + }, element); + await element.waitForClickable(); + await element.click(); // Allow time in case the click loads a new page. await browser.pause(100); diff --git a/tests/functional/spec/checkbox.spec.js b/tests/functional/spec/checkbox.spec.js index 141ba83afd..8e09d91715 100644 --- a/tests/functional/spec/checkbox.spec.js +++ b/tests/functional/spec/checkbox.spec.js @@ -44,8 +44,8 @@ describe('Checkbox with "other" option', () => { // When await click(MandatoryCheckboxPage.submit()); // Then - await expect(await $(MandatoryCheckboxPage.error()).getHTML()).toContain( - 'Select at least one answer to ‘Which pizza toppings would you like?’', + await expect(await $(MandatoryCheckboxPage.error()).getHTML({ includeSelectorTag: false })).toContain( + 'Select at least one answer\nto ‘Which pizza toppings would you like?’', ); }); diff --git a/tests/functional/spec/components/address/address.spec.js b/tests/functional/spec/components/address/address.spec.js index db27e65147..eb866686ac 100644 --- a/tests/functional/spec/components/address/address.spec.js +++ b/tests/functional/spec/components/address/address.spec.js @@ -21,7 +21,6 @@ describe("Address Answer Type", () => { await click(AddressConfirmation.submit()); await verifyUrlContains(SubmitPage.pageName); await expect(await $(SubmitPage.addressMandatory()).getText()).toBe("Evelyn Street\nApt 7\nBarry\nCF63 4JG"); - await expect(await $(SubmitPage.addressMandatory()).getHTML()).toContain("Evelyn Street
Apt 7
Barry
CF63 4JG"); }); }); diff --git a/tests/functional/spec/components/checkbox/checkbox_detail_answer_multiple.spec.js b/tests/functional/spec/components/checkbox/checkbox_detail_answer_multiple.spec.js index ac8cf20f34..712df3b8ea 100644 --- a/tests/functional/spec/components/checkbox/checkbox_detail_answer_multiple.spec.js +++ b/tests/functional/spec/components/checkbox/checkbox_detail_answer_multiple.spec.js @@ -2,10 +2,12 @@ import MandatoryCheckboxPage from "../../../generated_pages/checkbox_detail_answ import SubmitPage from "../../../generated_pages/checkbox_detail_answer_multiple/submit.page"; import { click, verifyUrlContains } from "../../../helpers"; describe('Checkbox with multiple "detail_answer" options', () => { - const checkboxSchema = "test_checkbox_detail_answer_multiple.json"; + beforeEach(async () => { + // Given + await browser.openQuestionnaire("test_checkbox_detail_answer_multiple.json"); + }); it("Given detail answer options are available, When the user clicks an option, Then the detail answer input should be visible.", async () => { - await browser.openQuestionnaire(checkboxSchema); await $(MandatoryCheckboxPage.yourChoice()).click(); await expect(await $(MandatoryCheckboxPage.yourChoiceDetail()).isDisplayed()).toBe(true); await $(MandatoryCheckboxPage.cheese()).click(); @@ -13,8 +15,6 @@ describe('Checkbox with multiple "detail_answer" options', () => { }); it("Given a mandatory detail answer, When I select the option but leave the input field empty and submit, Then an error should be displayed.", async () => { - // Given - await browser.openQuestionnaire(checkboxSchema); // When // Non-Mandatory detail answer given await $(MandatoryCheckboxPage.cheese()).click(); @@ -29,7 +29,6 @@ describe('Checkbox with multiple "detail_answer" options', () => { it("Given a selected checkbox answer with an error for a mandatory detail answer, When I enter valid value and submit the page, Then the error is cleared and I navigate to next page.", async () => { // Given - await browser.openQuestionnaire(checkboxSchema); await $(MandatoryCheckboxPage.yourChoice()).click(); await click(MandatoryCheckboxPage.submit()); await expect(await $(MandatoryCheckboxPage.error()).isDisplayed()).toBe(true); @@ -41,8 +40,6 @@ describe('Checkbox with multiple "detail_answer" options', () => { }); it("Given a non-mandatory detail answer, When the user does not provide any text, Then just the option value should be displayed on the summary screen", async () => { - // Given - await browser.openQuestionnaire(checkboxSchema); // When await $(MandatoryCheckboxPage.cheese()).click(); await expect(await $(MandatoryCheckboxPage.cheeseDetail()).isDisplayed()).toBe(true); @@ -52,8 +49,6 @@ describe('Checkbox with multiple "detail_answer" options', () => { }); it("Given multiple detail answers, When the user provides text for all, Then that text should be displayed on the summary screen", async () => { - // Given - await browser.openQuestionnaire(checkboxSchema); // When await $(MandatoryCheckboxPage.cheese()).click(); await $(MandatoryCheckboxPage.cheeseDetail()).setValue("Mozzarella"); @@ -65,8 +60,6 @@ describe('Checkbox with multiple "detail_answer" options', () => { }); it("Given multiple detail answers, When the user provides text for just one, Then that text should be displayed on the summary screen", async () => { - // Given - await browser.openQuestionnaire(checkboxSchema); // When await $(MandatoryCheckboxPage.yourChoice()).click(); await $(MandatoryCheckboxPage.yourChoiceDetail()).setValue("Bacon"); @@ -76,8 +69,6 @@ describe('Checkbox with multiple "detail_answer" options', () => { }); it("Given I have previously added text in a detail answer and saved, When I uncheck the detail answer option and select a different checkbox, Then the text entered in the detail answer field should be empty.", async () => { - // Given - await browser.openQuestionnaire(checkboxSchema); // When await $(MandatoryCheckboxPage.cheese()).click(); await $(MandatoryCheckboxPage.cheeseDetail()).setValue("Mozzarella"); diff --git a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_currency.spec.js b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_currency.spec.js index f570d6c5f3..a4f31469c1 100644 --- a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_currency.spec.js +++ b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_currency.spec.js @@ -5,8 +5,8 @@ import { click } from "../../../../helpers"; describe("Component: Mutually Exclusive Currency With Single Checkbox Override", () => { beforeEach(async () => { await browser.openQuestionnaire("test_mutually_exclusive.json"); - await browser.pause(100); - await browser.url("/questionnaire/mutually-exclusive-currency"); + await browser.pause(1000); + await browser.url(CurrencyPage.url()); }); describe("Given the user has entered a value for the non-exclusive currency answer", () => { diff --git a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_day_month_year_date.spec.js b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_day_month_year_date.spec.js index 5a8869797f..8c98861f50 100644 --- a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_day_month_year_date.spec.js +++ b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_day_month_year_date.spec.js @@ -5,8 +5,8 @@ import { click } from "../../../../helpers"; describe("Component: Mutually Exclusive Day Month Year Date With Single Checkbox Override", () => { beforeEach(async () => { await browser.openQuestionnaire("test_mutually_exclusive.json"); - await browser.pause(100); - await browser.url("/questionnaire/mutually-exclusive-date"); + await browser.pause(1000); + await browser.url(DatePage.url()); }); describe("Given the user has entered a value for the non-exclusive month year date answer", () => { diff --git a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_duration.spec.js b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_duration.spec.js index acb887c4cc..b2e517849a 100644 --- a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_duration.spec.js +++ b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_duration.spec.js @@ -5,8 +5,8 @@ import { click } from "../../../../helpers"; describe("Component: Mutually Exclusive Duration With Single Checkbox Override", () => { beforeEach(async () => { await browser.openQuestionnaire("test_mutually_exclusive.json"); - await browser.pause(100); - await browser.url("/questionnaire/mutually-exclusive-duration"); + await browser.pause(1000); + await browser.url(DurationPage.url()); }); describe("Given the user has entered a value for the non-exclusive duration answer", () => { diff --git a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_month_year_date.spec.js b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_month_year_date.spec.js index b089da7571..7e72b122eb 100644 --- a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_month_year_date.spec.js +++ b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_month_year_date.spec.js @@ -5,8 +5,8 @@ import { click } from "../../../../helpers"; describe("Component: Mutually Exclusive Month Year Date With Single Checkbox Override", () => { beforeEach(async () => { await browser.openQuestionnaire("test_mutually_exclusive.json"); - await browser.pause(100); - await browser.url("/questionnaire/mutually-exclusive-month-year-date"); + await browser.pause(1000); + await browser.url(MonthYearDatePage.url()); }); describe("Given the user has entered a value for the non-exclusive month year date answer", () => { diff --git a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_multiple_day_month_year_date.spec.js b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_multiple_day_month_year_date.spec.js index 036c53daa5..349fe155fe 100644 --- a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_multiple_day_month_year_date.spec.js +++ b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_multiple_day_month_year_date.spec.js @@ -5,8 +5,8 @@ import { click } from "../../../../helpers"; describe("Component: Mutually Exclusive Day Month Year Date With Multiple Radio Override", () => { beforeEach(async () => { await browser.openQuestionnaire("test_mutually_exclusive_multiple.json"); - await browser.pause(100); - await browser.url("/questionnaire/mutually-exclusive-date"); + await browser.pause(1000); + await browser.url(DatePage.url()); }); describe("Given the user has entered a value for the non-exclusive month year date answer", () => { beforeEach(async () => { diff --git a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_multiple_textfield.spec.js b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_multiple_textfield.spec.js index 0ea9f981c9..0e779d8a4e 100644 --- a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_multiple_textfield.spec.js +++ b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_multiple_textfield.spec.js @@ -5,8 +5,8 @@ import { click } from "../../../../helpers"; describe("Component: Mutually Exclusive Textfield With Multiple Radio Override", () => { beforeEach(async () => { await browser.openQuestionnaire("test_mutually_exclusive_multiple.json"); - await browser.pause(100); - await browser.url("/questionnaire/mutually-exclusive-textfield"); + await browser.pause(1000); + await browser.url(TextFieldPage.url()); }); describe("Given the user has entered a value for the non-exclusive textfield answer", () => { diff --git a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_number.spec.js b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_number.spec.js index a0295cb499..8cb427dff2 100644 --- a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_number.spec.js +++ b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_number.spec.js @@ -5,8 +5,8 @@ import { click } from "../../../../helpers"; describe("Component: Mutually Exclusive Number With Single Checkbox Override", () => { beforeEach(async () => { await browser.openQuestionnaire("test_mutually_exclusive.json"); - await browser.pause(100); - await browser.url("/questionnaire/mutually-exclusive-number"); + await browser.pause(1000); + await browser.url(NumberPage.url()); }); describe("Given the user has entered a value for the non-exclusive number answer", () => { diff --git a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_percentage.spec.js b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_percentage.spec.js index c12e9413a9..27d4734fb1 100644 --- a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_percentage.spec.js +++ b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_percentage.spec.js @@ -5,8 +5,8 @@ import { click } from "../../../../helpers"; describe("Component: Mutually Exclusive Percentage With Single Checkbox Override", () => { beforeEach(async () => { await browser.openQuestionnaire("test_mutually_exclusive.json"); - await browser.pause(100); - await browser.url("/questionnaire/mutually-exclusive-percentage"); + await browser.pause(1000); + await browser.url(PercentagePage.url()); }); describe("Given the user has entered a value for the non-exclusive percentage answer", () => { diff --git a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_textarea.spec.js b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_textarea.spec.js index 08cb99c00c..b4c2e59608 100644 --- a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_textarea.spec.js +++ b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_textarea.spec.js @@ -5,8 +5,8 @@ import { click } from "../../../../helpers"; describe("Component: Mutually Exclusive TextArea With Single Checkbox Override", () => { beforeEach(async () => { await browser.openQuestionnaire("test_mutually_exclusive.json"); - await browser.pause(100); - await browser.url("/questionnaire/mutually-exclusive-textarea"); + await browser.pause(1000); + await browser.url(TextFieldPage.url()); }); describe("Given the user has not clicked the mutually exclusive checkbox answer", () => { diff --git a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_textfield.spec.js b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_textfield.spec.js index cf7c1a44ed..8143023fda 100644 --- a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_textfield.spec.js +++ b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_textfield.spec.js @@ -5,8 +5,8 @@ import { click } from "../../../../helpers"; describe("Component: Mutually Exclusive Textfield With Single Checkbox Override", () => { beforeEach(async () => { await browser.openQuestionnaire("test_mutually_exclusive.json"); - await browser.pause(100); - await browser.url("/questionnaire/mutually-exclusive-textfield"); + await browser.pause(1000); + await browser.url(TextFieldPage.url()); }); describe("Given the user has entered a value for the non-exclusive textfield answer", () => { diff --git a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_unit.spec.js b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_unit.spec.js index b4e953a77c..eea3b7be70 100644 --- a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_unit.spec.js +++ b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_unit.spec.js @@ -5,8 +5,8 @@ import { click } from "../../../../helpers"; describe("Component: Mutually Exclusive Unit With Single Checkbox Override", () => { beforeEach(async () => { await browser.openQuestionnaire("test_mutually_exclusive.json"); - await browser.pause(100); - await browser.url("/questionnaire/mutually-exclusive-unit"); + await browser.pause(1000); + await browser.url(UnitPage.url()); }); describe("Given the user has entered a value for the non-exclusive unit answer", () => { diff --git a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_year_date.spec.js b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_year_date.spec.js index 14a7d8f69c..fa0d89bee7 100644 --- a/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_year_date.spec.js +++ b/tests/functional/spec/components/checkbox/mutually_exclusive/mutually_exclusive_year_date.spec.js @@ -5,8 +5,8 @@ import { click } from "../../../../helpers"; describe("Component: Mutually Exclusive Year Date With Single Checkbox Override", () => { beforeEach(async () => { await browser.openQuestionnaire("test_mutually_exclusive.json"); - await browser.pause(100); - await browser.url("/questionnaire/mutually-exclusive-year-date"); + await browser.pause(1000); + await browser.url(YearDatePage.url()); }); describe("Given the user has entered a value for the non-exclusive year date answer", () => { diff --git a/tests/functional/spec/components/radio/radio.js b/tests/functional/spec/components/radio/radio.js index 01b1c08b4c..046d52c2ba 100644 --- a/tests/functional/spec/components/radio/radio.js +++ b/tests/functional/spec/components/radio/radio.js @@ -50,8 +50,8 @@ describe("Component: Radio", () => { it("When I have submitted the page without any option, Then the question text is hidden in the error message using a span element", async () => { await click(RadioMandatoryOverriddenPage.submit()); - await expect(await $(RadioMandatoryOverriddenPage.errorNumber(1)).getHTML()).toContain( - 'Select an answer to ‘What do you prefer for breakfast?’', + await expect(await $(RadioMandatoryOverriddenPage.errorNumber(1)).getHTML({ includeSelectorTag: false })).toContain( + 'Select an answer\nto ‘What do you prefer for breakfast?’', ); }); }); diff --git a/tests/functional/spec/cookie_banner.spec.js b/tests/functional/spec/cookie_banner.spec.js index 0cbe1fd9ec..108f46b74d 100644 --- a/tests/functional/spec/cookie_banner.spec.js +++ b/tests/functional/spec/cookie_banner.spec.js @@ -16,6 +16,7 @@ describe("Given I start a survey,", () => { await expect(await $(InitialPage.acceptCookies()).isDisplayed()).toBe(true); }); it("When I delete all cookies from the browser and refresh the page, Then the cookie banner shouldn‘t be displayed", async () => { + await expect(await $(InitialPage.acceptCookies()).isDisplayed()).toBe(true); await browser.deleteAllCookies(); await browser.refresh(); await expect(await $(InitialPage.acceptCookies()).isDisplayed()).toBe(false); diff --git a/tests/functional/spec/features/supplementary_data/supplementary_data.spec.js b/tests/functional/spec/features/supplementary_data/supplementary_data.spec.js index 2bc821d5cd..9bdbe52a75 100644 --- a/tests/functional/spec/features/supplementary_data/supplementary_data.spec.js +++ b/tests/functional/spec/features/supplementary_data/supplementary_data.spec.js @@ -45,8 +45,10 @@ describe("Using supplementary data", () => { sdsDatasetId: "203b2f9d-c500-8175-98db-86ffcfdccfa3", responseId, }); + await browser.pause(20000); }); it("Given I launch a survey using supplementary data, When I am outside a repeating section, Then I am able to see the list of items relating to a given supplementary data list item on the page", async () => { + await browser.url(LoadedSuccessfullyBlockPage.url()); await expect(await $("#main-content #guidance-1").getText()).toContain("The surnames of the employees are: Potter, Kent."); await expect(await $$("#main-content li")[0].getText()).toBe("Articles and equipment for sports or outdoor games"); await expect(await $$("#main-content li")[1].getText()).toBe("Kitchen Equipment"); diff --git a/tests/functional/spec/introduction.spec.js b/tests/functional/spec/introduction.spec.js index b00bef77bd..2e5dccf26b 100644 --- a/tests/functional/spec/introduction.spec.js +++ b/tests/functional/spec/introduction.spec.js @@ -7,7 +7,6 @@ describe("Introduction page", () => { }); it("Given I start a survey, When I view the introduction page, Then I should be able to see introduction information", async () => { - await browser.openQuestionnaire(introductionSchema); await expect(await $(IntroductionPage.useOfData()).getText()).toContain("How we use your data"); await expect(await $(IntroductionPage.useOfInformation()).getText()).toContain( "Data should relate to all sites in England, Scotland and Wales unless otherwise stated.", @@ -19,13 +18,11 @@ describe("Introduction page", () => { ); }); it("Given I start a survey, When preview content is set on the introduction page, Then the content headings should be displayed at the correct level", async () => { - await browser.openQuestionnaire(introductionSchema); const introQuestionH3Selector = `${IntroductionPage.introQuestion()} h3`; const h3Exists = await $(introQuestionH3Selector).isExisting(); await expect(h3Exists).toBe(true); }); it("Given I start a survey with introduction guidance set, When I view the introduction page, Then I should be able to see introduction guidance", async () => { - await browser.openQuestionnaire(introductionSchema); await expect(await $(IntroductionPage.guidancePanel(1)).isDisplayed()).toBe(true); await expect(await $(IntroductionPage.guidancePanel(1)).getText()).toContain("Coronavirus (COVID-19) guidance"); await expect(await $(IntroductionPage.guidancePanel(1)).getText()).toContain( diff --git a/tests/functional/spec/journeys/hub_and_spoke/hub_and_spoke.spec.js b/tests/functional/spec/journeys/hub_and_spoke/hub_and_spoke.spec.js index 9b5d81f165..f73c1ce8f0 100644 --- a/tests/functional/spec/journeys/hub_and_spoke/hub_and_spoke.spec.js +++ b/tests/functional/spec/journeys/hub_and_spoke/hub_and_spoke.spec.js @@ -17,12 +17,6 @@ import PrimaryPersonListCollectorAddPage from "../../../generated_pages/hub_sect import ListCollectorPage from "../../../generated_pages/hub_section_required_with_repeat/list-collector.page"; import ListCollectorAddPage from "../../../generated_pages/hub_section_required_with_repeat/list-collector-add.page"; import RepeatingSummaryPage from "../../../generated_pages/hub_section_required_with_repeat/personal-details-section-summary.page"; -import { getRandomString } from "../../../jwt_helper"; -import LoadedSuccessfullyBlockPage from "../../../generated_pages/hub_section_required_with_repeat_supplementary/loaded-successfully-block.page"; -import IntroductionBlockPage from "../../../generated_pages/hub_section_required_with_repeat_supplementary/introduction-block.page"; -import ListCollectorEmployeesPage from "../../../generated_pages/hub_section_required_with_repeat_supplementary/list-collector-employees.page.js"; -import LengthOfEmploymentPage from "../../../generated_pages/hub_section_required_with_repeat_supplementary/length-of-employment.page.js"; -import Section3Page from "../../../generated_pages/hub_section_required_with_repeat_supplementary/section-3-summary.page.js"; describe("Feature: Hub and Spoke", () => { const hubAndSpokeSchema = "test_hub_and_spoke.json"; @@ -59,6 +53,7 @@ describe("Feature: Hub and Spoke", () => { it("When the user click the 'Save and sign out' button then they should be redirected to the correct log out url", async () => { await $(HubPage.saveSignOut()).click(); await verifyUrlContains("/signed-out"); + await browser.pause(10000); // Pause for 10 seconds }); it("When a user views the Hub, Then the page title should be Choose another section to complete", async () => { @@ -301,53 +296,6 @@ describe("Feature: Hub and Spoke", () => { }); }); - describe("Given a user opens a schema with hub required sections based on a repeating section using supplementary data", () => { - beforeEach("Load survey", async () => { - const responseId = getRandomString(16); - - await browser.openQuestionnaire("test_hub_section_required_with_repeat_supplementary.json.json", { - version: "v2", - sdsDatasetId: "203b2f9d-c500-8175-98db-86ffcfdccfa3", - responseId, - }); - }); - - it("When all the repeating sections are complete, Then the hub should be displayed", async () => { - await click(LoadedSuccessfullyBlockPage.submit()); - await click(IntroductionBlockPage.submit()); - - // Complete the repeating sections using supplementary data - await click(ListCollectorEmployeesPage.submit()); - await $(LengthOfEmploymentPage.day()).setValue(1); - await $(LengthOfEmploymentPage.month()).setValue(1); - await $(LengthOfEmploymentPage.year()).setValue(1930); - await click(LengthOfEmploymentPage.submit()); - await click(Section3Page.submit()); - await $(LengthOfEmploymentPage.day()).setValue(1); - await $(LengthOfEmploymentPage.month()).setValue(1); - await $(LengthOfEmploymentPage.year()).setValue(1930); - await click(LengthOfEmploymentPage.submit()); - await click(Section3Page.submit()); - await verifyUrlContains(HubPage.url()); - }); - - it("When the repeating sections are incomplete. Then the hub should not be displayed", async () => { - await click(LoadedSuccessfullyBlockPage.submit()); - await click(IntroductionBlockPage.submit()); - - // Don't complete the repeating sections that use supplementary data - await click(ListCollectorEmployeesPage.submit()); - await $(LengthOfEmploymentPage.day()).setValue(1); - await $(LengthOfEmploymentPage.month()).setValue(1); - await $(LengthOfEmploymentPage.year()).setValue(1930); - await click(LengthOfEmploymentPage.submit()); - await click(Section3Page.submit()); - - await browser.url(HubPage.url()); - await verifyUrlContains("length-of-employment"); - }); - }); - describe("Given a section is complete and the user has been returned to a section summary by clicking the 'View answers' link ", () => { beforeEach("Complete section", async () => { await browser.openQuestionnaire(hubAndSpokeSchema); diff --git a/tests/functional/spec/journeys/hub_and_spoke/hub_and_spoke_supplementary_data.spec.js b/tests/functional/spec/journeys/hub_and_spoke/hub_and_spoke_supplementary_data.spec.js new file mode 100644 index 0000000000..adb3d0ad1b --- /dev/null +++ b/tests/functional/spec/journeys/hub_and_spoke/hub_and_spoke_supplementary_data.spec.js @@ -0,0 +1,97 @@ +import DoesAnyoneLiveHere from "../../../generated_pages/hub_and_spoke/does-anyone-live-here.page.js"; +import HouseholdSummary from "../../../generated_pages/hub_and_spoke/household-section-summary.page.js"; +import HowManyPeopleLiveHere from "../../../generated_pages/hub_and_spoke/how-many-people-live-here.page.js"; +import HubPage from "../../../base_pages/hub.page.js"; +import { click, verifyUrlContains } from "../../../helpers"; +import { getRandomString } from "../../../jwt_helper"; +import LoadedSuccessfullyBlockPage from "../../../generated_pages/hub_section_required_with_repeat_supplementary/loaded-successfully-block.page"; +import IntroductionBlockPage from "../../../generated_pages/hub_section_required_with_repeat_supplementary/introduction-block.page"; +import ListCollectorEmployeesPage from "../../../generated_pages/hub_section_required_with_repeat_supplementary/list-collector-employees.page.js"; +import LengthOfEmploymentPage from "../../../generated_pages/hub_section_required_with_repeat_supplementary/length-of-employment.page.js"; +import Section3Page from "../../../generated_pages/hub_section_required_with_repeat_supplementary/section-3-summary.page.js"; + +describe("Feature: Hub and Spoke With Supplementary Data", () => { + const hubAndSpokeSchema = "test_hub_and_spoke.json"; + + describe("Given a user opens a schema with hub required sections based on a repeating section using supplementary data", () => { + beforeEach("Load survey", async () => { + const responseId = getRandomString(16); + + await browser.openQuestionnaire("test_hub_section_required_with_repeat_supplementary.json", { + version: "v2", + sdsDatasetId: "203b2f9d-c500-8175-98db-86ffcfdccfa3", + responseId, + }); + await browser.pause(20000); + }); + + it("When all the repeating sections are complete, Then the hub should be displayed", async () => { + await browser.url(LoadedSuccessfullyBlockPage.url()); + await click(LoadedSuccessfullyBlockPage.submit()); + await click(IntroductionBlockPage.submit()); + + // Complete the repeating sections using supplementary data + await click(ListCollectorEmployeesPage.submit()); + await $(LengthOfEmploymentPage.day()).setValue(1); + await $(LengthOfEmploymentPage.month()).setValue(1); + await $(LengthOfEmploymentPage.year()).setValue(1930); + await click(LengthOfEmploymentPage.submit()); + await click(Section3Page.submit()); + await $(LengthOfEmploymentPage.day()).setValue(1); + await $(LengthOfEmploymentPage.month()).setValue(1); + await $(LengthOfEmploymentPage.year()).setValue(1930); + await click(LengthOfEmploymentPage.submit()); + await click(Section3Page.submit()); + await verifyUrlContains(HubPage.url()); + }); + + it("When the repeating sections are incomplete. Then the hub should not be displayed", async () => { + await click(LoadedSuccessfullyBlockPage.submit()); + await click(IntroductionBlockPage.submit()); + + // Don't complete the repeating sections that use supplementary data + await click(ListCollectorEmployeesPage.submit()); + await $(LengthOfEmploymentPage.day()).setValue(1); + await $(LengthOfEmploymentPage.month()).setValue(1); + await $(LengthOfEmploymentPage.year()).setValue(1930); + await click(LengthOfEmploymentPage.submit()); + await click(Section3Page.submit()); + + await browser.url(HubPage.url()); + await verifyUrlContains("length-of-employment"); + }); + }); + + describe("Given a section is complete and the user has been returned to a section summary by clicking the 'View answers' link ", () => { + beforeEach("Complete section", async () => { + await browser.openQuestionnaire(hubAndSpokeSchema); + await $(HubPage.summaryRowLink("household-section")).click(); + await $(DoesAnyoneLiveHere.no()).click(); + await click(DoesAnyoneLiveHere.submit()); + await click(HouseholdSummary.submit()); + await expect(await $(HubPage.summaryRowLink("household-section")).getHTML()).toContain("View answers: Household residents"); + }); + + it("When there are no changes, continue returns directly to the hub", async () => { + await $(HubPage.summaryRowLink("household-section")).click(); + await click(HouseholdSummary.submit()); + await verifyUrlPathIs(HubPage.url()); + await expect(await $(HubPage.summaryRowLink("household-section")).getHTML()).toContain("View answers: Household residents"); + }); + + it("When there are changes, which would set the section to in_progress it routes accordingly", async () => { + await $(HubPage.summaryRowLink("household-section")).click(); + await $(HouseholdSummary.doesAnyoneLiveHereAnswerEdit()).click(); + await $(DoesAnyoneLiveHere.yes()).click(); + await click(DoesAnyoneLiveHere.submit()); + await click(HouseholdSummary.submit()); + await verifyUrlContains(HowManyPeopleLiveHere.url()); + }); + }); +}); + +async function verifyUrlPathIs(expectedUrlPath) { + // Hub and Spoke URLs are "/questionnaire/", so we need strict checking of the URL path + const actualUrlPath = new URL(await browser.getUrl()).pathname; + await expect(actualUrlPath).toBe(expectedUrlPath); +} diff --git a/tests/functional/spec/list_collector/list_collector_primary_person.spec.js b/tests/functional/spec/list_collector/list_collector_primary_person.spec.js index c71a79ccf7..822635cb71 100644 --- a/tests/functional/spec/list_collector/list_collector_primary_person.spec.js +++ b/tests/functional/spec/list_collector/list_collector_primary_person.spec.js @@ -10,22 +10,6 @@ import AnyoneUsuallyLiveAtPage from "../../generated_pages/list_collector_primar import { click, verifyUrlContains } from "../../helpers"; describe("Primary Person List Collector Survey", () => { - describe("Given the user starts on the 'do you live here' question", () => { - before("Load the survey", async () => { - await browser.openQuestionnaire("test_list_collector_primary_person.json"); - }); - - it.skip("When the user says they do not live there, and changes their answer to yes, then the user can't navigate to the list collector", async () => { - await $(PrimaryPersonListCollectorPage.noLabel()).click(); - await click(PrimaryPersonListCollectorPage.submit()); - await $(PrimaryPersonListCollectorAddPage.previous()).click(); - await $(PrimaryPersonListCollectorPage.yesLabel()).click(); - await click(PrimaryPersonListCollectorPage.submit()); - await browser.url("questionnaire/list-collector"); - await expect(await $(PrimaryPersonListCollectorPage.questionText()).getText()).toBe("Do you live here"); - }); - }); - describe("Given the user starts on the 'do you live here' question", () => { before("Load the survey", async () => { await browser.openQuestionnaire("test_list_collector_primary_person.json"); diff --git a/tests/functional/spec/question_description.spec.js b/tests/functional/spec/question_description.spec.js index dc901cf3f7..f8998f5084 100644 --- a/tests/functional/spec/question_description.spec.js +++ b/tests/functional/spec/question_description.spec.js @@ -9,7 +9,8 @@ import { click, verifyUrlContains } from "../helpers"; describe("Question description", () => { it("Given a question description has been set in the schema as an array, When it is rendered, Then it is displayed correctly as multiple paragraph attributes", async () => { await browser.openQuestionnaire("test_question_description.json"); - await expect(await $(NameBlockPage.questionTitle()).getHTML()).toContain("

Answer the question

Go on

"); + await verifyUrlContains(NameBlockPage.pageName); + await expect(await $(NameBlockPage.questionTitle()).getText()).toContain("Answer the question\nGo on"); }); }); diff --git a/tests/functional/spec/theme_dbt.spec.js b/tests/functional/spec/theme_dbt.spec.js index 3dea14156a..caee6402b7 100644 --- a/tests/functional/spec/theme_dbt.spec.js +++ b/tests/functional/spec/theme_dbt.spec.js @@ -9,7 +9,7 @@ describe("Theme DBT", () => { it("When I navigate to the radio page, Then I should see DBT theme content", async () => { await verifyUrlContains(RadioPage.pageName); - await expect(await $("#dbt-logo-alt").getHTML()).toContain("Department for Business and Trade"); + await expect(await $("#dbt-logo-alt").getText()).toContain("Department for Business and Trade"); }); }); }); diff --git a/tests/functional/spec/theme_dbt_dsit.spec.js b/tests/functional/spec/theme_dbt_dsit.spec.js index b52afe2d35..db3ecfe408 100644 --- a/tests/functional/spec/theme_dbt_dsit.spec.js +++ b/tests/functional/spec/theme_dbt_dsit.spec.js @@ -9,8 +9,8 @@ describe("Theme DBT-DSIT", () => { it("When I navigate to the radio page, Then I should see DBT-DSIT theme content", async () => { await verifyUrlContains(RadioPage.pageName); - await expect(await $("#dbt-logo-alt").getHTML()).toContain("Department for Business and Trade logo"); - await expect(await $("#dsit-logo-alt").getHTML()).toContain("Department for Science, Innovation and Technology logo"); + await expect(await $("#dbt-logo-alt").getText()).toContain("Department for Business and Trade logo"); + await expect(await $("#dsit-logo-alt").getText()).toContain("Department for Science, Innovation and Technology logo"); }); }); }); diff --git a/tests/functional/spec/theme_dbt_dsit_ni.spec.js b/tests/functional/spec/theme_dbt_dsit_ni.spec.js index 23e3e801f1..e38abe06a3 100644 --- a/tests/functional/spec/theme_dbt_dsit_ni.spec.js +++ b/tests/functional/spec/theme_dbt_dsit_ni.spec.js @@ -9,9 +9,9 @@ describe("Theme DBT-DSIT-NI", () => { it("When I navigate to the radio page, Then I should see DBT-DSIT-NI theme content", async () => { await verifyUrlContains(RadioPage.pageName); - await expect(await $("#dbt-logo-alt").getHTML()).toContain("Department for Business and Trade logo"); - await expect(await $("#dsit-logo-alt").getHTML()).toContain("Department for Science, Innovation and Technology logo"); - await expect(await $("#finance-ni-logo-alt").getHTML()).toContain("Northern Ireland Department of Finance logo"); + await expect(await $("#dbt-logo-alt").getText()).toContain("Department for Business and Trade logo"); + await expect(await $("#dsit-logo-alt").getText()).toContain("Department for Science, Innovation and Technology logo"); + await expect(await $("#finance-ni-logo-alt").getText()).toContain("Northern Ireland Department of Finance logo"); }); }); }); diff --git a/tests/functional/spec/theme_dbt_ni.spec.js b/tests/functional/spec/theme_dbt_ni.spec.js index 83915b7cd8..558ae8890b 100644 --- a/tests/functional/spec/theme_dbt_ni.spec.js +++ b/tests/functional/spec/theme_dbt_ni.spec.js @@ -9,8 +9,8 @@ describe("Theme DBT-NI", () => { it("When I navigate to the radio page, Then I should see DBT-NI theme content", async () => { await verifyUrlContains(RadioPage.pageName); - await expect(await $("#dbt-logo-alt").getHTML()).toContain("Department for Business and Trade"); - await expect(await $("#finance-ni-logo-alt").getHTML()).toContain("Northern Ireland Department of Finance logo"); + await expect(await $("#dbt-logo-alt").getText()).toContain("Department for Business and Trade"); + await expect(await $("#finance-ni-logo-alt").getText()).toContain("Northern Ireland Department of Finance logo"); }); }); }); diff --git a/tests/functional/spec/theme_desnz.spec.js b/tests/functional/spec/theme_desnz.spec.js index 744283562f..6e4989a051 100644 --- a/tests/functional/spec/theme_desnz.spec.js +++ b/tests/functional/spec/theme_desnz.spec.js @@ -9,7 +9,7 @@ describe("Theme DESNZ", () => { it("When I navigate to the radio page, Then I should see DESNZ theme content", async () => { await verifyUrlContains(RadioPage.pageName); - await expect(await $("#desnz-logo-alt").getHTML()).toContain("Department for Energy Security and Net Zero"); + await expect(await $("#desnz-logo-alt").getText()).toContain("Department for Energy Security and Net Zero"); }); }); }); diff --git a/tests/functional/spec/theme_desnz_ni.spec.js b/tests/functional/spec/theme_desnz_ni.spec.js index 0f9bf748a8..2379b807ca 100644 --- a/tests/functional/spec/theme_desnz_ni.spec.js +++ b/tests/functional/spec/theme_desnz_ni.spec.js @@ -9,8 +9,8 @@ describe("Theme DESNZ-NI", () => { it("When I navigate to the radio page, Then I should see DESNZ-NI theme content", async () => { await verifyUrlContains(RadioPage.pageName); - await expect(await $("#desnz-logo-alt").getHTML()).toContain("Department for Energy Security and Net Zero"); - await expect(await $("#finance-ni-logo-alt").getHTML()).toContain("Northern Ireland Department of Finance logo"); + await expect(await $("#desnz-logo-alt").getText()).toContain("Department for Energy Security and Net Zero"); + await expect(await $("#finance-ni-logo-alt").getText()).toContain("Northern Ireland Department of Finance logo"); }); }); }); diff --git a/tests/functional/spec/theme_nhse.spec.js b/tests/functional/spec/theme_nhse.spec.js index 760b0940c5..d9f6be8416 100644 --- a/tests/functional/spec/theme_nhse.spec.js +++ b/tests/functional/spec/theme_nhse.spec.js @@ -10,8 +10,8 @@ describe("Theme NHSE", () => { it("When I navigate to the radio page, Then I should see NHSE theme content", async () => { await verifyUrlContains(RadioPage.pageName); - await expect(await $("#ons-logo-stacked-en-alt").getHTML()).toContain("Office for National Statistics"); - await expect(await $("#nhs-logo-alt").getHTML()).toContain("National Heath Service"); + await expect(await $("#ons-logo-stacked-en-alt").getText()).toContain("Office for National Statistics"); + await expect(await $("#nhs-logo-alt").getText()).toContain("National Heath Service"); }); }); }); diff --git a/tests/functional/spec/theme_northernireland.spec.js b/tests/functional/spec/theme_northernireland.spec.js index f3eef0e3f4..c6fad5e326 100644 --- a/tests/functional/spec/theme_northernireland.spec.js +++ b/tests/functional/spec/theme_northernireland.spec.js @@ -9,7 +9,7 @@ describe("Theme Northern Ireland", () => { it("When I navigate to the radio page, Then I should see Northern Ireland theme content", async () => { await verifyUrlContains(RadioPage.pageName); - await expect(await $("#finance-ni-logo-alt").getHTML()).toContain("Northern Ireland Department of Finance logo"); + await expect(await $("#finance-ni-logo-alt").getText()).toContain("Northern Ireland Department of Finance logo"); }); }); }); diff --git a/tests/functional/spec/theme_orr.spec.js b/tests/functional/spec/theme_orr.spec.js index ae42be571a..9d8deaf415 100644 --- a/tests/functional/spec/theme_orr.spec.js +++ b/tests/functional/spec/theme_orr.spec.js @@ -9,7 +9,7 @@ describe("Theme Rail and Road", () => { it("When I navigate to the radio page, Then I should see Rail and Road theme content", async () => { await verifyUrlContains(RadioPage.pageName); - await expect(await $("#orr-logo-mobile-alt").getHTML()).toContain("Office of Rail and Road logo"); + await expect(await $("#orr-logo-alt").getText()).toContain("Office of Rail and Road logo"); }); }); }); diff --git a/tests/functional/spec/theme_ukhsa_ons.spec.js b/tests/functional/spec/theme_ukhsa_ons.spec.js index 116b7ea828..45e581d32b 100644 --- a/tests/functional/spec/theme_ukhsa_ons.spec.js +++ b/tests/functional/spec/theme_ukhsa_ons.spec.js @@ -10,8 +10,8 @@ describe("Theme UKHSA-ONS", () => { it("When I navigate to the radio page, Then I should see UKHSA-ONS theme content", async () => { await verifyUrlContains(RadioPage.pageName); - await expect(await $("#ons-logo-stacked-en-alt").getHTML()).toContain("Office for National Statistics"); - await expect(await $("#ukhsa-logo-alt").getHTML()).toContain("UK Health Security Agency"); + await expect(await $("#ons-logo-stacked-en-alt").getText()).toContain("Office for National Statistics"); + await expect(await $("#ukhsa-logo-alt").getText()).toContain("UK Health Security Agency"); }); }); }); diff --git a/tests/functional/spec/timeout/timeout_modal.js b/tests/functional/spec/timeout/timeout_modal.js index 56275134b1..1fe05b611f 100644 --- a/tests/functional/spec/timeout/timeout_modal.js +++ b/tests/functional/spec/timeout/timeout_modal.js @@ -33,7 +33,7 @@ class TestCase { testCaseExtendedNewWindow(page) { it("When the timeout modal is displayed, but I open a new window and then focus back on the timeout modal window, Then my session will be extended", async () => { await this.checkTimeoutModal(); - await browser.newWindow(""); + await browser.newWindow("https://example.com"); await browser.switchWindow(await page.pageName); await browser.refresh(); await browser.pause(65000); // Waiting 65 seconds to sanity check that it hasn’t expired From fbc91e201b1bf305922cbe24fa7758c45bd88aaf Mon Sep 17 00:00:00 2001 From: Rhys Berrow Date: Fri, 21 Feb 2025 08:34:45 +0000 Subject: [PATCH 2/8] Update dependabot config --- .github/dependabot.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml index 884f15a9ce..fe81f85bea 100644 --- a/.github/dependabot.yaml +++ b/.github/dependabot.yaml @@ -44,10 +44,6 @@ updates: - dependency-name: "eslint*" update-types: [ "version-update:semver-major" ] - # temporarily pinned to minor/patch only - wdio v9 causes getHTML() to return strings with indentation & newlines, causing assertion errors - needs investigation - - dependency-name: "@wdio/local-runner" - update-types: [ "version-update:semver-major" ] - - package-ecosystem: "pip" directory: "/" schedule: From fb197a1802542ceea724e9918e61d452f0f230d5 Mon Sep 17 00:00:00 2001 From: Rhys Berrow Date: Fri, 21 Feb 2025 09:08:51 +0000 Subject: [PATCH 3/8] Test flakiness fix --- .../hub_and_spoke_supplementary_data.spec.js | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/tests/functional/spec/journeys/hub_and_spoke/hub_and_spoke_supplementary_data.spec.js b/tests/functional/spec/journeys/hub_and_spoke/hub_and_spoke_supplementary_data.spec.js index adb3d0ad1b..15b215a1ca 100644 --- a/tests/functional/spec/journeys/hub_and_spoke/hub_and_spoke_supplementary_data.spec.js +++ b/tests/functional/spec/journeys/hub_and_spoke/hub_and_spoke_supplementary_data.spec.js @@ -22,27 +22,26 @@ describe("Feature: Hub and Spoke With Supplementary Data", () => { sdsDatasetId: "203b2f9d-c500-8175-98db-86ffcfdccfa3", responseId, }); - await browser.pause(20000); }); - it("When all the repeating sections are complete, Then the hub should be displayed", async () => { - await browser.url(LoadedSuccessfullyBlockPage.url()); - await click(LoadedSuccessfullyBlockPage.submit()); - await click(IntroductionBlockPage.submit()); - - // Complete the repeating sections using supplementary data - await click(ListCollectorEmployeesPage.submit()); - await $(LengthOfEmploymentPage.day()).setValue(1); - await $(LengthOfEmploymentPage.month()).setValue(1); - await $(LengthOfEmploymentPage.year()).setValue(1930); - await click(LengthOfEmploymentPage.submit()); - await click(Section3Page.submit()); - await $(LengthOfEmploymentPage.day()).setValue(1); - await $(LengthOfEmploymentPage.month()).setValue(1); - await $(LengthOfEmploymentPage.year()).setValue(1930); - await click(LengthOfEmploymentPage.submit()); - await click(Section3Page.submit()); - await verifyUrlContains(HubPage.url()); + // Don't use async/await here to resolve issues with the flakiness of this test + it("When all the repeating sections are complete, Then the hub should be displayed", () => { + return browser.pause(1000) + .then(() => browser.url(LoadedSuccessfullyBlockPage.url())) + .then(() => click(LoadedSuccessfullyBlockPage.submit())) + .then(() => click(IntroductionBlockPage.submit())) + .then(() => click(ListCollectorEmployeesPage.submit())) + .then(() => $(LengthOfEmploymentPage.day()).setValue(1)) + .then(() => $(LengthOfEmploymentPage.month()).setValue(1)) + .then(() => $(LengthOfEmploymentPage.year()).setValue(1930)) + .then(() => click(LengthOfEmploymentPage.submit())) + .then(() => click(Section3Page.submit())) + .then(() => $(LengthOfEmploymentPage.day()).setValue(1)) + .then(() => $(LengthOfEmploymentPage.month()).setValue(1)) + .then(() => $(LengthOfEmploymentPage.year()).setValue(1930)) + .then(() => click(LengthOfEmploymentPage.submit())) + .then(() => click(Section3Page.submit())) + .then(() => verifyUrlContains(HubPage.url())); }); it("When the repeating sections are incomplete. Then the hub should not be displayed", async () => { From 330fd777fd218293aabb23913ef5c07845bdcdcb Mon Sep 17 00:00:00 2001 From: Rhys Berrow Date: Fri, 21 Feb 2025 09:21:11 +0000 Subject: [PATCH 4/8] Revert flaky test fix --- .../hub_and_spoke_supplementary_data.spec.js | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/tests/functional/spec/journeys/hub_and_spoke/hub_and_spoke_supplementary_data.spec.js b/tests/functional/spec/journeys/hub_and_spoke/hub_and_spoke_supplementary_data.spec.js index 15b215a1ca..91c4ffc38a 100644 --- a/tests/functional/spec/journeys/hub_and_spoke/hub_and_spoke_supplementary_data.spec.js +++ b/tests/functional/spec/journeys/hub_and_spoke/hub_and_spoke_supplementary_data.spec.js @@ -22,26 +22,26 @@ describe("Feature: Hub and Spoke With Supplementary Data", () => { sdsDatasetId: "203b2f9d-c500-8175-98db-86ffcfdccfa3", responseId, }); + await browser.pause(10000); }); - // Don't use async/await here to resolve issues with the flakiness of this test - it("When all the repeating sections are complete, Then the hub should be displayed", () => { - return browser.pause(1000) - .then(() => browser.url(LoadedSuccessfullyBlockPage.url())) - .then(() => click(LoadedSuccessfullyBlockPage.submit())) - .then(() => click(IntroductionBlockPage.submit())) - .then(() => click(ListCollectorEmployeesPage.submit())) - .then(() => $(LengthOfEmploymentPage.day()).setValue(1)) - .then(() => $(LengthOfEmploymentPage.month()).setValue(1)) - .then(() => $(LengthOfEmploymentPage.year()).setValue(1930)) - .then(() => click(LengthOfEmploymentPage.submit())) - .then(() => click(Section3Page.submit())) - .then(() => $(LengthOfEmploymentPage.day()).setValue(1)) - .then(() => $(LengthOfEmploymentPage.month()).setValue(1)) - .then(() => $(LengthOfEmploymentPage.year()).setValue(1930)) - .then(() => click(LengthOfEmploymentPage.submit())) - .then(() => click(Section3Page.submit())) - .then(() => verifyUrlContains(HubPage.url())); + it("When all the repeating sections are complete, Then the hub should be displayed", async () => { + await click(LoadedSuccessfullyBlockPage.submit()); + await click(IntroductionBlockPage.submit()); + + // Complete the repeating sections using supplementary data + await click(ListCollectorEmployeesPage.submit()); + await $(LengthOfEmploymentPage.day()).setValue(1); + await $(LengthOfEmploymentPage.month()).setValue(1); + await $(LengthOfEmploymentPage.year()).setValue(1930); + await click(LengthOfEmploymentPage.submit()); + await click(Section3Page.submit()); + await $(LengthOfEmploymentPage.day()).setValue(1); + await $(LengthOfEmploymentPage.month()).setValue(1); + await $(LengthOfEmploymentPage.year()).setValue(1930); + await click(LengthOfEmploymentPage.submit()); + await click(Section3Page.submit()); + await verifyUrlContains(HubPage.url()); }); it("When the repeating sections are incomplete. Then the hub should not be displayed", async () => { From c96522f2cd1bacd5dcac76d8a07978d020947ece Mon Sep 17 00:00:00 2001 From: Rhys Berrow Date: Fri, 21 Feb 2025 11:58:56 +0000 Subject: [PATCH 5/8] Test bumping wait command --- .../spec/features/supplementary_data/supplementary_data.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/functional/spec/features/supplementary_data/supplementary_data.spec.js b/tests/functional/spec/features/supplementary_data/supplementary_data.spec.js index 9bdbe52a75..f6b1e264a5 100644 --- a/tests/functional/spec/features/supplementary_data/supplementary_data.spec.js +++ b/tests/functional/spec/features/supplementary_data/supplementary_data.spec.js @@ -45,7 +45,7 @@ describe("Using supplementary data", () => { sdsDatasetId: "203b2f9d-c500-8175-98db-86ffcfdccfa3", responseId, }); - await browser.pause(20000); + await browser.pause(30000); }); it("Given I launch a survey using supplementary data, When I am outside a repeating section, Then I am able to see the list of items relating to a given supplementary data list item on the page", async () => { await browser.url(LoadedSuccessfullyBlockPage.url()); From 09b48daed3cbe9b4b87e0e47e09ec3f2838e61fe Mon Sep 17 00:00:00 2001 From: Rhys Berrow Date: Mon, 24 Feb 2025 08:12:08 +0000 Subject: [PATCH 6/8] Revert bumping wait time --- .../spec/features/supplementary_data/supplementary_data.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/functional/spec/features/supplementary_data/supplementary_data.spec.js b/tests/functional/spec/features/supplementary_data/supplementary_data.spec.js index f6b1e264a5..91d596026f 100644 --- a/tests/functional/spec/features/supplementary_data/supplementary_data.spec.js +++ b/tests/functional/spec/features/supplementary_data/supplementary_data.spec.js @@ -45,7 +45,7 @@ describe("Using supplementary data", () => { sdsDatasetId: "203b2f9d-c500-8175-98db-86ffcfdccfa3", responseId, }); - await browser.pause(30000); + await browser.pause(10000); }); it("Given I launch a survey using supplementary data, When I am outside a repeating section, Then I am able to see the list of items relating to a given supplementary data list item on the page", async () => { await browser.url(LoadedSuccessfullyBlockPage.url()); From 464f453910c4e4bc7d9ed039927bc575173ee523 Mon Sep 17 00:00:00 2001 From: Rhys Berrow Date: Fri, 28 Feb 2025 12:25:49 +0000 Subject: [PATCH 7/8] Reimplement pause --- tests/functional/spec/hub_and_spoke/hub_and_spoke.spec.js | 1 + .../spec/supplementary_data/supplementary_data.spec.js | 1 + 2 files changed, 2 insertions(+) diff --git a/tests/functional/spec/hub_and_spoke/hub_and_spoke.spec.js b/tests/functional/spec/hub_and_spoke/hub_and_spoke.spec.js index d4ca64bd64..cd329507ed 100644 --- a/tests/functional/spec/hub_and_spoke/hub_and_spoke.spec.js +++ b/tests/functional/spec/hub_and_spoke/hub_and_spoke.spec.js @@ -310,6 +310,7 @@ describe("Feature: Hub and Spoke", () => { sdsDatasetId: "203b2f9d-c500-8175-98db-86ffcfdccfa3", responseId, }); + await browser.pause(10000); }); it("When all the repeating sections are complete, Then the hub should be displayed", async () => { diff --git a/tests/functional/spec/supplementary_data/supplementary_data.spec.js b/tests/functional/spec/supplementary_data/supplementary_data.spec.js index 7b01b59db8..98dfc09628 100644 --- a/tests/functional/spec/supplementary_data/supplementary_data.spec.js +++ b/tests/functional/spec/supplementary_data/supplementary_data.spec.js @@ -45,6 +45,7 @@ describe("Using supplementary data", () => { sdsDatasetId: "203b2f9d-c500-8175-98db-86ffcfdccfa3", responseId, }); + await browser.pause(10000); }); it("Given I launch a survey using supplementary data, When I am outside a repeating section, Then I am able to see the list of items relating to a given supplementary data list item on the page", async () => { await browser.url(LoadedSuccessfullyBlockPage.url()); From 6ee95c175ab0e6c432430c5101d11049b5a3ea19 Mon Sep 17 00:00:00 2001 From: Rhys Berrow Date: Mon, 3 Mar 2025 08:13:20 +0000 Subject: [PATCH 8/8] Add pause for hub and spoke --- tests/functional/spec/hub_and_spoke/hub_and_spoke.spec.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/functional/spec/hub_and_spoke/hub_and_spoke.spec.js b/tests/functional/spec/hub_and_spoke/hub_and_spoke.spec.js index cd329507ed..442cc68510 100644 --- a/tests/functional/spec/hub_and_spoke/hub_and_spoke.spec.js +++ b/tests/functional/spec/hub_and_spoke/hub_and_spoke.spec.js @@ -30,6 +30,7 @@ describe("Feature: Hub and Spoke", () => { describe("Given I am completing the test_hub_context schema,", () => { beforeEach("load the survey", async () => { await browser.openQuestionnaire(hubAndSpokeSchema); + await browser.pause(1000); }); it("When a user first views the Hub, The Hub should be in a continue state", async () => {