This run took 98 seconds.
$ date --- stdout --- Mon May 19 06:58:51 UTC 2025 --- end --- $ git clone file:///srv/git/mediawiki-skins-Vector.git repo --depth=1 -b master --- stderr --- Cloning into 'repo'... --- stdout --- --- end --- $ git config user.name libraryupgrader --- stdout --- --- end --- $ git config user.email tools.libraryupgrader@tools.wmflabs.org --- stdout --- --- end --- $ git submodule update --init --- stdout --- --- end --- $ grr init --- stdout --- Installed commit-msg hook. --- end --- $ git show-ref refs/heads/master --- stdout --- ffc2fa956e033e252cbfc8479b409d47f3a2c784 refs/heads/master --- end --- $ /usr/bin/npm audit --json --- stdout --- { "auditReportVersion": 2, "vulnerabilities": { "@babel/helpers": { "name": "@babel/helpers", "severity": "moderate", "isDirect": false, "via": [ { "source": 1104001, "name": "@babel/helpers", "dependency": "@babel/helpers", "title": "Babel has inefficient RegExp complexity in generated code with .replace when transpiling named capturing groups", "url": "https://github.com/advisories/GHSA-968p-4wvh-cqc8", "severity": "moderate", "cwe": [ "CWE-1333" ], "cvss": { "score": 6.2, "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H" }, "range": "<7.26.10" } ], "effects": [], "range": "<7.26.10", "nodes": [ "node_modules/@babel/helpers" ], "fixAvailable": true }, "cross-spawn": { "name": "cross-spawn", "severity": "high", "isDirect": false, "via": [ { "source": 1100562, "name": "cross-spawn", "dependency": "cross-spawn", "title": "Regular Expression Denial of Service (ReDoS) in cross-spawn", "url": "https://github.com/advisories/GHSA-3xgq-45jj-v275", "severity": "high", "cwe": [ "CWE-1333" ], "cvss": { "score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H" }, "range": "<6.0.6" }, { "source": 1100563, "name": "cross-spawn", "dependency": "cross-spawn", "title": "Regular Expression Denial of Service (ReDoS) in cross-spawn", "url": "https://github.com/advisories/GHSA-3xgq-45jj-v275", "severity": "high", "cwe": [ "CWE-1333" ], "cvss": { "score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H" }, "range": ">=7.0.0 <7.0.5" } ], "effects": [ "pre-commit" ], "range": "<6.0.6 || >=7.0.0 <7.0.5", "nodes": [ "node_modules/cross-spawn", "node_modules/pre-commit/node_modules/cross-spawn" ], "fixAvailable": { "name": "pre-commit", "version": "1.0.10", "isSemVerMajor": true } }, "pre-commit": { "name": "pre-commit", "severity": "high", "isDirect": true, "via": [ "cross-spawn" ], "effects": [], "range": ">=1.1.0", "nodes": [ "node_modules/pre-commit" ], "fixAvailable": { "name": "pre-commit", "version": "1.0.10", "isSemVerMajor": true } } }, "metadata": { "vulnerabilities": { "info": 0, "low": 0, "moderate": 1, "high": 2, "critical": 0, "total": 3 }, "dependencies": { "prod": 1, "dev": 901, "optional": 2, "peer": 0, "peerOptional": 0, "total": 901 } } } --- end --- $ /usr/bin/composer install --- stderr --- No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information. Loading composer repositories with package information Updating dependencies Lock file operations: 39 installs, 0 updates, 0 removals - Locking composer/installers (v2.3.0) - Locking composer/pcre (3.3.2) - Locking composer/semver (3.4.3) - Locking composer/spdx-licenses (1.5.9) - Locking composer/xdebug-handler (3.0.5) - Locking dealerdirect/phpcodesniffer-composer-installer (v1.0.0) - Locking doctrine/deprecations (1.1.5) - Locking felixfbecker/advanced-json-rpc (v3.2.1) - Locking mediawiki/mediawiki-codesniffer (v47.0.0) - Locking mediawiki/mediawiki-phan-config (0.15.0) - Locking mediawiki/minus-x (1.1.3) - Locking mediawiki/phan-taint-check-plugin (6.1.0) - Locking microsoft/tolerant-php-parser (v0.1.2) - Locking netresearch/jsonmapper (v4.5.0) - Locking phan/phan (5.4.5) - Locking php-parallel-lint/php-console-color (v1.0.1) - Locking php-parallel-lint/php-console-highlighter (v1.0.0) - Locking php-parallel-lint/php-parallel-lint (v1.4.0) - Locking phpcsstandards/phpcsextra (1.2.1) - Locking phpcsstandards/phpcsutils (1.0.12) - Locking phpdocumentor/reflection-common (2.2.0) - Locking phpdocumentor/reflection-docblock (5.6.2) - Locking phpdocumentor/type-resolver (1.10.0) - Locking phpstan/phpdoc-parser (2.1.0) - Locking psr/container (2.0.2) - Locking psr/log (3.0.2) - Locking sabre/event (5.1.7) - Locking squizlabs/php_codesniffer (3.12.2) - Locking symfony/console (v7.2.6) - Locking symfony/deprecation-contracts (v3.5.1) - Locking symfony/polyfill-ctype (v1.32.0) - Locking symfony/polyfill-intl-grapheme (v1.32.0) - Locking symfony/polyfill-intl-normalizer (v1.32.0) - Locking symfony/polyfill-mbstring (v1.32.0) - Locking symfony/polyfill-php80 (v1.32.0) - Locking symfony/service-contracts (v3.5.1) - Locking symfony/string (v7.2.6) - Locking tysonandre/var_representation_polyfill (0.1.3) - Locking webmozart/assert (1.11.0) Writing lock file Installing dependencies from lock file (including require-dev) Package operations: 39 installs, 0 updates, 0 removals 0 [>---------------------------] 0 [->--------------------------] - Installing composer/installers (v2.3.0): Extracting archive - Installing squizlabs/php_codesniffer (3.12.2): Extracting archive - Installing dealerdirect/phpcodesniffer-composer-installer (v1.0.0): Extracting archive - Installing composer/pcre (3.3.2): Extracting archive - Installing symfony/polyfill-php80 (v1.32.0): Extracting archive - Installing phpcsstandards/phpcsutils (1.0.12): Extracting archive - Installing phpcsstandards/phpcsextra (1.2.1): Extracting archive - Installing symfony/polyfill-mbstring (v1.32.0): Extracting archive - Installing composer/spdx-licenses (1.5.9): Extracting archive - Installing composer/semver (3.4.3): Extracting archive - Installing mediawiki/mediawiki-codesniffer (v47.0.0): Extracting archive - Installing tysonandre/var_representation_polyfill (0.1.3): Extracting archive - Installing symfony/polyfill-intl-normalizer (v1.32.0): Extracting archive - Installing symfony/polyfill-intl-grapheme (v1.32.0): Extracting archive - Installing symfony/polyfill-ctype (v1.32.0): Extracting archive - Installing symfony/string (v7.2.6): Extracting archive - Installing symfony/deprecation-contracts (v3.5.1): Extracting archive - Installing psr/container (2.0.2): Extracting archive - Installing symfony/service-contracts (v3.5.1): Extracting archive - Installing symfony/console (v7.2.6): Extracting archive - Installing sabre/event (5.1.7): Extracting archive - Installing netresearch/jsonmapper (v4.5.0): Extracting archive - Installing microsoft/tolerant-php-parser (v0.1.2): Extracting archive - Installing webmozart/assert (1.11.0): Extracting archive - Installing phpstan/phpdoc-parser (2.1.0): Extracting archive - Installing phpdocumentor/reflection-common (2.2.0): Extracting archive - Installing doctrine/deprecations (1.1.5): Extracting archive - Installing phpdocumentor/type-resolver (1.10.0): Extracting archive - Installing phpdocumentor/reflection-docblock (5.6.2): Extracting archive - Installing felixfbecker/advanced-json-rpc (v3.2.1): Extracting archive - Installing psr/log (3.0.2): Extracting archive - Installing composer/xdebug-handler (3.0.5): Extracting archive - Installing phan/phan (5.4.5): Extracting archive - Installing mediawiki/phan-taint-check-plugin (6.1.0): Extracting archive - Installing mediawiki/mediawiki-phan-config (0.15.0): Extracting archive - Installing mediawiki/minus-x (1.1.3): Extracting archive - Installing php-parallel-lint/php-console-color (v1.0.1): Extracting archive - Installing php-parallel-lint/php-console-highlighter (v1.0.0): Extracting archive - Installing php-parallel-lint/php-parallel-lint (v1.4.0): Extracting archive 0/36 [>---------------------------] 0% 19/36 [==============>-------------] 52% 33/36 [=========================>--] 91% 36/36 [============================] 100% 1 package suggestions were added by new dependencies, use `composer suggest` to see details. Generating autoload files 17 packages you are using are looking for funding. Use the `composer fund` command to find out more! --- stdout --- PHP CodeSniffer Config installed_paths set to ../../mediawiki/mediawiki-codesniffer,../../phpcsstandards/phpcsextra,../../phpcsstandards/phpcsutils --- end --- Upgrading n:vue from 3.4.27 -> 3.5.13 Upgrading n:@vue/test-utils from 2.4.1 -> 2.4.6 Upgrading n:jest from 27.4.7 -> 29.7.0 Upgrading n:@vue/vue3-jest from 27.0.0 -> 29.2.6 Upgrading n:@wikimedia/codex from 1.16.0 -> 2.0.0-rc.1 Upgrading n:@wikimedia/codex-icons from 1.16.0 -> 2.0.0-rc.1 Upgrading n:ts-jest from 27.1.5 -> 29.2.5 $ /usr/bin/npm install --- stderr --- npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: Vector@undefined npm ERR! Found: @wikimedia/codex@1.16.0 npm ERR! node_modules/@wikimedia/codex npm ERR! dev @wikimedia/codex@"2.0.0-rc.1" from the root project npm ERR! npm ERR! Could not resolve dependency: npm ERR! dev @wikimedia/codex@"2.0.0-rc.1" from the root project npm ERR! npm ERR! Conflicting peer dependency: vue@3.5.13 npm ERR! node_modules/vue npm ERR! peer vue@"^3.5.13" from @wikimedia/codex@2.0.0-rc.1 npm ERR! node_modules/@wikimedia/codex npm ERR! dev @wikimedia/codex@"2.0.0-rc.1" from the root project npm ERR! npm ERR! Fix the upstream dependency conflict, or retry npm ERR! this command with --force or --legacy-peer-deps npm ERR! to accept an incorrect (and potentially broken) dependency resolution. npm ERR! npm ERR! npm ERR! For a full report see: npm ERR! /cache/_logs/2025-05-19T06_59_02_558Z-eresolve-report.txt npm ERR! A complete log of this run can be found in: npm ERR! /cache/_logs/2025-05-19T06_59_02_558Z-debug-0.log --- stdout --- --- end --- $ rm -rf package-lock.json node_modules --- stdout --- --- end --- $ /usr/bin/npm install --- stderr --- npm WARN EBADENGINE Unsupported engine { npm WARN EBADENGINE package: '@wikimedia/codex@2.0.0-rc.1', npm WARN EBADENGINE required: { npm: '>=10.8.1', node: '>=20' }, npm WARN EBADENGINE current: { node: 'v18.19.0', npm: '9.2.0' } npm WARN EBADENGINE } npm WARN EBADENGINE Unsupported engine { npm WARN EBADENGINE package: '@wikimedia/codex-icons@2.0.0-rc.1', npm WARN EBADENGINE required: { npm: '>=10.8.1', node: '>=20' }, npm WARN EBADENGINE current: { node: 'v18.19.0', npm: '9.2.0' } npm WARN EBADENGINE } npm WARN deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. npm WARN deprecated lodash.get@4.4.2: This package is deprecated. Use the optional chaining (?.) operator instead. npm WARN deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead npm WARN deprecated abab@2.0.6: Use your platform's native atob() and btoa() methods instead npm WARN deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported npm WARN deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead npm WARN deprecated glob@7.2.0: Glob versions prior to v9 are no longer supported npm WARN deprecated domexception@4.0.0: Use your platform's native DOMException instead npm WARN deprecated mkdirp@0.3.0: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) npm WARN deprecated node-domexception@1.0.0: Use your platform's native DOMException instead npm WARN deprecated sinon@12.0.1: 16.1.1 npm WARN deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options. --- stdout --- added 956 packages, and audited 957 packages in 24s 131 packages are looking for funding run `npm fund` for details 2 high severity vulnerabilities To address all issues (including breaking changes), run: npm audit fix --force Run `npm audit` for details. --- end --- $ package-lock-lint package-lock.json --- stdout --- Checking package-lock.json --- end --- $ /usr/bin/npm install jest-environment-jsdom@29.7.0 --save-dev --save-exact --- stderr --- npm WARN EBADENGINE Unsupported engine { npm WARN EBADENGINE package: '@wikimedia/codex@2.0.0-rc.1', npm WARN EBADENGINE required: { node: '>=20', npm: '>=10.8.1' }, npm WARN EBADENGINE current: { node: 'v18.19.0', npm: '9.2.0' } npm WARN EBADENGINE } npm WARN EBADENGINE Unsupported engine { npm WARN EBADENGINE package: '@wikimedia/codex-icons@2.0.0-rc.1', npm WARN EBADENGINE required: { node: '>=20', npm: '>=10.8.1' }, npm WARN EBADENGINE current: { node: 'v18.19.0', npm: '9.2.0' } npm WARN EBADENGINE } --- stdout --- added 14 packages, and audited 971 packages in 3s 131 packages are looking for funding run `npm fund` for details 2 high severity vulnerabilities To address all issues (including breaking changes), run: npm audit fix --force Run `npm audit` for details. --- end --- $ package-lock-lint package-lock.json --- stdout --- Checking package-lock.json --- end --- $ /usr/bin/npm ci --- stderr --- npm WARN EBADENGINE Unsupported engine { npm WARN EBADENGINE package: '@wikimedia/codex@2.0.0-rc.1', npm WARN EBADENGINE required: { node: '>=20', npm: '>=10.8.1' }, npm WARN EBADENGINE current: { node: 'v18.19.0', npm: '9.2.0' } npm WARN EBADENGINE } npm WARN EBADENGINE Unsupported engine { npm WARN EBADENGINE package: '@wikimedia/codex-icons@2.0.0-rc.1', npm WARN EBADENGINE required: { node: '>=20', npm: '>=10.8.1' }, npm WARN EBADENGINE current: { node: 'v18.19.0', npm: '9.2.0' } npm WARN EBADENGINE } npm WARN deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. npm WARN deprecated lodash.get@4.4.2: This package is deprecated. Use the optional chaining (?.) operator instead. npm WARN deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead npm WARN deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported npm WARN deprecated abab@2.0.6: Use your platform's native atob() and btoa() methods instead npm WARN deprecated glob@7.2.0: Glob versions prior to v9 are no longer supported npm WARN deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead npm WARN deprecated domexception@4.0.0: Use your platform's native DOMException instead npm WARN deprecated mkdirp@0.3.0: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) npm WARN deprecated node-domexception@1.0.0: Use your platform's native DOMException instead npm WARN deprecated sinon@12.0.1: 16.1.1 npm WARN deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options. --- stdout --- added 970 packages, and audited 971 packages in 12s 131 packages are looking for funding run `npm fund` for details 2 high severity vulnerabilities To address all issues (including breaking changes), run: npm audit fix --force Run `npm audit` for details. --- end --- $ /usr/bin/npm test --- stderr --- resources/skins.vector.clientPreferences/clientPreferences.less 25:1 ⚠ Unexpected browser feature "prefers-color-scheme" is not supported by Safari 12,11.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5 plugin/no-unsupported-browser-features resources/skins.vector.js/bottomDock.less 12:2 ⚠ Unexpected browser feature "flexbox-gap" is not supported by Safari 12,13,14,11.1,12.1,13.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4 plugin/no-unsupported-browser-features resources/skins.vector.legacy.js/bottomDock.less 10:2 ⚠ Unexpected browser feature "flexbox-gap" is not supported by Safari 12,13,14,11.1,12.1,13.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4 plugin/no-unsupported-browser-features resources/skins.vector.styles/CSSCustomProperties.less 121:1 ⚠ Unexpected browser feature "prefers-color-scheme" is not supported by Safari 12,11.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5 plugin/no-unsupported-browser-features resources/skins.vector.styles/variables.less 45:1 ⚠ Unexpected browser feature "css-container-queries" is not supported by Edge 102,103,104, Firefox 101,102,103,104,105,106,107,108,109, Chrome 102,103,104, Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8 plugin/no-unsupported-browser-features 45:1 ⚠ Unexpected browser feature "css-paged-media" is not supported by Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6,16.0,16.1,16.2,16.3,16.4,16.5,16.6,17.0,17.1,17.2,17.3,17.4,17.5,17.6,18.0,18.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8,16.0,16.1,16.2,16.3,16.4,16.5,16.6-16.7,17.0,17.1,17.2,17.3,17.4,17.5,17.6-17.7,18.0,18.1, Android Browser 136 plugin/no-unsupported-browser-features 136:1 ⚠ Unexpected browser feature "css-container-queries" is not supported by Edge 102,103,104, Firefox 101,102,103,104,105,106,107,108,109, Chrome 102,103,104, Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8 plugin/no-unsupported-browser-features 136:1 ⚠ Unexpected browser feature "css-paged-media" is not supported by Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6,16.0,16.1,16.2,16.3,16.4,16.5,16.6,17.0,17.1,17.2,17.3,17.4,17.5,17.6,18.0,18.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8,16.0,16.1,16.2,16.3,16.4,16.5,16.6-16.7,17.0,17.1,17.2,17.3,17.4,17.5,17.6-17.7,18.0,18.1, Android Browser 136 plugin/no-unsupported-browser-features 137:1 ⚠ Unexpected browser feature "css-container-queries" is not supported by Edge 102,103,104, Firefox 101,102,103,104,105,106,107,108,109, Chrome 102,103,104, Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8 plugin/no-unsupported-browser-features 138:1 ⚠ Unexpected browser feature "css-container-queries" is not supported by Edge 102,103,104, Firefox 101,102,103,104,105,106,107,108,109, Chrome 102,103,104, Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8 plugin/no-unsupported-browser-features 138:1 ⚠ Unexpected browser feature "css-paged-media" is not supported by Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6,16.0,16.1,16.2,16.3,16.4,16.5,16.6,17.0,17.1,17.2,17.3,17.4,17.5,17.6,18.0,18.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8,16.0,16.1,16.2,16.3,16.4,16.5,16.6-16.7,17.0,17.1,17.2,17.3,17.4,17.5,17.6-17.7,18.0,18.1, Android Browser 136 plugin/no-unsupported-browser-features 139:1 ⚠ Unexpected browser feature "css-container-queries" is not supported by Edge 102,103,104, Firefox 101,102,103,104,105,106,107,108,109, Chrome 102,103,104, Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8 plugin/no-unsupported-browser-features 139:1 ⚠ Unexpected browser feature "css-paged-media" is not supported by Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6,16.0,16.1,16.2,16.3,16.4,16.5,16.6,17.0,17.1,17.2,17.3,17.4,17.5,17.6,18.0,18.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8,16.0,16.1,16.2,16.3,16.4,16.5,16.6-16.7,17.0,17.1,17.2,17.3,17.4,17.5,17.6-17.7,18.0,18.1, Android Browser 136 plugin/no-unsupported-browser-features 140:1 ⚠ Unexpected browser feature "css-container-queries" is not supported by Edge 102,103,104, Firefox 101,102,103,104,105,106,107,108,109, Chrome 102,103,104, Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8 plugin/no-unsupported-browser-features 140:1 ⚠ Unexpected browser feature "css-paged-media" is not supported by Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6,16.0,16.1,16.2,16.3,16.4,16.5,16.6,17.0,17.1,17.2,17.3,17.4,17.5,17.6,18.0,18.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8,16.0,16.1,16.2,16.3,16.4,16.5,16.6-16.7,17.0,17.1,17.2,17.3,17.4,17.5,17.6-17.7,18.0,18.1, Android Browser 136 plugin/no-unsupported-browser-features 151:1 ⚠ Unexpected browser feature "css-paged-media" is not supported by Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6,16.0,16.1,16.2,16.3,16.4,16.5,16.6,17.0,17.1,17.2,17.3,17.4,17.5,17.6,18.0,18.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8,16.0,16.1,16.2,16.3,16.4,16.5,16.6-16.7,17.0,17.1,17.2,17.3,17.4,17.5,17.6-17.7,18.0,18.1, Android Browser 136 plugin/no-unsupported-browser-features resources/skins.vector.styles.legacy/variables.less 62:1 ⚠ Unexpected browser feature "css-container-queries" is not supported by Edge 102,103,104, Firefox 101,102,103,104,105,106,107,108,109, Chrome 102,103,104, Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8 plugin/no-unsupported-browser-features 62:1 ⚠ Unexpected browser feature "css-paged-media" is not supported by Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6,16.0,16.1,16.2,16.3,16.4,16.5,16.6,17.0,17.1,17.2,17.3,17.4,17.5,17.6,18.0,18.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8,16.0,16.1,16.2,16.3,16.4,16.5,16.6-16.7,17.0,17.1,17.2,17.3,17.4,17.5,17.6-17.7,18.0,18.1, Android Browser 136 plugin/no-unsupported-browser-features 151:1 ⚠ Unexpected browser feature "css-container-queries" is not supported by Edge 102,103,104, Firefox 101,102,103,104,105,106,107,108,109, Chrome 102,103,104, Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8 plugin/no-unsupported-browser-features 151:1 ⚠ Unexpected browser feature "css-paged-media" is not supported by Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6,16.0,16.1,16.2,16.3,16.4,16.5,16.6,17.0,17.1,17.2,17.3,17.4,17.5,17.6,18.0,18.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8,16.0,16.1,16.2,16.3,16.4,16.5,16.6-16.7,17.0,17.1,17.2,17.3,17.4,17.5,17.6-17.7,18.0,18.1, Android Browser 136 plugin/no-unsupported-browser-features 152:1 ⚠ Unexpected browser feature "css-container-queries" is not supported by Edge 102,103,104, Firefox 101,102,103,104,105,106,107,108,109, Chrome 102,103,104, Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8 plugin/no-unsupported-browser-features 153:1 ⚠ Unexpected browser feature "css-container-queries" is not supported by Edge 102,103,104, Firefox 101,102,103,104,105,106,107,108,109, Chrome 102,103,104, Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8 plugin/no-unsupported-browser-features 153:1 ⚠ Unexpected browser feature "css-paged-media" is not supported by Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6,16.0,16.1,16.2,16.3,16.4,16.5,16.6,17.0,17.1,17.2,17.3,17.4,17.5,17.6,18.0,18.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8,16.0,16.1,16.2,16.3,16.4,16.5,16.6-16.7,17.0,17.1,17.2,17.3,17.4,17.5,17.6-17.7,18.0,18.1, Android Browser 136 plugin/no-unsupported-browser-features 154:1 ⚠ Unexpected browser feature "css-container-queries" is not supported by Edge 102,103,104, Firefox 101,102,103,104,105,106,107,108,109, Chrome 102,103,104, Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8 plugin/no-unsupported-browser-features 154:1 ⚠ Unexpected browser feature "css-paged-media" is not supported by Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6,16.0,16.1,16.2,16.3,16.4,16.5,16.6,17.0,17.1,17.2,17.3,17.4,17.5,17.6,18.0,18.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8,16.0,16.1,16.2,16.3,16.4,16.5,16.6-16.7,17.0,17.1,17.2,17.3,17.4,17.5,17.6-17.7,18.0,18.1, Android Browser 136 plugin/no-unsupported-browser-features 155:1 ⚠ Unexpected browser feature "css-container-queries" is not supported by Edge 102,103,104, Firefox 101,102,103,104,105,106,107,108,109, Chrome 102,103,104, Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8 plugin/no-unsupported-browser-features 155:1 ⚠ Unexpected browser feature "css-paged-media" is not supported by Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6,16.0,16.1,16.2,16.3,16.4,16.5,16.6,17.0,17.1,17.2,17.3,17.4,17.5,17.6,18.0,18.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8,16.0,16.1,16.2,16.3,16.4,16.5,16.6-16.7,17.0,17.1,17.2,17.3,17.4,17.5,17.6-17.7,18.0,18.1, Android Browser 136 plugin/no-unsupported-browser-features 166:1 ⚠ Unexpected browser feature "css-paged-media" is not supported by Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6,16.0,16.1,16.2,16.3,16.4,16.5,16.6,17.0,17.1,17.2,17.3,17.4,17.5,17.6,18.0,18.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8,16.0,16.1,16.2,16.3,16.4,16.5,16.6-16.7,17.0,17.1,17.2,17.3,17.4,17.5,17.6-17.7,18.0,18.1, Android Browser 136 plugin/no-unsupported-browser-features resources/skins.vector.styles/components/Indicators.less 1:1 ⚠ Unexpected browser feature "flexbox-gap" is not supported by Safari 12,13,14,11.1,12.1,13.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4 plugin/no-unsupported-browser-features resources/skins.vector.styles/components/PinnableElement.less 28:2 ⚠ Unexpected browser feature "css-containment" is not supported by Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3 plugin/no-unsupported-browser-features resources/skins.vector.styles/layouts/grid.less 23:3 ⚠ Unexpected browser feature "css-overflow-anchor" is not supported by Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6,16.0,16.1,16.2,16.3,16.4,16.5,16.6,17.0,17.1,17.2,17.3,17.4,17.5,17.6,18.0,18.1,18.2,18.3,18.4,18.5, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8,16.0,16.1,16.2,16.3,16.4,16.5,16.6-16.7,17.0,17.1,17.2,17.3,17.4,17.5,17.6-17.7,18.0,18.1,18.2,18.3,18.4,18.5 plugin/no-unsupported-browser-features 121:4 ⚠ Unexpected browser feature "css-overflow-anchor" is not supported by Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6,16.0,16.1,16.2,16.3,16.4,16.5,16.6,17.0,17.1,17.2,17.3,17.4,17.5,17.6,18.0,18.1,18.2,18.3,18.4,18.5, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8,16.0,16.1,16.2,16.3,16.4,16.5,16.6-16.7,17.0,17.1,17.2,17.3,17.4,17.5,17.6-17.7,18.0,18.1,18.2,18.3,18.4,18.5 plugin/no-unsupported-browser-features resources/skins.vector.styles/layouts/screen.less 102:2 ⚠ Unexpected browser feature "css-container-queries" is not supported by Edge 102,103,104, Firefox 101,102,103,104,105,106,107,108,109, Chrome 102,103,104, Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8 plugin/no-unsupported-browser-features 102:2 ⚠ Unexpected browser feature "css-paged-media" is not supported by Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6,16.0,16.1,16.2,16.3,16.4,16.5,16.6,17.0,17.1,17.2,17.3,17.4,17.5,17.6,18.0,18.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8,16.0,16.1,16.2,16.3,16.4,16.5,16.6-16.7,17.0,17.1,17.2,17.3,17.4,17.5,17.6-17.7,18.0,18.1, Android Browser 136 plugin/no-unsupported-browser-features 147:2 ⚠ Unexpected browser feature "css-container-queries" is not supported by Edge 102,103,104, Firefox 101,102,103,104,105,106,107,108,109, Chrome 102,103,104, Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8 plugin/no-unsupported-browser-features 147:2 ⚠ Unexpected browser feature "css-paged-media" is not supported by Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6,16.0,16.1,16.2,16.3,16.4,16.5,16.6,17.0,17.1,17.2,17.3,17.4,17.5,17.6,18.0,18.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8,16.0,16.1,16.2,16.3,16.4,16.5,16.6-16.7,17.0,17.1,17.2,17.3,17.4,17.5,17.6-17.7,18.0,18.1, Android Browser 136 plugin/no-unsupported-browser-features 165:2 ⚠ Unexpected browser feature "css-touch-action" is not supported by Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6,16.0,16.1,16.2,16.3,16.4,16.5,16.6,17.0,17.1,17.2,17.3,17.4,17.5,17.6,18.0,18.1,18.2,18.3,18.4,18.5 plugin/no-unsupported-browser-features 165:2 ⚠ Unexpected browser feature "pointer" is not supported by Safari 12,11.1,12.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5 plugin/no-unsupported-browser-features resources/skins.vector.styles/layouts/toc/unpinned.less 42:4 ⚠ Unexpected browser feature "css-paged-media" is not supported by Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6,16.0,16.1,16.2,16.3,16.4,16.5,16.6,17.0,17.1,17.2,17.3,17.4,17.5,17.6,18.0,18.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8,16.0,16.1,16.2,16.3,16.4,16.5,16.6-16.7,17.0,17.1,17.2,17.3,17.4,17.5,17.6-17.7,18.0,18.1, Android Browser 136 plugin/no-unsupported-browser-features 61:5 ⚠ Unexpected browser feature "css-paged-media" is not supported by Safari 12,13,14,15,11.1,12.1,13.1,14.1,15.1,15.2-15.3,15.4,15.5,15.6,16.0,16.1,16.2,16.3,16.4,16.5,16.6,17.0,17.1,17.2,17.3,17.4,17.5,17.6,18.0,18.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3,15.4,15.5,15.6-15.8,16.0,16.1,16.2,16.3,16.4,16.5,16.6-16.7,17.0,17.1,17.2,17.3,17.4,17.5,17.6-17.7,18.0,18.1, Android Browser 136 plugin/no-unsupported-browser-features ⚠ 40 problems (0 errors, 40 warnings) The "se" translation has 2 translations with trailing whitespace: * vector-opt-out * vector-opt-out-tooltip FAIL tests/jest/skins.vector.js/dropdownMenus.test.js ● addPortletLinkHandler › Adds a span with icon class to menus expect(received).toMatchSnapshot() Snapshot name: `addPortletLinkHandler Adds a span with icon class to menus 1` - Snapshot - 3 + Received + 3 @@ -1,9 +1,9 @@ " - <ul class=\"vector-menu\"> + <ul class="vector-menu"> - <li class=\"mw-list-item mw-list-item-js\" id=\"test-id\"> + <li class="mw-list-item mw-list-item-js" id="test-id"> - <a href=\"#test-href\"> + <a href="#test-href"> <span> test link content </span> </a> </li> 53 | const mockPortletItem = document.getElementById( 'test-id' ); 54 | addPortletLinkHandler( mockPortletItem, { id: 'test-id' } ); > 55 | expect( document.body.innerHTML ).toMatchSnapshot(); | ^ 56 | } ); 57 | 58 | test( 'Does not add an icon when noicon class is present', () => { at Object.<anonymous> (tests/jest/skins.vector.js/dropdownMenus.test.js:55:37) ● addPortletLinkHandler › Does not add an icon when noicon class is present expect(received).toMatchSnapshot() Snapshot name: `addPortletLinkHandler Does not add an icon when noicon class is present 1` - Snapshot - 3 + Received + 3 @@ -1,9 +1,9 @@ " - <ul class=\"vector-menu\"> + <ul class="vector-menu"> - <li class=\"mw-list-item mw-list-item-js\" id=\"test-id\"> + <li class="mw-list-item mw-list-item-js" id="test-id"> - <a href=\"#test-href\"> + <a href="#test-href"> <span> test link content </span> </a> </li> 72 | const mockPortletItem = document.getElementById( 'test-id' ); 73 | addPortletLinkHandler( mockPortletItem, { id: 'test-id' } ); > 74 | expect( document.body.innerHTML ).toMatchSnapshot(); | ^ 75 | } ); 76 | 77 | test( 'JS portlet should be moved to more menu (#p-cactions) at narrow widths', () => { at Object.<anonymous> (tests/jest/skins.vector.js/dropdownMenus.test.js:74:37) › 2 snapshots failed. FAIL tests/jest/pinnableElement.test.js ● Pinnable header › renders expect(received).toMatchSnapshot() Snapshot name: `Pinnable header renders 1` - Snapshot - 11 + Received + 11 @@ -1,19 +1,19 @@ - "<div id=\"pinned-container\"> + "<div id="pinned-container"> </div> - <div class=\"vector-dropdown\"> + <div class="vector-dropdown"> - <input type=\"checkbox\" id=\"checkbox\" class=\"vector-menu-checkbox\"> + <input type="checkbox" id="checkbox" class="vector-menu-checkbox"> - <label for=\"checkbox\" class=\"vector-menu-heading \"> + <label for="checkbox" class="vector-menu-heading "> - <span class=\"vector-menu-heading-label\">Dropdown</span> + <span class="vector-menu-heading-label">Dropdown</span> </label> - <div class=\"vector-menu-content\"> + <div class="vector-menu-content"> - <div id=\"unpinned-container\"> + <div id="unpinned-container"> - <div id=\"pinnable-element\"><div class=\"vector-pinnable-header pinnable-element-pinnable-header vector-pinnable-header-unpinned\" data-feature-name=\"pinned\" data-pinnable-element-id=\"pinnable-element\"> + <div id="pinnable-element"><div class="vector-pinnable-header pinnable-element-pinnable-header vector-pinnable-header-unpinned" data-feature-name="pinned" data-pinnable-element-id="pinnable-element"> - <div class=\"vector-pinnable-header-label\">simple pinnable element</div> + <div class="vector-pinnable-header-label">simple pinnable element</div> - <button class=\"vector-pinnable-header-toggle-button vector-pinnable-header-pin-button\" data-event-name=\"pinnable-header.pinnable-element.pin\">pin</button> + <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.pinnable-element.pin">pin</button> - <button class=\"vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button\" data-event-name=\"pinnable-header.pinnable-element.unpin\">unpin</button> + <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.pinnable-element.unpin">unpin</button> </div> </div> </div> </div> </div> 71 | test( 'renders', () => { 72 | initializeHTML( simpleData ); > 73 | expect( document.body.innerHTML ).toMatchSnapshot(); | ^ 74 | } ); 75 | 76 | test( 'updates pinnable header classes when toggle is pressed', () => { at Object.<anonymous> (tests/jest/pinnableElement.test.js:73:37) › 1 snapshot failed. FAIL tests/jest/tableOfContents.test.js ● Test suite failed to run ● Invalid return value: `process()` or/and `processAsync()` method of code transformer found at "/src/repo/node_modules/mustache-jest/index.js" should return an object or a Promise resolving to an object. The object must have `code` property with a string of processed code. This error may be caused by a breaking change in Jest 28: https://jestjs.io/docs/28.x/upgrading-to-jest28#transformer Code Transformation Documentation: https://jestjs.io/docs/code-transformation 4 | * TableOfContents Mustache templates 5 | */ > 6 | const templateTocContents = require( /** @type {string} */ ( './templates/TableOfContents__list.mustache' ) ); | ^ 7 | const templateTocLine = require( /** @type {string} */ ( './templates/TableOfContents__line.mustache' ) ); 8 | /** 9 | * TableOfContents Config object for filling mustache templates at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/ScriptTransformer.js:442:15) at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:554:17) at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:674:40) at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:726:19) at Object.require (resources/skins.vector.js/tableOfContents.js:6:29) at Object.<anonymous> (tests/jest/tableOfContents.test.js:9:29) PASS tests/jest/skins.vector.js/disableNightModeIfGadget.test.js FAIL tests/jest/skins.vector.es6/main.test.js ● Test suite failed to run ● Invalid return value: `process()` or/and `processAsync()` method of code transformer found at "/src/repo/node_modules/mustache-jest/index.js" should return an object or a Promise resolving to an object. The object must have `code` property with a string of processed code. This error may be caused by a breaking change in Jest 28: https://jestjs.io/docs/28.x/upgrading-to-jest28#transformer Code Transformation Documentation: https://jestjs.io/docs/code-transformation 4 | * TableOfContents Mustache templates 5 | */ > 6 | const templateTocContents = require( /** @type {string} */ ( './templates/TableOfContents__list.mustache' ) ); | ^ 7 | const templateTocLine = require( /** @type {string} */ ( './templates/TableOfContents__line.mustache' ) ); 8 | /** 9 | * TableOfContents Config object for filling mustache templates at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/ScriptTransformer.js:442:15) at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:554:17) at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:674:40) at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:726:19) at Object.require (resources/skins.vector.js/tableOfContents.js:6:29) at Object.require (resources/skins.vector.js/setupIntersectionObservers.js:6:24) at Object.<anonymous> (tests/jest/skins.vector.es6/main.test.js:8:18) PASS tests/jest/skins.vector.legacy.js/portlets.test.js FAIL tests/jest/stickyHeader.test.js ● Sticky header renders expect(received).toMatchSnapshot() Snapshot name: `Sticky header renders 1` - Snapshot - 23 + Received + 23 - "<div id=\"vector-sticky-header\" class=\"vector-sticky-header\"> + "<div id="vector-sticky-header" class="vector-sticky-header"> - <div class=\"vector-sticky-header-start\"> + <div class="vector-sticky-header-start"> - <div class=\"vector-sticky-header-icon-start vector-button-flush-left vector-button-flush-right\" aria-hidden=\"true\"> + <div class="vector-sticky-header-icon-start vector-button-flush-left vector-button-flush-right" aria-hidden="true"> - <button class=\"cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-sticky-header-search-toggle\" data-event-name=\"ui.vector-sticky-search-form.icon\" tabindex=\"-1\"><span class=\"vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search\"></span> + <button class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-sticky-header-search-toggle" data-event-name="ui.vector-sticky-search-form.icon" tabindex="-1"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>search</span> </button> </div> - <div> </div> <div class=\"vector-sticky-header-context-bar\"> + <div> </div> <div class="vector-sticky-header-context-bar"> - <nav aria-label=\"\" class=\"vector-toc-landmark\"> + <nav aria-label="" class="vector-toc-landmark"> - <div id=\"vector-sticky-header-toc\" class=\"vector-dropdown mw-portlet mw-portlet-sticky-header-toc vector-sticky-header-toc\"> + <div id="vector-sticky-header-toc" class="vector-dropdown mw-portlet mw-portlet-sticky-header-toc vector-sticky-header-toc"> - <input type=\"checkbox\" id=\"vector-sticky-header-toc-checkbox\" role=\"button\" aria-haspopup=\"true\" data-event-name=\"ui.dropdown-vector-sticky-header-toc\" class=\"vector-dropdown-checkbox\" aria-label=\"\" tabindex=\"-1\"> + <input type="checkbox" id="vector-sticky-header-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-sticky-header-toc" class="vector-dropdown-checkbox" aria-label="" tabindex="-1"> - <label id=\"vector-sticky-header-toc-label\" for=\"vector-sticky-header-toc-checkbox\" class=\"vector-dropdown-label cdx-button cdx-button--weight-quiet cdx-button--icon-only\" aria-hidden=\"true\" tabindex=\"-1\"><span class=\"vector-dropdown-label-text\"></span> + <label id="vector-sticky-header-toc-label" for="vector-sticky-header-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--weight-quiet cdx-button--icon-only" aria-hidden="true" tabindex="-1"><span class="vector-dropdown-label-text"></span> </label> - <div class=\"vector-dropdown-content\"> + <div class="vector-dropdown-content"> </div> </div> </nav> - <div class=\"vector-sticky-header-context-bar-primary\" aria-hidden=\"true\"></div> + <div class="vector-sticky-header-context-bar-primary" aria-hidden="true"></div> </div> </div> - <div class=\"vector-sticky-header-end\" aria-hidden=\"true\"> + <div class="vector-sticky-header-end" aria-hidden="true"> - <div class=\"vector-sticky-header-icons\"> + <div class="vector-sticky-header-icons"> - <a href=\"#\" class=\"cdx-button cdx-button--weight-quiet cdx-button--icon-only sticky-header-icon\" id=\"ca-talk-sticky-header\" data-event-name=\"talk-sticky-header\" tabindex=\"-1\"><span class=\"vector-icon mw-ui-icon-speechBubbles mw-ui-icon-wikimedia-speechBubbles\"></span> + <a href="#" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only sticky-header-icon" id="ca-talk-sticky-header" data-event-name="talk-sticky-header" tabindex="-1"><span class="vector-icon mw-ui-icon-speechBubbles mw-ui-icon-wikimedia-speechBubbles"></span> <span></span> </a> - <a href=\"#\" class=\"cdx-button cdx-button--weight-quiet cdx-button--icon-only sticky-header-icon\" id=\"ca-history-sticky-header\" data-event-name=\"history-sticky-header\" tabindex=\"-1\"><span class=\"vector-icon mw-ui-icon-history mw-ui-icon-wikimedia-history\"></span> + <a href="#" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only sticky-header-icon" id="ca-history-sticky-header" data-event-name="history-sticky-header" tabindex="-1"><span class="vector-icon mw-ui-icon-history mw-ui-icon-wikimedia-history"></span> <span></span> </a> - <a href=\"#\" class=\"cdx-button cdx-button--weight-quiet cdx-button--icon-only sticky-header-icon mw-watchlink\" id=\"ca-watchstar-sticky-header\" data-event-name=\"watch-sticky-header\" tabindex=\"-1\"><span class=\"vector-icon mw-ui-icon-star mw-ui-icon-wikimedia-star\"></span> + <a href="#" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only sticky-header-icon mw-watchlink" id="ca-watchstar-sticky-header" data-event-name="watch-sticky-header" tabindex="-1"><span class="vector-icon mw-ui-icon-star mw-ui-icon-wikimedia-star"></span> <span></span> </a> - <a href=\"#\" class=\"cdx-button cdx-button--weight-quiet cdx-button--icon-only sticky-header-icon\" id=\"ca-ve-edit-sticky-header\" data-event-name=\"ve-edit-sticky-header\" tabindex=\"-1\"><span class=\"vector-icon mw-ui-icon-edit mw-ui-icon-wikimedia-edit\"></span> + <a href="#" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only sticky-header-icon" id="ca-ve-edit-sticky-header" data-event-name="ve-edit-sticky-header" tabindex="-1"><span class="vector-icon mw-ui-icon-edit mw-ui-icon-wikimedia-edit"></span> <span></span> </a> - <a href=\"#\" class=\"cdx-button cdx-button--weight-quiet cdx-button--icon-only sticky-header-icon\" id=\"ca-edit-sticky-header\" data-event-name=\"wikitext-edit-sticky-header\" tabindex=\"-1\"><span class=\"vector-icon mw-ui-icon-wikiText mw-ui-icon-wikimedia-wikiText\"></span> + <a href="#" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only sticky-header-icon" id="ca-edit-sticky-header" data-event-name="wikitext-edit-sticky-header" tabindex="-1"><span class="vector-icon mw-ui-icon-wikiText mw-ui-icon-wikimedia-wikiText"></span> <span></span> </a> - <a href=\"#\" class=\"cdx-button cdx-button--weight-quiet cdx-button--icon-only sticky-header-icon\" id=\"ca-viewsource-sticky-header\" data-event-name=\"editLock\" tabindex=\"-1\"><span class=\"vector-icon mw-ui-icon-star mw-ui-icon-wikimedia-star\"></span> + <a href="#" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only sticky-header-icon" id="ca-viewsource-sticky-header" data-event-name="editLock" tabindex="-1"><span class="vector-icon mw-ui-icon-star mw-ui-icon-wikimedia-star"></span> <span></span> </a> </div> - <div class=\"vector-sticky-header-buttons\"> + <div class="vector-sticky-header-buttons"> - <button class=\"cdx-button cdx-button--weight-quiet mw-interlanguage-selector\" id=\"p-lang-btn-sticky-header\" data-event-name=\"ui.dropdown-p-lang-btn-sticky-header\" tabindex=\"-1\"><span>0 languages</span> + <button class="cdx-button cdx-button--weight-quiet mw-interlanguage-selector" id="p-lang-btn-sticky-header" data-event-name="ui.dropdown-p-lang-btn-sticky-header" tabindex="-1"><span>0 languages</span> </button> </div> - <div class=\"vector-sticky-header-icon-end\"> + <div class="vector-sticky-header-icon-end"> - <div class=\"vector-user-links\"> + <div class="vector-user-links"> </div> </div> </div> </div> " 135 | 136 | test( 'Sticky header renders', () => { > 137 | expect( document.body.innerHTML ).toMatchSnapshot(); | ^ 138 | } ); 139 | 140 | describe( 'sticky header', () => { at Object.<anonymous> (tests/jest/stickyHeader.test.js:137:36) › 1 snapshot failed. PASS tests/jest/skins.vector.js/portlets.test.js FAIL tests/jest/skins.vector.js/tables.test.js ● tables › wraps table with div expect(received).toMatchSnapshot() Snapshot name: `tables wraps table with div 1` - Snapshot - 2 + Received + 2 " - <div class=\"mw-parser-output\"> + <div class="mw-parser-output"> - <div class=\"noresize\"><table class=\"wikitable\"> + <div class="noresize"><table class="wikitable"> <tbody><tr><th>table table table</th></tr></tbody> </table></div> </div> " 12 | tables(); 13 | > 14 | expect( document.body.innerHTML ).toMatchSnapshot(); | ^ 15 | } ); 16 | 17 | test( 'wraps multiple table with div', () => { at Object.<anonymous> (tests/jest/skins.vector.js/tables.test.js:14:37) ● tables › wraps multiple table with div expect(received).toMatchSnapshot() Snapshot name: `tables wraps multiple table with div 1` - Snapshot - 5 + Received + 5 " - <div class=\"mw-parser-output\"> + <div class="mw-parser-output"> - <div class=\"noresize\"><table class=\"wikitable\"> + <div class="noresize"><table class="wikitable"> <tbody><tr><th>table table table</th></tr></tbody> </table></div> - <div class=\"noresize\"><table class=\"wikitable\"> + <div class="noresize"><table class="wikitable"> - </table></div><div class=\"noresize\"><table class=\"wikitable\"> + </table></div><div class="noresize"><table class="wikitable"> <tbody><tr><th>table table table</th></tr></tbody> </table></div> - <div class=\"noresize\"><table class=\"wikitable\"> + <div class="noresize"><table class="wikitable"> <tbody><tr><th>table table table</th></tr></tbody> </table></div> </div> " 32 | tables(); 33 | > 34 | expect( document.body.innerHTML ).toMatchSnapshot(); | ^ 35 | } ); 36 | 37 | test( 'doesnt wrap nested tables', () => { at Object.<anonymous> (tests/jest/skins.vector.js/tables.test.js:34:37) ● tables › doesnt wrap nested tables expect(received).toMatchSnapshot() Snapshot name: `tables doesnt wrap nested tables 1` - Snapshot - 3 + Received + 3 " - <div class=\"mw-parser-output\"> + <div class="mw-parser-output"> - <div class=\"noresize\"><table class=\"wikitable\"> + <div class="noresize"><table class="wikitable"> <tbody> <tr><th>table table table</th></tr> - <tr><td><table class=\"wikitable\"><tbody><tr><th>table table table</th></tr></tbody></table></td><td></td></tr> + <tr><td><table class="wikitable"><tbody><tr><th>table table table</th></tr></tbody></table></td><td></td></tr> </tbody> </table></div> </div> " 48 | tables(); 49 | > 50 | expect( document.body.innerHTML ).toMatchSnapshot(); | ^ 51 | } ); 52 | 53 | test( 'doesnt wrap tables that are not wikitables', () => { at Object.<anonymous> (tests/jest/skins.vector.js/tables.test.js:50:37) ● tables › doesnt wrap tables that are not wikitables expect(received).toMatchSnapshot() Snapshot name: `tables doesnt wrap tables that are not wikitables 1` - Snapshot - 1 + Received + 1 @@ -1,7 +1,7 @@ " - <div class=\"mw-parser-output\"> + <div class="mw-parser-output"> <table> <tbody> <tr><th>table table table</th></tr> <tr><td><table><tbody><tr><th>table table table</th></tr></tbody></table></td><td></td></tr> </tbody> 64 | tables(); 65 | > 66 | expect( document.body.innerHTML ).toMatchSnapshot(); | ^ 67 | } ); 68 | 69 | test( 'doesnt wrap tables that already have noresize', () => { at Object.<anonymous> (tests/jest/skins.vector.js/tables.test.js:66:37) ● tables › doesnt wrap tables that already have noresize expect(received).toMatchSnapshot() Snapshot name: `tables doesnt wrap tables that already have noresize 1` - Snapshot - 3 + Received + 3 @@ -1,9 +1,9 @@ " - <div class=\"mw-parser-output\"> + <div class="mw-parser-output"> - <div class=\"noresize\"> + <div class="noresize"> - <table class=\"wikitable\"> + <table class="wikitable"> <tbody> <tr><th>table table table</th></tr> </tbody> </table> </div> 81 | tables(); 82 | > 83 | expect( document.body.innerHTML ).toMatchSnapshot(); | ^ 84 | } ); 85 | 86 | test( 'doesnt wrap tables that are already wrapped', () => { at Object.<anonymous> (tests/jest/skins.vector.js/tables.test.js:83:37) ● tables › doesnt wrap tables that are already wrapped expect(received).toMatchSnapshot() Snapshot name: `tables doesnt wrap tables that are already wrapped 1` - Snapshot - 2 + Received + 2 @@ -1,9 +1,9 @@ " - <div class=\"mw-parser-output\"> + <div class="mw-parser-output"> <div> - <table class=\"wikitable\"> + <table class="wikitable"> <tbody> <tr><th>table table table</th></tr> </tbody> </table> </div> 98 | tables(); 99 | > 100 | expect( document.body.innerHTML ).toMatchSnapshot(); | ^ 101 | } ); 102 | 103 | test( 'doesnt wrap floated tables', () => { at Object.<anonymous> (tests/jest/skins.vector.js/tables.test.js:100:37) ● tables › doesnt wrap floated tables expect(received).toMatchSnapshot() Snapshot name: `tables doesnt wrap floated tables 1` - Snapshot - 2 + Received + 2 @@ -1,8 +1,8 @@ " - <div class=\"mw-parser-output\"> + <div class="mw-parser-output"> - <table class=\"wikitable\" style=\"float:right\"> + <table class="wikitable" style="float:right"> <tbody> <tr><th>table table table</th></tr> </tbody> </table> <div> 113 | tables(); 114 | > 115 | expect( document.body.innerHTML ).toMatchSnapshot(); | ^ 116 | } ); 117 | } ); 118 | at Object.<anonymous> (tests/jest/skins.vector.js/tables.test.js:115:37) › 7 snapshots failed. PASS tests/jest/popupNotification.test.js FAIL tests/jest/skins.vector.js/menuTabs.test.js ● menuTabs › adds vector-tab-noicon class to li element when part of tabs expect(received).toMatchSnapshot() Snapshot name: `menuTabs adds vector-tab-noicon class to li element when part of tabs 1` - Snapshot - 5 + Received + 5 @@ -1,11 +1,11 @@ " - <div id=\"p-views\" class=\"vector-menu mw-portlet mw-portlet-views vector-menu-tabs\"> + <div id="p-views" class="vector-menu mw-portlet mw-portlet-views vector-menu-tabs"> - <div class=\"vector-menu-content\"> + <div class="vector-menu-content"> - <ul class=\"vector-menu-content-list\"> + <ul class="vector-menu-content-list"> - <li class=\"mw-list-item mw-list-item-js vector-tab-noicon\" id=\"test-id\"> + <li class="mw-list-item mw-list-item-js vector-tab-noicon" id="test-id"> - <a href=\"#test-href\"> + <a href="#test-href"> <span> test link content </span> </a> </li> 44 | mw.hook( 'util' ).fire( menuItem, { id: 'test-id' } ); 45 | > 46 | expect( document.body.innerHTML ).toMatchSnapshot(); | ^ 47 | } ); 48 | 49 | test( 'does not add vector-tab-noicon class to li element when not part of tabs', () => { at Object.<anonymous> (tests/jest/skins.vector.js/menuTabs.test.js:46:37) ● menuTabs › does not add vector-tab-noicon class to li element when not part of tabs expect(received).toMatchSnapshot() Snapshot name: `menuTabs does not add vector-tab-noicon class to li element when not part of tabs 1` - Snapshot - 5 + Received + 5 @@ -1,11 +1,11 @@ " - <div id=\"p-variants\" class=\"vector-menu mw-portlet mw-portlet-variants\"> + <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants"> - <div class=\"vector-menu-content\"> + <div class="vector-menu-content"> - <ul class=\"vector-menu-content-list\"> + <ul class="vector-menu-content-list"> - <li class=\"mw-list-item mw-list-item-js\" id=\"test-id\"> + <li class="mw-list-item mw-list-item-js" id="test-id"> - <a href=\"#test-href\"> + <a href="#test-href"> <span> test link content </span> </a> </li> 67 | mw.hook( 'util' ).fire( menuItem, { id: 'test-id' } ); 68 | > 69 | expect( document.body.innerHTML ).toMatchSnapshot(); | ^ 70 | } ); 71 | } ); 72 | at Object.<anonymous> (tests/jest/skins.vector.js/menuTabs.test.js:69:37) › 2 snapshots failed. PASS tests/jest/skins.vector.es6/features.test.js FAIL tests/jest/skins.vector.clientPreferences.test.js ● clientPreferences › render font size expect(received).toMatchSnapshot() Snapshot name: `clientPreferences render font size 1` - Snapshot - 5 + Received + 5 "<div> - <div class=\"vector-menu-heading\">Width</div> + <div class="vector-menu-heading">Width</div> - <div class=\"vector-menu-content\"> + <div class="vector-menu-content"> - <ul class=\"vector-menu-content-list\"></ul> + <ul class="vector-menu-content-list"></ul> - <span class=\"skin-client-pref-exclusion-notice\">msg:vector-feature-custom-font-size-exclusion-notice</span></div> + <span class="skin-client-pref-exclusion-notice">msg:vector-feature-custom-font-size-exclusion-notice</span></div> - <li><div class=\"\"><form><div class=\"cdx-radio\"><input name=\"skin-client-pref-vector-feature-custom-font-size-group\" id=\"skin-client-pref-vector-feature-custom-font-size-value-0\" type=\"radio\" value=\"0\" data-event-name=\"skin-client-pref-vector-feature-custom-font-size-value-0\" class=\"cdx-radio__input\"><span class=\"cdx-radio__icon\"></span><label class=\"cdx-label cdx-radio__label\" for=\"skin-client-pref-vector-feature-custom-font-size-value-0\"><span class=\"cdx-label__label__text\">vector-feature-custom-font-size-0-label</span></label></div><div class=\"cdx-radio\"><input name=\"skin-client-pref-vector-feature-custom-font-size-group\" id=\"skin-client-pref-vector-feature-custom-font-size-value-1\" type=\"radio\" value=\"1\" data-event-name=\"skin-client-pref-vector-feature-custom-font-size-value-1\" class=\"cdx-radio__input\"><span class=\"cdx-radio__icon\"></span><label class=\"cdx-label cdx-radio__label\" for=\"skin-client-pref-vector-feature-custom-font-size-value-1\"><span class=\"cdx-label__label__text\">vector-feature-custom-font-size-1-label</span></label></div><div class=\"cdx-radio\"><input name=\"skin-client-pref-vector-feature-custom-font-size-group\" id=\"skin-client-pref-vector-feature-custom-font-size-value-2\" type=\"radio\" value=\"2\" data-event-name=\"skin-client-pref-vector-feature-custom-font-size-value-2\" class=\"cdx-radio__input\"><span class=\"cdx-radio__icon\"></span><label class=\"cdx-label cdx-radio__label\" for=\"skin-client-pref-vector-feature-custom-font-size-value-2\"><span class=\"cdx-label__label__text\">vector-feature-custom-font-size-2-label</span></label></div></form></div></li></div>" + <li><div class=""><form><div class="cdx-radio"><input name="skin-client-pref-vector-feature-custom-font-size-group" id="skin-client-pref-vector-feature-custom-font-size-value-0" type="radio" value="0" data-event-name="skin-client-pref-vector-feature-custom-font-size-value-0" class="cdx-radio__input"><span class="cdx-radio__icon"></span><label class="cdx-label cdx-radio__label" for="skin-client-pref-vector-feature-custom-font-size-value-0"><span class="cdx-label__label__text">vector-feature-custom-font-size-0-label</span></label></div><div class="cdx-radio"><input name="skin-client-pref-vector-feature-custom-font-size-group" id="skin-client-pref-vector-feature-custom-font-size-value-1" type="radio" value="1" data-event-name="skin-client-pref-vector-feature-custom-font-size-value-1" class="cdx-radio__input"><span class="cdx-radio__icon"></span><label class="cdx-label cdx-radio__label" for="skin-client-pref-vector-feature-custom-font-size-value-1"><span class="cdx-label__label__text">vector-feature-custom-font-size-1-label</span></label></div><div class="cdx-radio"><input name="skin-client-pref-vector-feature-custom-font-size-group" id="skin-client-pref-vector-feature-custom-font-size-value-2" type="radio" value="2" data-event-name="skin-client-pref-vector-feature-custom-font-size-value-2" class="cdx-radio__input"><span class="cdx-radio__icon"></span><label class="cdx-label cdx-radio__label" for="skin-client-pref-vector-feature-custom-font-size-value-2"><span class="cdx-label__label__text">vector-feature-custom-font-size-2-label</span></label></div></form></div></li></div>" 45 | } 46 | } ).then( () => { > 47 | expect( cp.innerHTML ).toMatchSnapshot(); | ^ 48 | } ); 49 | } ); 50 | at tests/jest/skins.vector.clientPreferences.test.js:47:27 ● clientPreferences › doesnt render exclusion notice if the msg key doesnt exist expect(received).toMatchSnapshot() Snapshot name: `clientPreferences doesnt render exclusion notice if the msg key doesnt exist 1` - Snapshot - 4 + Received + 4 "<div> - <div class=\"vector-menu-heading\">Width</div> + <div class="vector-menu-heading">Width</div> - <div class=\"vector-menu-content\"> + <div class="vector-menu-content"> - <ul class=\"vector-menu-content-list\"></ul> + <ul class="vector-menu-content-list"></ul> </div> - <li><div class=\"\"><form><div class=\"cdx-radio\"><input name=\"skin-client-pref-vector-feature-limited-width-group\" id=\"skin-client-pref-vector-feature-limited-width-value-1\" type=\"radio\" value=\"1\" data-event-name=\"skin-client-pref-vector-feature-limited-width-value-1\" class=\"cdx-radio__input\"><span class=\"cdx-radio__icon\"></span><label class=\"cdx-label cdx-radio__label\" for=\"skin-client-pref-vector-feature-limited-width-value-1\"><span class=\"cdx-label__label__text\">vector-feature-limited-width-1-label</span></label></div><div class=\"cdx-radio\"><input name=\"skin-client-pref-vector-feature-limited-width-group\" id=\"skin-client-pref-vector-feature-limited-width-value-0\" type=\"radio\" value=\"0\" data-event-name=\"skin-client-pref-vector-feature-limited-width-value-0\" class=\"cdx-radio__input\"><span class=\"cdx-radio__icon\"></span><label class=\"cdx-label cdx-radio__label\" for=\"skin-client-pref-vector-feature-limited-width-value-0\"><span class=\"cdx-label__label__text\">vector-feature-limited-width-0-label</span></label></div></form></div></li></div>" + <li><div class=""><form><div class="cdx-radio"><input name="skin-client-pref-vector-feature-limited-width-group" id="skin-client-pref-vector-feature-limited-width-value-1" type="radio" value="1" data-event-name="skin-client-pref-vector-feature-limited-width-value-1" class="cdx-radio__input"><span class="cdx-radio__icon"></span><label class="cdx-label cdx-radio__label" for="skin-client-pref-vector-feature-limited-width-value-1"><span class="cdx-label__label__text">vector-feature-limited-width-1-label</span></label></div><div class="cdx-radio"><input name="skin-client-pref-vector-feature-limited-width-group" id="skin-client-pref-vector-feature-limited-width-value-0" type="radio" value="0" data-event-name="skin-client-pref-vector-feature-limited-width-value-0" class="cdx-radio__input"><span class="cdx-radio__icon"></span><label class="cdx-label cdx-radio__label" for="skin-client-pref-vector-feature-limited-width-value-0"><span class="cdx-label__label__text">vector-feature-limited-width-0-label</span></label></div></form></div></li></div>" 61 | } 62 | } ).then( () => { > 63 | expect( cp.innerHTML ).toMatchSnapshot(); | ^ 64 | } ); 65 | } ); 66 | at tests/jest/skins.vector.clientPreferences.test.js:63:27 ● clientPreferences › render toggle expect(received).toMatchSnapshot() Snapshot name: `clientPreferences render toggle 1` - Snapshot - 5 + Received + 5 "<div> - <div class=\"vector-menu-heading\">Width</div> + <div class="vector-menu-heading">Width</div> - <div class=\"vector-menu-content\"> + <div class="vector-menu-content"> - <ul class=\"vector-menu-content-list\"></ul> + <ul class="vector-menu-content-list"></ul> - <span class=\"skin-client-pref-exclusion-notice\">msg:expandAll-exclusion-notice</span></div> + <span class="skin-client-pref-exclusion-notice">msg:expandAll-exclusion-notice</span></div> - <li><div class=\"\"><form><span class=\"cdx-toggle-switch\"><input name=\"skin-client-pref-expandAll-group\" id=\"skin-client-pref-expandAll-value-1\" type=\"checkbox\" data-event-name=\"skin-client-pref-expandAll-value-1\" class=\"cdx-toggle-switch__input\"><span class=\"cdx-toggle-switch__switch\"><span class=\"cdx-toggle-switch__switch__grip\"></span></span><label class=\"cdx-toggle-switch__label\">msg:expandAll-name</label></span></form></div></li></div>" + <li><div class=""><form><span class="cdx-toggle-switch"><input name="skin-client-pref-expandAll-group" id="skin-client-pref-expandAll-value-1" type="checkbox" data-event-name="skin-client-pref-expandAll-value-1" class="cdx-toggle-switch__input"><span class="cdx-toggle-switch__switch"><span class="cdx-toggle-switch__switch__grip"></span></span><label class="cdx-toggle-switch__label">msg:expandAll-name</label></span></form></div></li></div>" 74 | } 75 | } ).then( () => { > 76 | expect( cp.innerHTML ).toMatchSnapshot(); | ^ 77 | } ); 78 | } ); 79 | } ); at tests/jest/skins.vector.clientPreferences.test.js:76:27 › 3 snapshots failed. PASS tests/jest/deferUntilFrame.test.js FAIL tests/jest/userLinks.test.js ● UserLinks renders expect(received).toMatchSnapshot() Snapshot name: `UserLinks renders 1` - Snapshot - 41 + Received + 41 @@ -1,83 +1,83 @@ - "<nav class=\"vector-user-links\" aria-label=\"\"> + "<nav class="vector-user-links" aria-label=""> - <div class=\"vector-user-links-main\"> + <div class="vector-user-links-main"> - <div id=\"p-personal-preferences\" class=\"vector-menu\"> + <div id="p-personal-preferences" class="vector-menu"> - <div class=\"vector-menu-content\"> + <div class="vector-menu-content"> - <ul class=\"vector-menu-content-list\"> + <ul class="vector-menu-content-list"> - <li id=\"ca-uls\" class=\"user-links-collapsible-item mw-list-item active\"><a href=\"#\" class=\"uls-trigger cdx-button cdx-button--weight-quiet\"><span class=\"vector-icon mw-ui-icon-wikimedia-language\"></span> <span>English</span></a></li> + <li id="ca-uls" class="user-links-collapsible-item mw-list-item active"><a href="#" class="uls-trigger cdx-button cdx-button--weight-quiet"><span class="vector-icon mw-ui-icon-wikimedia-language"></span> <span>English</span></a></li> </ul> </div> </div> - <div id=\"p-personal-user-page\" class=\"vector-menu\"> + <div id="p-personal-user-page" class="vector-menu"> - <div class=\"vector-menu-content\"> + <div class="vector-menu-content"> - <ul class=\"vector-menu-content-list\"> + <ul class="vector-menu-content-list"> - <li id=\"pt-userpage-2\" class=\"user-links-collapsible-item mw-list-item\"><a href=\"/wiki/User:Admin\" class=\"cdx-button cdx-button--weight-quiet\" title=\"Your user page [⌃⌥.]\" accesskey=\".\"><span>Admin</span></a></li> + <li id="pt-userpage-2" class="user-links-collapsible-item mw-list-item"><a href="/wiki/User:Admin" class="cdx-button cdx-button--weight-quiet" title="Your user page [⌃⌥.]" accesskey="."><span>Admin</span></a></li> </ul> </div> </div> - <nav class=\"vector-appearance-landmark\" aria-label=\"\"> + <nav class="vector-appearance-landmark" aria-label=""> </nav> - <div id=\"p-personal-notifications\" class=\"vector-menu\"> + <div id="p-personal-notifications" class="vector-menu"> - <div class=\"vector-menu-content\"> + <div class="vector-menu-content"> - <ul class=\"vector-menu-content-list\"> + <ul class="vector-menu-content-list"> - <li id=\"pt-notifications-alert\" class=\"mw-list-item\"><a href=\"/wiki/Special:Notifications\" class=\"mw-echo-notifications-badge mw-echo-notification-badge-nojs oo-ui-icon-bell mw-echo-notifications-badge-all-read\" data-counter-num=\"0\" data-counter-text=\"0\" title=\"Your alerts\"><span>Alerts (0)</span></a></li> + <li id="pt-notifications-alert" class="mw-list-item"><a href="/wiki/Special:Notifications" class="mw-echo-notifications-badge mw-echo-notification-badge-nojs oo-ui-icon-bell mw-echo-notifications-badge-all-read" data-counter-num="0" data-counter-text="0" title="Your alerts"><span>Alerts (0)</span></a></li> - <li id=\"pt-notifications-notice\" class=\"mw-list-item\"><a href=\"/wiki/Special:Notifications\" class=\"mw-echo-notifications-badge mw-echo-notification-badge-nojs oo-ui-icon-tray mw-echo-notifications-badge-all-read\" data-counter-num=\"0\" data-counter-text=\"0\" title=\"Your notices\"><span>Notices (0)</span></a></li> + <li id="pt-notifications-notice" class="mw-list-item"><a href="/wiki/Special:Notifications" class="mw-echo-notifications-badge mw-echo-notification-badge-nojs oo-ui-icon-tray mw-echo-notifications-badge-all-read" data-counter-num="0" data-counter-text="0" title="Your notices"><span>Notices (0)</span></a></li> </ul> </div> </div> - <div id=\"p-personal-more\" class=\"vector-menu mw-portlet mw-portlet-vector-user-menu-overflow vector-user-menu-overflow\"> + <div id="p-personal-more" class="vector-menu mw-portlet mw-portlet-vector-user-menu-overflow vector-user-menu-overflow"> - <div class=\"vector-menu-heading\"> + <div class="vector-menu-heading"> Toggle sidebar </div> - <div class=\"vector-menu-content\"> + <div class="vector-menu-content"> - <ul class=\"vector-menu-content-list\"> + <ul class="vector-menu-content-list"> - <li id=\"pt-watchlist-2\" class=\"user-links-collapsible-item mw-list-item\"><a href=\"/wiki/Special:Watchlist\" class=\"cdx-button cdx-button--weight-quiet vector-icon cdx-button--icon-only mw-ui-icon-watchlist mw-ui-icon-wikimedia-watchlist\" title=\"A list of pages you are monitoring for changes [⌃⌥l]\" accesskey=\"l\"><span>Watchlist</span></a></li> + <li id="pt-watchlist-2" class="user-links-collapsible-item mw-list-item"><a href="/wiki/Special:Watchlist" class="cdx-button cdx-button--weight-quiet vector-icon cdx-button--icon-only mw-ui-icon-watchlist mw-ui-icon-wikimedia-watchlist" title="A list of pages you are monitoring for changes [⌃⌥l]" accesskey="l"><span>Watchlist</span></a></li> </ul> </div> </div> </div> - <div id=\"vector-user-links-dropdown\" class=\"vector-dropdown vector-user-menu vector-user-menu-logged-in\"> + <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-user-menu-logged-in"> - <input type=\"checkbox\" id=\"vector-user-links-dropdown-checkbox\" role=\"button\" aria-haspopup=\"true\" data-event-name=\"ui.dropdown-vector-user-links-dropdown\" class=\"vector-dropdown-checkbox\" aria-label=\"Personal tools\"> + <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox" aria-label="Personal tools"> - <label id=\"vector-user-links-dropdown-label\" for=\"vector-user-links-dropdown-checkbox\" class=\"vector-dropdown-label\" aria-hidden=\"true\"><span class=\"vector-dropdown-label-text\">Personal tools</span> + <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label" aria-hidden="true"><span class="vector-dropdown-label-text">Personal tools</span> </label> - <div class=\"vector-dropdown-content\"> + <div class="vector-dropdown-content"> - <div id=\"p-personal\" class=\"vector-menu mw-portlet mw-portlet-personal\"> + <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal"> - <div class=\"vector-menu-content\"> + <div class="vector-menu-content"> - <ul class=\"vector-menu-content-list\"> + <ul class="vector-menu-content-list"> - <li id=\"pt-userpage\" class=\"user-links-collapsible-item mw-list-item\"><a href=\"/wiki/User:Admin\" title=\"Your user page [.]\" accesskey=\".\"><span class=\"vector-icon mw-ui-icon-userAvatar mw-ui-icon-wikimedia-userAvatar\"></span> <span>Admin</span></a></li> + <li id="pt-userpage" class="user-links-collapsible-item mw-list-item"><a href="/wiki/User:Admin" title="Your user page [.]" accesskey="."><span class="vector-icon mw-ui-icon-userAvatar mw-ui-icon-wikimedia-userAvatar"></span> <span>Admin</span></a></li> - <li id=\"pt-mytalk\" class=\"mw-list-item\"><a href=\"/wiki/User_talk:Admin\" title=\"Your talk page [n]\" accesskey=\"n\"><span class=\"vector-icon mw-ui-icon-userTalk mw-ui-icon-wikimedia-userTalk\"></span> <span>Talk</span></a></li> + <li id="pt-mytalk" class="mw-list-item"><a href="/wiki/User_talk:Admin" title="Your talk page [n]" accesskey="n"><span class="vector-icon mw-ui-icon-userTalk mw-ui-icon-wikimedia-userTalk"></span> <span>Talk</span></a></li> - <li id=\"pt-sandbox\" class=\"new mw-list-item\"><a href=\"/w/index.php?title=User:Admin/sandbox&action=edit&redlink=1\" title=\"Your sandbox (page does not exist)\"><span class=\"vector-icon mw-ui-icon-sandbox mw-ui-icon-wikimedia-sandbox\"></span> <span>Sandbox</span></a></li> + <li id="pt-sandbox" class="new mw-list-item"><a href="/w/index.php?title=User:Admin/sandbox&action=edit&redlink=1" title="Your sandbox (page does not exist)"><span class="vector-icon mw-ui-icon-sandbox mw-ui-icon-wikimedia-sandbox"></span> <span>Sandbox</span></a></li> - <li id=\"pt-preferences\" class=\"mw-list-item\"><a href=\"/wiki/Special:Preferences\" title=\"Your preferences\"><span class=\"vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance\"></span> <span>Preferences</span></a></li> + <li id="pt-preferences" class="mw-list-item"><a href="/wiki/Special:Preferences" title="Your preferences"><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span>Preferences</span></a></li> - <li id=\"pt-betafeatures\" class=\"mw-list-item\"><a href=\"/wiki/Special:Preferences#mw-prefsection-betafeatures\" title=\"Beta features\"><span class=\"vector-icon mw-ui-icon-labFlask mw-ui-icon-wikimedia-labFlask\"></span> <span>Beta</span></a></li> + <li id="pt-betafeatures" class="mw-list-item"><a href="/wiki/Special:Preferences#mw-prefsection-betafeatures" title="Beta features"><span class="vector-icon mw-ui-icon-labFlask mw-ui-icon-wikimedia-labFlask"></span> <span>Beta</span></a></li> - <li id=\"pt-watchlist\" class=\"user-links-collapsible-item mw-list-item\"><a href=\"/wiki/Special:Watchlist\" title=\"A list of pages you are monitoring for changes [l]\" accesskey=\"l\"><span class=\"vector-icon mw-ui-icon-watchlist mw-ui-icon-wikimedia-watchlist\"></span> <span>Watchlist</span></a></li> + <li id="pt-watchlist" class="user-links-collapsible-item mw-list-item"><a href="/wiki/Special:Watchlist" title="A list of pages you are monitoring for changes [l]" accesskey="l"><span class="vector-icon mw-ui-icon-watchlist mw-ui-icon-wikimedia-watchlist"></span> <span>Watchlist</span></a></li> - <li id=\"pt-uploads\" class=\"mw-list-item\"><a href=\"/w/index.php?title=Special:ListFiles/Admin&ilshowall=1\" title=\"List of files you have uploaded\"><span class=\"vector-icon mw-ui-icon-imageGallery mw-ui-icon-wikimedia-imageGallery\"></span> <span>Uploads</span></a></li> + <li id="pt-uploads" class="mw-list-item"><a href="/w/index.php?title=Special:ListFiles/Admin&ilshowall=1" title="List of files you have uploaded"><span class="vector-icon mw-ui-icon-imageGallery mw-ui-icon-wikimedia-imageGallery"></span> <span>Uploads</span></a></li> - <li id=\"pt-mycontris\" class=\"mw-list-item\"><a href=\"/wiki/Special:Contributions/Admin\" title=\"A list of your contributions [y]\" accesskey=\"y\"><span class=\"vector-icon mw-ui-icon-userContributions mw-ui-icon-wikimedia-userContributions\"></span> <span>Contributions</span></a></li> + <li id="pt-mycontris" class="mw-list-item"><a href="/wiki/Special:Contributions/Admin" title="A list of your contributions [y]" accesskey="y"><span class="vector-icon mw-ui-icon-userContributions mw-ui-icon-wikimedia-userContributions"></span> <span>Contributions</span></a></li> - <li id=\"pt-custom\" class=\"mw-list-item mw-list-item-js\">Gadget added item</li> + <li id="pt-custom" class="mw-list-item mw-list-item-js">Gadget added item</li> </ul> </div> </div> - <div id=\"p-user-menu-logout\" class=\"vector-menu mw-portlet mw-portlet-user-menu-logout\"> + <div id="p-user-menu-logout" class="vector-menu mw-portlet mw-portlet-user-menu-logout"> - <div class=\"vector-menu-content\"> + <div class="vector-menu-content"> - <ul class=\"vector-menu-content-list\"> + <ul class="vector-menu-content-list"> - <li id=\"ca-logout\" class=\"mw-list-item\"><a data-mw=\"interface\" href=\"/w/index.php?title=Special:UserLogout&returnto=Main+Page\" title=\"Log out\"><span class=\"vector-icon mw-ui-icon-logOut mw-ui-icon-wikimedia-logOut\"></span> <span>Log out</span></a></li> + <li id="ca-logout" class="mw-list-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogout&returnto=Main+Page" title="Log out"><span class="vector-icon mw-ui-icon-logOut mw-ui-icon-wikimedia-logOut"></span> <span>Log out</span></a></li> </ul> </div> </div> 6 | 7 | test( 'UserLinks renders', () => { > 8 | expect( document.body.innerHTML ).toMatchSnapshot(); | ^ 9 | } ); 10 | at Object.<anonymous> (tests/jest/userLinks.test.js:8:36) › 1 snapshot failed. Jest: "global" coverage threshold for statements (48%) not met: 34.69% Jest: "global" coverage threshold for branches (35%) not met: 28.04% Jest: "global" coverage threshold for lines (48%) not met: 34.79% Jest: "global" coverage threshold for functions (45%) not met: 28.03% Snapshot Summary › 17 snapshots failed from 7 test suites. Inspect your code changes or run `npm run test:unit -- -u` to update them. Test Suites: 9 failed, 6 passed, 15 total Tests: 17 failed, 36 passed, 53 total Snapshots: 17 failed, 1 passed, 18 total Time: 6.821 s --- stdout --- > test > npm -s run lint && tsc && npm run test:unit Checked 1 message directory. > test:unit > jest --silent --------------------------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s --------------------------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------- All files | 34.69 | 28.04 | 28.03 | 34.79 | skins.vector.clientPreferences | 61.3 | 43.66 | 58.82 | 61.02 | clientPreferences.js | 61.3 | 43.66 | 58.82 | 61.02 | 60-88,149-166,185,199-234,263,300,306,327,332-333,349,356-359,373,403-409,426,446-465 skins.vector.js | 32.26 | 28.59 | 26.26 | 32.54 | deferUntilFrame.js | 100 | 100 | 100 | 100 | disableNightModeIfGadget.js | 70 | 70 | 60 | 70 | 59-77,89 dropdownMenus.js | 90.38 | 80 | 83.33 | 90.38 | 26,89,99,132,161 features.js | 71.42 | 55.55 | 50 | 71.42 | 19-20,26-27,85-103 languageButton.js | 0 | 0 | 0 | 0 | 9-52 menuTabs.js | 100 | 100 | 100 | 100 | pinnableElement.js | 78.94 | 76.31 | 75 | 79.78 | 25,29-30,34-35,82-86,134,184,208,231,278-294 popupNotification.js | 91.66 | 64.28 | 75 | 91.66 | 74,77 portlets.js | 85.52 | 58.06 | 60 | 85.52 | 20,35-37,60,113,126-132 scrollObserver.js | 0 | 0 | 0 | 0 | 2-52 searchToggle.js | 13.33 | 0 | 0 | 13.33 | 18-94,110-125 sectionObserver.js | 0 | 0 | 0 | 0 | 46-187 setupIntersectionObservers.js | 0 | 0 | 0 | 0 | 3-319 skin.js | 0 | 0 | 0 | 0 | 1-156 stickyHeader.js | 16.9 | 3.5 | 19.44 | 16.99 | 27-66,94-111,128-140,169-390,427-429,449-586 stickyHeaderAB.js | 0 | 0 | 0 | 0 | tableOfContents.js | 0 | 0 | 0 | 0 | 6-633 tables.js | 86.36 | 81.25 | 100 | 86.36 | 4,28,34 userPreferences.js | 33.33 | 0 | 0 | 33.33 | 8-10 watchstar.js | 20 | 0 | 0 | 20 | 7-24,29-36 skins.vector.legacy.js | 22.22 | 12.16 | 6.66 | 22.22 | collapsibleTabs.js | 0 | 0 | 0 | 0 | 13-236 portlets.js | 83.33 | 64.28 | 66.66 | 83.33 | 18,35-37,47,85-88 skin-legacy.js | 0 | 100 | 0 | 0 | 4-19 vector.js | 0 | 0 | 0 | 0 | 7-118 skins.vector.search | 0 | 0 | 0 | 0 | skins.vector.search.js | 0 | 0 | 0 | 0 | 4-73 --------------------------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------- --- end --- $ node_modules/.bin/jest -u --- stderr --- PASS tests/jest/pinnableElement.test.js › 1 snapshot updated. PASS tests/jest/stickyHeader.test.js › 1 snapshot updated. PASS tests/jest/skins.vector.clientPreferences.test.js › 3 snapshots updated. PASS tests/jest/skins.vector.js/dropdownMenus.test.js › 2 snapshots updated. PASS tests/jest/skins.vector.js/tables.test.js › 7 snapshots updated. PASS tests/jest/userLinks.test.js › 1 snapshot updated. PASS tests/jest/skins.vector.js/menuTabs.test.js › 2 snapshots updated. PASS tests/jest/skins.vector.legacy.js/portlets.test.js PASS tests/jest/skins.vector.js/portlets.test.js PASS tests/jest/popupNotification.test.js PASS tests/jest/skins.vector.js/disableNightModeIfGadget.test.js PASS tests/jest/deferUntilFrame.test.js PASS tests/jest/skins.vector.es6/features.test.js FAIL tests/jest/skins.vector.es6/main.test.js ● Test suite failed to run ● Invalid return value: `process()` or/and `processAsync()` method of code transformer found at "/src/repo/node_modules/mustache-jest/index.js" should return an object or a Promise resolving to an object. The object must have `code` property with a string of processed code. This error may be caused by a breaking change in Jest 28: https://jestjs.io/docs/28.x/upgrading-to-jest28#transformer Code Transformation Documentation: https://jestjs.io/docs/code-transformation 4 | * TableOfContents Mustache templates 5 | */ > 6 | const templateTocContents = require( /** @type {string} */ ( './templates/TableOfContents__list.mustache' ) ); | ^ 7 | const templateTocLine = require( /** @type {string} */ ( './templates/TableOfContents__line.mustache' ) ); 8 | /** 9 | * TableOfContents Config object for filling mustache templates at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/ScriptTransformer.js:442:15) at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:554:17) at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:674:40) at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:726:19) at Object.require (resources/skins.vector.js/tableOfContents.js:6:29) at Object.require (resources/skins.vector.js/setupIntersectionObservers.js:6:24) at Object.<anonymous> (tests/jest/skins.vector.es6/main.test.js:8:18) FAIL tests/jest/tableOfContents.test.js ● Test suite failed to run ● Invalid return value: `process()` or/and `processAsync()` method of code transformer found at "/src/repo/node_modules/mustache-jest/index.js" should return an object or a Promise resolving to an object. The object must have `code` property with a string of processed code. This error may be caused by a breaking change in Jest 28: https://jestjs.io/docs/28.x/upgrading-to-jest28#transformer Code Transformation Documentation: https://jestjs.io/docs/code-transformation 4 | * TableOfContents Mustache templates 5 | */ > 6 | const templateTocContents = require( /** @type {string} */ ( './templates/TableOfContents__list.mustache' ) ); | ^ 7 | const templateTocLine = require( /** @type {string} */ ( './templates/TableOfContents__line.mustache' ) ); 8 | /** 9 | * TableOfContents Config object for filling mustache templates at ScriptTransformer._buildTransformResult (node_modules/@jest/transform/build/ScriptTransformer.js:442:15) at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:554:17) at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:674:40) at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:726:19) at Object.require (resources/skins.vector.js/tableOfContents.js:6:29) at Object.<anonymous> (tests/jest/tableOfContents.test.js:9:29) Jest: "global" coverage threshold for statements (48%) not met: 34.69% Jest: "global" coverage threshold for branches (35%) not met: 28.04% Jest: "global" coverage threshold for lines (48%) not met: 34.79% Jest: "global" coverage threshold for functions (45%) not met: 28.03% Snapshot Summary › 17 snapshots updated from 7 test suites. Test Suites: 2 failed, 13 passed, 15 total Tests: 53 passed, 53 total Snapshots: 17 updated, 1 passed, 18 total Time: 5.522 s Ran all test suites. --- stdout --- --------------------------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s --------------------------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------- All files | 34.69 | 28.04 | 28.03 | 34.79 | skins.vector.clientPreferences | 61.3 | 43.66 | 58.82 | 61.02 | clientPreferences.js | 61.3 | 43.66 | 58.82 | 61.02 | 60-88,149-166,185,199-234,263,300,306,327,332-333,349,356-359,373,403-409,426,446-465 skins.vector.js | 32.26 | 28.59 | 26.26 | 32.54 | deferUntilFrame.js | 100 | 100 | 100 | 100 | disableNightModeIfGadget.js | 70 | 70 | 60 | 70 | 59-77,89 dropdownMenus.js | 90.38 | 80 | 83.33 | 90.38 | 26,89,99,132,161 features.js | 71.42 | 55.55 | 50 | 71.42 | 19-20,26-27,85-103 languageButton.js | 0 | 0 | 0 | 0 | 9-52 menuTabs.js | 100 | 100 | 100 | 100 | pinnableElement.js | 78.94 | 76.31 | 75 | 79.78 | 25,29-30,34-35,82-86,134,184,208,231,278-294 popupNotification.js | 91.66 | 64.28 | 75 | 91.66 | 74,77 portlets.js | 85.52 | 58.06 | 60 | 85.52 | 20,35-37,60,113,126-132 scrollObserver.js | 0 | 0 | 0 | 0 | 2-52 searchToggle.js | 13.33 | 0 | 0 | 13.33 | 18-94,110-125 sectionObserver.js | 0 | 0 | 0 | 0 | 46-187 setupIntersectionObservers.js | 0 | 0 | 0 | 0 | 3-319 skin.js | 0 | 0 | 0 | 0 | 1-156 stickyHeader.js | 16.9 | 3.5 | 19.44 | 16.99 | 27-66,94-111,128-140,169-390,427-429,449-586 stickyHeaderAB.js | 0 | 0 | 0 | 0 | tableOfContents.js | 0 | 0 | 0 | 0 | 6-633 tables.js | 86.36 | 81.25 | 100 | 86.36 | 4,28,34 userPreferences.js | 33.33 | 0 | 0 | 33.33 | 8-10 watchstar.js | 20 | 0 | 0 | 20 | 7-24,29-36 skins.vector.legacy.js | 22.22 | 12.16 | 6.66 | 22.22 | collapsibleTabs.js | 0 | 0 | 0 | 0 | 13-236 portlets.js | 83.33 | 64.28 | 66.66 | 83.33 | 18,35-37,47,85-88 skin-legacy.js | 0 | 100 | 0 | 0 | 4-19 vector.js | 0 | 0 | 0 | 0 | 7-118 skins.vector.search | 0 | 0 | 0 | 0 | skins.vector.search.js | 0 | 0 | 0 | 0 | 4-73 --------------------------------|---------|----------|---------|---------|--------------------------------------------------------------------------------------- --- end --- Traceback (most recent call last): File "/venv/lib/python3.11/site-packages/runner-0.1.0-py3.11.egg/runner/__init__.py", line 325, in npm_test self.check_call(["npm", "test"]) File "/venv/lib/python3.11/site-packages/runner-0.1.0-py3.11.egg/runner/shell2.py", line 59, in check_call res.check_returncode() File "/usr/lib/python3.11/subprocess.py", line 502, in check_returncode raise CalledProcessError(self.returncode, self.args, self.stdout, subprocess.CalledProcessError: Command '['/usr/bin/npm', 'test']' returned non-zero exit status 1. During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/venv/lib/python3.11/site-packages/runner-0.1.0-py3.11.egg/runner/__init__.py", line 2026, in main libup.run(args.repo, args.output, args.branch) File "/venv/lib/python3.11/site-packages/runner-0.1.0-py3.11.egg/runner/__init__.py", line 1962, in run self.npm_upgrade(plan) File "/venv/lib/python3.11/site-packages/runner-0.1.0-py3.11.egg/runner/__init__.py", line 1256, in npm_upgrade self.npm_test() File "/venv/lib/python3.11/site-packages/runner-0.1.0-py3.11.egg/runner/__init__.py", line 330, in npm_test self.check_call(["node_modules/.bin/jest", "-u"]) File "/venv/lib/python3.11/site-packages/runner-0.1.0-py3.11.egg/runner/shell2.py", line 59, in check_call res.check_returncode() File "/usr/lib/python3.11/subprocess.py", line 502, in check_returncode raise CalledProcessError(self.returncode, self.args, self.stdout, subprocess.CalledProcessError: Command '['node_modules/.bin/jest', '-u']' returned non-zero exit status 1.