This run took 395 seconds.
$ date
--- stdout ---
Sun Nov 2 00:35:12 UTC 2025
--- end ---
$ git clone file:///srv/git/mediawiki-core.git repo --depth=1 -b REL1_45
--- stderr ---
Cloning into 'repo'...
Updating files: 62% (7551/12067)
Updating files: 63% (7603/12067)
Updating files: 64% (7723/12067)
Updating files: 65% (7844/12067)
Updating files: 66% (7965/12067)
Updating files: 67% (8085/12067)
Updating files: 68% (8206/12067)
Updating files: 69% (8327/12067)
Updating files: 70% (8447/12067)
Updating files: 71% (8568/12067)
Updating files: 72% (8689/12067)
Updating files: 73% (8809/12067)
Updating files: 74% (8930/12067)
Updating files: 75% (9051/12067)
Updating files: 76% (9171/12067)
Updating files: 77% (9292/12067)
Updating files: 78% (9413/12067)
Updating files: 79% (9533/12067)
Updating files: 80% (9654/12067)
Updating files: 81% (9775/12067)
Updating files: 82% (9895/12067)
Updating files: 83% (10016/12067)
Updating files: 84% (10137/12067)
Updating files: 85% (10257/12067)
Updating files: 86% (10378/12067)
Updating files: 87% (10499/12067)
Updating files: 88% (10619/12067)
Updating files: 89% (10740/12067)
Updating files: 90% (10861/12067)
Updating files: 91% (10981/12067)
Updating files: 92% (11102/12067)
Updating files: 93% (11223/12067)
Updating files: 94% (11343/12067)
Updating files: 95% (11464/12067)
Updating files: 96% (11585/12067)
Updating files: 97% (11705/12067)
Updating files: 98% (11826/12067)
Updating files: 99% (11947/12067)
Updating files: 100% (12067/12067)
Updating files: 100% (12067/12067), done.
--- stdout ---
--- end ---
$ git config user.name libraryupgrader
--- stdout ---
--- end ---
$ git config user.email tools.libraryupgrader@tools.wmflabs.org
--- stdout ---
--- end ---
$ git submodule update --init
--- stderr ---
Submodule 'extensions/AbuseFilter' (https://gerrit.wikimedia.org/r/mediawiki/extensions/AbuseFilter) registered for path 'extensions/AbuseFilter'
Submodule 'extensions/CategoryTree' (https://gerrit.wikimedia.org/r/mediawiki/extensions/CategoryTree) registered for path 'extensions/CategoryTree'
Submodule 'extensions/CheckUser' (https://gerrit.wikimedia.org/r/mediawiki/extensions/CheckUser) registered for path 'extensions/CheckUser'
Submodule 'extensions/Cite' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Cite) registered for path 'extensions/Cite'
Submodule 'extensions/CiteThisPage' (https://gerrit.wikimedia.org/r/mediawiki/extensions/CiteThisPage) registered for path 'extensions/CiteThisPage'
Submodule 'extensions/CodeEditor' (https://gerrit.wikimedia.org/r/mediawiki/extensions/CodeEditor) registered for path 'extensions/CodeEditor'
Submodule 'extensions/ConfirmEdit' (https://gerrit.wikimedia.org/r/mediawiki/extensions/ConfirmEdit) registered for path 'extensions/ConfirmEdit'
Submodule 'extensions/DiscussionTools' (https://gerrit.wikimedia.org/r/mediawiki/extensions/DiscussionTools) registered for path 'extensions/DiscussionTools'
Submodule 'extensions/Echo' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Echo) registered for path 'extensions/Echo'
Submodule 'extensions/Gadgets' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Gadgets) registered for path 'extensions/Gadgets'
Submodule 'extensions/ImageMap' (https://gerrit.wikimedia.org/r/mediawiki/extensions/ImageMap) registered for path 'extensions/ImageMap'
Submodule 'extensions/InputBox' (https://gerrit.wikimedia.org/r/mediawiki/extensions/InputBox) registered for path 'extensions/InputBox'
Submodule 'extensions/Linter' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Linter) registered for path 'extensions/Linter'
Submodule 'extensions/LoginNotify' (https://gerrit.wikimedia.org/r/mediawiki/extensions/LoginNotify) registered for path 'extensions/LoginNotify'
Submodule 'extensions/Math' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Math) registered for path 'extensions/Math'
Submodule 'extensions/MultimediaViewer' (https://gerrit.wikimedia.org/r/mediawiki/extensions/MultimediaViewer) registered for path 'extensions/MultimediaViewer'
Submodule 'extensions/Nuke' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Nuke) registered for path 'extensions/Nuke'
Submodule 'extensions/OATHAuth' (https://gerrit.wikimedia.org/r/mediawiki/extensions/OATHAuth) registered for path 'extensions/OATHAuth'
Submodule 'extensions/PageImages' (https://gerrit.wikimedia.org/r/mediawiki/extensions/PageImages) registered for path 'extensions/PageImages'
Submodule 'extensions/ParserFunctions' (https://gerrit.wikimedia.org/r/mediawiki/extensions/ParserFunctions) registered for path 'extensions/ParserFunctions'
Submodule 'extensions/PdfHandler' (https://gerrit.wikimedia.org/r/mediawiki/extensions/PdfHandler) registered for path 'extensions/PdfHandler'
Submodule 'extensions/Poem' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Poem) registered for path 'extensions/Poem'
Submodule 'extensions/ReplaceText' (https://gerrit.wikimedia.org/r/mediawiki/extensions/ReplaceText) registered for path 'extensions/ReplaceText'
Submodule 'extensions/Scribunto' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Scribunto) registered for path 'extensions/Scribunto'
Submodule 'extensions/SecureLinkFixer' (https://gerrit.wikimedia.org/r/mediawiki/extensions/SecureLinkFixer) registered for path 'extensions/SecureLinkFixer'
Submodule 'extensions/SpamBlacklist' (https://gerrit.wikimedia.org/r/mediawiki/extensions/SpamBlacklist) registered for path 'extensions/SpamBlacklist'
Submodule 'extensions/SyntaxHighlight_GeSHi' (https://gerrit.wikimedia.org/r/mediawiki/extensions/SyntaxHighlight_GeSHi) registered for path 'extensions/SyntaxHighlight_GeSHi'
Submodule 'extensions/TemplateData' (https://gerrit.wikimedia.org/r/mediawiki/extensions/TemplateData) registered for path 'extensions/TemplateData'
Submodule 'extensions/TemplateStyles' (https://gerrit.wikimedia.org/r/mediawiki/extensions/TemplateStyles) registered for path 'extensions/TemplateStyles'
Submodule 'extensions/TextExtracts' (https://gerrit.wikimedia.org/r/mediawiki/extensions/TextExtracts) registered for path 'extensions/TextExtracts'
Submodule 'extensions/Thanks' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Thanks) registered for path 'extensions/Thanks'
Submodule 'extensions/TitleBlacklist' (https://gerrit.wikimedia.org/r/mediawiki/extensions/TitleBlacklist) registered for path 'extensions/TitleBlacklist'
Submodule 'extensions/VisualEditor' (https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor) registered for path 'extensions/VisualEditor'
Submodule 'extensions/WikiEditor' (https://gerrit.wikimedia.org/r/mediawiki/extensions/WikiEditor) registered for path 'extensions/WikiEditor'
Submodule 'skins/MinervaNeue' (https://gerrit.wikimedia.org/r/mediawiki/skins/MinervaNeue) registered for path 'skins/MinervaNeue'
Submodule 'skins/MonoBook' (https://gerrit.wikimedia.org/r/mediawiki/skins/MonoBook) registered for path 'skins/MonoBook'
Submodule 'skins/Timeless' (https://gerrit.wikimedia.org/r/mediawiki/skins/Timeless) registered for path 'skins/Timeless'
Submodule 'skins/Vector' (https://gerrit.wikimedia.org/r/mediawiki/skins/Vector) registered for path 'skins/Vector'
Submodule 'vendor' (https://gerrit.wikimedia.org/r/mediawiki/vendor) registered for path 'vendor'
Cloning into '/src/repo/extensions/AbuseFilter'...
Cloning into '/src/repo/extensions/CategoryTree'...
Cloning into '/src/repo/extensions/CheckUser'...
Cloning into '/src/repo/extensions/Cite'...
Cloning into '/src/repo/extensions/CiteThisPage'...
Cloning into '/src/repo/extensions/CodeEditor'...
Cloning into '/src/repo/extensions/ConfirmEdit'...
Cloning into '/src/repo/extensions/DiscussionTools'...
Cloning into '/src/repo/extensions/Echo'...
Cloning into '/src/repo/extensions/Gadgets'...
Cloning into '/src/repo/extensions/ImageMap'...
Cloning into '/src/repo/extensions/InputBox'...
Cloning into '/src/repo/extensions/Linter'...
Cloning into '/src/repo/extensions/LoginNotify'...
Cloning into '/src/repo/extensions/Math'...
Cloning into '/src/repo/extensions/MultimediaViewer'...
Cloning into '/src/repo/extensions/Nuke'...
Cloning into '/src/repo/extensions/OATHAuth'...
Cloning into '/src/repo/extensions/PageImages'...
Cloning into '/src/repo/extensions/ParserFunctions'...
Cloning into '/src/repo/extensions/PdfHandler'...
Cloning into '/src/repo/extensions/Poem'...
Cloning into '/src/repo/extensions/ReplaceText'...
Cloning into '/src/repo/extensions/Scribunto'...
Cloning into '/src/repo/extensions/SecureLinkFixer'...
Cloning into '/src/repo/extensions/SpamBlacklist'...
Cloning into '/src/repo/extensions/SyntaxHighlight_GeSHi'...
Cloning into '/src/repo/extensions/TemplateData'...
Cloning into '/src/repo/extensions/TemplateStyles'...
Cloning into '/src/repo/extensions/TextExtracts'...
Cloning into '/src/repo/extensions/Thanks'...
Cloning into '/src/repo/extensions/TitleBlacklist'...
Cloning into '/src/repo/extensions/VisualEditor'...
Cloning into '/src/repo/extensions/WikiEditor'...
Cloning into '/src/repo/skins/MinervaNeue'...
Cloning into '/src/repo/skins/MonoBook'...
Cloning into '/src/repo/skins/Timeless'...
Cloning into '/src/repo/skins/Vector'...
Cloning into '/src/repo/vendor'...
--- stdout ---
Submodule path 'extensions/AbuseFilter': checked out '3c05a2ce9cd124abb6d71f2ac30a9573211a68b5'
Submodule path 'extensions/CategoryTree': checked out 'd9fe296eb6ad745aaba5d6cb3627f962dd002bb6'
Submodule path 'extensions/CheckUser': checked out '11198dec46ccd8f853aad0e53cc79110c34ec7ce'
Submodule path 'extensions/Cite': checked out '86f0590245a3c7b2a4d11e1ccfec56abc4711665'
Submodule path 'extensions/CiteThisPage': checked out 'f1c28783d820628e06b75ad4487a292bb1567c41'
Submodule path 'extensions/CodeEditor': checked out 'f51d40ef11acd7bb21a76de964996cee7e4aa709'
Submodule path 'extensions/ConfirmEdit': checked out 'e43f2982cb49f0490155cd135ffd952837984234'
Submodule path 'extensions/DiscussionTools': checked out '5abb3db7e6f9940b3bccc8dd27448bc9ab867c6d'
Submodule path 'extensions/Echo': checked out 'aee3cf4eaa8e6dbde911f167bbbe30b499f7e901'
Submodule path 'extensions/Gadgets': checked out '16f9be39195ffc232a9324831274c3686f3837fe'
Submodule path 'extensions/ImageMap': checked out '95cfed39ed7e83fd924c2a0c421e8e5184b8743a'
Submodule path 'extensions/InputBox': checked out 'd390096d069160a6d5ab26e3b3808b7e5fc5e7ca'
Submodule path 'extensions/Linter': checked out 'ed6738f7a7a6d6034cb97b566e7d056db8c21020'
Submodule path 'extensions/LoginNotify': checked out '3f7049d9de718f415beb5ae5b732dacdc197968b'
Submodule path 'extensions/Math': checked out '9e4a937dbcb26e1c4faebab24a32e0d55d6462d7'
Submodule path 'extensions/MultimediaViewer': checked out '8fa2ce06dce17f0848b250ad0fed5c66f7d6c9a8'
Submodule path 'extensions/Nuke': checked out '16f276dfc30d904c83d01d27601b08c44dd0c58c'
Submodule path 'extensions/OATHAuth': checked out '57a42930fde20405f0390bbf75281a233e858ffb'
Submodule path 'extensions/PageImages': checked out '6c8ef65a25f0f4c88ab699d37c943eef77b1c9a4'
Submodule path 'extensions/ParserFunctions': checked out '185921a629bda0e04f31c43d255e1fb5a2cb0b73'
Submodule path 'extensions/PdfHandler': checked out 'f5f8cd803769f588dfe5bada8e2b365c51b80b8a'
Submodule path 'extensions/Poem': checked out 'd3bdd4ae77e3a77c10ab966f7a30f5e20926750f'
Submodule path 'extensions/ReplaceText': checked out 'fce1f3f1b599788cbc5e89290e7c49cbca52bf4a'
Submodule path 'extensions/Scribunto': checked out 'f9f4788f333fdcb6390ed2704101676ad1fae842'
Submodule path 'extensions/SecureLinkFixer': checked out '94fcc25f2fa3507e695dd93c99039016471789b1'
Submodule path 'extensions/SpamBlacklist': checked out '17b718fa7f1a5c9df6e202318a27074c35e94df4'
Submodule path 'extensions/SyntaxHighlight_GeSHi': checked out 'e92f65c81c6cb9ece091f4d25c5659fe88c26e2b'
Submodule path 'extensions/TemplateData': checked out '7023d93b9d6cb2f0fa88811d1aa872a122d24497'
Submodule path 'extensions/TemplateStyles': checked out '39fa08b546e92a2f1cf0787a562a79f5389b5222'
Submodule path 'extensions/TextExtracts': checked out '706552e0484a2a20b1f72755cd3fbdeb0e4708fe'
Submodule path 'extensions/Thanks': checked out 'ff9bb8f8b04d455f746a78039b2bd4cd3dfa5915'
Submodule path 'extensions/TitleBlacklist': checked out '2c71b06cd555246bf48362ffee1bc3fd42b3d2b7'
Submodule path 'extensions/VisualEditor': checked out 'bb80e7687fd1c7bc70aafec9fe57a275eaa59096'
Submodule path 'extensions/WikiEditor': checked out '3cadd00af3a14fbbacf19b576112474cc5760ca8'
Submodule path 'skins/MinervaNeue': checked out '0d652d3d2e40412f52cd27df28ffe87f62540a86'
Submodule path 'skins/MonoBook': checked out '0caae41d627b11a996b73d0dd26bd1d5fd977383'
Submodule path 'skins/Timeless': checked out 'bed8803c606ef5517431de3b0645a7457ca0ff2f'
Submodule path 'skins/Vector': checked out '12923856ec9046a7b50f47019dd15ffe7045a011'
Submodule path 'vendor': checked out 'f7642fcb8b0fbffa68bc73de893d9aa90cfc4b48'
--- end ---
$ grr init
--- stdout ---
Installed commit-msg hook.
--- end ---
$ git show-ref refs/heads/REL1_45
--- stdout ---
130ead2f580f0e7137480a5eb8024604040f454d refs/heads/REL1_45
--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
"auditReportVersion": 2,
"vulnerabilities": {
"axios": {
"name": "axios",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1097679,
"name": "axios",
"dependency": "axios",
"title": "Axios Cross-Site Request Forgery Vulnerability",
"url": "https://github.com/advisories/GHSA-wf5p-g6vw-rhxx",
"severity": "moderate",
"cwe": [
"CWE-352"
],
"cvss": {
"score": 6.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N"
},
"range": ">=0.8.1 <0.28.0"
},
{
"source": 1103617,
"name": "axios",
"dependency": "axios",
"title": "axios Requests Vulnerable To Possible SSRF and Credential Leakage via Absolute URL",
"url": "https://github.com/advisories/GHSA-jr5f-v2jv-69x6",
"severity": "high",
"cwe": [
"CWE-918"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": "<0.30.0"
},
{
"source": 1108262,
"name": "axios",
"dependency": "axios",
"title": "Axios is vulnerable to DoS attack through lack of data size check",
"url": "https://github.com/advisories/GHSA-4hjh-wcwx-xvwj",
"severity": "high",
"cwe": [
"CWE-770"
],
"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": "<0.30.2"
}
],
"effects": [
"openapi-validator"
],
"range": "<=0.30.1",
"nodes": [
"node_modules/axios"
],
"fixAvailable": {
"name": "chai-openapi-response-validator",
"version": "0.14.1",
"isSemVerMajor": true
}
},
"chai-openapi-response-validator": {
"name": "chai-openapi-response-validator",
"severity": "high",
"isDirect": true,
"via": [
"openapi-validator"
],
"effects": [],
"range": "0.11.2 || >=0.14.2-alpha.0",
"nodes": [
"node_modules/chai-openapi-response-validator"
],
"fixAvailable": {
"name": "chai-openapi-response-validator",
"version": "0.14.1",
"isSemVerMajor": true
}
},
"openapi-validator": {
"name": "openapi-validator",
"severity": "high",
"isDirect": false,
"via": [
"axios"
],
"effects": [
"chai-openapi-response-validator"
],
"range": ">=0.14.2-alpha.0",
"nodes": [
"node_modules/openapi-validator"
],
"fixAvailable": {
"name": "chai-openapi-response-validator",
"version": "0.14.1",
"isSemVerMajor": true
}
}
},
"metadata": {
"vulnerabilities": {
"info": 0,
"low": 0,
"moderate": 0,
"high": 3,
"critical": 0,
"total": 3
},
"dependencies": {
"prod": 1,
"dev": 1786,
"optional": 38,
"peer": 2,
"peerOptional": 0,
"total": 1786
}
}
}
--- 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.
> MediaWiki\Composer\VersionChecker::onEvent
Loading composer repositories with package information
Updating dependencies
Lock file operations: 141 installs, 0 updates, 0 removals
- Locking composer/pcre (3.3.2)
- Locking composer/semver (3.4.4)
- Locking composer/spdx-licenses (1.5.9)
- Locking composer/xdebug-handler (3.0.5)
- Locking dealerdirect/phpcodesniffer-composer-installer (v1.1.2)
- Locking doctrine/dbal (3.10.0)
- Locking doctrine/deprecations (1.1.5)
- Locking doctrine/event-manager (2.0.1)
- Locking doctrine/instantiator (2.0.0)
- Locking doctrine/sql-formatter (1.5.2)
- Locking felixfbecker/advanced-json-rpc (v3.2.1)
- Locking giorgiosironi/eris (0.14.1)
- Locking guzzlehttp/guzzle (7.10.0)
- Locking guzzlehttp/promises (2.3.0)
- Locking guzzlehttp/psr7 (2.8.0)
- Locking hamcrest/hamcrest-php (v2.1.1)
- Locking johnkary/phpunit-speedtrap (v4.0.1)
- Locking justinrainbow/json-schema (5.3.0)
- Locking lcobucci/clock (2.2.0)
- Locking lcobucci/jwt (4.1.5)
- Locking liuggio/statsd-php-client (v1.0.18)
- Locking mck89/peast (v1.17.2)
- Locking mediawiki/mediawiki-codesniffer (v48.0.0)
- Locking mediawiki/mediawiki-phan-config (0.17.0)
- Locking mediawiki/minus-x (1.1.3)
- Locking mediawiki/phan-taint-check-plugin (7.0.0)
- Locking microsoft/tolerant-php-parser (v0.1.2)
- Locking monolog/monolog (2.9.3)
- Locking myclabs/deep-copy (1.13.4)
- Locking netresearch/jsonmapper (v4.5.0)
- Locking nikic/php-parser (v5.6.2)
- Locking oojs/oojs-ui (v0.53.0)
- Locking pear/console_getopt (v1.4.3)
- Locking pear/mail (v2.0.0)
- Locking pear/mail_mime (1.10.12)
- Locking pear/net_smtp (1.12.1)
- Locking pear/net_socket (v1.2.2)
- Locking pear/net_url2 (v2.2.3)
- Locking pear/pear-core-minimal (v1.10.16)
- Locking pear/pear_exception (v1.0.2)
- Locking phan/phan (5.5.1)
- Locking phar-io/manifest (2.0.4)
- Locking phar-io/version (3.2.1)
- Locking php-parallel-lint/php-console-color (v1.0.1)
- Locking php-parallel-lint/php-console-highlighter (v1.0.0)
- Locking php-parallel-lint/php-parallel-lint (v1.4.0)
- Locking phpcsstandards/phpcsextra (1.4.0)
- Locking phpcsstandards/phpcsutils (1.1.1)
- Locking phpdocumentor/reflection-common (2.2.0)
- Locking phpdocumentor/reflection-docblock (5.6.3)
- Locking phpdocumentor/type-resolver (1.10.0)
- Locking phpstan/phpdoc-parser (2.3.0)
- Locking phpunit/php-code-coverage (9.2.32)
- Locking phpunit/php-file-iterator (3.0.6)
- Locking phpunit/php-invoker (3.1.1)
- Locking phpunit/php-text-template (2.0.4)
- Locking phpunit/php-timer (5.0.3)
- Locking phpunit/phpunit (9.6.21)
- Locking psr/cache (3.0.0)
- Locking psr/clock (1.0.0)
- Locking psr/container (2.0.2)
- Locking psr/http-client (1.0.3)
- Locking psr/http-factory (1.1.0)
- Locking psr/http-message (1.1)
- Locking psr/log (1.1.4)
- Locking psy/psysh (v0.12.14)
- Locking ralouphie/getallheaders (3.0.3)
- Locking sabre/event (5.1.7)
- Locking sebastian/cli-parser (1.0.2)
- Locking sebastian/code-unit (1.0.8)
- Locking sebastian/code-unit-reverse-lookup (2.0.3)
- Locking sebastian/comparator (4.0.9)
- Locking sebastian/complexity (2.0.3)
- Locking sebastian/diff (4.0.6)
- Locking sebastian/environment (5.1.5)
- Locking sebastian/exporter (4.0.8)
- Locking sebastian/global-state (5.0.8)
- Locking sebastian/lines-of-code (1.0.4)
- Locking sebastian/object-enumerator (4.0.4)
- Locking sebastian/object-reflector (2.0.4)
- Locking sebastian/recursion-context (4.0.6)
- Locking sebastian/resource-operations (3.0.4)
- Locking sebastian/type (3.2.1)
- Locking sebastian/version (3.0.2)
- Locking seld/jsonlint (1.11.0)
- Locking squizlabs/php_codesniffer (3.13.2)
- Locking stella-maris/clock (0.1.7)
- Locking symfony/console (v7.3.5)
- Locking symfony/deprecation-contracts (v3.6.0)
- Locking symfony/polyfill-php82 (v1.33.0)
- Locking symfony/polyfill-php83 (v1.33.0)
- Locking symfony/polyfill-php84 (v1.33.0)
- Locking symfony/polyfill-php85 (v1.33.0)
- Locking symfony/service-contracts (v3.6.0)
- Locking symfony/string (v7.3.4)
- Locking symfony/var-dumper (v7.3.5)
- Locking symfony/yaml (v6.4.25)
- Locking theseer/tokenizer (1.2.3)
- Locking tysonandre/var_representation_polyfill (0.1.3)
- Locking webmozart/assert (1.12.1)
- Locking wikimedia/alea (1.0.0)
- Locking wikimedia/assert (v0.5.1)
- Locking wikimedia/at-ease (v3.0.0)
- Locking wikimedia/base-convert (v2.0.2)
- Locking wikimedia/bcp-47-code (v2.0.1)
- Locking wikimedia/cdb (3.0.0)
- Locking wikimedia/cldr-plural-rule-parser (v2.0.0)
- Locking wikimedia/codex (v0.7.1)
- Locking wikimedia/common-passwords (v0.5.1)
- Locking wikimedia/composer-merge-plugin (v2.1.0)
- Locking wikimedia/css-sanitizer (v6.1.0)
- Locking wikimedia/cssjanus (v2.3.0)
- Locking wikimedia/html-formatter (4.1.0)
- Locking wikimedia/idle-dom (v2.1.0)
- Locking wikimedia/ip-utils (5.0.0)
- Locking wikimedia/json-codec (v4.0.0)
- Locking wikimedia/langconv (0.5.0)
- Locking wikimedia/less.php (v5.2.2)
- Locking wikimedia/minify (2.9.0)
- Locking wikimedia/normalized-exception (v2.1.1)
- Locking wikimedia/object-factory (v5.0.1)
- Locking wikimedia/parsoid (v0.22.0)
- Locking wikimedia/php-session-serializer (v3.0.2)
- Locking wikimedia/purtle (v2.0.0)
- Locking wikimedia/relpath (4.0.2)
- Locking wikimedia/remex-html (5.1.0)
- Locking wikimedia/request-timeout (v3.0.0)
- Locking wikimedia/running-stat (v2.1.0)
- Locking wikimedia/scoped-callback (v5.0.0)
- Locking wikimedia/services (4.0.0)
- Locking wikimedia/shellbox (4.3.0)
- Locking wikimedia/testing-access-wrapper (3.0.0)
- Locking wikimedia/timestamp (v5.0.0)
- Locking wikimedia/utfnormal (4.0.0)
- Locking wikimedia/wait-condition-loop (v2.0.2)
- Locking wikimedia/wikipeg (5.0.1)
- Locking wikimedia/wrappedstring (v4.0.1)
- Locking wikimedia/xmp-reader (0.10.1)
- Locking wikimedia/zest-css (4.1.0)
- Locking wmde/hamcrest-html-matchers (v1.1.0)
- Locking zordius/lightncandy (v1.2.6)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 65 installs, 5 updates, 59 removals
- Downloading doctrine/dbal (3.10.0)
- Downloading doctrine/sql-formatter (1.5.2)
0/2 [>---------------------------] 0%
2/2 [============================] 100%
- Removing wmde/php-vuejs-templating (2.2.0-beta.8)
- Removing wikimedia/textcat (2.0.0)
- Removing wikimedia/metrics-platform (4.2.4)
- Removing wikimedia/lucene-explain-parser (2.0.0)
- Removing wikimedia/equivset (1.7.1)
- Removing web-auth/webauthn-lib (4.9.2)
- Removing web-auth/cose-lib (4.4.2)
- Removing symfony/validator (v6.4.25)
- Removing symfony/uid (v6.4.24)
- Removing symfony/translation-contracts (v3.6.0)
- Removing symfony/translation (v6.4.24)
- Removing symfony/process (v6.4.25)
- Removing swaggest/json-diff (v3.12.1)
- Removing spomky-labs/pki-framework (1.3.0)
- Removing spomky-labs/cbor-php (3.1.1)
- Removing serialization/serialization (4.1.0)
- Removing ruflin/elastica (7.3.2)
- Removing react/promise (v3.2.0)
- Removing psr/simple-cache (1.0.1)
- Removing psr/event-dispatcher (1.0.0)
- Removing pimple/pimple (v3.5.0)
- Removing paragonie/constant_time_encoding (v3.0.0)
- Removing opis/uri (1.1.0)
- Removing opis/string (2.1.0)
- Removing opis/json-schema (2.4.1)
- Removing onoi/message-reporter (1.4.2)
- Removing okvpn/clock-lts (1.0.0)
- Removing nyholm/dsn (2.0.1)
- Removing mustangostang/spyc (0.6.3)
- Removing maxmind/web-service-common (v0.10.0)
- Removing maxmind-db/reader (v1.12.1)
- Removing league/uri-interfaces (2.3.0)
- Removing league/uri-components (2.4.2)
- Removing league/uri (6.8.0)
- Removing league/oauth2-server (dev-v9.0.0-alpha 61d770d)
- Removing league/event (2.3.0)
- Removing james-heinrich/getid3 (v1.9.23)
- Removing jakobo/hotp-php (v2.0.0)
- Removing geoip2/geoip2 (v3.2.0)
- Removing firebase/php-jwt (v6.11.1)
- Removing fgrosse/phpasn1 (v2.5.0)
- Removing ezimuel/ringphp (1.4.0)
- Removing ezimuel/guzzlestreams (4.1.0)
- Removing endroid/qr-code (5.1.0)
- Removing elasticsearch/elasticsearch (v7.17.3)
- Removing diff/diff (3.4.0)
- Removing defuse/php-encryption (v2.4.0)
- Removing data-values/time (1.2.0)
- Removing data-values/serialization (1.2.5)
- Removing data-values/number (0.13.0)
- Removing data-values/interfaces (1.2.0)
- Removing data-values/geo (4.6.0)
- Removing data-values/data-values (3.1.0)
- Removing data-values/common (1.2.0)
- Removing dasprid/enum (1.0.7)
- Removing composer/ca-bundle (1.5.8)
- Removing christian-riesen/base32 (1.6.0)
- Removing brick/math (0.13.1)
- Removing bacon/bacon-qr-code (v3.0.1)
- Installing squizlabs/php_codesniffer (3.13.2): Extracting archive
0/50 [>---------------------------] 0%
10/50 [=====>----------------------] 20%
30/50 [================>-----------] 60%
49/50 [===========================>] 98%
50/50 [============================] 100%
- Installing dealerdirect/phpcodesniffer-composer-installer (v1.1.2): Extracting archive
- Installing composer/pcre (3.3.2): Extracting archive
- Installing psr/cache (3.0.0): Extracting archive
- Installing doctrine/event-manager (2.0.1): Extracting archive
- Installing doctrine/deprecations (1.1.5): Extracting archive
- Installing doctrine/dbal (3.10.0): Extracting archive
- Installing doctrine/sql-formatter (1.5.2): Extracting archive
- Installing giorgiosironi/eris (0.14.1): Extracting archive
- Installing sebastian/version (3.0.2): Extracting archive
- Installing sebastian/type (3.2.1): Extracting archive
- Installing sebastian/resource-operations (3.0.4): Extracting archive
- Installing sebastian/recursion-context (4.0.6): Extracting archive
- Installing sebastian/object-reflector (2.0.4): Extracting archive
- Installing sebastian/object-enumerator (4.0.4): Extracting archive
- Installing sebastian/global-state (5.0.8): Extracting archive
- Installing sebastian/exporter (4.0.8): Extracting archive
- Installing sebastian/environment (5.1.5): Extracting archive
- Installing sebastian/diff (4.0.6): Extracting archive
- Installing sebastian/comparator (4.0.9): Extracting archive
- Installing sebastian/code-unit (1.0.8): Extracting archive
- Installing sebastian/cli-parser (1.0.2): Extracting archive
- Installing phpunit/php-timer (5.0.3): Extracting archive
- Installing phpunit/php-text-template (2.0.4): Extracting archive
- Installing phpunit/php-invoker (3.1.1): Extracting archive
- Installing phpunit/php-file-iterator (3.0.6): Extracting archive
- Installing theseer/tokenizer (1.2.3): Extracting archive
- Upgrading nikic/php-parser (v5.6.1 => v5.6.2): Extracting archive
- Installing sebastian/lines-of-code (1.0.4): Extracting archive
- Installing sebastian/complexity (2.0.3): Extracting archive
- Installing sebastian/code-unit-reverse-lookup (2.0.3): Extracting archive
- Installing phpunit/php-code-coverage (9.2.32): Extracting archive
- Installing phar-io/version (3.2.1): Extracting archive
- Installing phar-io/manifest (2.0.4): Extracting archive
- Installing myclabs/deep-copy (1.13.4): Extracting archive
- Installing doctrine/instantiator (2.0.0): Extracting archive
- Installing phpunit/phpunit (9.6.21): Extracting archive
- Installing johnkary/phpunit-speedtrap (v4.0.1): Extracting archive
- Installing stella-maris/clock (0.1.7): Extracting archive
- Installing lcobucci/clock (2.2.0): Extracting archive
- Installing phpcsstandards/phpcsutils (1.1.1): Extracting archive
- Installing phpcsstandards/phpcsextra (1.4.0): Extracting archive
- Installing composer/spdx-licenses (1.5.9): Extracting archive
- Installing mediawiki/mediawiki-codesniffer (v48.0.0): Extracting archive
- Installing tysonandre/var_representation_polyfill (0.1.3): Extracting archive
- Upgrading symfony/string (v6.4.25 => v7.3.4): Extracting archive
- Upgrading symfony/console (v6.4.25 => v7.3.5): Extracting archive
- Installing sabre/event (5.1.7): Extracting archive
- Installing netresearch/jsonmapper (v4.5.0): Extracting archive
- Installing microsoft/tolerant-php-parser (v0.1.2): Extracting archive
- Installing webmozart/assert (1.12.1): Extracting archive
- Installing phpstan/phpdoc-parser (2.3.0): Extracting archive
- Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
- Installing phpdocumentor/type-resolver (1.10.0): Extracting archive
- Installing phpdocumentor/reflection-docblock (5.6.3): Extracting archive
- Installing felixfbecker/advanced-json-rpc (v3.2.1): Extracting archive
- Installing composer/xdebug-handler (3.0.5): Extracting archive
- Installing phan/phan (5.5.1): Extracting archive
- Installing mediawiki/phan-taint-check-plugin (7.0.0): Extracting archive
- Installing mediawiki/mediawiki-phan-config (0.17.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
- Upgrading symfony/var-dumper (v6.4.25 => v7.3.5): Extracting archive
- Upgrading psy/psysh (v0.12.10 => v0.12.14): Extracting archive
- Installing seld/jsonlint (1.11.0): Extracting archive
- Installing wikimedia/alea (1.0.0): Extracting archive
- Installing hamcrest/hamcrest-php (v2.1.1): Extracting archive
- Installing wmde/hamcrest-html-matchers (v1.1.0): Extracting archive
0/68 [>---------------------------] 0%
10/68 [====>-----------------------] 14%
20/68 [========>-------------------] 29%
30/68 [============>---------------] 44%
40/68 [================>-----------] 58%
50/68 [====================>-------] 73%
59/68 [========================>---] 86%
68/68 [============================] 100%
21 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating optimized autoload files
53 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> MediaWiki\Composer\ComposerVendorHtaccessCreator::onEvent
--- stdout ---
PHP CodeSniffer Config installed_paths set to ../../mediawiki/mediawiki-codesniffer,../../phpcsstandards/phpcsextra,../../phpcsstandards/phpcsutils
--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
"auditReportVersion": 2,
"vulnerabilities": {
"axios": {
"name": "axios",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1097679,
"name": "axios",
"dependency": "axios",
"title": "Axios Cross-Site Request Forgery Vulnerability",
"url": "https://github.com/advisories/GHSA-wf5p-g6vw-rhxx",
"severity": "moderate",
"cwe": [
"CWE-352"
],
"cvss": {
"score": 6.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N"
},
"range": ">=0.8.1 <0.28.0"
},
{
"source": 1103617,
"name": "axios",
"dependency": "axios",
"title": "axios Requests Vulnerable To Possible SSRF and Credential Leakage via Absolute URL",
"url": "https://github.com/advisories/GHSA-jr5f-v2jv-69x6",
"severity": "high",
"cwe": [
"CWE-918"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": "<0.30.0"
},
{
"source": 1108262,
"name": "axios",
"dependency": "axios",
"title": "Axios is vulnerable to DoS attack through lack of data size check",
"url": "https://github.com/advisories/GHSA-4hjh-wcwx-xvwj",
"severity": "high",
"cwe": [
"CWE-770"
],
"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": "<0.30.2"
}
],
"effects": [
"openapi-validator"
],
"range": "<=0.30.1",
"nodes": [
"node_modules/axios"
],
"fixAvailable": {
"name": "chai-openapi-response-validator",
"version": "0.14.1",
"isSemVerMajor": true
}
},
"chai-openapi-response-validator": {
"name": "chai-openapi-response-validator",
"severity": "high",
"isDirect": true,
"via": [
"openapi-validator"
],
"effects": [],
"range": "0.11.2 || >=0.14.2-alpha.0",
"nodes": [
"node_modules/chai-openapi-response-validator"
],
"fixAvailable": {
"name": "chai-openapi-response-validator",
"version": "0.14.1",
"isSemVerMajor": true
}
},
"openapi-validator": {
"name": "openapi-validator",
"severity": "high",
"isDirect": false,
"via": [
"axios"
],
"effects": [
"chai-openapi-response-validator"
],
"range": ">=0.14.2-alpha.0",
"nodes": [
"node_modules/openapi-validator"
],
"fixAvailable": {
"name": "chai-openapi-response-validator",
"version": "0.14.1",
"isSemVerMajor": true
}
}
},
"metadata": {
"vulnerabilities": {
"info": 0,
"low": 0,
"moderate": 0,
"high": 3,
"critical": 0,
"total": 3
},
"dependencies": {
"prod": 1,
"dev": 1786,
"optional": 38,
"peer": 2,
"peerOptional": 0,
"total": 1786
}
}
}
--- end ---
Attempting to npm audit fix
$ /usr/bin/npm audit fix --dry-run --only=dev --json
--- stderr ---
npm WARN invalid config only="dev" set in command line options
npm WARN invalid config Must be one of: null, prod, production
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@wikimedia/codex@2.3.2',
npm WARN EBADENGINE required: { node: '>=20.19.1', npm: '>=10.8.2' },
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@wikimedia/codex-icons@2.3.2',
npm WARN EBADENGINE required: { node: '>=20.19.1', npm: '>=10.8.2' },
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
--- stdout ---
{
"added": 1785,
"removed": 0,
"changed": 0,
"audited": 1786,
"funding": 236,
"audit": {
"auditReportVersion": 2,
"vulnerabilities": {
"axios": {
"name": "axios",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1097679,
"name": "axios",
"dependency": "axios",
"title": "Axios Cross-Site Request Forgery Vulnerability",
"url": "https://github.com/advisories/GHSA-wf5p-g6vw-rhxx",
"severity": "moderate",
"cwe": [
"CWE-352"
],
"cvss": {
"score": 6.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N"
},
"range": ">=0.8.1 <0.28.0"
},
{
"source": 1103617,
"name": "axios",
"dependency": "axios",
"title": "axios Requests Vulnerable To Possible SSRF and Credential Leakage via Absolute URL",
"url": "https://github.com/advisories/GHSA-jr5f-v2jv-69x6",
"severity": "high",
"cwe": [
"CWE-918"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": "<0.30.0"
},
{
"source": 1108262,
"name": "axios",
"dependency": "axios",
"title": "Axios is vulnerable to DoS attack through lack of data size check",
"url": "https://github.com/advisories/GHSA-4hjh-wcwx-xvwj",
"severity": "high",
"cwe": [
"CWE-770"
],
"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": "<0.30.2"
}
],
"effects": [
"openapi-validator"
],
"range": "<=0.30.1",
"nodes": [
"node_modules/axios"
],
"fixAvailable": {
"name": "chai-openapi-response-validator",
"version": "0.14.1",
"isSemVerMajor": true
}
},
"chai-openapi-response-validator": {
"name": "chai-openapi-response-validator",
"severity": "high",
"isDirect": true,
"via": [
"openapi-validator"
],
"effects": [],
"range": "0.11.2 || >=0.14.2-alpha.0",
"nodes": [
"node_modules/chai-openapi-response-validator"
],
"fixAvailable": {
"name": "chai-openapi-response-validator",
"version": "0.14.1",
"isSemVerMajor": true
}
},
"openapi-validator": {
"name": "openapi-validator",
"severity": "high",
"isDirect": false,
"via": [
"axios"
],
"effects": [
"chai-openapi-response-validator"
],
"range": ">=0.14.2-alpha.0",
"nodes": [
"node_modules/openapi-validator"
],
"fixAvailable": {
"name": "chai-openapi-response-validator",
"version": "0.14.1",
"isSemVerMajor": true
}
}
},
"metadata": {
"vulnerabilities": {
"info": 0,
"low": 0,
"moderate": 0,
"high": 3,
"critical": 0,
"total": 3
},
"dependencies": {
"prod": 1,
"dev": 1785,
"optional": 38,
"peer": 2,
"peerOptional": 0,
"total": 1785
}
}
}
}
--- end ---
{"added": 1785, "removed": 0, "changed": 0, "audited": 1786, "funding": 236, "audit": {"auditReportVersion": 2, "vulnerabilities": {"axios": {"name": "axios", "severity": "high", "isDirect": false, "via": [{"source": 1097679, "name": "axios", "dependency": "axios", "title": "Axios Cross-Site Request Forgery Vulnerability", "url": "https://github.com/advisories/GHSA-wf5p-g6vw-rhxx", "severity": "moderate", "cwe": ["CWE-352"], "cvss": {"score": 6.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N"}, "range": ">=0.8.1 <0.28.0"}, {"source": 1103617, "name": "axios", "dependency": "axios", "title": "axios Requests Vulnerable To Possible SSRF and Credential Leakage via Absolute URL", "url": "https://github.com/advisories/GHSA-jr5f-v2jv-69x6", "severity": "high", "cwe": ["CWE-918"], "cvss": {"score": 0, "vectorString": null}, "range": "<0.30.0"}, {"source": 1108262, "name": "axios", "dependency": "axios", "title": "Axios is vulnerable to DoS attack through lack of data size check", "url": "https://github.com/advisories/GHSA-4hjh-wcwx-xvwj", "severity": "high", "cwe": ["CWE-770"], "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": "<0.30.2"}], "effects": ["openapi-validator"], "range": "<=0.30.1", "nodes": ["node_modules/axios"], "fixAvailable": {"name": "chai-openapi-response-validator", "version": "0.14.1", "isSemVerMajor": true}}, "chai-openapi-response-validator": {"name": "chai-openapi-response-validator", "severity": "high", "isDirect": true, "via": ["openapi-validator"], "effects": [], "range": "0.11.2 || >=0.14.2-alpha.0", "nodes": ["node_modules/chai-openapi-response-validator"], "fixAvailable": {"name": "chai-openapi-response-validator", "version": "0.14.1", "isSemVerMajor": true}}, "openapi-validator": {"name": "openapi-validator", "severity": "high", "isDirect": false, "via": ["axios"], "effects": ["chai-openapi-response-validator"], "range": ">=0.14.2-alpha.0", "nodes": ["node_modules/openapi-validator"], "fixAvailable": {"name": "chai-openapi-response-validator", "version": "0.14.1", "isSemVerMajor": true}}}, "metadata": {"vulnerabilities": {"info": 0, "low": 0, "moderate": 0, "high": 3, "critical": 0, "total": 3}, "dependencies": {"prod": 1, "dev": 1785, "optional": 38, "peer": 2, "peerOptional": 0, "total": 1785}}}}
$ /usr/bin/npm audit fix --only=dev
--- stderr ---
npm WARN invalid config only="dev" set in command line options
npm WARN invalid config Must be one of: null, prod, production
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@wikimedia/codex@2.3.2',
npm WARN EBADENGINE required: { node: '>=20.19.1', npm: '>=10.8.2' },
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@wikimedia/codex-icons@2.3.2',
npm WARN EBADENGINE required: { node: '>=20.19.1', npm: '>=10.8.2' },
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN deprecated osenv@0.1.5: This package is no longer supported.
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 @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 supertest@7.1.0: Please upgrade to supertest v7.1.3+, see release notes at https://github.com/forwardemail/supertest/releases/tag/v7.1.3 - maintenance is supported by Forward Email @ https://forwardemail.net
npm WARN deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm WARN deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.1.7: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.1.7: 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 node-domexception@1.0.0: Use your platform's native DOMException instead
npm WARN deprecated superagent@9.0.2: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net
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 1759 packages, and audited 1760 packages in 35s
236 packages are looking for funding
run `npm fund` for details
# npm audit report
axios <=0.30.1
Severity: high
Axios Cross-Site Request Forgery Vulnerability - https://github.com/advisories/GHSA-wf5p-g6vw-rhxx
axios Requests Vulnerable To Possible SSRF and Credential Leakage via Absolute URL - https://github.com/advisories/GHSA-jr5f-v2jv-69x6
Axios is vulnerable to DoS attack through lack of data size check - https://github.com/advisories/GHSA-4hjh-wcwx-xvwj
fix available via `npm audit fix --force`
Will install chai-openapi-response-validator@0.14.1, which is a breaking change
node_modules/axios
openapi-validator >=0.14.2-alpha.0
Depends on vulnerable versions of axios
node_modules/openapi-validator
chai-openapi-response-validator 0.11.2 || >=0.14.2-alpha.0
Depends on vulnerable versions of openapi-validator
node_modules/chai-openapi-response-validator
3 high severity vulnerabilities
To address all issues (including breaking changes), run:
npm audit fix --force
--- end ---
Verifying that tests still pass
$ /usr/bin/npm ci
--- stderr ---
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@wikimedia/codex@2.3.2',
npm WARN EBADENGINE required: { node: '>=20.19.1', npm: '>=10.8.2' },
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: '@wikimedia/codex-icons@2.3.2',
npm WARN EBADENGINE required: { node: '>=20.19.1', npm: '>=10.8.2' },
npm WARN EBADENGINE current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN deprecated osenv@0.1.5: This package is no longer supported.
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 @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 supertest@7.1.0: Please upgrade to supertest v7.1.3+, see release notes at https://github.com/forwardemail/supertest/releases/tag/v7.1.3 - maintenance is supported by Forward Email @ https://forwardemail.net
npm WARN deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm WARN deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.1.7: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.1.7: 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 node-domexception@1.0.0: Use your platform's native DOMException instead
npm WARN deprecated superagent@9.0.2: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net
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 1759 packages, and audited 1760 packages in 58s
236 packages are looking for funding
run `npm fund` for details
3 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 ---
PASS tests/jest/mediawiki.special.block/stores/block.test.js
PASS tests/jest/mediawiki.special.block/BlockLog.test.js
PASS tests/jest/mediawiki.skinning.typeaheadSearch/restSearchClient.test.js
PASS tests/jest/mediawiki.special.block/UserLookup.test.js
PASS tests/jest/mediawiki.special.block/util.test.js
PASS tests/jest/mediawiki.special.block/ExpiryField.test.js
PASS tests/jest/mediawiki.skinning.typeaheadSearch/fetch.test.js
PASS tests/jest/mediawiki.special.block/NamespacesField.test.js
PASS tests/jest/mediawiki.skinning.typeaheadSearch/App.test.js
PASS tests/jest/mediawiki.skinning.typeaheadSearch/instrumentation.test.js
PASS tests/jest/mediawiki.special.block/ReasonField.test.js
PASS tests/jest/mediawiki.special.block/BlockDetailsField.test.js
PASS tests/jest/mediawiki.special.block/AdditionalDetailsField.test.js
PASS tests/jest/mediawiki.special.block/init.test.js
PASS tests/jest/mediawiki.skinning.typeaheadSearch/urlGenerator.test.js
PASS tests/jest/mediawiki.special.block/SpecialBlock.test.js (15.47 s)
Jest: "/src/repo/resources/src/mediawiki.special.block/util.js" coverage threshold for lines (63%) not met: 62.5%
Test Suites: 16 passed, 16 total
Tests: 104 passed, 104 total
Snapshots: 3 passed, 3 total
Time: 24.923 s
Ran all test suites.
--- stdout ---
> test
> grunt lint && npm run doc && npm run jest
Running "eslint:all" (eslint) task
/src/repo/resources/src/jquery/jquery.makeCollapsible.js
441:1 warning Syntax error in namepath: ~'wikipage.collapsibleContent' jsdoc/valid-types
/src/repo/resources/src/mediawiki.action.edit/edit.js
12:1 warning Syntax error in namepath: ~'wikipage.editform' jsdoc/valid-types
/src/repo/resources/src/mediawiki.action/mediawiki.action.view.postEdit.js
21:1 warning Syntax error in namepath: ~'postEdit' jsdoc/valid-types
36:1 warning Syntax error in namepath: ~'postEdit.afterRemoval' jsdoc/valid-types
/src/repo/resources/src/mediawiki.authenticationPopup/index.js
38:1 warning The type 'userinfo' is undefined jsdoc/no-undefined-types
/src/repo/resources/src/mediawiki.base/errorLogger.js
8:1 warning Syntax error in namepath: ~'global.error' jsdoc/valid-types
22:1 warning Syntax error in namepath: ~'error.caught' jsdoc/valid-types
/src/repo/resources/src/mediawiki.base/log.js
14:1 warning Found more than one @return declaration jsdoc/require-returns
14:1 warning Found more than one @return declaration jsdoc/require-returns-check
/src/repo/resources/src/mediawiki.base/mediawiki.base.js
224:1 warning The type 'mediawiki' is undefined jsdoc/no-undefined-types
250:1 warning The type 'mediawiki' is undefined jsdoc/no-undefined-types
/src/repo/resources/src/mediawiki.diff/inlineFormatToggle.js
150:1 warning Syntax error in namepath: ~'wikipage.diff.wikitextDiffBody' jsdoc/valid-types
162:1 warning Syntax error in namepath: ~'wikipage.diff.diffTypeSwitch' jsdoc/valid-types
/src/repo/resources/src/mediawiki.editRecovery/edit.js
184:1 warning Syntax error in namepath: ~'editRecovery.loadEnd' jsdoc/valid-types
/src/repo/resources/src/mediawiki.htmlform/cond-state.js
48:1 warning Found more than one @return declaration jsdoc/require-returns-check
/src/repo/resources/src/mediawiki.htmlform/htmlform.js
5:1 warning Syntax error in namepath: ~'htmlform.enhance' jsdoc/valid-types
/src/repo/resources/src/mediawiki.inspect.js
61:1 warning The type 'mediawiki' is undefined jsdoc/no-undefined-types
91:1 warning The type 'mediawiki' is undefined jsdoc/no-undefined-types
112:2 warning Found more than one @return declaration jsdoc/require-returns
112:2 warning Found more than one @return declaration jsdoc/require-returns-check
121:1 warning The type 'mediawiki' is undefined jsdoc/no-undefined-types
152:1 warning The type 'mediawiki' is undefined jsdoc/no-undefined-types
164:1 warning The type 'mediawiki' is undefined jsdoc/no-undefined-types
175:1 warning The type 'mediawiki' is undefined jsdoc/no-undefined-types
203:1 warning The type 'mediawiki' is undefined jsdoc/no-undefined-types
/src/repo/resources/src/mediawiki.jqueryMsg/mediawiki.jqueryMsg.js
142:1 warning Found more than one @return declaration jsdoc/require-returns
142:1 warning Found more than one @return declaration jsdoc/require-returns-check
/src/repo/resources/src/mediawiki.language.months/months.js
44:1 warning The type 'Months' is undefined jsdoc/no-undefined-types
/src/repo/resources/src/mediawiki.notification.convertmessagebox.js
13:1 warning Syntax error in namepath: (require("mediawiki.notification.convertmessagebox")) jsdoc/valid-types
/src/repo/resources/src/mediawiki.notification/notification.js
20:1 warning Missing JSDoc @param "message" type jsdoc/require-param-type
21:1 warning Missing JSDoc @param "options" type jsdoc/require-param-type
/src/repo/resources/src/mediawiki.page.preview.js
416:1 warning Syntax error in namepath: ~'wikipage.tableOfContents' jsdoc/valid-types
/src/repo/resources/src/mediawiki.page.ready/enableSearchDialog.js
19:21 warning Found non-literal argument in require security/detect-non-literal-require
/src/repo/resources/src/mediawiki.page.ready/ready.js
98:1 warning Syntax error in namepath: ~'wikipage.indicators' jsdoc/valid-types
118:1 warning Syntax error in namepath: ~'wikipage.content' jsdoc/valid-types
139:1 warning Syntax error in namepath: ~'wikipage.categories' jsdoc/valid-types
155:1 warning Syntax error in namepath: ~'wikipage.diff' jsdoc/valid-types
186:1 warning Syntax error in namepath: ~'skin.logout' jsdoc/valid-types
295:21 warning Found non-literal argument in require security/detect-non-literal-require
/src/repo/resources/src/mediawiki.page.watch.ajax/watch-ajax.js
128:1 warning Syntax error in namepath: ~'wikipage.watchlistChange' jsdoc/valid-types
/src/repo/resources/src/mediawiki.rcfilters/Controller.js
330:1 warning Found more than one @return declaration jsdoc/require-returns
330:1 warning Found more than one @return declaration jsdoc/require-returns-check
550:1 warning Syntax error in namepath: ~'RcFilters.highlight.enable' jsdoc/valid-types
/src/repo/resources/src/mediawiki.rcfilters/dm/FilterItem.js
81:1 warning Found more than one @return declaration jsdoc/require-returns
81:1 warning Found more than one @return declaration jsdoc/require-returns-check
335:1 warning The type 'update' is undefined jsdoc/no-undefined-types
351:1 warning The type 'update' is undefined jsdoc/no-undefined-types
366:1 warning The type 'update' is undefined jsdoc/no-undefined-types
/src/repo/resources/src/mediawiki.rcfilters/dm/FiltersViewModel.js
1185:1 warning The type 'searchChange' is undefined jsdoc/no-undefined-types
/src/repo/resources/src/mediawiki.rcfilters/mw.rcfilters.js
176:1 warning Syntax error in namepath: ~'structuredChangeFilters.ui.initialized' jsdoc/valid-types
/src/repo/resources/src/mediawiki.rcfilters/ui/FilterTagMultiselectWidget.js
408:1 warning Syntax error in namepath: ~'RcFilters.popup.open' jsdoc/valid-types
/src/repo/resources/src/mediawiki.searchSuggest/searchSuggest.js
36:1 warning The type 'ResponseMetaData' is undefined jsdoc/no-undefined-types
43:1 warning The type 'ResponseFunction' is undefined jsdoc/no-undefined-types
/src/repo/resources/src/mediawiki.skinning.typeaheadSearch/App.vue
76:3 warning Prop 'router' requires default value to be set vue/require-default-prop
225:1 warning The type 'AbortableSearchFetch' is undefined jsdoc/no-undefined-types
309:1 warning The type 'SearchSubmitEvent' is undefined jsdoc/no-undefined-types
/src/repo/resources/src/mediawiki.skinning.typeaheadSearch/fetch.js
21:1 warning The type 'RequestInit' is undefined jsdoc/no-undefined-types
/src/repo/resources/src/mediawiki.skinning.typeaheadSearch/instrumentation.js
2:1 warning The type 'FetchEndEvent' is undefined jsdoc/no-undefined-types
16:1 warning The type 'SuggestionClickEvent' is undefined jsdoc/no-undefined-types
16:1 warning The type 'SearchSubmitEvent' is undefined jsdoc/no-undefined-types
/src/repo/resources/src/mediawiki.skinning.typeaheadSearch/restSearchClient.js
4:1 warning Syntax error in type: import('./urlGenerator.js').UrlGenerator jsdoc/valid-types
11:1 warning The type 'RestResult' is undefined jsdoc/no-undefined-types
17:1 warning The type 'SearchResult' is undefined jsdoc/no-undefined-types
/src/repo/resources/src/mediawiki.skinning.typeaheadSearch/urlGenerator.js
2:1 warning The type 'Record' is undefined jsdoc/no-undefined-types
9:1 warning The type 'RestResult' is undefined jsdoc/no-undefined-types
9:1 warning The type 'SearchResult' is undefined jsdoc/no-undefined-types
29:1 warning The type 'RestResult' is undefined jsdoc/no-undefined-types
29:1 warning The type 'SearchResult' is undefined jsdoc/no-undefined-types
/src/repo/resources/src/mediawiki.special.apisandbox/ApiSandboxLayout.js
44:1 warning Found more than one @return declaration jsdoc/require-returns
44:1 warning Found more than one @return declaration jsdoc/require-returns-check
/src/repo/resources/src/mediawiki.special.block/init.js
26:1 warning Syntax error in namepath: ~'SpecialBlock.block' jsdoc/valid-types
36:1 warning Syntax error in namepath: ~'SpecialBlock.form' jsdoc/valid-types
/src/repo/resources/src/mediawiki.template.js
26:1 warning The type 'TemplateRenderer' is undefined jsdoc/no-undefined-types
40:1 warning The type 'TemplateRenderFunction' is undefined jsdoc/no-undefined-types
45:1 warning The type 'TemplateCompileFunction' is undefined jsdoc/no-undefined-types
61:1 warning The type 'TemplateCompiler' is undefined jsdoc/no-undefined-types
88:1 warning The type 'TemplateCompiler' is undefined jsdoc/no-undefined-types
107:1 warning The type 'TemplateRenderer' is undefined jsdoc/no-undefined-types
125:1 warning The type 'TemplateRenderer' is undefined jsdoc/no-undefined-types
147:1 warning The type 'TemplateRenderer' is undefined jsdoc/no-undefined-types
/src/repo/resources/src/mediawiki.util/util.js
628:1 warning Syntax error in namepath: ~'util.addPortlet' jsdoc/valid-types
797:1 warning Syntax error in namepath: ~'util.addPortletLink' jsdoc/valid-types
/src/repo/resources/src/mediawiki.widgets.datetime/DateTimeFormatter.js
268:1 warning The type 'FieldSpecificationObject' is undefined jsdoc/no-undefined-types
632:1 warning The type 'CalendarGridData' is undefined jsdoc/no-undefined-types
/src/repo/resources/src/mediawiki.widgets.datetime/DiscordianDateTimeFormatter.js
74:1 warning The type 'FieldSpecificationObject' is undefined jsdoc/no-undefined-types
/src/repo/resources/src/mediawiki.widgets.datetime/ProlepticGregorianDateTimeFormatter.js
306:1 warning The type 'FieldSpecificationObject' is undefined jsdoc/no-undefined-types
/src/repo/resources/src/mediawiki.widgets/mw.widgets.NamespaceInputWidget.js
50:1 warning The type 'DropdownOptions' is undefined jsdoc/no-undefined-types
/src/repo/resources/src/startup/mediawiki.loader.js
61:1 warning Syntax error in namepath: ~'resourceloader.exception' jsdoc/valid-types
/src/repo/tests/qunit/data/testrunner.js
112:2 warning Missing JSDoc @return declaration jsdoc/require-returns
/src/repo/tests/qunit/resources/mediawiki.deflate.test.js
68:5 warning Unused eslint-disable directive (no problems were reported from 'qunit/no-async-in-loops')
/src/repo/tests/selenium/specs/page.js
79:1 warning This line has a length of 103. Maximum allowed is 100 max-len
/src/repo/tests/selenium/wdio-mediawiki/Api.js
65:1 warning Missing JSDoc @param "params" type jsdoc/require-param-type
/src/repo/tests/selenium/wdio-mediawiki/PrometheusFileReporter.js
158:3 warning Found writeFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
173:22 warning Found readdirSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
178:28 warning Found readFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
258:2 warning Found writeFileSync from package "fs" with non literal argument at index 0 security/detect-non-literal-fs-filename
/src/repo/tests/selenium/wdio-mediawiki/Util.js
32:1 warning This line has a length of 103. Maximum allowed is 100 max-len
/src/repo/tests/selenium/wdio-mediawiki/api/Cookies.js
13:1 warning The type 'Iterable' is undefined jsdoc/no-undefined-types
/src/repo/tests/selenium/wdio-mediawiki/wdio-defaults.conf.js
101:1 warning This line has a length of 108. Maximum allowed is 100 max-len
✖ 99 problems (0 errors, 99 warnings)
0 errors and 1 warning potentially fixable with the `--fix` option.
Running "banana:core" (banana) task
>> 1 message directory checked.
Running "banana:botpasswords" (banana) task
>> 1 message directory checked.
Running "banana:codex" (banana) task
>> 1 message directory checked.
Running "banana:datetime" (banana) task
>> 1 message directory checked.
Running "banana:exif" (banana) task
>> 1 message directory checked.
Running "banana:nontranslatable" (banana) task
>> 1 message directory checked.
Running "banana:interwiki" (banana) task
>> 1 message directory checked.
Running "banana:preferences" (banana) task
>> 1 message directory checked.
Running "banana:languageconverter" (banana) task
>> 1 message directory checked.
Running "banana:api" (banana) task
>> 1 message directory checked.
Running "banana:rest" (banana) task
>> 1 message directory checked.
Running "banana:installer" (banana) task
>> 1 message directory checked.
Running "banana:paramvalidator" (banana) task
>> 1 message directory checked.
Running "stylelint:resources" (stylelint) task
>> resources/src/mediawiki.skinning/content.media-dark.less
>> 31:1 ⚠ Unexpected browser feature "prefers-color-scheme" is not supported by Firefox 49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66, Chrome 49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75, Safari 10,11,12,10.1,11.1, Safari on iOS 10.0-10.2,10.3,11.0-11.2,11.3-11.4,12.0-12.1,12.2-12.5 plugin/no-unsupported-browser-features
>>
>> ⚠ 1 problem (0 errors, 1 warning)
⚠ 1 warning
>> Linted 215 files without errors
Running "stylelint:config" (stylelint) task
>> Linted 1 files without errors
Done.
> doc
> jsdoc -c jsdoc.json
> jest
> jest --config tests/jest/jest.config.js
------------------------------------|---------|----------|---------|---------|---------------------------------------------------------------------------------------------------------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
------------------------------------|---------|----------|---------|---------|---------------------------------------------------------------------------------------------------------------------
All files | 92.43 | 89.94 | 77.77 | 92.43 |
mediawiki.skinning.typeaheadSearch | 86.66 | 83.63 | 58.06 | 86.66 |
App.vue | 76.41 | 69.23 | 16.66 | 76.41 | 176,211-213,218-221,229-252,256-263,272-282,292-305,312-313,317-321,325,329-332,337-340,344-348,353,358-359,365-367
TypeaheadSearchWrapper.vue | 94.24 | 66.66 | 100 | 94.24 | 54-61
fetch.js | 100 | 87.5 | 75 | 100 | 31
instrumentation.js | 82.82 | 100 | 60 | 82.82 | 4-13,18-24
restSearchClient.js | 99.3 | 82.35 | 100 | 99.3 | 124
urlGenerator.js | 100 | 100 | 100 | 100 |
mediawiki.special.block | 89.51 | 93.22 | 82.35 | 89.51 |
SpecialBlock.vue | 93.89 | 93.18 | 72.72 | 93.89 | 245-254,297-302,308-322,440-441,452-454
init.js | 100 | 100 | 100 | 100 |
util.js | 62.5 | 90.9 | 100 | 62.5 | 66-107
mediawiki.special.block/components | 95.12 | 91.93 | 87.8 | 95.12 |
AdditionalDetailsField.vue | 100 | 80 | 100 | 100 | 68
BlockDetailsField.vue | 100 | 100 | 100 | 100 |
BlockLog.vue | 98.94 | 100 | 83.33 | 98.94 | 337-340,401
BlockTypeField.vue | 95.04 | 50 | 100 | 95.04 | 73-77
ConfirmationDialog.vue | 96.34 | 100 | 50 | 96.34 | 70-72
ExpiryField.vue | 95.07 | 89.47 | 100 | 95.07 | 145-146,148-149,177-186,245-246
NamespacesField.vue | 90.42 | 88.88 | 66.66 | 90.42 | 60-68
PagesField.vue | 70.06 | 50 | 50 | 70.06 | 46-47,56-57,72-79,88-90,97-118,127-133
ReasonField.vue | 97.22 | 93.75 | 100 | 97.22 | 101-104
UserLookup.vue | 97.74 | 95.23 | 100 | 97.74 | 145-147,196-198,231-232
ValidatingTextInput.js | 100 | 100 | 100 | 100 |
mediawiki.special.block/stores | 95.66 | 87.5 | 90 | 95.66 |
block.js | 95.66 | 87.5 | 90 | 95.66 | 323-324,433-434,436-437,457-458,461-462,465-466,480-495
------------------------------------|---------|----------|---------|---------|---------------------------------------------------------------------------------------------------------------------
--- end ---
$ node_modules/.bin/jest -u
--- stderr ---
FAIL tests/qunit/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js
● Test suite failed to run
Cannot find module 'mediawiki.rcfilters.filters.ui' from 'tests/qunit/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js'
1 | /* eslint-disable camelcase */
2 | ( function () {
> 3 | const rcfilters = require( 'mediawiki.rcfilters.filters.ui' );
| ^
4 | const filterDefinition = [ {
5 | name: 'group1',
6 | type: 'send_unselected_if_any',
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (tests/qunit/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js:3:20)
at Object.<anonymous> (tests/qunit/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js:1548:2)
FAIL tests/qunit/resources/jquery.tablesorter.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'jquery.tablesorter', QUnit.newMwEnvironment( {
| ^
2 | beforeEach: function () {
3 | this.liveMonths = mw.language.months;
4 | mw.language.months = {
at Object.<anonymous> (tests/qunit/resources/jquery.tablesorter.test.js:1:61)
FAIL tests/qunit/resources/mediawiki.jqueryMsg.test.js
● Test suite failed to run
Cannot find module 'mediawiki.jqueryMsg' from 'tests/qunit/resources/mediawiki.jqueryMsg.test.js'
1 | ( function () {
> 2 | const jqueryMsg = require( 'mediawiki.jqueryMsg' ).test;
| ^
3 |
4 | /* eslint-disable camelcase */
5 | let formatText, formatParse, specialCharactersPageName, expectedListUsers,
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (tests/qunit/resources/mediawiki.jqueryMsg.test.js:2:20)
at Object.<anonymous> (tests/qunit/resources/mediawiki.jqueryMsg.test.js:1467:2)
FAIL tests/qunit/resources/mediawiki.language.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
2 | 'use strict';
3 |
> 4 | QUnit.module( 'mediawiki.language', QUnit.newMwEnvironment( {
| ^
5 | beforeEach: function () {
6 | this.userLang = mw.config.get( 'wgUserLanguage' );
7 | this.liveLangData = mw.language.data;
at QUnit (tests/qunit/resources/mediawiki.language.test.js:4:2)
at Object.<anonymous> (tests/qunit/resources/mediawiki.language.test.js:914:2)
FAIL tests/qunit/resources/mediawiki.util/util.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.util', QUnit.newMwEnvironment( {
| ^
2 | messages: {
3 | // Used by accessKeyLabel in test for addPortletLink
4 | brackets: '[$1]',
at Object.<anonymous> (tests/qunit/resources/mediawiki.util/util.test.js:1:57)
FAIL tests/qunit/resources/startup/mw.loader.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | ( function () {
> 2 | QUnit.module( 'mw.loader', QUnit.newMwEnvironment( {
| ^
3 | beforeEach: function ( assert ) {
4 | // Expose for load.mock.php
5 | mw.loader.testFail = function ( reason ) {
at QUnit (tests/qunit/resources/startup/mw.loader.test.js:2:2)
at Object.<anonymous> (tests/qunit/resources/startup/mw.loader.test.js:1236:2)
FAIL tests/qunit/resources/mediawiki.Title.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
75 | };
76 |
> 77 | QUnit.module( 'mediawiki.Title', QUnit.newMwEnvironment( {
| ^
78 | // mw.Title relies on these three config vars
79 | // Restore them after each test run
80 | config: {
at QUnit (tests/qunit/resources/mediawiki.Title.test.js:77:2)
at Object.<anonymous> (tests/qunit/resources/mediawiki.Title.test.js:771:2)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingIPRevealStep.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/CheckUser/modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingIPRevealStep.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
1 | 'use strict';
2 |
> 3 | const TempAccountsOnboardingIPRevealStep = require( '../../../../modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingIPRevealStep.vue' ),
| ^
4 | TempAccountsOnboardingPreference = require( '../../../../modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingPreference.vue' ),
5 | utils = require( '@vue/test-utils' ),
6 | { mockJSConfig, mockApiSaveOptions, waitForAndExpectTextToExistInElement, mockStorageSessionGetValue, mockStorageSessionGetValues, getSaveGlobalPreferenceButton } = require( '../../utils.js' );
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingIPRevealStep.test.js:3:44)
FAIL tests/qunit/resources/jquery.makeCollapsible.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | /* eslint-disable no-jquery/no-class-state */
> 2 | QUnit.module( 'jquery.makeCollapsible', () => {
| ^
3 | const loremIpsum = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.';
4 |
5 | /**
at Object.QUnit (tests/qunit/resources/jquery.makeCollapsible.test.js:2:1)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/mmv.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/mmv.test.js'
However, Jest was able to find:
'./mmv.bootstrap.test.js'
'./mmv.Config.test.js'
'./mmv.EmbedFileFormatter.test.js'
'./mmv.HtmlUtils.test.js'
'./mmv.lightboximage.test.js'
'./mmv.lightboxinterface.test.js'
'./mmv.test.js'
'./mmv.testhelpers.js'
'./mmv.ThumbnailWidthCalculator.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
> 1 | const { MultimediaViewer } = require( 'mmv' );
| ^
2 | const { getMultimediaViewer } = require( './mmv.testhelpers.js' );
3 | const { MultimediaViewerBootstrap } = require( 'mmv.bootstrap' );
4 | const router = require( 'mediawiki.router' );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/mmv.test.js:1:30)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardBody.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardBody.test.js'
1 | 'use strict';
2 |
> 3 | const { shallowMount } = require( 'vue-test-utils' );
| ^
4 | const UserCardBody = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/components/UserCardBody.vue' );
5 |
6 | QUnit.module( 'ext.checkUser.userInfoCard.UserCardBody', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardBody.test.js:3:26)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingDialog.test.js
● Test suite failed to run
ReferenceError: /src/repo/extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingDialog.test.js: The module factory of `jest.mock()` is not allowed to reference any out-of-scope variables.
Invalid variable access: useComputedDirectionMock
Allowed objects: AbortController, AbortSignal, AggregateError, Array, ArrayBuffer, Atomics, BigInt, BigInt64Array, BigUint64Array, Blob, Boolean, BroadcastChannel, Buffer, ByteLengthQueuingStrategy, CompressionStream, CountQueuingStrategy, Crypto, CryptoKey, CustomEvent, DOMException, DataView, Date, DecompressionStream, Error, EvalError, Event, EventTarget, File, FinalizationRegistry, Float32Array, Float64Array, FormData, Function, Generator, GeneratorFunction, Headers, Infinity, Int16Array, Int32Array, Int8Array, InternalError, Intl, JSON, Map, Math, MessageChannel, MessageEvent, MessagePort, NaN, Number, Object, Performance, PerformanceEntry, PerformanceMark, PerformanceMeasure, PerformanceObserver, PerformanceObserverEntryList, PerformanceResourceTiming, Promise, Proxy, RangeError, ReadableByteStreamController, ReadableStream, ReadableStreamBYOBReader, ReadableStreamBYOBRequest, ReadableStreamDefaultController, ReadableStreamDefaultReader, ReferenceError, Reflect, RegExp, Request, Response, Set, SharedArrayBuffer, String, SubtleCrypto, Symbol, SyntaxError, TextDecoder, TextDecoderStream, TextEncoder, TextEncoderStream, TransformStream, TransformStreamDefaultController, TypeError, URIError, URL, URLSearchParams, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray, WeakMap, WeakRef, WeakSet, WebAssembly, WritableStream, WritableStreamDefaultController, WritableStreamDefaultWriter, __dirname, __filename, arguments, atob, btoa, clearImmediate, clearInterval, clearTimeout, console, crypto, decodeURI, decodeURIComponent, encodeURI, encodeURIComponent, escape, eval, expect, exports, fetch, global, globalThis, isFinite, isNaN, jest, module, parseFloat, parseInt, performance, process, queueMicrotask, require, setImmediate, setInterval, setTimeout, structuredClone, undefined, unescape.
Note: This is a precaution to guard against uninitialized mock variables. If it is ensured that the mock is required lazily, variable names prefixed with `mock` (case insensitive) are permitted.
15 |
16 | return Object.assign(
> 17 | { __esModule: true }, originalModule, { useComputedDirection: useComputedDirectionMock }
| ^^^^^^^^^^^^^^^^^^^^^^^^
18 | );
19 | } );
20 |
at File.buildCodeFrameError (node_modules/@babel/core/src/transformation/file/file.ts:257:12)
at NodePath.buildError [as buildCodeFrameError] (node_modules/@babel/traverse/src/path/index.ts:157:21)
at call (node_modules/@babel/traverse/src/visitors.ts:303:14)
at NodePath.call [as _call] (node_modules/@babel/traverse/src/path/context.ts:36:20)
at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitMultiple] (node_modules/@babel/traverse/src/context.ts:99:17)
at TraversalContext.visitMultiple [as visit] (node_modules/@babel/traverse/src/context.ts:178:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at NodePath.visit (node_modules/@babel/traverse/src/path/context.ts:104:33)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:109:19)
at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:180:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
at transformFile (node_modules/@babel/core/src/transformation/index.ts:119:15)
at transformFile.next (<anonymous>)
at transformFile (node_modules/@babel/core/src/transformation/index.ts:49:12)
at run.next (<anonymous>)
at transform (node_modules/@babel/core/src/transform.ts:29:20)
at transform.next (<anonymous>)
at evaluateSync (node_modules/gensync/index.js:251:28)
at sync (node_modules/gensync/index.js:89:14)
at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:545:31)
at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:674:40)
at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:726:19)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/ipReveal.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.tempAccounts/ipReveal.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/ipReveal.test.js'
1 | 'use strict';
2 |
> 3 | const ipReveal = require( 'ext.checkUser.tempAccounts/ipReveal.js' );
| ^
4 | const { makeTempUserLink, waitUntilElementDisappears } = require( './utils.js' );
5 | const ipRevealUtils = require( 'ext.checkUser.tempAccounts/ipRevealUtils.js' );
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/ipReveal.test.js:3:18)
FAIL tests/jest/mediawiki.special.block/SpecialBlock.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/resources/src/mediawiki.special.block/SpecialBlock.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
4 | const { createTestingPinia } = require( '@pinia/testing' );
5 |
> 6 | const SpecialBlock = require( '../../../resources/src/mediawiki.special.block/SpecialBlock.vue' );
| ^
7 |
8 | /**
9 | * Mount the SpecialBlock component with the default configuration,
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (tests/jest/mediawiki.special.block/SpecialBlock.setup.js:6:22)
at Object.require (tests/jest/mediawiki.special.block/SpecialBlock.test.js:5:29)
FAIL tests/qunit/resources/mediawiki.api/mediawiki.api.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.api', ( hooks ) => {
| ^
2 | const originalFormData = window.FormData;
3 | const originalMwVersion = mw.config.get( 'wgVersion' );
4 | hooks.beforeEach( function () {
at Object.<anonymous> (tests/qunit/resources/mediawiki.api/mediawiki.api.test.js:1:45)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/mmv.bootstrap.test.js
● Test suite failed to run
Cannot find module 'mmv.bootstrap' from 'extensions/MultimediaViewer/tests/qunit/mmv/mmv.bootstrap.test.js'
> 1 | const { MultimediaViewerBootstrap } = require( 'mmv.bootstrap' );
| ^
2 | const { asyncMethod, waitForAsync, getMultimediaViewer } = require( './mmv.testhelpers.js' );
3 |
4 | QUnit.module( 'mmv.bootstrap', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/mmv.bootstrap.test.js:1:39)
FAIL extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/secureEnclave.test.js
● Test suite failed to run
Cannot find module 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/secureEnclave.js' from 'extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/secureEnclave.test.js'
> 1 | const useSecureEnclave = require( 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/secureEnclave.js' );
| ^
2 | const config = require( 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/config.json' );
3 |
4 | QUnit.module( 'ext.confirmEdit.hCaptcha.secureEnclave', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/secureEnclave.test.js:1:105)
FAIL extensions/VisualEditor/modules/ve-mw/tests/dm/models/ve.dm.MWTemplateSpecModel.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | {
> 2 | QUnit.module( 've.dm.MWTemplateSpecModel' );
| ^
3 |
4 | /**
5 | * @param {string[]} [parameterNames]
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/dm/models/ve.dm.MWTemplateSpecModel.test.js:2:2)
FAIL tests/qunit/resources/mediawiki.Uri.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.Uri', ( hooks ) => {
| ^
2 | hooks.beforeEach( function () {
3 | this.sandbox.replace( mw, 'Uri', mw.UriRelative( 'http://example.org/w/index.php' ) );
4 | } );
at Object.<anonymous> (tests/qunit/resources/mediawiki.Uri.test.js:1:45)
FAIL tests/qunit/resources/mediawiki.rcfilters/dm.SavedQueriesModel.test.js
● Test suite failed to run
Cannot find module 'mediawiki.rcfilters.filters.ui' from 'tests/qunit/resources/mediawiki.rcfilters/dm.SavedQueriesModel.test.js'
1 | /* eslint-disable camelcase */
2 | ( function () {
> 3 | const rcfilters = require( 'mediawiki.rcfilters.filters.ui' );
| ^
4 | const filterDefinition = [ {
5 | name: 'group1',
6 | type: 'send_unselected_if_any',
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (tests/qunit/resources/mediawiki.rcfilters/dm.SavedQueriesModel.test.js:3:20)
at Object.<anonymous> (tests/qunit/resources/mediawiki.rcfilters/dm.SavedQueriesModel.test.js:608:2)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/SpecialBlock.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.tempAccounts/SpecialBlock.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/SpecialBlock.test.js'
1 | 'use strict';
2 |
> 3 | const specialBlock = require( 'ext.checkUser.tempAccounts/SpecialBlock.js' );
| ^
4 | const { waitUntilElementDisappears, waitUntilElementAppears } = require( './utils.js' );
5 |
6 | let server;
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/SpecialBlock.test.js:3:22)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.GuessedThumbnailInfo.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.GuessedThumbnailInfo.test.js'
However, Jest was able to find:
'./mmv.provider.Api.test.js'
'./mmv.provider.GuessedThumbnailInfo.test.js'
'./mmv.provider.Image.test.js'
'./mmv.provider.ImageInfo.test.js'
'./mmv.provider.ThumbnailInfo.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { GuessedThumbnailInfo } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.provider.GuessedThumbnailInfo', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.GuessedThumbnailInfo.test.js:18:34)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.suggestedInvestigations/components/ChangeInvestigationStatusDialog.test.js
● Test suite failed to run
ReferenceError: /src/repo/extensions/CheckUser/tests/jest/utils.js: The module factory of `jest.mock()` is not allowed to reference any out-of-scope variables.
Invalid variable access: byteLength
Allowed objects: AbortController, AbortSignal, AggregateError, Array, ArrayBuffer, Atomics, BigInt, BigInt64Array, BigUint64Array, Blob, Boolean, BroadcastChannel, Buffer, ByteLengthQueuingStrategy, CompressionStream, CountQueuingStrategy, Crypto, CryptoKey, CustomEvent, DOMException, DataView, Date, DecompressionStream, Error, EvalError, Event, EventTarget, File, FinalizationRegistry, Float32Array, Float64Array, FormData, Function, Generator, GeneratorFunction, Headers, Infinity, Int16Array, Int32Array, Int8Array, InternalError, Intl, JSON, Map, Math, MessageChannel, MessageEvent, MessagePort, NaN, Number, Object, Performance, PerformanceEntry, PerformanceMark, PerformanceMeasure, PerformanceObserver, PerformanceObserverEntryList, PerformanceResourceTiming, Promise, Proxy, RangeError, ReadableByteStreamController, ReadableStream, ReadableStreamBYOBReader, ReadableStreamBYOBRequest, ReadableStreamDefaultController, ReadableStreamDefaultReader, ReferenceError, Reflect, RegExp, Request, Response, Set, SharedArrayBuffer, String, SubtleCrypto, Symbol, SyntaxError, TextDecoder, TextDecoderStream, TextEncoder, TextEncoderStream, TransformStream, TransformStreamDefaultController, TypeError, URIError, URL, URLSearchParams, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray, WeakMap, WeakRef, WeakSet, WebAssembly, WritableStream, WritableStreamDefaultController, WritableStreamDefaultWriter, __dirname, __filename, arguments, atob, btoa, clearImmediate, clearInterval, clearTimeout, console, crypto, decodeURI, decodeURIComponent, encodeURI, encodeURIComponent, escape, eval, expect, exports, fetch, global, globalThis, isFinite, isNaN, jest, module, parseFloat, parseInt, performance, process, queueMicrotask, require, setImmediate, setInterval, setTimeout, structuredClone, undefined, unescape.
Note: This is a precaution to guard against uninitialized mock variables. If it is ensured that the mock is required lazily, variable names prefixed with `mock` (case insensitive) are permitted.
187 | const byteLength = jest.fn();
188 | jest.mock( 'mediawiki.String', () => ( {
> 189 | byteLength: byteLength
| ^^^^^^^^^^
190 | } ), { virtual: true } );
191 | return byteLength;
192 | }
3 | const utils = require( '@vue/test-utils' ),
4 | { nextTick } = require( 'vue' ),
> 5 | { waitFor, mockByteLength } = require( '../../utils.js' );
| ^
6 |
7 | // Need to run this here as the import of ChangeInvestigationStatusDialog.vue
8 | // without mediawiki.String defined causes errors in running these tests.
at File.buildCodeFrameError (node_modules/@babel/core/src/transformation/file/file.ts:257:12)
at NodePath.buildError [as buildCodeFrameError] (node_modules/@babel/traverse/src/path/index.ts:157:21)
at call (node_modules/@babel/traverse/src/visitors.ts:303:14)
at NodePath.call [as _call] (node_modules/@babel/traverse/src/path/context.ts:36:20)
at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitMultiple] (node_modules/@babel/traverse/src/context.ts:99:17)
at TraversalContext.visitMultiple [as visit] (node_modules/@babel/traverse/src/context.ts:178:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at NodePath.visit (node_modules/@babel/traverse/src/path/context.ts:104:33)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:109:19)
at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:180:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at NodePath.visit (node_modules/@babel/traverse/src/path/context.ts:104:33)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitMultiple] (node_modules/@babel/traverse/src/context.ts:99:17)
at TraversalContext.visitMultiple [as visit] (node_modules/@babel/traverse/src/context.ts:178:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at NodePath.visit (node_modules/@babel/traverse/src/path/context.ts:104:33)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:109:19)
at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:180:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
at transformFile (node_modules/@babel/core/src/transformation/index.ts:119:15)
at transformFile.next (<anonymous>)
at transformFile (node_modules/@babel/core/src/transformation/index.ts:49:12)
at run.next (<anonymous>)
at transform (node_modules/@babel/core/src/transform.ts:29:20)
at transform.next (<anonymous>)
at evaluateSync (node_modules/gensync/index.js:251:28)
at sync (node_modules/gensync/index.js:89:14)
at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:545:31)
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 (extensions/CheckUser/tests/jest/ext.checkUser.suggestedInvestigations/components/ChangeInvestigationStatusDialog.test.js:5:32)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingPreference.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/CheckUser/modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingPreference.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
1 | 'use strict';
2 |
> 3 | const TempAccountsOnboardingPreference = require( '../../../../modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingPreference.vue' ),
| ^
4 | utils = require( '@vue/test-utils' ),
5 | { mockApiSaveOptions, waitFor, waitForAndExpectTextToExistInElement, getSaveGlobalPreferenceButton, mockJSConfig } = require( '../../utils.js' );
6 |
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingPreference.test.js:3:42)
FAIL skins/Vector/tests/jest/tableOfContents.test.js
● Test suite failed to run
Cannot find module 'mustache' from 'skins/Vector/tests/jest/tableOfContents.test.js'
> 1 | const mustache = require( 'mustache' );
| ^
2 | const fs = require( 'fs' );
3 | const tableOfContentsTemplate = fs.readFileSync( 'includes/templates/TableOfContents.mustache', 'utf8' );
4 | const tableOfContentsContentsTemplate = fs.readFileSync( 'includes/templates/TableOfContents__list.mustache', 'utf8' );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (skins/Vector/tests/jest/tableOfContents.test.js:1:39)
FAIL extensions/VisualEditor/modules/ve-mw/tests/dm/models/ve.dm.MWTemplateModel.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
21 | };
22 |
> 23 | QUnit.module( 've.dm.MWTemplateModel' );
| ^
24 |
25 | /**
26 | * Create a new MWTemplateModel initialized with a static transclusion data fixture.
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/dm/models/ve.dm.MWTemplateModel.test.js:23:2)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/mmv.EmbedFileFormatter.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/mmv.EmbedFileFormatter.test.js'
However, Jest was able to find:
'./mmv.bootstrap.test.js'
'./mmv.Config.test.js'
'./mmv.EmbedFileFormatter.test.js'
'./mmv.HtmlUtils.test.js'
'./mmv.lightboximage.test.js'
'./mmv.lightboxinterface.test.js'
'./mmv.test.js'
'./mmv.testhelpers.js'
'./mmv.ThumbnailWidthCalculator.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
> 1 | const { License, ImageModel } = require( 'mmv' );
| ^
2 | const { EmbedFileFormatter } = require( 'mmv.ui.reuse' );
3 |
4 | QUnit.module( 'mmv.EmbedFileFormatter', QUnit.newMwEnvironment() );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/mmv.EmbedFileFormatter.test.js:1:33)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/initOnLoad.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.tempAccounts/initOnLoad.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/initOnLoad.test.js'
1 | 'use strict';
2 |
> 3 | const initOnLoad = require( 'ext.checkUser.tempAccounts/initOnLoad.js' );
| ^
4 | const { makeTempUserLink, waitUntilElementCount } = require( './utils.js' );
5 | const Utils = require( 'ext.checkUser.tempAccounts/ipRevealUtils.js' );
6 | const { getRevisionId, getLogId } = require( 'ext.checkUser.tempAccounts/ipReveal.js' );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/initOnLoad.test.js:3:20)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.embed.test.js
● Test suite failed to run
Cannot find module 'mmv.ui.reuse' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.embed.test.js'
16 | */
17 |
> 18 | const { Embed, Utils } = require( 'mmv.ui.reuse' );
| ^
19 |
20 | const $qf = $( '#qunit-fixture' );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.embed.test.js:18:26)
FAIL extensions/VisualEditor/modules/ve-mw/tests/preinit/ve.utils.parsoid.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.utils.parsoid', ve.test.utils.newMwEnvironment() );
| ^
9 |
10 | QUnit.test( 'reduplicateStyles/deduplicateStyles', ( assert ) => {
11 | // Test cases based on this page and the templates there:
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/preinit/ve.utils.parsoid.test.js:8:1)
FAIL extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ve/ve.init.mw.HCaptchaOnLoadHandler.test.js
● Test suite failed to run
Cannot find module 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/utils.js' from 'extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ve/ve.init.mw.HCaptchaOnLoadHandler.test.js'
> 1 | const hCaptchaUtils = require( 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/utils.js' );
| ^
2 | const hCaptchaOnLoadHandler = require( 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/ve/ve.init.mw.HCaptchaOnLoadHandler.js' );
3 | const hCaptchaConfig = require( 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/config.json' );
4 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ve/ve.init.mw.HCaptchaOnLoadHandler.test.js:1:94)
FAIL tests/qunit/resources/mediawiki.user.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.user', QUnit.newMwEnvironment(), ( hooks ) => {
| ^
2 | hooks.beforeEach( function () {
3 | this.server = this.sandbox.useFakeServer();
4 | this.server.respondImmediately = true;
at Object.<anonymous> (tests/qunit/resources/mediawiki.user.test.js:1:72)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/getUsersBlockForm.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser/checkuser/getUsersBlockForm.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/getUsersBlockForm.test.js'
1 | 'use strict';
2 |
> 3 | const getUsersBlockForm = require( 'ext.checkUser/checkuser/getUsersBlockForm.js' );
| ^
4 |
5 | QUnit.module( 'ext.checkUser.checkuser.getUsersBlockForm', QUnit.newMwEnvironment() );
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/getUsersBlockForm.test.js:3:27)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardMenu.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardMenu.test.js'
1 | 'use strict';
2 |
> 3 | const { shallowMount } = require( 'vue-test-utils' );
| ^
4 | const UserCardMenu = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/components/UserCardMenu.vue' );
5 |
6 | QUnit.module( 'ext.checkUser.userInfoCard.UserCardMenu', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardMenu.test.js:3:26)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/util.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/util.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/util.test.js'
4 | processEditCountByDay,
5 | parseMediaWikiTimestamp
> 6 | } = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/util.js' );
| ^
7 |
8 | QUnit.module( 'ext.checkUser.userInfoCard.util', QUnit.newMwEnvironment() );
9 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/util.test.js:6:5)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.ImageInfo.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.ImageInfo.test.js'
However, Jest was able to find:
'./mmv.provider.Api.test.js'
'./mmv.provider.GuessedThumbnailInfo.test.js'
'./mmv.provider.Image.test.js'
'./mmv.provider.ImageInfo.test.js'
'./mmv.provider.ThumbnailInfo.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { ImageInfo } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.provider.ImageInfo', QUnit.newMwEnvironment( {
21 | // mw.Title relies on these three config vars
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.ImageInfo.test.js:18:23)
FAIL tests/qunit/resources/mediawiki.base/mediawiki.base.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.base', ( hooks ) => {
| ^
2 | hooks.beforeEach( function () {
3 | this.clock = this.sandbox.useFakeTimers();
4 | } );
at Object.<anonymous> (tests/qunit/resources/mediawiki.base/mediawiki.base.test.js:1:46)
FAIL tests/qunit/resources/mediawiki.rcfilters/UriProcessor.test.js
● Test suite failed to run
Cannot find module 'mediawiki.rcfilters.filters.ui' from 'tests/qunit/resources/mediawiki.rcfilters/UriProcessor.test.js'
2 | /* eslint no-underscore-dangle: "off" */
3 | ( function () {
> 4 | const rcfilters = require( 'mediawiki.rcfilters.filters.ui' );
| ^
5 | const mockFilterStructure = [ {
6 | name: 'group1',
7 | title: 'Group 1',
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (tests/qunit/resources/mediawiki.rcfilters/UriProcessor.test.js:4:20)
at Object.<anonymous> (tests/qunit/resources/mediawiki.rcfilters/UriProcessor.test.js:309:2)
FAIL extensions/WikiEditor/tests/qunit/ext.wikiEditor.toolbar.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'ext.wikiEditor.toolbar', ( hooks ) => {
| ^
2 | hooks.beforeEach( function () {
3 | const $target = $( '<textarea>' )
4 | .attr( 'id', 'wpTextBox1' )
at Object.<anonymous> (extensions/WikiEditor/tests/qunit/ext.wikiEditor.toolbar.test.js:1:54)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingIPInfoStep.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/CheckUser/modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingIPInfoStep.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
1 | 'use strict';
2 |
> 3 | const TempAccountsOnboardingIPInfoStep = require( '../../../../modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingIPInfoStep.vue' ),
| ^
4 | utils = require( '@vue/test-utils' ),
5 | { mockApiSaveOptions, waitForAndExpectTextToExistInElement, mockJSConfig, mockStorageSessionGetValue, getSaveGlobalPreferenceButton } = require( '../../utils.js' );
6 |
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingIPInfoStep.test.js:3:42)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/mmv.HtmlUtils.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/mmv.HtmlUtils.test.js'
However, Jest was able to find:
'./mmv.bootstrap.test.js'
'./mmv.Config.test.js'
'./mmv.EmbedFileFormatter.test.js'
'./mmv.HtmlUtils.test.js'
'./mmv.lightboximage.test.js'
'./mmv.lightboxinterface.test.js'
'./mmv.test.js'
'./mmv.testhelpers.js'
'./mmv.ThumbnailWidthCalculator.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { HtmlUtils } = require( 'mmv' );
| ^
19 |
20 | /* eslint-disable no-jquery/no-parse-html-literal */
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/mmv.HtmlUtils.test.js:18:23)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/mmv.lightboxinterface.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/mmv.lightboxinterface.test.js'
However, Jest was able to find:
'./mmv.bootstrap.test.js'
'./mmv.Config.test.js'
'./mmv.EmbedFileFormatter.test.js'
'./mmv.HtmlUtils.test.js'
'./mmv.lightboximage.test.js'
'./mmv.lightboxinterface.test.js'
'./mmv.test.js'
'./mmv.testhelpers.js'
'./mmv.ThumbnailWidthCalculator.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
> 1 | const { LightboxInterface } = require( 'mmv' );
| ^
2 | const { getMultimediaViewer } = require( './mmv.testhelpers.js' );
3 |
4 | let oldScrollTo;
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/mmv.lightboxinterface.test.js:1:31)
FAIL tests/qunit/resources/mediawiki.DateFormatter/DateFormatter.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
9 | const norm = ( str ) => typeof str === 'string' ? str.replaceAll( '\u2009', ' ' ) : str;
10 |
> 11 | QUnit.module( 'mediawiki.DateFormatter static functions', ( hooks ) => {
| ^
12 | let userOptions;
13 |
14 | function fakeOptionsGet( key, fallback ) {
at Object.QUnit (tests/qunit/resources/mediawiki.DateFormatter/DateFormatter.test.js:11:1)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/initOnHook.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.tempAccounts/initOnHook.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/initOnHook.test.js'
1 | 'use strict';
2 |
> 3 | const initOnHook = require( 'ext.checkUser.tempAccounts/initOnHook.js' );
| ^
4 | const { makeTempUserLink, waitUntilElementCount } = require( './utils.js' );
5 | const Utils = require( 'ext.checkUser.tempAccounts/ipRevealUtils.js' );
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/initOnHook.test.js:3:20)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser/investigate/blockform.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser/investigate/blockform.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser/investigate/blockform.test.js'
1 | 'use strict';
2 |
> 3 | const addBlockForm = require( 'ext.checkUser/investigate/blockform.js' );
| ^
4 |
5 | QUnit.module( 'ext.checkUser.investigate.blockform', QUnit.newMwEnvironment() );
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser/investigate/blockform.test.js:3:22)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.Image.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.Image.test.js'
However, Jest was able to find:
'./mmv.model.Image.test.js'
'./mmv.model.License.test.js'
'./mmv.model.Repo.test.js'
'./mmv.model.TaskQueue.test.js'
'./mmv.model.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { ImageModel, License } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.model.Image', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.Image.test.js:18:33)
FAIL tests/jest/mediawiki.special.block/stores/block.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/resources/src/mediawiki.special.block/SpecialBlock.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
4 | const { createTestingPinia } = require( '@pinia/testing' );
5 |
> 6 | const SpecialBlock = require( '../../../resources/src/mediawiki.special.block/SpecialBlock.vue' );
| ^
7 |
8 | /**
9 | * Mount the SpecialBlock component with the default configuration,
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (tests/jest/mediawiki.special.block/SpecialBlock.setup.js:6:22)
at Object.require (tests/jest/mediawiki.special.block/stores/block.test.js:6:29)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.metadataPanel.test.js
● Test suite failed to run
Cannot find module 'mmv.bootstrap' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.metadataPanel.test.js'
> 1 | const { Config } = require( 'mmv.bootstrap' );
| ^
2 | const { MetadataPanel, License } = require( 'mmv' );
3 |
4 | const mwMessagesExists = mw.messages.exists;
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.metadataPanel.test.js:1:20)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.dm.MWReferenceNode.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | 'use strict';
2 |
> 3 | QUnit.module( 've.dm.MWReferenceNode (Cite)', ve.test.utils.newMwEnvironment() );
| ^
4 |
5 | QUnit.test( 'makeListKey', ( assert ) => {
6 | const internalList = { getNextUniqueNumber: () => 7 };
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.dm.MWReferenceNode.test.js:3:1)
FAIL skins/MinervaNeue/tests/qunit/skins.minerva.scripts/TitleUtil.test.js
● Test suite failed to run
Cannot find module 'skins.minerva.scripts/TitleUtil.js' from 'skins/MinervaNeue/tests/qunit/skins.minerva.scripts/TitleUtil.test.js'
1 | ( function () {
> 2 | const TitleUtil = require( 'skins.minerva.scripts/TitleUtil.js' );
| ^
3 | const UriUtil = require( 'skins.minerva.scripts/UriUtil.js' );
4 |
5 | QUnit.module( 'Minerva TitleUtil', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/TitleUtil.test.js:2:20)
at Object.<anonymous> (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/TitleUtil.test.js:274:2)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/mmv.ThumbnailWidthCalculator.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/mmv.ThumbnailWidthCalculator.test.js'
However, Jest was able to find:
'./mmv.bootstrap.test.js'
'./mmv.Config.test.js'
'./mmv.EmbedFileFormatter.test.js'
'./mmv.HtmlUtils.test.js'
'./mmv.lightboximage.test.js'
'./mmv.lightboxinterface.test.js'
'./mmv.test.js'
'./mmv.testhelpers.js'
'./mmv.ThumbnailWidthCalculator.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
> 1 | const { ThumbnailWidthCalculator } = require( 'mmv' );
| ^
2 |
3 | QUnit.module( 'mmv.ThumbnailWidthCalculator', QUnit.newMwEnvironment() );
4 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/mmv.ThumbnailWidthCalculator.test.js:1:38)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/mmv.Config.test.js
● Test suite failed to run
Cannot find module 'mmv.bootstrap' from 'extensions/MultimediaViewer/tests/qunit/mmv/mmv.Config.test.js'
16 | */
17 |
> 18 | const { Config } = require( 'mmv.bootstrap' );
| ^
19 | const { createLocalStorage, getFakeLocalStorage } = require( './mmv.testhelpers.js' );
20 | const config0 = mw.config;
21 | const storage = mw.storage;
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/mmv.Config.test.js:18:20)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.dialog.test.js
● Test suite failed to run
Cannot find module 'mmv.ui.reuse' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.dialog.test.js'
16 | */
17 |
> 18 | const { ReuseDialog } = require( 'mmv.ui.reuse' );
| ^
19 |
20 | function makeReuseDialog( sandbox ) {
21 | const $fixture = $( '#qunit-fixture' );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.dialog.test.js:18:25)
FAIL tests/qunit/resources/jquery.lengthLimit.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'jquery.lengthLimit', () => {
| ^
2 | // Simple sample (20 chars, 20 bytes)
3 | const simpleSample = '12345678901234567890';
4 |
at Object.<anonymous> (tests/qunit/resources/jquery.lengthLimit.test.js:1:43)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccounts/components/showIPButton.test.js
● Test suite failed to run
ReferenceError: /src/repo/extensions/CheckUser/tests/jest/ext.checkUser.tempAccounts/components/showIPButton.test.js: The module factory of `jest.mock()` is not allowed to reference any out-of-scope variables.
Invalid variable access: getFormattedBlockDetails
Allowed objects: AbortController, AbortSignal, AggregateError, Array, ArrayBuffer, Atomics, BigInt, BigInt64Array, BigUint64Array, Blob, Boolean, BroadcastChannel, Buffer, ByteLengthQueuingStrategy, CompressionStream, CountQueuingStrategy, Crypto, CryptoKey, CustomEvent, DOMException, DataView, Date, DecompressionStream, Error, EvalError, Event, EventTarget, File, FinalizationRegistry, Float32Array, Float64Array, FormData, Function, Generator, GeneratorFunction, Headers, Infinity, Int16Array, Int32Array, Int8Array, InternalError, Intl, JSON, Map, Math, MessageChannel, MessageEvent, MessagePort, NaN, Number, Object, Performance, PerformanceEntry, PerformanceMark, PerformanceMeasure, PerformanceObserver, PerformanceObserverEntryList, PerformanceResourceTiming, Promise, Proxy, RangeError, ReadableByteStreamController, ReadableStream, ReadableStreamBYOBReader, ReadableStreamBYOBRequest, ReadableStreamDefaultController, ReadableStreamDefaultReader, ReferenceError, Reflect, RegExp, Request, Response, Set, SharedArrayBuffer, String, SubtleCrypto, Symbol, SyntaxError, TextDecoder, TextDecoderStream, TextEncoder, TextEncoderStream, TransformStream, TransformStreamDefaultController, TypeError, URIError, URL, URLSearchParams, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray, WeakMap, WeakRef, WeakSet, WebAssembly, WritableStream, WritableStreamDefaultController, WritableStreamDefaultWriter, __dirname, __filename, arguments, atob, btoa, clearImmediate, clearInterval, clearTimeout, console, crypto, decodeURI, decodeURIComponent, encodeURI, encodeURIComponent, escape, eval, expect, exports, fetch, global, globalThis, isFinite, isNaN, jest, module, parseFloat, parseInt, performance, process, queueMicrotask, require, setImmediate, setInterval, setTimeout, structuredClone, undefined, unescape.
Note: This is a precaution to guard against uninitialized mock variables. If it is ensured that the mock is required lazily, variable names prefixed with `mock` (case insensitive) are permitted.
22 | jest.mock(
23 | '../../../../modules/ext.checkUser.tempAccounts/api.js',
> 24 | () => ( { getFormattedBlockDetails } )
| ^^^^^^^^^^^^^^^^^^^^^^^^
25 | );
26 |
27 | const ShowIPButton = require( '../../../../modules/ext.checkUser.tempAccounts/components/ShowIPButton.vue' );
at File.buildCodeFrameError (node_modules/@babel/core/src/transformation/file/file.ts:257:12)
at NodePath.buildError [as buildCodeFrameError] (node_modules/@babel/traverse/src/path/index.ts:157:21)
at call (node_modules/@babel/traverse/src/visitors.ts:303:14)
at NodePath.call [as _call] (node_modules/@babel/traverse/src/path/context.ts:36:20)
at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitMultiple] (node_modules/@babel/traverse/src/context.ts:99:17)
at TraversalContext.visitMultiple [as visit] (node_modules/@babel/traverse/src/context.ts:178:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at NodePath.visit (node_modules/@babel/traverse/src/path/context.ts:104:33)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:109:19)
at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:180:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
at transformFile (node_modules/@babel/core/src/transformation/index.ts:119:15)
at transformFile.next (<anonymous>)
at transformFile (node_modules/@babel/core/src/transformation/index.ts:49:12)
at run.next (<anonymous>)
at transform (node_modules/@babel/core/src/transform.ts:29:20)
at transform.next (<anonymous>)
at evaluateSync (node_modules/gensync/index.js:251:28)
at sync (node_modules/gensync/index.js:89:14)
at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:545:31)
at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:674:40)
at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:726:19)
FAIL skins/Vector/tests/jest/pinnableElement.test.js
● Test suite failed to run
Cannot find module 'mustache' from 'skins/Vector/tests/jest/pinnableElement.test.js'
2 |
3 | const features = require( '../../resources/skins.vector.js/features.js' );
> 4 | const mustache = require( 'mustache' );
| ^
5 | const fs = require( 'fs' );
6 | const pinnableHeaderTemplate = fs.readFileSync( 'includes/templates/PinnableHeader.mustache', 'utf8' );
7 | const pinnableElement = require( '../../resources/skins.vector.js/pinnableElement.js' );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (skins/Vector/tests/jest/pinnableElement.test.js:4:18)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/App.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/App.test.js'
2 |
3 | const { nextTick } = require( 'vue' );
> 4 | const { mount } = require( 'vue-test-utils' );
| ^
5 | const App = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/components/App.vue' );
6 |
7 | QUnit.module( 'ext.checkUser.userInfoCard.App', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/App.test.js:4:19)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/ipRevealUtils.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.tempAccounts/ipRevealUtils.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/ipRevealUtils.test.js'
1 | 'use strict';
2 |
> 3 | const ipRevealUtils = require( 'ext.checkUser.tempAccounts/ipRevealUtils.js' );
| ^
4 | const autoRevealPreferenceName = 'checkuser-temporary-account-enable-auto-reveal';
5 |
6 | QUnit.module( 'ext.checkUser.tempAccounts.ipRevealUtils', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/ipRevealUtils.test.js:3:23)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.canvas.test.js
● Test suite failed to run
Cannot find module 'mmv.bootstrap' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.canvas.test.js'
16 | */
17 |
> 18 | const { LightboxImage } = require( 'mmv.bootstrap' );
| ^
19 | const { Canvas } = require( 'mmv' );
20 |
21 | QUnit.module( 'mmv.ui.Canvas', QUnit.newMwEnvironment() );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.canvas.test.js:18:27)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.ThumbnailInfo.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.ThumbnailInfo.test.js'
However, Jest was able to find:
'./mmv.provider.Api.test.js'
'./mmv.provider.GuessedThumbnailInfo.test.js'
'./mmv.provider.Image.test.js'
'./mmv.provider.ImageInfo.test.js'
'./mmv.provider.ThumbnailInfo.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { ThumbnailInfo } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.provider.ThumbnailInfo', QUnit.newMwEnvironment( {
21 | // mw.Title relies on these three config vars
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.ThumbnailInfo.test.js:18:27)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | */
6 |
> 7 | QUnit.module( 've.ui.MWWikitextStringTransferHandler', ve.test.utils.newMwEnvironment( {
| ^
8 | beforeEach() {
9 | // Mock XHR for mw.Api()
10 | this.server = this.sandbox.useFakeServer();
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.test.js:7:1)
FAIL tests/qunit/resources/startup/mediawiki.test.js
● Test suite failed to run
Cannot find module 'mediawiki.jqueryMsg' from 'tests/qunit/resources/startup/mediawiki.test.js'
1 | ( function () {
> 2 | const jqueryMsg = require( 'mediawiki.jqueryMsg' ).test;
| ^
3 | QUnit.module( 'mediawiki' );
4 |
5 | QUnit.test( 'Initial check', ( assert ) => {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (tests/qunit/resources/startup/mediawiki.test.js:2:20)
at Object.<anonymous> (tests/qunit/resources/startup/mediawiki.test.js:156:2)
FAIL extensions/VisualEditor/modules/ve-mw/tests/init/targets/ve.init.mw.DesktopArticleTarget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.init.mw.DesktopArticleTarget', ve.test.utils.newMwEnvironment( {
| ^
9 | config: {
10 | wgVisualEditor: ve.extendObject( {}, mw.config.get( 'wgVisualEditor' ), {
11 | pageLanguageCode: 'he',
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/init/targets/ve.init.mw.DesktopArticleTarget.test.js:8:1)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.metadataPanelScroller.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/mmv.testhelpers.js'
Require stack:
extensions/MultimediaViewer/tests/qunit/mmv/mmv.testhelpers.js
extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.metadataPanelScroller.test.js
However, Jest was able to find:
'./mmv.bootstrap.test.js'
'./mmv.Config.test.js'
'./mmv.EmbedFileFormatter.test.js'
'./mmv.HtmlUtils.test.js'
'./mmv.lightboximage.test.js'
'./mmv.lightboxinterface.test.js'
'./mmv.test.js'
'./mmv.testhelpers.js'
'./mmv.ThumbnailWidthCalculator.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
> 1 | const { MultimediaViewer } = require( 'mmv' );
| ^
2 |
3 | const MTH = {};
4 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/mmv.testhelpers.js:1:30)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.metadataPanelScroller.test.js:18:81)
FAIL skins/MinervaNeue/tests/qunit/skins.minerva.scripts/downloadPageAction.test.js
● Test suite failed to run
ReferenceError: $ is not defined
5 | $el: $( '<span>' )
6 | } );
> 7 | const Deferred = $.Deferred;
| ^
8 | const windowChrome = { chrome: true };
9 | const windowNotChrome = {};
10 | const downloadAction = require( 'skins.minerva.scripts/downloadPageAction.js' );
at $ (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/downloadPageAction.test.js:7:19)
at Object.<anonymous> (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/downloadPageAction.test.js:178:2)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.License.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.License.test.js'
However, Jest was able to find:
'./mmv.model.Image.test.js'
'./mmv.model.License.test.js'
'./mmv.model.Repo.test.js'
'./mmv.model.TaskQueue.test.js'
'./mmv.model.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { License } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.model.License', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.License.test.js:18:21)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/InfoRowWithLinks.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/InfoRowWithLinks.test.js'
1 | 'use strict';
2 |
> 3 | const { shallowMount, mount } = require( 'vue-test-utils' );
| ^
4 | const InfoRowWithLinks = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/components/InfoRowWithLinks.vue' );
5 |
6 | QUnit.module( 'ext.checkUser.userInfoCard.InfoRowWithLinks', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/InfoRowWithLinks.test.js:3:33)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/SpecialContributions.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.tempAccounts/SpecialContributions.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/SpecialContributions.test.js'
1 | 'use strict';
2 |
> 3 | const specialContributions = require( 'ext.checkUser.tempAccounts/SpecialContributions.js' ),
| ^
4 | { waitUntilElementCount } = require( './utils.js' ),
5 | ipRevealUtils = require( 'ext.checkUser.tempAccounts/ipRevealUtils.js' );
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/SpecialContributions.test.js:3:30)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.TaskQueue.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.TaskQueue.test.js'
However, Jest was able to find:
'./mmv.model.Image.test.js'
'./mmv.model.License.test.js'
'./mmv.model.Repo.test.js'
'./mmv.model.TaskQueue.test.js'
'./mmv.model.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { TaskQueue } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.model.TaskQueue', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.TaskQueue.test.js:18:23)
FAIL extensions/VisualEditor/modules/ve-mw/tests/dm/annotations/ve.dm.MWInternalLinkAnnotation.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | */
6 |
> 7 | QUnit.module( 've.dm.MWInternalLinkAnnotation', ve.test.utils.newMwEnvironment() );
| ^
8 |
9 | QUnit.test( 'toDataElement', ( assert ) => {
10 | // The expected data depends on site configuration, so we need to generate the cases several times.
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/dm/annotations/ve.dm.MWInternalLinkAnnotation.test.js:7:1)
FAIL tests/qunit/resources/jquery.highlightText.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'jquery.highlightText', () => {
| ^
2 |
3 | QUnit.test.each( 'highlightText()', [
4 | {
at Object.<anonymous> (tests/qunit/resources/jquery.highlightText.test.js:1:45)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.dm.InternalList.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
8 | */
9 |
> 10 | QUnit.module( 've.dm.InternalList (Cite)', ve.test.utils.newMwEnvironment() );
| ^
11 |
12 | /**
13 | * @param {QUnit.assert} assert
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.dm.InternalList.test.js:10:1)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.Api.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.Api.test.js'
However, Jest was able to find:
'./mmv.provider.Api.test.js'
'./mmv.provider.GuessedThumbnailInfo.test.js'
'./mmv.provider.Image.test.js'
'./mmv.provider.ImageInfo.test.js'
'./mmv.provider.ThumbnailInfo.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { Api } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.provider.Api', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.Api.test.js:18:17)
FAIL skins/Vector/tests/jest/skins.vector.js/dropdownMenus.test.js
● Test suite failed to run
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
157 | // Enhance previously added items.
158 | Array.prototype.forEach.call(
> 159 | document.querySelectorAll( '.mw-list-item-js' ),
| ^
160 | ( item ) => {
161 | addPortletLinkHandler( item, {
162 | id: item.getAttribute( 'id' )
at Object.document (skins/Vector/resources/skins.vector.js/dropdownMenus.js:159:2)
at Object.require (skins/Vector/tests/jest/skins.vector.js/dropdownMenus.test.js:3:35)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccounts/components/IPAutoRevealOffDialog.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/CheckUser/modules/ext.checkUser.tempAccounts/components/IPAutoRevealOffDialog.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
21 | } ), { virtual: true } );
22 |
> 23 | const IPAutoRevealOffDialog = require( '../../../../modules/ext.checkUser.tempAccounts/components/IPAutoRevealOffDialog.vue' );
| ^
24 | const useInstrument = require( '../../../../modules/ext.checkUser.tempAccounts/useInstrument.js' );
25 | const { nextTick } = require( 'vue' );
26 | const utils = require( '@vue/test-utils' );
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/CheckUser/tests/jest/ext.checkUser.tempAccounts/components/IPAutoRevealOffDialog.test.js:23:31)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/rest.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.tempAccounts/rest.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/rest.test.js'
1 | 'use strict';
2 |
> 3 | const rest = require( 'ext.checkUser.tempAccounts/rest.js' );
| ^
4 |
5 | let server;
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/rest.test.js:3:14)
FAIL tests/qunit/resources/mediawiki.util/accessKeyLabel.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | ( function () {
> 2 | QUnit.module( 'mediawiki.util: jquery.accessKeyLabel', QUnit.newMwEnvironment( {
| ^
3 | messages: {
4 | brackets: '[$1]',
5 | 'word-separator': ' '
at QUnit (tests/qunit/resources/mediawiki.util/accessKeyLabel.test.js:2:2)
at Object.<anonymous> (tests/qunit/resources/mediawiki.util/accessKeyLabel.test.js:106:2)
FAIL tests/qunit/resources/mediawiki.widgets/MediaSearch/mediawiki.widgets.APIResultsQueue.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | */
6 |
> 7 | QUnit.module( 'mediawiki.widgets.APIResultsQueue' );
| ^
8 |
9 | ( function () {
10 | let itemCounter = 0;
at Object.QUnit (tests/qunit/resources/mediawiki.widgets/MediaSearch/mediawiki.widgets.APIResultsQueue.test.js:7:1)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardView.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardView.test.js'
2 |
3 | const { nextTick } = require( 'vue' );
> 4 | const { mount } = require( 'vue-test-utils' );
| ^
5 | const UserCardView = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/components/UserCardView.vue' );
6 |
7 | // Using mocks since we don't need to fully load child components
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardView.test.js:4:19)
FAIL tests/jest/mediawiki.special.block/BlockLog.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/resources/src/mediawiki.special.block/SpecialBlock.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
4 | const { createTestingPinia } = require( '@pinia/testing' );
5 |
> 6 | const SpecialBlock = require( '../../../resources/src/mediawiki.special.block/SpecialBlock.vue' );
| ^
7 |
8 | /**
9 | * Mount the SpecialBlock component with the default configuration,
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (tests/jest/mediawiki.special.block/SpecialBlock.setup.js:6:22)
at Object.require (tests/jest/mediawiki.special.block/BlockLog.test.js:6:43)
FAIL extensions/Cite/tests/qunit/ext.cite.referencePreviews/createReferenceGateway.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
2 |
3 | {
> 4 | QUnit.module.if( 'ext.cite.referencePreviews#createReferenceGateway',
| ^
5 | mw.loader.getModuleNames().includes( 'ext.popups.main' ),
6 | {
7 | beforeEach: function () {
at Object.QUnit (extensions/Cite/tests/qunit/ext.cite.referencePreviews/createReferenceGateway.test.js:4:2)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTemplateTitleInputWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
4 | } ) );
5 |
> 6 | QUnit.module( 've.ui.MWTemplateTitleInputWidget', ve.test.utils.newMwEnvironment( {
| ^
7 | messages: {
8 | // Force `templateDataInstalled` condition
9 | 'templatedata-doc-subpage': '(templatedata-doc-subpage)',
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTemplateTitleInputWidget.test.js:6:2)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlineTemplateWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWTransclusionOutlineTemplateWidget' );
| ^
2 |
3 | QUnit.test( 'Constructor', ( assert ) => {
4 | const transclusion = new ve.dm.MWTransclusionModel(),
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlineTemplateWidget.test.js:1:60)
FAIL tests/qunit/resources/mediawiki.storage.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
2 | const EXPIRY_PREFIX = '_EXPIRY_';
3 |
> 4 | QUnit.module( 'mediawiki.storage' );
| ^
5 |
6 | QUnit.test( 'set/get(Object) with storage support', function ( assert ) {
7 | const data = {},
at QUnit (tests/qunit/resources/mediawiki.storage.test.js:4:2)
at Object.<anonymous> (tests/qunit/resources/mediawiki.storage.test.js:156:2)
FAIL tests/qunit/resources/mediawiki.api/mediawiki.api.edit.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.api.edit', ( hooks ) => {
| ^
2 | let server;
3 | hooks.beforeEach( function () {
4 | server = this.sandbox.useFakeServer();
at Object.<anonymous> (tests/qunit/resources/mediawiki.api/mediawiki.api.edit.test.js:1:50)
FAIL extensions/VisualEditor/modules/ve-mw/tests/dm/models/ve.dm.MWImageModel.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.dm.MWImageModel' );
| ^
9 |
10 | /* Tests */
11 |
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/dm/models/ve.dm.MWImageModel.test.js:8:1)
FAIL skins/MinervaNeue/tests/qunit/skins.minerva.scripts/page-issues/parser.test.js
● Test suite failed to run
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
1 | ( function () {
> 2 | const iconElement = document.createElement( 'div' ),
| ^
3 | pageIssuesParser = require( 'skins.minerva.scripts/page-issues/parser.js' ),
4 | extractMessage = pageIssuesParser.extract;
5 |
at document (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/page-issues/parser.test.js:2:22)
at Object.<anonymous> (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/page-issues/parser.test.js:187:2)
FAIL tests/qunit/resources/mediawiki.String.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.String', () => {
| ^
2 | const { byteLength } = require( 'mediawiki.String' );
3 |
4 | QUnit.test.each( 'byteLength()', {
at Object.<anonymous> (tests/qunit/resources/mediawiki.String.test.js:1:41)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardHeader.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardHeader.test.js'
1 | 'use strict';
2 |
> 3 | const { shallowMount } = require( 'vue-test-utils' );
| ^
4 | const UserCardHeader = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/components/UserCardHeader.vue' );
5 |
6 | QUnit.module( 'ext.checkUser.userInfoCard.UserCardHeader', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardHeader.test.js:3:26)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/inspectors/ve.ui.FragmentInspector.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | */
6 |
> 7 | QUnit.module( 've.ui.FragmentInspector (MW)', ve.test.utils.newMwEnvironment( {
| ^
8 | beforeEach() {
9 | // Mock XHR for mw.Api()
10 | this.server = this.sandbox.useFakeServer();
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ui/inspectors/ve.ui.FragmentInspector.test.js:7:1)
FAIL tests/qunit/resources/mediawiki.api/mediawiki.api.options.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.api.options', QUnit.newMwEnvironment(), ( hooks ) => {
| ^
2 | mw.config.set( {
3 | wgUserName: 'Foo'
4 | } );
at Object.<anonymous> (tests/qunit/resources/mediawiki.api/mediawiki.api.options.test.js:1:79)
FAIL extensions/VisualEditor/modules/ve-mw/tests/dm/ve.dm.Document.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.dm.Document (MW)' );
| ^
9 |
10 | /* Tests */
11 |
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/dm/ve.dm.Document.test.js:8:1)
FAIL tests/qunit/resources/mediawiki.rcfilters/dm.FilterItem.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | /* eslint-disable camelcase */
2 | ( function () {
> 3 | QUnit.module( 'mediawiki.rcfilters - FilterItem' );
| ^
4 | const rcfilters = require( 'mediawiki.rcfilters.filters.ui' );
5 |
6 | QUnit.test( 'Initializing filter item', ( assert ) => {
at QUnit (tests/qunit/resources/mediawiki.rcfilters/dm.FilterItem.test.js:3:2)
at Object.<anonymous> (tests/qunit/resources/mediawiki.rcfilters/dm.FilterItem.test.js:195:2)
FAIL tests/qunit/resources/mediawiki.cookie.test.js
● Test suite failed to run
Cannot find module 'mediawiki.cookie' from 'tests/qunit/resources/mediawiki.cookie.test.js'
11 | secure: false
12 | },
> 13 | mwCookie = require( 'mediawiki.cookie' ),
| ^
14 | setDefaults = mwCookie.setDefaults,
15 | expiryDate = new Date();
16 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (tests/qunit/resources/mediawiki.cookie.test.js:13:14)
at Object.<anonymous> (tests/qunit/resources/mediawiki.cookie.test.js:183:2)
FAIL extensions/Nuke/tests/jest/codex/components/NukeNamespaceLookup.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/Nuke/modules/ext.nuke.codex/components/NukeNamespaceLookup.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
1 | const { mount, flushPromises } = require( '@vue/test-utils' );
> 2 | const NukeNamespaceLookup = require( '../../../../modules/ext.nuke.codex/components/NukeNamespaceLookup.vue' );
| ^
3 | const namespaces = require( '../../../assets/namespaces.json' );
4 | const { nextTick } = require( 'vue' );
5 |
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/Nuke/tests/jest/codex/components/NukeNamespaceLookup.test.js:2:29)
FAIL tests/jest/mediawiki.special.block/UserLookup.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/resources/src/mediawiki.special.block/SpecialBlock.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
4 | const { createTestingPinia } = require( '@pinia/testing' );
5 |
> 6 | const SpecialBlock = require( '../../../resources/src/mediawiki.special.block/SpecialBlock.vue' );
| ^
7 |
8 | /**
9 | * Mount the SpecialBlock component with the default configuration,
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (tests/jest/mediawiki.special.block/SpecialBlock.setup.js:6:22)
at Object.require (tests/jest/mediawiki.special.block/UserLookup.test.js:6:60)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.suggestedInvestigations/utils.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.suggestedInvestigations/utils.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.suggestedInvestigations/utils.test.js'
1 | 'use strict';
2 |
> 3 | const utils = require( 'ext.checkUser.suggestedInvestigations/utils.js' );
| ^
4 |
5 | QUnit.module( 'ext.checkUser.suggestedInvestigations.utils', QUnit.newMwEnvironment() );
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.suggestedInvestigations/utils.test.js:3:15)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ce.ClipboardHandler.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.ce.ClipboardHandler (Cite)', ve.test.utils.newMwEnvironment() );
| ^
9 |
10 | /* Tests */
11 |
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ce.ClipboardHandler.test.js:8:1)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/composables/useWatchList.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/composables/useWatchList.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/composables/useWatchList.test.js'
2 |
3 | const { nextTick } = require( 'vue' );
> 4 | const useWatchList = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/composables/useWatchList.js' );
| ^
5 |
6 | // Store stubs for use in arrow functions
7 | let watchStub, unwatchStub, notifyStub;
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/composables/useWatchList.test.js:4:22)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.Image.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.Image.test.js'
However, Jest was able to find:
'./mmv.provider.Api.test.js'
'./mmv.provider.GuessedThumbnailInfo.test.js'
'./mmv.provider.Image.test.js'
'./mmv.provider.ImageInfo.test.js'
'./mmv.provider.ThumbnailInfo.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { ImageProvider } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.provider.Image', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.Image.test.js:18:27)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/pages/ve.ui.MWParameterPage.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWParameterPage', ve.test.utils.newMwEnvironment );
| ^
2 |
3 | [
4 | [ undefined, '', ve.ui.MWLazyMultilineTextInputWidget ],
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/pages/ve.ui.MWParameterPage.test.js:1:72)
FAIL skins/Vector/tests/jest/stickyHeader.test.js
● Test suite failed to run
Cannot find module 'mustache' from 'skins/Vector/tests/jest/stickyHeader.test.js'
> 1 | const mustache = require( 'mustache' );
| ^
2 | const fs = require( 'fs' );
3 | const stickyHeaderTemplate = fs.readFileSync( 'includes/templates/StickyHeader.mustache', 'utf8' );
4 | const buttonTemplate = fs.readFileSync( 'includes/templates/Button.mustache', 'utf8' );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (skins/Vector/tests/jest/stickyHeader.test.js:1:39)
FAIL tests/qunit/resources/mediawiki.visibleTimeout.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.visibleTimeout', QUnit.newMwEnvironment( {
| ^
2 | beforeEach: function () {
3 | // Document with just enough stuff to make the tests work.
4 | const listeners = [];
at Object.<anonymous> (tests/qunit/resources/mediawiki.visibleTimeout.test.js:1:67)
FAIL extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/utils.test.js
● Test suite failed to run
Cannot find module 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/utils.js' from 'extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/utils.test.js'
> 1 | const { executeHCaptcha, loadHCaptcha } = require( 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/utils.js' );
| ^
2 |
3 | QUnit.module( 'ext.confirmEdit.hCaptcha.utils', QUnit.newMwEnvironment( {
4 | beforeEach() {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/utils.test.js:1:43)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/app.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/CheckUser/modules/ext.checkUser.tempAccountsOnboarding/components/App.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
6 | } ), { virtual: true } );
7 |
> 8 | const App = require( '../../../../modules/ext.checkUser.tempAccountsOnboarding/components/App.vue' ),
| ^
9 | utils = require( '@vue/test-utils' ),
10 | { waitFor, mockJSConfig } = require( '../../utils.js' );
11 |
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/app.test.js:8:13)
FAIL tests/qunit/resources/startup/mw.Map.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | const arry = [];
6 |
> 7 | QUnit.module( 'mw.Map' );
| ^
8 |
9 | QUnit.test( 'Store simple string key', ( assert ) => {
10 | const conf = new mw.Map();
at QUnit (tests/qunit/resources/startup/mw.Map.test.js:7:2)
at Object.<anonymous> (tests/qunit/resources/startup/mw.Map.test.js:130:2)
FAIL skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js
● isNightModeGadgetEnabled › should return false if no gadgets are installed
ReferenceError: mw is not defined
9 | beforeEach( () => {
10 | // https://github.com/wikimedia/mw-node-qunit/pull/38
> 11 | mw.loader.getState = () => null;
| ^
12 | } );
13 |
14 | it( 'should return false if no gadgets are installed', () => {
at Object.mw (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:11:3)
● isNightModeGadgetEnabled › should return false if the gadgets are installed but not enabled
ReferenceError: mw is not defined
9 | beforeEach( () => {
10 | // https://github.com/wikimedia/mw-node-qunit/pull/38
> 11 | mw.loader.getState = () => null;
| ^
12 | } );
13 |
14 | it( 'should return false if no gadgets are installed', () => {
at Object.mw (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:11:3)
● isNightModeGadgetEnabled › should return true if the gadgets are enabled
ReferenceError: mw is not defined
9 | beforeEach( () => {
10 | // https://github.com/wikimedia/mw-node-qunit/pull/38
> 11 | mw.loader.getState = () => null;
| ^
12 | } );
13 |
14 | it( 'should return false if no gadgets are installed', () => {
at Object.mw (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:11:3)
● disableNightModeForGadget › should disable night mode
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
33 | describe( 'disableNightModeForGadget', () => {
34 | beforeEach( () => {
> 35 | document.documentElement.classList.remove( 'skin-theme-clientpref--excluded' );
| ^
36 | document.documentElement.classList.remove( 'skin-theme-clientpref-night' );
37 | document.documentElement.classList.remove( 'skin-theme-clientpref-os' );
38 | } );
at Object.document (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:35:3)
● disableNightModeForGadget › should disable automatic mode
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
33 | describe( 'disableNightModeForGadget', () => {
34 | beforeEach( () => {
> 35 | document.documentElement.classList.remove( 'skin-theme-clientpref--excluded' );
| ^
36 | document.documentElement.classList.remove( 'skin-theme-clientpref-night' );
37 | document.documentElement.classList.remove( 'skin-theme-clientpref-os' );
38 | } );
at Object.document (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:35:3)
● disableNightModeForGadget › should add the excluded class
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
33 | describe( 'disableNightModeForGadget', () => {
34 | beforeEach( () => {
> 35 | document.documentElement.classList.remove( 'skin-theme-clientpref--excluded' );
| ^
36 | document.documentElement.classList.remove( 'skin-theme-clientpref-night' );
37 | document.documentElement.classList.remove( 'skin-theme-clientpref-os' );
38 | } );
at Object.document (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:35:3)
● alterDisableLink › should exit early if the gadget names are empty
ReferenceError: mw is not defined
67 |
68 | it( 'should exit early if the gadget names are empty', () => {
> 69 | jest.spyOn( mw, 'msg' ).mockImplementation( () => '' );
| ^
70 |
71 | const p = document.createElement( 'p' );
72 | const a = document.createElement( 'a' );
at Object.mw (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:69:15)
● alterDisableLink › should leave the surrounding element unaltered
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
83 |
84 | it( 'should leave the surrounding element unaltered', () => {
> 85 | const p = document.createElement( 'p' );
| ^
86 | const a = document.createElement( 'a' );
87 | p.appendChild( a );
88 |
at Object.document (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:85:13)
● alterDisableLink › should strip the title and href attributes
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
95 |
96 | it( 'should strip the title and href attributes', () => {
> 97 | const p = document.createElement( 'p' );
| ^
98 | const a = document.createElement( 'a' );
99 | p.appendChild( a );
100 |
at Object.document (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:97:13)
● alterDisableLink › should make the link display inline
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
109 |
110 | it( 'should make the link display inline', () => {
> 111 | const p = document.createElement( 'p' );
| ^
112 | const a = document.createElement( 'a' );
113 | p.appendChild( a );
114 |
at Object.document (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:111:13)
● alterExclusionMessage › should remove the existing text from the notice
ReferenceError: mw is not defined
123 | describe( 'alterExclusionMessage', () => {
124 | beforeEach( () => {
> 125 | jest.spyOn( mw.loader, 'using' ).mockImplementation( () => ( {
| ^
126 | then: ( fn ) => fn()
127 | } ) );
128 |
at Object.mw (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:125:15)
● alterExclusionMessage › should not target other client prefs
ReferenceError: mw is not defined
123 | describe( 'alterExclusionMessage', () => {
124 | beforeEach( () => {
> 125 | jest.spyOn( mw.loader, 'using' ).mockImplementation( () => ( {
| ^
126 | then: ( fn ) => fn()
127 | } ) );
128 |
at Object.mw (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:125:15)
FAIL tests/qunit/resources/jquery.textSelection.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'jquery.textSelection', () => {
| ^
2 | const sig = {
3 | pre: '--~~~~'
4 | };
at Object.<anonymous> (tests/qunit/resources/jquery.textSelection.test.js:1:45)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.Repo.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.Repo.test.js'
However, Jest was able to find:
'./mmv.model.Image.test.js'
'./mmv.model.License.test.js'
'./mmv.model.Repo.test.js'
'./mmv.model.TaskQueue.test.js'
'./mmv.model.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { Repo, ForeignApiRepo, ForeignDbRepo } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.model.Repo', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.Repo.test.js:18:49)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingDialogStepper.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/CheckUser/modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingStepper.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
1 | 'use strict';
2 |
> 3 | const TempAccountsOnboardingStepper = require( '../../../../modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingStepper.vue' ),
| ^
4 | utils = require( '@vue/test-utils' );
5 |
6 | const renderComponent = ( props ) => {
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingDialogStepper.test.js:3:39)
FAIL extensions/DiscussionTools/tests/qunit/modifier.test.js
● Test suite failed to run
Cannot find module 'ext.discussionTools.init' from 'extensions/DiscussionTools/tests/qunit/testUtils.js'
Require stack:
extensions/DiscussionTools/tests/qunit/testUtils.js
extensions/DiscussionTools/tests/qunit/modifier.test.js
> 1 | const utils = require( 'ext.discussionTools.init' ).utils;
| ^
2 |
3 | module.exports = {};
4 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (extensions/DiscussionTools/tests/qunit/testUtils.js:1:58)
at Object.<anonymous> (extensions/DiscussionTools/tests/qunit/modifier.test.js:2:41)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.permission.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.permission.test.js'
However, Jest was able to find:
'./mmv.ui.canvas.test.js'
'./mmv.ui.canvasButtons.test.js'
'./mmv.ui.description.test.js'
'./mmv.ui.download.pane.test.js'
'./mmv.ui.metadataPanel.test.js'
'./mmv.ui.metadataPanelScroller.test.js'
'./mmv.ui.permission.test.js'
'./mmv.ui.progressBar.test.js'
'./mmv.ui.reuse.dialog.test.js'
'./mmv.ui.reuse.embed.test.js'
'./mmv.ui.reuse.share.test.js'
'./mmv.ui.reuse.utils.test.js'
'./mmv.ui.stripeButtons.test.js'
'./mmv.ui.test.js'
'./mmv.ui.truncatableTextField.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { Permission } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'Permission', QUnit.newMwEnvironment( {
21 | beforeEach: function () {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.permission.test.js:18:24)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/BlockDetailsPopupButtonWidget.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.tempAccounts/BlockDetailsPopupButtonWidget.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/BlockDetailsPopupButtonWidget.test.js'
1 | 'use strict';
2 |
> 3 | const BlockDetailsPopupButtonWidget = require(
| ^
4 | 'ext.checkUser.tempAccounts/BlockDetailsPopupButtonWidget.js'
5 | );
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/BlockDetailsPopupButtonWidget.test.js:3:39)
FAIL tests/jest/mediawiki.special.block/ExpiryField.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/resources/src/mediawiki.special.block/SpecialBlock.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
4 | const { createTestingPinia } = require( '@pinia/testing' );
5 |
> 6 | const SpecialBlock = require( '../../../resources/src/mediawiki.special.block/SpecialBlock.vue' );
| ^
7 |
8 | /**
9 | * Mount the SpecialBlock component with the default configuration,
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (tests/jest/mediawiki.special.block/SpecialBlock.setup.js:6:22)
at Object.require (tests/jest/mediawiki.special.block/ExpiryField.test.js:5:29)
FAIL tests/jest/mediawiki.skinning.typeaheadSearch/restSearchClient.test.js
● restApiSearchClient › 2 results
ReferenceError: mw is not defined
121 | const params = { q, limit: limit.toString() };
122 | const search = new URLSearchParams( params );
> 123 | mw.hook( 'typeaheadSearch.appendUrlParams' ).fire( ( key, value ) => {
| ^
124 | search.append( key, value );
125 | } );
126 | const url = `${ searchApiUrl }/v1/search/title?${ search.toString() }`;
at Object.mw [as fetchByTitle] (resources/src/mediawiki.skinning.typeaheadSearch/restSearchClient.js:123:4)
at Object.fetchByTitle (tests/jest/mediawiki.skinning.typeaheadSearch/restSearchClient.test.js:59:99)
● restApiSearchClient › 0 results
ReferenceError: mw is not defined
121 | const params = { q, limit: limit.toString() };
122 | const search = new URLSearchParams( params );
> 123 | mw.hook( 'typeaheadSearch.appendUrlParams' ).fire( ( key, value ) => {
| ^
124 | search.append( key, value );
125 | } );
126 | const url = `${ searchApiUrl }/v1/search/title?${ search.toString() }`;
at Object.mw [as fetchByTitle] (resources/src/mediawiki.skinning.typeaheadSearch/restSearchClient.js:123:4)
at Object.fetchByTitle (tests/jest/mediawiki.skinning.typeaheadSearch/restSearchClient.test.js:90:99)
● restApiSearchClient › recommendations service
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: window is not defined
27 | // so replacing it with no-op if it doesn't exist.
28 | // eslint-disable-next-line compat/compat
> 29 | const controller = window.AbortController ?
| ^
30 | // eslint-disable-next-line compat/compat
31 | new AbortController() :
32 | nullAbortController;
at window (resources/src/mediawiki.skinning.typeaheadSearch/fetch.js:29:21)
at Object.fetchJson [as fetchRecommendationByTitle] (resources/src/mediawiki.skinning.typeaheadSearch/restSearchClient.js:103:19)
at Object.fetchRecommendationByTitle (tests/jest/mediawiki.skinning.typeaheadSearch/restSearchClient.test.js:123:5)
● restApiSearchClient › network error
ReferenceError: mw is not defined
121 | const params = { q, limit: limit.toString() };
122 | const search = new URLSearchParams( params );
> 123 | mw.hook( 'typeaheadSearch.appendUrlParams' ).fire( ( key, value ) => {
| ^
124 | search.append( key, value );
125 | } );
126 | const url = `${ searchApiUrl }/v1/search/title?${ search.toString() }`;
at Object.mw [as fetchByTitle] (resources/src/mediawiki.skinning.typeaheadSearch/restSearchClient.js:123:4)
at Object.fetchByTitle (tests/jest/mediawiki.skinning.typeaheadSearch/restSearchClient.test.js:137:87)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.download.pane.test.js
● Test suite failed to run
Cannot find module 'mmv.ui.reuse' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.download.pane.test.js'
16 | */
17 |
> 18 | const { Download: DownloadPane, Utils } = require( 'mmv.ui.reuse' );
| ^
19 |
20 | QUnit.module( 'mmv.ui.download.pane', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.download.pane.test.js:18:43)
FAIL tests/qunit/resources/mediawiki.widgets/UserInputWidget/mediawiki.widgets.UserInputWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
3 | */
4 |
> 5 | QUnit.module( 'mediawiki.widgets.UserInputWidget' );
| ^
6 |
7 | ( function () {
8 | const widgetWithDefaults = new mw.widgets.UserInputWidget( {} );
at Object.QUnit (tests/qunit/resources/mediawiki.widgets/UserInputWidget/mediawiki.widgets.UserInputWidget.test.js:5:1)
FAIL tests/qunit/resources/mediawiki.api/mediawiki.rest.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.rest', ( hooks ) => {
| ^
2 | let server;
3 | hooks.beforeEach( function () {
4 | server = this.sandbox.useFakeServer();
at Object.<anonymous> (tests/qunit/resources/mediawiki.api/mediawiki.rest.test.js:1:46)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferenceEditPanel.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
2 |
3 | {
> 4 | QUnit.module( 've.ui.MWReferenceEditPanel (Cite)', ve.test.utils.newMwEnvironment() );
| ^
5 |
6 | /**
7 | * @param {ve.dm.Document} doc
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferenceEditPanel.test.js:4:2)
FAIL tests/qunit/resources/mediawiki.cldr.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
60 | };
61 |
> 62 | QUnit.module( 'mediawiki.cldr', QUnit.newMwEnvironment() );
| ^
63 |
64 | function pluralTest( langCode, tests ) {
65 | QUnit.test( 'Plural Test for ' + langCode, ( assert ) => {
at QUnit (tests/qunit/resources/mediawiki.cldr.test.js:62:2)
at Object.<anonymous> (tests/qunit/resources/mediawiki.cldr.test.js:83:2)
FAIL tests/qunit/resources/mediawiki.deflate.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.deflate', () => {
| ^
2 | let seed = 1234567890;
3 | function getPseudoRandom() {
4 | seed = seed * 16807 % 2147483646;
at Object.<anonymous> (tests/qunit/resources/mediawiki.deflate.test.js:1:42)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/pages/ve.ui.MWAddParameterPage.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWAddParameterPage', ve.test.utils.newMwEnvironment() );
| ^
2 |
3 | QUnit.test( 'Input event handlers', ( assert ) => {
4 | const transclusion = new ve.dm.MWTransclusionModel(),
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/pages/ve.ui.MWAddParameterPage.test.js:1:77)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserActivityChart.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserActivityChart.test.js'
1 | 'use strict';
2 |
> 3 | const { mount } = require( 'vue-test-utils' );
| ^
4 | const UserActivityChart = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/components/UserActivityChart.vue' );
5 |
6 | QUnit.module( 'ext.checkUser.userInfoCard.UserActivityChart', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserActivityChart.test.js:3:19)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/AbuseLog.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.tempAccounts/AbuseLog.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/AbuseLog.test.js'
1 | 'use strict';
2 |
> 3 | const abuseLog = require( 'ext.checkUser.tempAccounts/AbuseLog.js' );
| ^
4 |
5 | let server;
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/AbuseLog.test.js:3:18)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlineWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWTransclusionOutlineWidget' );
| ^
2 |
3 | QUnit.test( 'Constructor', ( assert ) => {
4 | const widget = new ve.ui.MWTransclusionOutlineWidget();
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlineWidget.test.js:1:52)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.dm.MWGroupReferences.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | 'use strict';
2 |
> 3 | QUnit.module( 've.dm.MWGroupReferences (Cite)', ve.test.utils.newMwEnvironment( {
| ^
4 | beforeEach: function () {
5 | const doc = ve.dm.citeExample.createExampleDocument( 'references' );
6 | const docRefs = ve.dm.MWDocumentReferences.static.refsForDoc( doc );
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.dm.MWGroupReferences.test.js:3:1)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.utils.test.js
● Test suite failed to run
Cannot find module 'mmv.ui.reuse' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.utils.test.js'
16 | */
17 |
> 18 | const { Utils } = require( 'mmv.ui.reuse' );
| ^
19 |
20 | QUnit.module( 'mmv.ui.reuse.utils', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.utils.test.js:18:19)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.dm.MWReferenceModel.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | */
6 |
> 7 | QUnit.module( 've.dm.MWReferenceModel (Cite)', ve.test.utils.newMwEnvironment() );
| ^
8 |
9 | /* Tests */
10 |
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.dm.MWReferenceModel.test.js:7:1)
FAIL tests/qunit/resources/mediawiki.api/mediawiki.api.category.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.api.category', ( hooks ) => {
| ^
2 | let server;
3 | hooks.beforeEach( function () {
4 | server = this.sandbox.useFakeServer();
at Object.<anonymous> (tests/qunit/resources/mediawiki.api/mediawiki.api.category.test.js:1:54)
FAIL extensions/VisualEditor/modules/ve-mw/tests/dm/models/ve.dm.MWTransclusionModel.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 |
7 | {
> 8 | QUnit.module( 've.dm.MWTransclusionModel', ve.test.utils.newMwEnvironment( {
| ^
9 | beforeEach() {
10 | // Mock XHR for mw.Api()
11 | this.server = this.sandbox.useFakeServer();
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/dm/models/ve.dm.MWTransclusionModel.test.js:8:2)
FAIL tests/qunit/resources/mediawiki.pager.codex/limitSelectors.test.js
● Test suite failed to run
Cannot find module 'mediawiki.pager.codex/limitSelectors.js' from 'tests/qunit/resources/mediawiki.pager.codex/limitSelectors.test.js'
> 1 | const limitSelectors = require( 'mediawiki.pager.codex/limitSelectors.js' );
| ^
2 |
3 | QUnit.module( 'mediawiki.pager.codex.limitSelectors', QUnit.newMwEnvironment( {
4 | beforeEach: function () {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (tests/qunit/resources/mediawiki.pager.codex/limitSelectors.test.js:1:76)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/actions/ve.ui.MWLinkAction.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.ui.MWLinkAction' );
| ^
9 |
10 | /* Tests */
11 |
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ui/actions/ve.ui.MWLinkAction.test.js:8:1)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/composables/useInstrument.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/composables/useInstrument.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/composables/useInstrument.test.js'
1 | 'use strict';
2 |
> 3 | const useInstrument = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/composables/useInstrument.js' );
| ^
4 |
5 | // Store stubs for use in arrow functions
6 | let configStub, newInstrumentStub, submitInteractionStub, instrumentStub;
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/composables/useInstrument.test.js:3:23)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.stripeButtons.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.stripeButtons.test.js'
However, Jest was able to find:
'./mmv.ui.canvas.test.js'
'./mmv.ui.canvasButtons.test.js'
'./mmv.ui.description.test.js'
'./mmv.ui.download.pane.test.js'
'./mmv.ui.metadataPanel.test.js'
'./mmv.ui.metadataPanelScroller.test.js'
'./mmv.ui.permission.test.js'
'./mmv.ui.progressBar.test.js'
'./mmv.ui.reuse.dialog.test.js'
'./mmv.ui.reuse.embed.test.js'
'./mmv.ui.reuse.share.test.js'
'./mmv.ui.reuse.utils.test.js'
'./mmv.ui.stripeButtons.test.js'
'./mmv.ui.test.js'
'./mmv.ui.truncatableTextField.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { StripeButtons } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.ui.StripeButtons', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.stripeButtons.test.js:18:27)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.ipInfo.hooks/ext.ipinfo.infobox.widget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
2 | const addSpecialGlobalContributionsLink = require( '../../../modules/ext.checkUser.ipInfo.hooks/infobox.js' );
3 |
> 4 | QUnit.module( 'ext.checkUser.ipInfo.hooks', QUnit.newMwEnvironment( {
| ^
5 | beforeEach: function () {
6 | // simulate setting wgAutoCreateTempUser to { enabled: true, matchPattern: '~$1' }
7 | // (setting it in mw.config has no effect, so we need to
at Object.QUnit (extensions/CheckUser/tests/qunit/ext.checkUser.ipInfo.hooks/ext.ipinfo.infobox.widget.test.js:4:1)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.progressBar.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.progressBar.test.js'
However, Jest was able to find:
'./mmv.ui.canvas.test.js'
'./mmv.ui.canvasButtons.test.js'
'./mmv.ui.description.test.js'
'./mmv.ui.download.pane.test.js'
'./mmv.ui.metadataPanel.test.js'
'./mmv.ui.metadataPanelScroller.test.js'
'./mmv.ui.permission.test.js'
'./mmv.ui.progressBar.test.js'
'./mmv.ui.reuse.dialog.test.js'
'./mmv.ui.reuse.embed.test.js'
'./mmv.ui.reuse.share.test.js'
'./mmv.ui.reuse.utils.test.js'
'./mmv.ui.stripeButtons.test.js'
'./mmv.ui.test.js'
'./mmv.ui.truncatableTextField.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { ProgressBar } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.ui.ProgressBar', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.progressBar.test.js:18:25)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccounts/components/IPAutoRevealOnDialog.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/CheckUser/modules/ext.checkUser.tempAccounts/components/IPAutoRevealOnDialog.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
24 | jest.mock( '../../../../modules/ext.checkUser.tempAccounts/useInstrument.js' );
25 |
> 26 | const IPAutoRevealOnDialog = require( '../../../../modules/ext.checkUser.tempAccounts/components/IPAutoRevealOnDialog.vue' );
| ^
27 | const useInstrument = require( '../../../../modules/ext.checkUser.tempAccounts/useInstrument.js' );
28 | const { nextTick } = require( 'vue' );
29 | const utils = require( '@vue/test-utils' );
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/CheckUser/tests/jest/ext.checkUser.tempAccounts/components/IPAutoRevealOnDialog.test.js:26:30)
FAIL extensions/Nuke/tests/jest/codex/components/NukeTargetLookup.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/Nuke/modules/ext.nuke.codex/components/NukeTargetLookup.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
1 | const { mount, flushPromises } = require( '@vue/test-utils' );
> 2 | const NukeTargetLookup = require( '../../../../modules/ext.nuke.codex/components/NukeTargetLookup.vue' );
| ^
3 |
4 | function getWrapper( props = {} ) {
5 | const div = document.createElement( 'div' );
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/Nuke/tests/jest/codex/components/NukeTargetLookup.test.js:2:26)
FAIL skins/Vector/tests/jest/skins.vector.es6/main.test.js
● Test suite failed to run
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: window is not defined
> 1 | window.matchMedia = window.matchMedia || function () {
| ^
2 | return {
3 | matches: false,
4 | onchange: () => {}
at Object.<anonymous> (skins/Vector/tests/jest/skins.vector.es6/main.test.js:1:54)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.dm.Transaction.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
8 | */
9 |
> 10 | QUnit.module( 've.dm.Transaction (Cite)', ve.test.utils.newMwEnvironment() );
| ^
11 |
12 | // FIXME: Duplicates test runner; should be using a data provider
13 | QUnit.test( 'newFromDocumentInsertion with references', ( assert ) => {
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.dm.Transaction.test.js:10:1)
FAIL skins/Vector/tests/jest/skins.vector.legacy.js/portlets.test.js
● Test suite failed to run
Cannot find module 'mustache' from 'skins/Vector/tests/jest/skins.vector.legacy.js/portlets.test.js'
1 | const portlets = require( '../../../resources/skins.vector.legacy.js/portlets.js' );
> 2 | const mustache = require( 'mustache' );
| ^
3 | const fs = require( 'fs' );
4 | const menuTemplate = fs.readFileSync( 'includes/templates/LegacyMenu.mustache', 'utf8' );
5 | const menuContentsTemplate = fs.readFileSync( 'includes/templates/MenuContents.mustache', 'utf8' );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (skins/Vector/tests/jest/skins.vector.legacy.js/portlets.test.js:2:18)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ce/ve.ce.ClipboardHandler.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.ce.ClipboardHandler (MW)', ve.test.utils.newMwEnvironment() );
| ^
9 |
10 | /* Tests */
11 |
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ce/ve.ce.ClipboardHandler.test.js:8:1)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/actions/ve.ui.FormatAction.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.ui.FormatAction (MW)', ve.test.utils.newMwEnvironment() );
| ^
9 |
10 | QUnit.test.each( 'convert (MW-specific types)',
11 | [
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ui/actions/ve.ui.FormatAction.test.js:8:1)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.suggestedInvestigations/components/SignalsPopover.test.js
● Test suite failed to run
ReferenceError: /src/repo/extensions/CheckUser/tests/jest/utils.js: The module factory of `jest.mock()` is not allowed to reference any out-of-scope variables.
Invalid variable access: byteLength
Allowed objects: AbortController, AbortSignal, AggregateError, Array, ArrayBuffer, Atomics, BigInt, BigInt64Array, BigUint64Array, Blob, Boolean, BroadcastChannel, Buffer, ByteLengthQueuingStrategy, CompressionStream, CountQueuingStrategy, Crypto, CryptoKey, CustomEvent, DOMException, DataView, Date, DecompressionStream, Error, EvalError, Event, EventTarget, File, FinalizationRegistry, Float32Array, Float64Array, FormData, Function, Generator, GeneratorFunction, Headers, Infinity, Int16Array, Int32Array, Int8Array, InternalError, Intl, JSON, Map, Math, MessageChannel, MessageEvent, MessagePort, NaN, Number, Object, Performance, PerformanceEntry, PerformanceMark, PerformanceMeasure, PerformanceObserver, PerformanceObserverEntryList, PerformanceResourceTiming, Promise, Proxy, RangeError, ReadableByteStreamController, ReadableStream, ReadableStreamBYOBReader, ReadableStreamBYOBRequest, ReadableStreamDefaultController, ReadableStreamDefaultReader, ReferenceError, Reflect, RegExp, Request, Response, Set, SharedArrayBuffer, String, SubtleCrypto, Symbol, SyntaxError, TextDecoder, TextDecoderStream, TextEncoder, TextEncoderStream, TransformStream, TransformStreamDefaultController, TypeError, URIError, URL, URLSearchParams, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray, WeakMap, WeakRef, WeakSet, WebAssembly, WritableStream, WritableStreamDefaultController, WritableStreamDefaultWriter, __dirname, __filename, arguments, atob, btoa, clearImmediate, clearInterval, clearTimeout, console, crypto, decodeURI, decodeURIComponent, encodeURI, encodeURIComponent, escape, eval, expect, exports, fetch, global, globalThis, isFinite, isNaN, jest, module, parseFloat, parseInt, performance, process, queueMicrotask, require, setImmediate, setInterval, setTimeout, structuredClone, undefined, unescape.
Note: This is a precaution to guard against uninitialized mock variables. If it is ensured that the mock is required lazily, variable names prefixed with `mock` (case insensitive) are permitted.
187 | const byteLength = jest.fn();
188 | jest.mock( 'mediawiki.String', () => ( {
> 189 | byteLength: byteLength
| ^^^^^^^^^^
190 | } ), { virtual: true } );
191 | return byteLength;
192 | }
4 | { nextTick } = require( 'vue' ),
5 | { CdxToggleButton } = require( '@wikimedia/codex' ),
> 6 | { mockJSConfig } = require( '../../utils.js' );
| ^
7 |
8 | const SignalsPopover = require( '../../../../modules/ext.checkUser.suggestedInvestigations/components/SignalsPopover.vue' );
9 |
at File.buildCodeFrameError (node_modules/@babel/core/src/transformation/file/file.ts:257:12)
at NodePath.buildError [as buildCodeFrameError] (node_modules/@babel/traverse/src/path/index.ts:157:21)
at call (node_modules/@babel/traverse/src/visitors.ts:303:14)
at NodePath.call [as _call] (node_modules/@babel/traverse/src/path/context.ts:36:20)
at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitMultiple] (node_modules/@babel/traverse/src/context.ts:99:17)
at TraversalContext.visitMultiple [as visit] (node_modules/@babel/traverse/src/context.ts:178:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at NodePath.visit (node_modules/@babel/traverse/src/path/context.ts:104:33)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:109:19)
at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:180:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at NodePath.visit (node_modules/@babel/traverse/src/path/context.ts:104:33)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitMultiple] (node_modules/@babel/traverse/src/context.ts:99:17)
at TraversalContext.visitMultiple [as visit] (node_modules/@babel/traverse/src/context.ts:178:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at NodePath.visit (node_modules/@babel/traverse/src/path/context.ts:104:33)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:109:19)
at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:180:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
at transformFile (node_modules/@babel/core/src/transformation/index.ts:119:15)
at transformFile.next (<anonymous>)
at transformFile (node_modules/@babel/core/src/transformation/index.ts:49:12)
at run.next (<anonymous>)
at transform (node_modules/@babel/core/src/transform.ts:29:20)
at transform.next (<anonymous>)
at evaluateSync (node_modules/gensync/index.js:251:28)
at sync (node_modules/gensync/index.js:89:14)
at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:545:31)
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 (extensions/CheckUser/tests/jest/ext.checkUser.suggestedInvestigations/components/SignalsPopover.test.js:6:21)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.suggestedInvestigations/components/CharacterLimitedTextInput.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/CheckUser/modules/ext.checkUser.suggestedInvestigations/components/CharacterLimitedTextInput.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
8 | } ), { virtual: true } );
9 |
> 10 | const CharacterLimitedTextInput = require( '../../../../modules/ext.checkUser.suggestedInvestigations/components/CharacterLimitedTextInput.vue' );
| ^
11 |
12 | describe( 'CharacterLimitedTextInput', () => {
13 | beforeEach( () => {
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/CheckUser/tests/jest/ext.checkUser.suggestedInvestigations/components/CharacterLimitedTextInput.test.js:10:35)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.suggestedInvestigations/rest.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.suggestedInvestigations/rest.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.suggestedInvestigations/rest.test.js'
1 | 'use strict';
2 |
> 3 | const rest = require( 'ext.checkUser.suggestedInvestigations/rest.js' );
| ^
4 |
5 | let server;
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.suggestedInvestigations/rest.test.js:3:14)
FAIL tests/qunit/resources/mediawiki.widgets/Table/mediawiki.widgets.TableWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
3 | */
4 |
> 5 | QUnit.module( 'mediawiki.widgets.TableWidget' );
| ^
6 |
7 | ( function () {
8 | const widgetA = new mw.widgets.TableWidget( {
at Object.QUnit (tests/qunit/resources/mediawiki.widgets/Table/mediawiki.widgets.TableWidget.test.js:5:1)
FAIL skins/Vector/tests/jest/popupNotification.test.js
● Popup Notification › add
TypeError: Cannot set properties of undefined (setting 'matchMedia')
23 | describe( 'Popup Notification', () => {
24 | beforeEach( () => {
> 25 | global.window.matchMedia = jest.fn( () => ( {} ) );
| ^
26 | document.body.style = 'direction: ltr';
27 | jest.spyOn( mw.loader, 'using' )
28 | .mockImplementation( () => Promise.resolve() );
at Object.<anonymous> (skins/Vector/tests/jest/popupNotification.test.js:25:27)
● Popup Notification › hide
TypeError: Cannot set properties of undefined (setting 'matchMedia')
23 | describe( 'Popup Notification', () => {
24 | beforeEach( () => {
> 25 | global.window.matchMedia = jest.fn( () => ( {} ) );
| ^
26 | document.body.style = 'direction: ltr';
27 | jest.spyOn( mw.loader, 'using' )
28 | .mockImplementation( () => Promise.resolve() );
at Object.<anonymous> (skins/Vector/tests/jest/popupNotification.test.js:25:27)
● Popup Notification › show
TypeError: Cannot set properties of undefined (setting 'matchMedia')
23 | describe( 'Popup Notification', () => {
24 | beforeEach( () => {
> 25 | global.window.matchMedia = jest.fn( () => ( {} ) );
| ^
26 | document.body.style = 'direction: ltr';
27 | jest.spyOn( mw.loader, 'using' )
28 | .mockImplementation( () => Promise.resolve() );
at Object.<anonymous> (skins/Vector/tests/jest/popupNotification.test.js:25:27)
● Popup Notification › hideAll
TypeError: Cannot set properties of undefined (setting 'matchMedia')
23 | describe( 'Popup Notification', () => {
24 | beforeEach( () => {
> 25 | global.window.matchMedia = jest.fn( () => ( {} ) );
| ^
26 | document.body.style = 'direction: ltr';
27 | jest.spyOn( mw.loader, 'using' )
28 | .mockImplementation( () => Promise.resolve() );
at Object.<anonymous> (skins/Vector/tests/jest/popupNotification.test.js:25:27)
FAIL extensions/Cite/tests/qunit/ext.cite.referencePreviews/renderer.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | const previewTypes = { TYPE_REFERENCE: 'reference' };
6 |
> 7 | QUnit.module.if( 'ext.cite.referencePreviews#renderer',
| ^
8 | mw.loader.getModuleNames().includes( 'ext.popups.main' ),
9 | {
10 | before() {
at Object.QUnit (extensions/Cite/tests/qunit/ext.cite.referencePreviews/renderer.test.js:7:2)
FAIL extensions/Cite/tests/qunit/ext.cite.referencePreviews/isReferencePreviewsEnabled.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
2 |
3 | {
> 4 | QUnit.module.if( 'ext.cite.referencePreviews#isReferencePreviewsEnabled',
| ^
5 | mw.loader.getModuleNames().includes( 'ext.popups.main' ) );
6 |
7 | const createStubUserSettings = () => ( {
at Object.QUnit (extensions/Cite/tests/qunit/ext.cite.referencePreviews/isReferencePreviewsEnabled.test.js:4:2)
FAIL extensions/DiscussionTools/tests/qunit/parser.test.js
● Test suite failed to run
Cannot find module 'ext.discussionTools.init' from 'extensions/DiscussionTools/tests/qunit/testUtils.js'
Require stack:
extensions/DiscussionTools/tests/qunit/testUtils.js
extensions/DiscussionTools/tests/qunit/parser.test.js
> 1 | const utils = require( 'ext.discussionTools.init' ).utils;
| ^
2 |
3 | module.exports = {};
4 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (extensions/DiscussionTools/tests/qunit/testUtils.js:1:58)
at Object.require (extensions/DiscussionTools/tests/qunit/parser.test.js:3:14)
FAIL skins/Vector/tests/jest/skins.vector.js/tables.test.js
● tables › wraps table with div
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
3 | describe( 'tables', () => {
4 | test( 'wraps table with div', () => {
> 5 | document.body.innerHTML = `
| ^
6 | <div class="mw-parser-output">
7 | <table class="wikitable">
8 | <tbody><tr><th>table table table</th></tr></tbody>
at Object.document (skins/Vector/tests/jest/skins.vector.js/tables.test.js:5:3)
● tables › wraps multiple table with div
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
16 |
17 | test( 'wraps multiple table with div', () => {
> 18 | document.body.innerHTML = `
| ^
19 | <div class="mw-parser-output">
20 | <table class="wikitable">
21 | <tbody><tr><th>table table table</th></tr></tbody>
at Object.document (skins/Vector/tests/jest/skins.vector.js/tables.test.js:18:3)
● tables › doesnt wrap nested tables
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
36 |
37 | test( 'doesnt wrap nested tables', () => {
> 38 | document.body.innerHTML = `
| ^
39 | <div class="mw-parser-output">
40 | <table class="wikitable">
41 | <tbody>
at Object.document (skins/Vector/tests/jest/skins.vector.js/tables.test.js:38:3)
● tables › doesnt wrap tables that are not wikitables
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
52 |
53 | test( 'doesnt wrap tables that are not wikitables', () => {
> 54 | document.body.innerHTML = `
| ^
55 | <div class="mw-parser-output">
56 | <table>
57 | <tbody>
at Object.document (skins/Vector/tests/jest/skins.vector.js/tables.test.js:54:3)
● tables › doesnt wrap tables that already have noresize
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
68 |
69 | test( 'doesnt wrap tables that already have noresize', () => {
> 70 | document.body.innerHTML = `
| ^
71 | <div class="mw-parser-output">
72 | <div class="noresize">
73 | <table class="wikitable">
at Object.document (skins/Vector/tests/jest/skins.vector.js/tables.test.js:70:3)
● tables › doesnt wrap tables that are already wrapped
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
85 |
86 | test( 'doesnt wrap tables that are already wrapped', () => {
> 87 | document.body.innerHTML = `
| ^
88 | <div class="mw-parser-output">
89 | <div>
90 | <table class="wikitable">
at Object.document (skins/Vector/tests/jest/skins.vector.js/tables.test.js:87:3)
● tables › doesnt wrap floated tables
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
102 |
103 | test( 'doesnt wrap floated tables', () => {
> 104 | document.body.innerHTML = `
| ^
105 | <div class="mw-parser-output">
106 | <table class="wikitable" style="float:right">
107 | <tbody>
at Object.document (skins/Vector/tests/jest/skins.vector.js/tables.test.js:104:3)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/dialogs/ve.ui.MWTransclusionDialog.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 |
7 | {
> 8 | QUnit.module( 've.ui.MWTransclusionDialog', ve.test.utils.newMwEnvironment( {
| ^
9 | config: {
10 | // Set config variable to activate new sidebar feature
11 | // TODO: remove this when sidebar feature will be default
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ui/dialogs/ve.ui.MWTransclusionDialog.test.js:8:2)
FAIL extensions/VisualEditor/modules/ve-mw/tests/dm/ve.dm.SurfaceFragment.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.dm.SurfaceFragment (MW)', ve.test.utils.newMwEnvironment() );
| ^
9 |
10 | /* Tests */
11 |
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/dm/ve.dm.SurfaceFragment.test.js:8:1)
FAIL skins/MinervaNeue/tests/jest/skins.minerva.scripts/reportIfNightModeWasDisabledOnPage.test.js
● Test suite failed to run
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
3 | '../../../resources/skins.minerva.scripts/reportIfNightModeWasDisabledOnPage.js'
4 | );
> 5 | const nightModeDisabledDoc = document.createElement( 'html' );
| ^
6 | nightModeDisabledDoc.setAttribute( 'class', 'skin-night-mode-page-disabled' );
7 |
8 | const userOptionsEnabled = new Map();
at Object.document (skins/MinervaNeue/tests/jest/skins.minerva.scripts/reportIfNightModeWasDisabledOnPage.test.js:5:30)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ui.MWWikitextStringTransferHandler.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
8 | */
9 |
> 10 | QUnit.module( 've.ui.MWWikitextStringTransferHandler (Cite)', ve.test.utils.newMwEnvironment( {
| ^
11 | beforeEach: function () {
12 | // Mock XHR for mw.Api()
13 | this.server = this.sandbox.useFakeServer();
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ui.MWWikitextStringTransferHandler.test.js:10:1)
FAIL tests/qunit/resources/startup/clientprefs.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'startup/clientprefs', () => {
| ^
2 | // See /resources/src/startup/clientprefs.js
3 | const clientprefs = mw.clientprefs;
4 |
at Object.<anonymous> (tests/qunit/resources/startup/clientprefs.test.js:1:44)
FAIL tests/jest/mediawiki.special.block/util.test.js
● util › sanitizeRange (IPv4 range)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv4 range 2)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv4 large range)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv4 intermediate range)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv4 silly range)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv4 non-range)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv6 range)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv6 range 2)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv6 large range)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv6 intermediate range)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv6 silly range)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv6 non range)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › formatTimestamp
ReferenceError: mw is not defined
92 |
93 | it.each( formatTimestampCases )( 'formatTimestamp', ( { input, expected } ) => {
> 94 | mw.util.isInfinity = jest.fn().mockReturnValue( input === 'infinity' );
| ^
95 | expect( util.formatTimestamp( input ) ).toBe( expected );
96 | } );
97 | } );
at mw (tests/jest/mediawiki.special.block/util.test.js:94:3)
● util › formatTimestamp
ReferenceError: mw is not defined
92 |
93 | it.each( formatTimestampCases )( 'formatTimestamp', ( { input, expected } ) => {
> 94 | mw.util.isInfinity = jest.fn().mockReturnValue( input === 'infinity' );
| ^
95 | expect( util.formatTimestamp( input ) ).toBe( expected );
96 | } );
97 | } );
at mw (tests/jest/mediawiki.special.block/util.test.js:94:3)
FAIL tests/qunit/resources/mediawiki.base/track.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.base/track', () => {
| ^
2 |
3 | QUnit.test( 'track', ( assert ) => {
4 | const sequence = [];
at Object.<anonymous> (tests/qunit/resources/mediawiki.base/track.test.js:1:45)
FAIL extensions/VisualEditor/modules/ve-mw/tests/dm/nodes/ve.dm.MWTransclusionNode.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.dm.MWTransclusionNode' );
| ^
9 |
10 | QUnit.test.each( 'getWikitext', {
11 | 'mix of numbered and named parameters': {
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/dm/nodes/ve.dm.MWTransclusionNode.test.js:8:1)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferenceSearchWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
2 |
3 | {
> 4 | QUnit.module( 've.ui.MWReferenceSearchWidget (Cite)', ve.test.utils.newMwEnvironment() );
| ^
5 |
6 | /**
7 | * @param {boolean} [hasNode=false]
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferenceSearchWidget.test.js:4:2)
FAIL tests/jest/mediawiki.skinning.typeaheadSearch/fetch.test.js
● abort() using AbortController › Aborting an unfinished request throws an AbortError
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: window is not defined
27 | // so replacing it with no-op if it doesn't exist.
28 | // eslint-disable-next-line compat/compat
> 29 | const controller = window.AbortController ?
| ^
30 | // eslint-disable-next-line compat/compat
31 | new AbortController() :
32 | nullAbortController;
at window (resources/src/mediawiki.skinning.typeaheadSearch/fetch.js:29:21)
at Object.fetchJson (tests/jest/mediawiki.skinning.typeaheadSearch/fetch.test.js:12:28)
● abort() using AbortController › Aborting an unfinished request throws an AbortError
expect.assertions(1)
Expected one assertion to be called but received zero assertion calls.
8 | describe( 'abort() using AbortController', () => {
9 | test( 'Aborting an unfinished request throws an AbortError', async () => {
> 10 | expect.assertions( 1 );
| ^
11 |
12 | const { abort, fetch } = fetchJson( url );
13 |
at Object.assertions (tests/jest/mediawiki.skinning.typeaheadSearch/fetch.test.js:10:10)
● fetch() using window.fetch › 200 without init param passed
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: window is not defined
27 | // so replacing it with no-op if it doesn't exist.
28 | // eslint-disable-next-line compat/compat
> 29 | const controller = window.AbortController ?
| ^
30 | // eslint-disable-next-line compat/compat
31 | new AbortController() :
32 | nullAbortController;
at window (resources/src/mediawiki.skinning.typeaheadSearch/fetch.js:29:21)
at Object.fetchJson (tests/jest/mediawiki.skinning.typeaheadSearch/fetch.test.js:54:21)
● fetch() using window.fetch › 200 with init param passed
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: window is not defined
27 | // so replacing it with no-op if it doesn't exist.
28 | // eslint-disable-next-line compat/compat
> 29 | const controller = window.AbortController ?
| ^
30 | // eslint-disable-next-line compat/compat
31 | new AbortController() :
32 | nullAbortController;
at window (resources/src/mediawiki.skinning.typeaheadSearch/fetch.js:29:21)
at Object.fetchJson (tests/jest/mediawiki.skinning.typeaheadSearch/fetch.test.js:66:21)
● fetch() using window.fetch › 404 response
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: window is not defined
27 | // so replacing it with no-op if it doesn't exist.
28 | // eslint-disable-next-line compat/compat
> 29 | const controller = window.AbortController ?
| ^
30 | // eslint-disable-next-line compat/compat
31 | new AbortController() :
32 | nullAbortController;
at window (resources/src/mediawiki.skinning.typeaheadSearch/fetch.js:29:21)
at Object.fetchJson (tests/jest/mediawiki.skinning.typeaheadSearch/fetch.test.js:82:21)
● fetch() using window.fetch › 404 response
expect.assertions(1)
Expected one assertion to be called but received zero assertion calls.
79 |
80 | test( '404 response', async () => {
> 81 | expect.assertions( 1 );
| ^
82 | const { fetch } = fetchJson( '//en.wikipedia.org/doesNotExist' );
83 |
84 | await expect( fetch )
at Object.assertions (tests/jest/mediawiki.skinning.typeaheadSearch/fetch.test.js:81:10)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ui.DiffElement.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
7 | */
8 |
> 9 | QUnit.module( 've.ui.DiffElement (Cite)' );
| ^
10 |
11 | QUnit.test( 'Diffing', ( assert ) => {
12 | const spacer = '<div class="ve-ui-diffElement-spacer">⋮</div>',
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ui.DiffElement.test.js:9:1)
FAIL skins/Vector/tests/jest/skins.vector.js/portlets.test.js
● Test suite failed to run
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
157 | // Enhance previously added items.
158 | Array.prototype.forEach.call(
> 159 | document.querySelectorAll( '.mw-list-item-js' ),
| ^
160 | ( item ) => {
161 | addPortletLinkHandler( item, {
162 | id: item.getAttribute( 'id' )
at Object.document (skins/Vector/resources/skins.vector.js/dropdownMenus.js:159:2)
at Object.<anonymous> (skins/Vector/resources/skins.vector.js/portlets.js:1:54)
at Object.<anonymous> (skins/Vector/tests/jest/skins.vector.js/portlets.test.js:1:77)
FAIL tests/qunit/resources/mediawiki.ForeignApi/mediawiki.ForeignApi.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.ForeignApi', ( hooks ) => {
| ^
2 | const CoreForeignApi = require( 'mediawiki.ForeignApi.core' ).ForeignApi;
3 |
4 | hooks.beforeEach( function () {
at Object.<anonymous> (tests/qunit/resources/mediawiki.ForeignApi/mediawiki.ForeignApi.test.js:1:52)
FAIL tests/qunit/resources/mediawiki.base/html.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.base/html', () => {
| ^
2 |
3 | QUnit.test( 'escape', ( assert ) => {
4 | assert.throws(
at Object.<anonymous> (tests/qunit/resources/mediawiki.base/html.test.js:1:44)
FAIL extensions/Cite/tests/qunit/ext.cite.highlighting.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
2 |
3 | /* eslint-disable no-jquery/no-global-selector */
> 4 | QUnit.module( 'ext.cite.highlighting (Cite)', {
| ^
5 | beforeEach: function () {
6 | const $content = $( `
7 | <div>
at Object.QUnit (extensions/Cite/tests/qunit/ext.cite.highlighting.test.js:4:1)
FAIL skins/Vector/tests/jest/skins.vector.clientPreferences.test.js
● clientPreferences › render empty
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
4 | describe( 'clientPreferences', () => {
5 | beforeEach( () => {
> 6 | document.body.innerHTML = '';
| ^
7 | cp = document.createElement( 'div' );
8 | cp.id = 'cp';
9 | document.body.appendChild( cp );
at Object.document (skins/Vector/tests/jest/skins.vector.clientPreferences.test.js:6:3)
● clientPreferences › render font size
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
4 | describe( 'clientPreferences', () => {
5 | beforeEach( () => {
> 6 | document.body.innerHTML = '';
| ^
7 | cp = document.createElement( 'div' );
8 | cp.id = 'cp';
9 | document.body.appendChild( cp );
at Object.document (skins/Vector/tests/jest/skins.vector.clientPreferences.test.js:6:3)
● clientPreferences › doesnt render exclusion notice if the msg key doesnt exist
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
4 | describe( 'clientPreferences', () => {
5 | beforeEach( () => {
> 6 | document.body.innerHTML = '';
| ^
7 | cp = document.createElement( 'div' );
8 | cp.id = 'cp';
9 | document.body.appendChild( cp );
at Object.document (skins/Vector/tests/jest/skins.vector.clientPreferences.test.js:6:3)
● clientPreferences › render toggle
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
4 | describe( 'clientPreferences', () => {
5 | beforeEach( () => {
> 6 | document.body.innerHTML = '';
| ^
7 | cp = document.createElement( 'div' );
8 | cp.id = 'cp';
9 | document.body.appendChild( cp );
at Object.document (skins/Vector/tests/jest/skins.vector.clientPreferences.test.js:6:3)
FAIL tests/qunit/resources/testrunner.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'testrunner', () => {
| ^
2 | QUnit.test( 'assert.htmlEqual', ( assert ) => {
3 | assert.htmlEqual(
4 | '<div><p class="some classes" data-length="10">Child paragraph with <a href="http://example.com">A link</a></p>Regular text<span>A span</span></div>',
at Object.<anonymous> (tests/qunit/resources/testrunner.test.js:1:35)
FAIL tests/qunit/resources/mediawiki.ForeignApi/mediawiki.ForeignRest.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.ForeignRest', ( hooks ) => {
| ^
2 | const CoreForeignApi = require( 'mediawiki.ForeignApi.core' ).ForeignApi;
3 | const CoreForeignRest = require( 'mediawiki.ForeignApi.core' ).ForeignRest;
4 |
at Object.<anonymous> (tests/qunit/resources/mediawiki.ForeignApi/mediawiki.ForeignRest.test.js:1:53)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserInfoCardError.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserInfoCardError.test.js'
1 | 'use strict';
2 |
> 3 | const { mount } = require( 'vue-test-utils' );
| ^
4 | const UserInfoCardError = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/components/UserInfoCardError.vue' );
5 |
6 | QUnit.module( 'ext.checkUser.userInfoCard.UserInfoCardError', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserInfoCardError.test.js:3:19)
FAIL tests/qunit/resources/startup/mw.requestIdleCallback.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | ( function () {
> 2 | QUnit.module( 'mw.requestIdleCallback', QUnit.newMwEnvironment( {
| ^
3 | beforeEach: function () {
4 | const clock = this.clock = this.sandbox.useFakeTimers();
5 |
at QUnit (tests/qunit/resources/startup/mw.requestIdleCallback.test.js:2:2)
at Object.<anonymous> (tests/qunit/resources/startup/mw.requestIdleCallback.test.js:105:2)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/layouts/ve.ui.MWTwoPaneTransclusionDialogLayout.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWTwoPaneTransclusionDialogLayout', ve.test.utils.newMwEnvironment() );
| ^
2 |
3 | const createLayout = function () {
4 | return new ve.ui.MWTwoPaneTransclusionDialogLayout( { continuous: true } );
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/layouts/ve.ui.MWTwoPaneTransclusionDialogLayout.test.js:1:92)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.truncatableTextField.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.truncatableTextField.test.js'
However, Jest was able to find:
'./mmv.ui.canvas.test.js'
'./mmv.ui.canvasButtons.test.js'
'./mmv.ui.description.test.js'
'./mmv.ui.download.pane.test.js'
'./mmv.ui.metadataPanel.test.js'
'./mmv.ui.metadataPanelScroller.test.js'
'./mmv.ui.permission.test.js'
'./mmv.ui.progressBar.test.js'
'./mmv.ui.reuse.dialog.test.js'
'./mmv.ui.reuse.embed.test.js'
'./mmv.ui.reuse.share.test.js'
'./mmv.ui.reuse.utils.test.js'
'./mmv.ui.stripeButtons.test.js'
'./mmv.ui.test.js'
'./mmv.ui.truncatableTextField.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { TruncatableTextField } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.ui.TruncatableTextField', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.truncatableTextField.test.js:18:34)
FAIL vendor/wikimedia/parsoid/bin/domdiff.test.js
● Test suite failed to run
Cannot find module './lib/utils/promise.js' from 'vendor/wikimedia/parsoid/core-upgrade.js'
Require stack:
vendor/wikimedia/parsoid/core-upgrade.js
vendor/wikimedia/parsoid/bin/domdiff.test.js
2 |
3 | // Register prfun's Promises with node-pn
> 4 | var Promise = require('./lib/utils/promise.js');
| ^
5 | require('pn/_promise')(Promise); // This only needs to be done once.
6 |
7 | // Comments below annotate the highest lts version of node for which the
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (vendor/wikimedia/parsoid/core-upgrade.js:4:15)
at Object.require (vendor/wikimedia/parsoid/bin/domdiff.test.js:5:1)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/ve.ui.DiffElement.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | */
6 |
> 7 | QUnit.module( 've.ui.DiffElement (MW)', ve.test.utils.newMwEnvironment() );
| ^
8 |
9 | QUnit.test.each( 'Diffing',
10 | [
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ui/ve.ui.DiffElement.test.js:7:1)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.test.js'
However, Jest was able to find:
'./mmv.model.Image.test.js'
'./mmv.model.License.test.js'
'./mmv.model.Repo.test.js'
'./mmv.model.TaskQueue.test.js'
'./mmv.model.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { Thumbnail, ThumbnailWidth } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.model', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.test.js:18:39)
FAIL extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ve/ve.init.mw.HCaptchaSaveErrorHandler.test.js
● Test suite failed to run
Cannot find module 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/utils.js' from 'extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ve/ve.init.mw.HCaptchaSaveErrorHandler.test.js'
> 1 | const utils = require( 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/utils.js' );
| ^
2 | const hCaptchaSaveErrorHandler = require( 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/ve/ve.init.mw.HCaptchaSaveErrorHandler.js' );
3 |
4 | QUnit.module( 'ext.confirmEdit.hCaptcha.ve.HCaptchaSaveErrorHandler', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ve/ve.init.mw.HCaptchaSaveErrorHandler.test.js:1:86)
FAIL tests/qunit/resources/mediawiki.base/errorLogger.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.base/errorLogger', () => {
| ^
2 |
3 | QUnit.test( 'installGlobalHandler', function ( assert ) {
4 | const errorMessage = 'Foo';
at Object.<anonymous> (tests/qunit/resources/mediawiki.base/errorLogger.test.js:1:51)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.description.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.description.test.js'
However, Jest was able to find:
'./mmv.ui.canvas.test.js'
'./mmv.ui.canvasButtons.test.js'
'./mmv.ui.description.test.js'
'./mmv.ui.download.pane.test.js'
'./mmv.ui.metadataPanel.test.js'
'./mmv.ui.metadataPanelScroller.test.js'
'./mmv.ui.permission.test.js'
'./mmv.ui.progressBar.test.js'
'./mmv.ui.reuse.dialog.test.js'
'./mmv.ui.reuse.embed.test.js'
'./mmv.ui.reuse.share.test.js'
'./mmv.ui.reuse.utils.test.js'
'./mmv.ui.stripeButtons.test.js'
'./mmv.ui.test.js'
'./mmv.ui.truncatableTextField.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
> 1 | const { Description } = require( 'mmv' );
| ^
2 |
3 | QUnit.module( 'mmv.ui.description', QUnit.newMwEnvironment() );
4 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.description.test.js:1:25)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlineParameterSelectWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWTransclusionOutlineParameterSelectWidget' );
| ^
2 |
3 | QUnit.test( 'static item constructor', ( assert ) => {
4 | const item = ve.ui.MWTransclusionOutlineParameterSelectWidget.static.createItem( { data: 'p1' } );
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlineParameterSelectWidget.test.js:1:67)
FAIL tests/jest/mediawiki.skinning.typeaheadSearch/instrumentation.test.js
● instrumentation › addWprovToSearchResultUrls without offset
ReferenceError: location is not defined
57 | return results.map( ( result, index ) => {
58 | if ( result.url ) {
> 59 | const url = new URL( result.url, location.href );
| ^
60 | url.searchParams.set( 'wprov', getWprovFromResultIndex( index + offset ) );
61 | result = Object.assign( {}, result, { url: url.toString() } );
62 | }
at location (resources/src/mediawiki.skinning.typeaheadSearch/instrumentation.js:59:37)
at Array.map (<anonymous>)
at Object.map [as addWprovToSearchResultUrls] (resources/src/mediawiki.skinning.typeaheadSearch/instrumentation.js:57:17)
at Object.addWprovToSearchResultUrls (tests/jest/mediawiki.skinning.typeaheadSearch/instrumentation.test.js:40:27)
● instrumentation › addWprovToSearchResultUrls with offset
ReferenceError: location is not defined
57 | return results.map( ( result, index ) => {
58 | if ( result.url ) {
> 59 | const url = new URL( result.url, location.href );
| ^
60 | url.searchParams.set( 'wprov', getWprovFromResultIndex( index + offset ) );
61 | result = Object.assign( {}, result, { url: url.toString() } );
62 | }
at location (resources/src/mediawiki.skinning.typeaheadSearch/instrumentation.js:59:37)
at Array.map (<anonymous>)
at Object.map [as addWprovToSearchResultUrls] (resources/src/mediawiki.skinning.typeaheadSearch/instrumentation.js:57:17)
at Object.addWprovToSearchResultUrls (tests/jest/mediawiki.skinning.typeaheadSearch/instrumentation.test.js:79:27)
FAIL tests/jest/mediawiki.special.block/NamespacesField.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/resources/src/mediawiki.special.block/SpecialBlock.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
4 | const { createTestingPinia } = require( '@pinia/testing' );
5 |
> 6 | const SpecialBlock = require( '../../../resources/src/mediawiki.special.block/SpecialBlock.vue' );
| ^
7 |
8 | /**
9 | * Mount the SpecialBlock component with the default configuration,
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (tests/jest/mediawiki.special.block/SpecialBlock.setup.js:6:22)
at Object.require (tests/jest/mediawiki.special.block/NamespacesField.test.js:5:29)
FAIL tests/qunit/resources/mediawiki.api/mediawiki.api.watch.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.api.watch', ( hooks ) => {
| ^
2 | let server;
3 | hooks.beforeEach( function () {
4 | server = this.sandbox.useFakeServer();
at Object.<anonymous> (tests/qunit/resources/mediawiki.api/mediawiki.api.watch.test.js:1:51)
FAIL tests/jest/mediawiki.skinning.typeaheadSearch/App.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/resources/src/mediawiki.skinning.typeaheadSearch/App.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
1 | const VueTestUtils = require( '@vue/test-utils' );
> 2 | const App = require( '../../../resources/src/mediawiki.skinning.typeaheadSearch/App.vue' );
| ^
3 | const urlGeneratorFn = require( '../../../resources/src/mediawiki.skinning.typeaheadSearch/urlGenerator.js' );
4 | const scriptPath = '/w/index.php';
5 | const urlGenerator = urlGeneratorFn( scriptPath );
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (tests/jest/mediawiki.skinning.typeaheadSearch/App.test.js:2:13)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.share.test.js
● Test suite failed to run
Cannot find module 'mmv.ui.reuse' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.share.test.js'
16 | */
17 |
> 18 | const { Share } = require( 'mmv.ui.reuse' );
| ^
19 |
20 | function makeShare() {
21 | return new Share( $( '#qunit-fixture' ) );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.share.test.js:18:19)
FAIL extensions/Cite/tests/qunit/ve-cite/converter/ve.dm.Converter.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
8 | */
9 |
> 10 | QUnit.module( 've.dm.Converter (Cite)', ve.test.utils.newMwEnvironment( {
| ^
11 | before: function () {
12 | this.prepareCases = ( caseItem ) => {
13 | caseItem.base = ve.dm.citeExample.baseUri;
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/converter/ve.dm.Converter.test.js:10:1)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingStep.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/CheckUser/modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingStep.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
1 | 'use strict';
2 |
> 3 | const TempAccountsOnboardingStep = require( '../../../../modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingStep.vue' ),
| ^
4 | utils = require( '@vue/test-utils' );
5 |
6 | const renderComponent = ( props, slots ) => utils.mount( TempAccountsOnboardingStep, {
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingStep.test.js:3:36)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardLoadingView.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardLoadingView.test.js'
1 | 'use strict';
2 |
> 3 | const { mount } = require( 'vue-test-utils' );
| ^
4 | const UserCardLoadingView = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/components/UserCardLoadingView.vue' );
5 |
6 | QUnit.module( 'ext.checkUser.userInfoCard.UserCardLoadingView', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardLoadingView.test.js:3:19)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/generateData.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser/checkuser/checkUserHelper/generateData.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/generateData.test.js'
1 | 'use strict';
2 |
> 3 | const generateData = require( 'ext.checkUser/checkuser/checkUserHelper/generateData.js' );
| ^
4 |
5 | QUnit.module( 'ext.checkUser.checkuser.checkUserHelper.generateData', QUnit.newMwEnvironment() );
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/generateData.test.js:3:22)
FAIL skins/Vector/tests/jest/skins.vector.js/menuTabs.test.js
● menuTabs › adds vector-tab-noicon class to li element when part of tabs
ReferenceError: mw is not defined
5 | /** @type {Function} */
6 | let callback;
> 7 | jest.spyOn( mw, 'hook' ).mockImplementation( () => ( {
| ^
8 | add: function ( fn ) {
9 | callback = fn;
10 |
at Object.mw (skins/Vector/tests/jest/skins.vector.js/menuTabs.test.js:7:15)
● menuTabs › does not add vector-tab-noicon class to li element when not part of tabs
ReferenceError: mw is not defined
5 | /** @type {Function} */
6 | let callback;
> 7 | jest.spyOn( mw, 'hook' ).mockImplementation( () => ( {
| ^
8 | add: function ( fn ) {
9 | callback = fn;
10 |
at Object.mw (skins/Vector/tests/jest/skins.vector.js/menuTabs.test.js:7:15)
FAIL tests/qunit/resources/mediawiki.toc.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | ( function () {
> 2 | QUnit.module( 'mediawiki.toc', {
| ^
3 | beforeEach: function () {
4 | this.getCookie = this.stub( mw.cookie, 'get' ).returns( null );
5 | this.setCookie = this.stub( mw.cookie, 'set' ).returns( null );
at QUnit (tests/qunit/resources/mediawiki.toc.test.js:2:2)
at Object.<anonymous> (tests/qunit/resources/mediawiki.toc.test.js:42:2)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/InfoRow.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/InfoRow.test.js'
1 | 'use strict';
2 |
> 3 | const { shallowMount } = require( 'vue-test-utils' );
| ^
4 | const InfoRow = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/components/InfoRow.vue' );
5 |
6 | QUnit.module( 'ext.checkUser.userInfoCard.InfoRow' );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/InfoRow.test.js:3:26)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingIntroStep.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/CheckUser/modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingIntroStep.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
1 | 'use strict';
2 |
> 3 | const TempAccountsOnboardingIntroStep = require( '../../../../modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingIntroStep.vue' ),
| ^
4 | utils = require( '@vue/test-utils' );
5 |
6 | describe( 'First step of temporary accounts onboarding dialog', () => {
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingIntroStep.test.js:3:41)
FAIL tests/qunit/resources/mediawiki.rcfilters/dm.SavedQueryItemModel.test.js
● Test suite failed to run
Cannot find module 'mediawiki.rcfilters.filters.ui' from 'tests/qunit/resources/mediawiki.rcfilters/dm.SavedQueryItemModel.test.js'
1 | /* eslint-disable camelcase */
2 | ( function () {
> 3 | const rcfilters = require( 'mediawiki.rcfilters.filters.ui' );
| ^
4 | const itemData = {
5 | params: {
6 | param1: '1',
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (tests/qunit/resources/mediawiki.rcfilters/dm.SavedQueryItemModel.test.js:3:20)
at Object.<anonymous> (tests/qunit/resources/mediawiki.rcfilters/dm.SavedQueryItemModel.test.js:88:2)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlineParameterWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWTransclusionOutlineParameterWidget' );
| ^
2 |
3 | QUnit.test( 'interprets param with no attributes', ( assert ) => {
4 | const widget = new ve.ui.MWTransclusionOutlineParameterWidget( {} );
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlineParameterWidget.test.js:1:61)
FAIL vendor/wikimedia/parsoid/bin/normalize.test.js
● Test suite failed to run
Cannot find module './lib/utils/promise.js' from 'vendor/wikimedia/parsoid/core-upgrade.js'
Require stack:
vendor/wikimedia/parsoid/core-upgrade.js
vendor/wikimedia/parsoid/bin/normalize.test.js
2 |
3 | // Register prfun's Promises with node-pn
> 4 | var Promise = require('./lib/utils/promise.js');
| ^
5 | require('pn/_promise')(Promise); // This only needs to be done once.
6 |
7 | // Comments below annotate the highest lts version of node for which the
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (vendor/wikimedia/parsoid/core-upgrade.js:4:15)
at Object.require (vendor/wikimedia/parsoid/bin/normalize.test.js:5:1)
FAIL skins/MinervaNeue/tests/qunit/skins.minerva.scripts/watchstar.test.js
● Test suite failed to run
Cannot find module 'skins.minerva.scripts/watchstar.js' from 'skins/MinervaNeue/tests/qunit/skins.minerva.scripts/watchstar.test.js'
1 | /* eslint-disable no-jquery/no-class-state */
2 | ( function () {
> 3 | const watchstar = require( 'skins.minerva.scripts/watchstar.js' );
| ^
4 | const toggleClasses = watchstar.test.toggleClasses;
5 | const WATCHED_CLASS = watchstar.test.WATCHED_ICON_CLASS;
6 | const TEMP_WATCHED_CLASS = watchstar.test.TEMP_WATCHED_ICON_CLASS;
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/watchstar.test.js:3:20)
at Object.<anonymous> (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/watchstar.test.js:40:2)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.dm.MWReferencesListNode.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | 'use strict';
2 |
> 3 | QUnit.module( 've.dm.MWReferencesListNode (Cite)', ve.test.utils.newMwEnvironment() );
| ^
4 |
5 | QUnit.test( 'isEditable', ( assert ) => {
6 | let model = new ve.dm.MWReferencesListNode();
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.dm.MWReferencesListNode.test.js:3:1)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ce/ve.ce.ContentBranchNode.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.ce.ContentBranchNode (MW)' );
| ^
9 |
10 | /* Tests */
11 |
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ce/ve.ce.ContentBranchNode.test.js:8:1)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/logging/mmv.logging.ViewLogger.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/logging/mmv.logging.ViewLogger.test.js'
However, Jest was able to find:
'./mmv.logging.ViewLogger.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
> 1 | const { ViewLogger } = require( 'mmv' );
| ^
2 |
3 | QUnit.module( 'mmv.logging.ViewLogger', QUnit.newMwEnvironment( {
4 | beforeEach: function () {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/logging/mmv.logging.ViewLogger.test.js:1:24)
FAIL tests/qunit/resources/mediawiki.template.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | ( function () {
2 |
> 3 | QUnit.module( 'mediawiki.template', {
| ^
4 | beforeEach: function () {
5 | const abcCompiler = {
6 | compile: function () {
at QUnit (tests/qunit/resources/mediawiki.template.test.js:3:2)
at Object.<anonymous> (tests/qunit/resources/mediawiki.template.test.js:63:2)
FAIL extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ErrorWidget.test.js
● Test suite failed to run
Cannot find module 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/ErrorWidget.js' from 'extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ErrorWidget.test.js'
> 1 | const ErrorWidget = require( 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/ErrorWidget.js' );
| ^
2 |
3 | QUnit.module( 'ext.confirmEdit.hCaptcha.ErrorWidget', {
4 | beforeEach() {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ErrorWidget.test.js:1:98)
FAIL tests/jest/mediawiki.special.block/ReasonField.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/resources/src/mediawiki.special.block/components/ReasonField.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
2 |
3 | const { mount, shallowMount } = require( '@vue/test-utils' );
> 4 | const ReasonField = require( '../../../resources/src/mediawiki.special.block/components/ReasonField.vue' );
| ^
5 | const { mockMwConfigGet } = require( './SpecialBlock.setup.js' );
6 |
7 | describe( 'ReasonField', () => {
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (tests/jest/mediawiki.special.block/ReasonField.test.js:4:21)
FAIL skins/MinervaNeue/tests/qunit/skins.minerva.scripts/AB.test.js
● Test suite failed to run
Cannot find module 'skins.minerva.scripts/AB.js' from 'skins/MinervaNeue/tests/qunit/skins.minerva.scripts/AB.test.js'
1 | ( function () {
2 |
> 3 | const AB = require( 'skins.minerva.scripts/AB.js' );
| ^
4 | const defaultConfig = {
5 | testName: 'WME.MinervaABTest',
6 | samplingRate: 0.5,
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/AB.test.js:3:13)
at Object.<anonymous> (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/AB.test.js:52:2)
FAIL tests/qunit/resources/mediawiki.api/mediawiki.api.parse.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.api.edit', ( hooks ) => {
| ^
2 | let server;
3 | hooks.beforeEach( function () {
4 | server = this.sandbox.useFakeServer();
at Object.<anonymous> (tests/qunit/resources/mediawiki.api/mediawiki.api.parse.test.js:1:50)
FAIL tests/qunit/resources/mediawiki.api/mediawiki.api.messages.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.api.messages', ( hooks ) => {
| ^
2 | let server;
3 | hooks.beforeEach( function () {
4 | server = this.sandbox.useFakeServer();
at Object.<anonymous> (tests/qunit/resources/mediawiki.api/mediawiki.api.messages.test.js:1:54)
FAIL tests/jest/mediawiki.special.block/BlockDetailsField.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/resources/src/mediawiki.special.block/SpecialBlock.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
4 | const { createTestingPinia } = require( '@pinia/testing' );
5 |
> 6 | const SpecialBlock = require( '../../../resources/src/mediawiki.special.block/SpecialBlock.vue' );
| ^
7 |
8 | /**
9 | * Mount the SpecialBlock component with the default configuration,
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (tests/jest/mediawiki.special.block/SpecialBlock.setup.js:6:22)
at Object.require (tests/jest/mediawiki.special.block/BlockDetailsField.test.js:5:29)
FAIL tests/jest/mediawiki.special.block/init.test.js
● SpecialBlock init.js › should give the form the ID mw-block-form
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
5 |
6 | beforeEach( () => {
> 7 | document.body.innerHTML = '';
| ^
8 | const form = document.createElement( 'form' );
9 | form.className = 'mw-htmlform';
10 | document.body.appendChild( form );
at Object.document (tests/jest/mediawiki.special.block/init.test.js:7:3)
● SpecialBlock init.js › should do nothing if there is no mw-htmlform
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
5 |
6 | beforeEach( () => {
> 7 | document.body.innerHTML = '';
| ^
8 | const form = document.createElement( 'form' );
9 | form.className = 'mw-htmlform';
10 | document.body.appendChild( form );
at Object.document (tests/jest/mediawiki.special.block/init.test.js:7:3)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.canvasButtons.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.canvasButtons.test.js'
However, Jest was able to find:
'./mmv.ui.canvas.test.js'
'./mmv.ui.canvasButtons.test.js'
'./mmv.ui.description.test.js'
'./mmv.ui.download.pane.test.js'
'./mmv.ui.metadataPanel.test.js'
'./mmv.ui.metadataPanelScroller.test.js'
'./mmv.ui.permission.test.js'
'./mmv.ui.progressBar.test.js'
'./mmv.ui.reuse.dialog.test.js'
'./mmv.ui.reuse.embed.test.js'
'./mmv.ui.reuse.share.test.js'
'./mmv.ui.reuse.utils.test.js'
'./mmv.ui.stripeButtons.test.js'
'./mmv.ui.test.js'
'./mmv.ui.truncatableTextField.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { CanvasButtons } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.ui.CanvasButtons', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.canvasButtons.test.js:18:27)
FAIL skins/MinervaNeue/tests/qunit/skins.minerva.scripts/page-issues/index.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'Minerva pageIssues', () => {
| ^
2 | const mobile = require( 'mobile.startup' );
3 | const pageIssues = require( 'skins.minerva.scripts/page-issues/index.js' );
4 | const insertBannersOrNotice = pageIssues.test.insertBannersOrNotice;
at Object.<anonymous> (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/page-issues/index.test.js:1:43)
FAIL tests/qunit/resources/mediawiki.experiments.test.js
● Test suite failed to run
ReferenceError: mw is not defined
1 | ( function () {
2 |
> 3 | const getBucket = mw.experiments.getBucket;
| ^
4 |
5 | function createExperiment() {
6 | return {
at mw (tests/qunit/resources/mediawiki.experiments.test.js:3:20)
at Object.<anonymous> (tests/qunit/resources/mediawiki.experiments.test.js:63:2)
FAIL skins/Vector/tests/integration-qunit/integration.test.js
● Test suite failed to run
Cannot find module 'skins.vector.clientPreferences' from 'skins/Vector/tests/integration-qunit/integration.test.js'
1 | /* global QUnit */
> 2 | const clientPreferences = require( 'skins.vector.clientPreferences' );
| ^
3 |
4 | /*!
5 | * Vector integration tests.
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (skins/Vector/tests/integration-qunit/integration.test.js:2:27)
FAIL extensions/DiscussionTools/tests/qunit/utils.test.js
● Test suite failed to run
Cannot find module 'ext.discussionTools.init' from 'extensions/DiscussionTools/tests/qunit/utils.test.js'
> 1 | const utils = require( 'ext.discussionTools.init' ).utils;
| ^
2 |
3 | QUnit.module( 'mw.dt.utils', QUnit.newMwEnvironment() );
4 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (extensions/DiscussionTools/tests/qunit/utils.test.js:1:58)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlinePartWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWTransclusionOutlinePartWidget' );
| ^
2 |
3 | QUnit.test( 'Constructor', ( assert ) => {
4 | const transclusion = new ve.dm.MWTransclusionModel(),
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlinePartWidget.test.js:1:56)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.clientHints/index.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | 'use strict';
2 |
> 3 | QUnit.module( 'ext.checkUser.clientHints', QUnit.newMwEnvironment( {} ) );
| ^
4 |
5 | QUnit.test( 'Client hints code is setup if navigator.userAgentData.getHighEntropyValues() is available', function ( assert ) {
6 | const clientHints = require( 'ext.checkUser.clientHints/index.js' );
at Object.QUnit (extensions/CheckUser/tests/qunit/ext.checkUser.clientHints/index.test.js:3:1)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccounts/useInstrument.test.js
● useInstrument › should record events
ReferenceError: mw is not defined
8 | submitInteraction
9 | } ) );
> 10 | mw.eventLog = { newInstrument };
| ^
11 |
12 | const logEvent = useInstrument();
13 |
at Object.mw (extensions/CheckUser/tests/jest/ext.checkUser.tempAccounts/useInstrument.test.js:10:3)
● useInstrument › should not try to record events if EventLogging is unavailable
ReferenceError: mw is not defined
27 | it( 'should not try to record events if EventLogging is unavailable', () => {
28 | // Simulate EventLogging being unavailable
> 29 | mw.eventLog = undefined;
| ^
30 |
31 | const logEvent = useInstrument();
32 |
at Object.mw (extensions/CheckUser/tests/jest/ext.checkUser.tempAccounts/useInstrument.test.js:29:3)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.dm.MWDocumentReferences.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | 'use strict';
2 |
> 3 | QUnit.module( 've.dm.MWDocumentReferences (Cite)', ve.test.utils.newMwEnvironment() );
| ^
4 |
5 | QUnit.test( 'first simple test', ( assert ) => {
6 | const doc = ve.dm.citeExample.createExampleDocument( 'references' );
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.dm.MWDocumentReferences.test.js:3:1)
FAIL tests/jest/mediawiki.special.block/AdditionalDetailsField.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/resources/src/mediawiki.special.block/SpecialBlock.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
4 | const { createTestingPinia } = require( '@pinia/testing' );
5 |
> 6 | const SpecialBlock = require( '../../../resources/src/mediawiki.special.block/SpecialBlock.vue' );
| ^
7 |
8 | /**
9 | * Mount the SpecialBlock component with the default configuration,
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (tests/jest/mediawiki.special.block/SpecialBlock.setup.js:6:22)
at Object.require (tests/jest/mediawiki.special.block/AdditionalDetailsField.test.js:5:29)
FAIL extensions/DiscussionTools/tests/qunit/ThreadItem.test.js
● Test suite failed to run
Cannot find module 'ext.discussionTools.init' from 'extensions/DiscussionTools/tests/qunit/ThreadItem.test.js'
1 | const
> 2 | CommentItem = require( 'ext.discussionTools.init' ).CommentItem,
| ^
3 | HeadingItem = require( 'ext.discussionTools.init' ).HeadingItem;
4 |
5 | QUnit.module( 'mw.dt.ThreadItem', QUnit.newMwEnvironment() );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (extensions/DiscussionTools/tests/qunit/ThreadItem.test.js:2:65)
FAIL skins/MinervaNeue/tests/qunit/skins.minerva.scripts/UriUtil.test.js
● Test suite failed to run
Cannot find module 'skins.minerva.scripts/UriUtil.js' from 'skins/MinervaNeue/tests/qunit/skins.minerva.scripts/UriUtil.test.js'
1 | ( function () {
> 2 | const UriUtil = require( 'skins.minerva.scripts/UriUtil.js' );
| ^
3 |
4 | QUnit.module( 'Minerva UriUtil', {
5 | beforeEach: function () {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/UriUtil.test.js:2:18)
at Object.<anonymous> (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/UriUtil.test.js:39:2)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWParameterCheckboxInputWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWParameterCheckboxInputWidget' );
| ^
2 |
3 | QUnit.test( 'Constructor passes config to parent', ( assert ) => {
4 | const widget = new ve.ui.MWParameterCheckboxInputWidget( { selected: true } );
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWParameterCheckboxInputWidget.test.js:1:55)
FAIL tests/qunit/resources/mediawiki.widgets/NamespaceInput/mediawiki.widgets.NamespaceInputWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
3 | */
4 |
> 5 | QUnit.module( 'mediawiki.widgets.NamespaceInputWidget' );
| ^
6 |
7 | ( function () {
8 | const widgetA = new mw.widgets.NamespaceInputWidget( {} );
at Object.QUnit (tests/qunit/resources/mediawiki.widgets/NamespaceInput/mediawiki.widgets.NamespaceInputWidget.test.js:5:1)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/createTable.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser/checkuser/checkUserHelper/createTable.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/createTable.test.js'
1 | 'use strict';
2 |
> 3 | const createTable = require( 'ext.checkUser/checkuser/checkUserHelper/createTable.js' );
| ^
4 |
5 | QUnit.module( 'ext.checkUser.checkuser.checkUserHelper.createTable', QUnit.newMwEnvironment( {
6 | beforeEach: function () {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/createTable.test.js:3:21)
FAIL tests/qunit/resources/startup/jscompat.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | // JavaScript compatibility tests to confirm that server and browser
2 | // are behaving consistently and configured correctly.
> 3 | QUnit.module( 'startup/jscompat', () => {
| ^
4 |
5 | QUnit.test( 'Unicode variable name', ( assert ) => {
6 | const ŝablono = true;
at Object.QUnit (tests/qunit/resources/startup/jscompat.test.js:3:1)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlinePlaceholderWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWTransclusionOutlinePlaceholderWidget' );
| ^
2 |
3 | QUnit.test( 'Constructor', ( assert ) => {
4 | const transclusion = new ve.dm.MWTransclusionModel(),
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlinePlaceholderWidget.test.js:1:63)
PASS tests/jest/mediawiki.skinning.typeaheadSearch/urlGenerator.test.js
FAIL extensions/VisualEditor/modules/ve-mw/tests/ce/ve.ce.Document.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | */
6 |
> 7 | QUnit.module( 've.ce.Document (MW)' );
| ^
8 |
9 | /* Tests */
10 |
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ce/ve.ce.Document.test.js:7:1)
FAIL skins/Vector/tests/jest/skins.vector.es6/features.test.js
● features › toggle
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
3 | describe( 'features', () => {
4 | beforeEach( () => {
> 5 | document.documentElement.setAttribute( 'class', 'vector-feature-foo-disabled vector-feature-bar-enabled hello' );
| ^
6 | } );
7 |
8 | test( 'toggle', () => {
at Object.document (skins/Vector/tests/jest/skins.vector.es6/features.test.js:5:3)
● features › toggle unknown feature
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
3 | describe( 'features', () => {
4 | beforeEach( () => {
> 5 | document.documentElement.setAttribute( 'class', 'vector-feature-foo-disabled vector-feature-bar-enabled hello' );
| ^
6 | } );
7 |
8 | test( 'toggle', () => {
at Object.document (skins/Vector/tests/jest/skins.vector.es6/features.test.js:5:3)
FAIL extensions/VisualEditor/modules/ve-mw/tests/dm/ve.dm.Converter.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.dm.Converter (MW)', ve.test.utils.newMwEnvironment() );
| ^
9 |
10 | QUnit.test( 'getModelFromDom', ( assert ) => {
11 | const cases = ve.dm.mwExample.domToDataCases;
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/dm/ve.dm.Converter.test.js:8:1)
FAIL tests/qunit/resources/mediawiki.special.block/AdditionalDetailsField.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'tests/qunit/resources/mediawiki.special.block/AdditionalDetailsField.test.js'
> 1 | const { shallowMount } = require( 'vue-test-utils' );
| ^
2 | const { createPinia } = require( 'pinia' );
3 | const AdditionalDetailsField = require( 'mediawiki.special.block.codex/components/AdditionalDetailsField.vue' );
4 | const useBlockStore = require( 'mediawiki.special.block.codex/stores/block.js' );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (tests/qunit/resources/mediawiki.special.block/AdditionalDetailsField.test.js:1:26)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ui.MWUseExistingReferenceCommand.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | 'use strict';
2 |
> 3 | QUnit.module( 've.ui.MWUseExistingReferenceCommand (Cite)', ve.test.utils.newMwEnvironment() );
| ^
4 |
5 | function getFragmentMock( hasRefs ) {
6 | return {
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ui.MWUseExistingReferenceCommand.test.js:3:1)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferenceGroupInputWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | 'use strict';
2 |
> 3 | QUnit.module( 've.ui.MWReferenceGroupInputWidget (Cite)', ve.test.utils.newMwEnvironment() );
| ^
4 |
5 | QUnit.test( 'Constructor', ( assert ) => {
6 | const widget = new ve.ui.MWReferenceGroupInputWidget( {
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferenceGroupInputWidget.test.js:3:1)
FAIL tests/qunit/resources/mediawiki.template.mustache.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.template.mustache', ( hooks ) => {
| ^
2 |
3 | hooks.beforeEach( function () {
4 | // Stub register some templates
at Object.<anonymous> (tests/qunit/resources/mediawiki.template.mustache.test.js:1:59)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/utils.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser/checkuser/checkUserHelper/utils.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/utils.test.js'
1 | 'use strict';
2 |
> 3 | const Utils = require( 'ext.checkUser/checkuser/checkUserHelper/utils.js' );
| ^
4 |
5 | QUnit.module( 'ext.checkUser.checkuser.checkUserHelper.utils' );
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/utils.test.js:3:15)
FAIL tests/qunit/resources/mediawiki.messagePoster/factory.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.messagePoster', ( hooks ) => {
| ^
2 | const TEST_MODEL = 'test-content-model';
3 |
4 | hooks.afterEach( () => {
at Object.<anonymous> (tests/qunit/resources/mediawiki.messagePoster/factory.test.js:1:55)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.UrlStringTransferHandler.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | */
6 |
> 7 | QUnit.module( 've.ui.UrlStringTransferHandler (MW)' );
| ^
8 |
9 | /* Tests */
10 |
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.UrlStringTransferHandler.test.js:7:1)
FAIL skins/Vector/tests/jest/deferUntilFrame.test.js
● deferUntilFrame.js › does not fire rAF if `0` is passed
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: window is not defined
5 |
6 | beforeEach( () => {
> 7 | spy = jest.spyOn( window, 'requestAnimationFrame' ).mockImplementation( ( cb ) => {
| ^
8 | setTimeout( () => {
9 | cb( 1 );
10 | } );
at Object.window (skins/Vector/tests/jest/deferUntilFrame.test.js:7:21)
● deferUntilFrame.js › does not fire rAF if `0` is passed
TypeError: Cannot read properties of undefined (reading 'mockRestore')
15 |
16 | afterEach( () => {
> 17 | spy.mockRestore();
| ^
18 | } );
19 |
20 | it( 'does not fire rAF if `0` is passed', ( done ) => {
at Object.mockRestore (skins/Vector/tests/jest/deferUntilFrame.test.js:17:7)
● deferUntilFrame.js › fires rAF the specified number of times
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: window is not defined
5 |
6 | beforeEach( () => {
> 7 | spy = jest.spyOn( window, 'requestAnimationFrame' ).mockImplementation( ( cb ) => {
| ^
8 | setTimeout( () => {
9 | cb( 1 );
10 | } );
at Object.window (skins/Vector/tests/jest/deferUntilFrame.test.js:7:21)
● deferUntilFrame.js › fires rAF the specified number of times
TypeError: Cannot read properties of undefined (reading 'mockRestore')
15 |
16 | afterEach( () => {
> 17 | spy.mockRestore();
| ^
18 | } );
19 |
20 | it( 'does not fire rAF if `0` is passed', ( done ) => {
at Object.mockRestore (skins/Vector/tests/jest/deferUntilFrame.test.js:17:7)
FAIL skins/MinervaNeue/tests/qunit/skins.minerva.scripts/integration.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | * For unit tests please see tests/jest.
6 | */
> 7 | QUnit.module( 'Minerva (integration)', () => {
| ^
8 | QUnit.test( '[T356653] Client preferences: Check assumptions about the cookie it writes to', function ( assert ) {
9 | mw.cookie.set( 'mwclientpreferences', '' );
10 | this.sandbox.stub( mw.user, 'isAnon' ).returns( true );
at Object.QUnit (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/integration.test.js:7:1)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlineButtonWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWTransclusionOutlineButtonWidget' );
| ^
2 |
3 | QUnit.test( 'Constructor', ( assert ) => {
4 | const widget = new ve.ui.MWTransclusionOutlineButtonWidget( {} );
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlineButtonWidget.test.js:1:58)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/buildUserElement.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser/checkuser/checkUserHelper/buildUserElement.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/buildUserElement.test.js'
1 | 'use strict';
2 |
> 3 | const buildUserElement = require( 'ext.checkUser/checkuser/checkUserHelper/buildUserElement.js' );
| ^
4 |
5 | QUnit.module( 'ext.checkUser.checkuser.checkUserHelper.buildUserElement', QUnit.newMwEnvironment( {
6 | beforeEach: function () {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/buildUserElement.test.js:3:26)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferenceContextItem.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | 'use strict';
2 |
> 3 | QUnit.module( 've.ui.MWReferenceContextItem (Cite)', ve.test.utils.newMwEnvironment() );
| ^
4 |
5 | QUnit.test( 'getReferenceNode', ( assert ) => {
6 | // XXX: This is a regression test with a fragile setup. Please feel free to delete this test
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferenceContextItem.test.js:3:1)
FAIL extensions/VisualEditor/modules/ve-mw/tests/dm/models/ve.dm.MWTransclusionContentModel.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | {
> 2 | QUnit.module( 've.dm.MWTransclusionContentModel' );
| ^
3 |
4 | /**
5 | * @return {ve.dm.MWTransclusionModel} but it's a mock
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/dm/models/ve.dm.MWTransclusionContentModel.test.js:2:2)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/createTableText.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser/checkuser/checkUserHelper/createTableText.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/createTableText.test.js'
1 | 'use strict';
2 |
> 3 | const createTableText = require( 'ext.checkUser/checkuser/checkUserHelper/createTableText.js' );
| ^
4 |
5 | QUnit.module( 'ext.checkUser.checkuser.checkUserHelper.createTableText' );
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/createTableText.test.js:3:25)
FAIL tests/qunit/resources/mediawiki.inspect.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.inspect', () => {
| ^
2 |
3 | QUnit.test( '.getModuleSize() - scripts', ( assert ) => {
4 | // Use eval so that the size doesn't change depending on minification
at Object.<anonymous> (tests/qunit/resources/mediawiki.inspect.test.js:1:42)
FAIL extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ProgressIndicatorWidget.test.js
● Test suite failed to run
Cannot find module 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/ProgressIndicatorWidget.js' from 'extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ProgressIndicatorWidget.test.js'
> 1 | const ProgressIndicatorWidget = require( 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/ProgressIndicatorWidget.js' );
| ^
2 |
3 | QUnit.module( 'ext.confirmEdit.hCaptcha.ProgressIndicatorWidget' );
4 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ProgressIndicatorWidget.test.js:1:122)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferenceResultWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
2 |
3 | {
> 4 | QUnit.module( 've.ui.MWReferenceResultWidget (Cite)', ve.test.utils.newMwEnvironment() );
| ^
5 |
6 | const getConfigMock = () => ( {
7 | item: {
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferenceResultWidget.test.js:4:2)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.test.js'
However, Jest was able to find:
'./mmv.ui.canvas.test.js'
'./mmv.ui.canvasButtons.test.js'
'./mmv.ui.description.test.js'
'./mmv.ui.download.pane.test.js'
'./mmv.ui.metadataPanel.test.js'
'./mmv.ui.metadataPanelScroller.test.js'
'./mmv.ui.permission.test.js'
'./mmv.ui.progressBar.test.js'
'./mmv.ui.reuse.dialog.test.js'
'./mmv.ui.reuse.embed.test.js'
'./mmv.ui.reuse.share.test.js'
'./mmv.ui.reuse.utils.test.js'
'./mmv.ui.stripeButtons.test.js'
'./mmv.ui.test.js'
'./mmv.ui.truncatableTextField.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
> 1 | const { UiElement } = require( 'mmv' );
| ^
2 |
3 | QUnit.module( 'mmv.ui', QUnit.newMwEnvironment( {
4 | beforeEach: function () {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.test.js:1:23)
FAIL extensions/Math/modules/ve-math/tests/ve.dm.Autocomplete.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.dm.Autocomplete (Math)', ve.test.utils.newMwEnvironment() );
| ^
2 |
3 | QUnit.test( 'Autocomplete list', ( assert ) => {
4 | assert.notStrictEqual(
at Object.<anonymous> (extensions/Math/modules/ve-math/tests/ve.dm.Autocomplete.test.js:1:78)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/mmv.lightboximage.test.js
● Test suite failed to run
Cannot find module 'mmv.bootstrap' from 'extensions/MultimediaViewer/tests/qunit/mmv/mmv.lightboximage.test.js'
> 1 | const { LightboxImage } = require( 'mmv.bootstrap' );
| ^
2 |
3 | QUnit.module( 'mmv.lightboximage', QUnit.newMwEnvironment() );
4 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/mmv.lightboximage.test.js:1:27)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ui.MWCitationDialogTool.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | 'use strict';
2 |
> 3 | QUnit.module( 've.ui.MWCitationDialogTool (Cite)', ve.test.utils.newMwEnvironment() );
| ^
4 |
5 | QUnit.test( 'isCompatibleWith', ( assert ) => {
6 | const model = new ve.dm.MWReferenceNode();
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ui.MWCitationDialogTool.test.js:3:1)
FAIL tests/qunit/resources/mediawiki.api/mediawiki.api.upload.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.api.upload', () => {
| ^
2 |
3 | QUnit.test( 'Basic functionality', ( assert ) => {
4 | const api = new mw.Api();
at Object.<anonymous> (tests/qunit/resources/mediawiki.api/mediawiki.api.upload.test.js:1:45)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferencesListDialog.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | 'use strict';
2 |
> 3 | QUnit.module( 've.ui.MWReferencesListDialog (Cite)', ve.test.utils.newMwEnvironment() );
| ^
4 |
5 | QUnit.test( 'isModified', ( assert ) => {
6 | const dialog = new ve.ui.MWReferencesListDialog();
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferencesListDialog.test.js:3:1)
FAIL tests/qunit/resources/jquery.tablesorter.parsers.test.js
● Test suite failed to run
Your test suite must contain at least one test.
at onResult (node_modules/@jest/core/build/TestScheduler.js:133:18)
at node_modules/@jest/core/build/TestScheduler.js:254:19
at node_modules/emittery/index.js:363:13
at Array.map (<anonymous>)
at Emittery.emit (node_modules/emittery/index.js:361:23)
FAIL skins/Vector/tests/jest/userLinks.test.js
● Test suite failed to run
Cannot find module 'mustache' from 'skins/Vector/tests/jest/userLinksData.js'
Require stack:
skins/Vector/tests/jest/userLinksData.js
skins/Vector/tests/jest/userLinks.test.js
> 1 | const mustache = require( 'mustache' );
| ^
2 | const fs = require( 'fs' );
3 | const menuContents = fs.readFileSync( 'includes/templates/MenuContents.mustache', 'utf8' );
4 | const userLinksTemplate = fs.readFileSync( 'includes/templates/UserLinks.mustache', 'utf8' );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (skins/Vector/tests/jest/userLinksData.js:1:39)
at Object.require (skins/Vector/tests/jest/userLinks.test.js:1:27)
FAIL tests/qunit/resources/mediawiki.router.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.router', () => {
| ^
2 | const router = require( 'mediawiki.router' );
3 |
4 | QUnit.test( 'instance', ( assert ) => {
at Object.<anonymous> (tests/qunit/resources/mediawiki.router.test.js:1:41)
Summary of all failing tests
FAIL tests/qunit/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js
● Test suite failed to run
Cannot find module 'mediawiki.rcfilters.filters.ui' from 'tests/qunit/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js'
1 | /* eslint-disable camelcase */
2 | ( function () {
> 3 | const rcfilters = require( 'mediawiki.rcfilters.filters.ui' );
| ^
4 | const filterDefinition = [ {
5 | name: 'group1',
6 | type: 'send_unselected_if_any',
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (tests/qunit/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js:3:20)
at Object.<anonymous> (tests/qunit/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js:1548:2)
FAIL tests/qunit/resources/jquery.tablesorter.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'jquery.tablesorter', QUnit.newMwEnvironment( {
| ^
2 | beforeEach: function () {
3 | this.liveMonths = mw.language.months;
4 | mw.language.months = {
at Object.<anonymous> (tests/qunit/resources/jquery.tablesorter.test.js:1:61)
FAIL tests/qunit/resources/mediawiki.jqueryMsg.test.js
● Test suite failed to run
Cannot find module 'mediawiki.jqueryMsg' from 'tests/qunit/resources/mediawiki.jqueryMsg.test.js'
1 | ( function () {
> 2 | const jqueryMsg = require( 'mediawiki.jqueryMsg' ).test;
| ^
3 |
4 | /* eslint-disable camelcase */
5 | let formatText, formatParse, specialCharactersPageName, expectedListUsers,
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (tests/qunit/resources/mediawiki.jqueryMsg.test.js:2:20)
at Object.<anonymous> (tests/qunit/resources/mediawiki.jqueryMsg.test.js:1467:2)
FAIL tests/qunit/resources/mediawiki.language.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
2 | 'use strict';
3 |
> 4 | QUnit.module( 'mediawiki.language', QUnit.newMwEnvironment( {
| ^
5 | beforeEach: function () {
6 | this.userLang = mw.config.get( 'wgUserLanguage' );
7 | this.liveLangData = mw.language.data;
at QUnit (tests/qunit/resources/mediawiki.language.test.js:4:2)
at Object.<anonymous> (tests/qunit/resources/mediawiki.language.test.js:914:2)
FAIL tests/qunit/resources/mediawiki.util/util.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.util', QUnit.newMwEnvironment( {
| ^
2 | messages: {
3 | // Used by accessKeyLabel in test for addPortletLink
4 | brackets: '[$1]',
at Object.<anonymous> (tests/qunit/resources/mediawiki.util/util.test.js:1:57)
FAIL tests/qunit/resources/startup/mw.loader.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | ( function () {
> 2 | QUnit.module( 'mw.loader', QUnit.newMwEnvironment( {
| ^
3 | beforeEach: function ( assert ) {
4 | // Expose for load.mock.php
5 | mw.loader.testFail = function ( reason ) {
at QUnit (tests/qunit/resources/startup/mw.loader.test.js:2:2)
at Object.<anonymous> (tests/qunit/resources/startup/mw.loader.test.js:1236:2)
FAIL tests/qunit/resources/mediawiki.Title.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
75 | };
76 |
> 77 | QUnit.module( 'mediawiki.Title', QUnit.newMwEnvironment( {
| ^
78 | // mw.Title relies on these three config vars
79 | // Restore them after each test run
80 | config: {
at QUnit (tests/qunit/resources/mediawiki.Title.test.js:77:2)
at Object.<anonymous> (tests/qunit/resources/mediawiki.Title.test.js:771:2)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingIPRevealStep.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/CheckUser/modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingIPRevealStep.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
1 | 'use strict';
2 |
> 3 | const TempAccountsOnboardingIPRevealStep = require( '../../../../modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingIPRevealStep.vue' ),
| ^
4 | TempAccountsOnboardingPreference = require( '../../../../modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingPreference.vue' ),
5 | utils = require( '@vue/test-utils' ),
6 | { mockJSConfig, mockApiSaveOptions, waitForAndExpectTextToExistInElement, mockStorageSessionGetValue, mockStorageSessionGetValues, getSaveGlobalPreferenceButton } = require( '../../utils.js' );
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingIPRevealStep.test.js:3:44)
FAIL tests/qunit/resources/jquery.makeCollapsible.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | /* eslint-disable no-jquery/no-class-state */
> 2 | QUnit.module( 'jquery.makeCollapsible', () => {
| ^
3 | const loremIpsum = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.';
4 |
5 | /**
at Object.QUnit (tests/qunit/resources/jquery.makeCollapsible.test.js:2:1)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/mmv.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/mmv.test.js'
However, Jest was able to find:
'./mmv.bootstrap.test.js'
'./mmv.Config.test.js'
'./mmv.EmbedFileFormatter.test.js'
'./mmv.HtmlUtils.test.js'
'./mmv.lightboximage.test.js'
'./mmv.lightboxinterface.test.js'
'./mmv.test.js'
'./mmv.testhelpers.js'
'./mmv.ThumbnailWidthCalculator.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
> 1 | const { MultimediaViewer } = require( 'mmv' );
| ^
2 | const { getMultimediaViewer } = require( './mmv.testhelpers.js' );
3 | const { MultimediaViewerBootstrap } = require( 'mmv.bootstrap' );
4 | const router = require( 'mediawiki.router' );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/mmv.test.js:1:30)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardBody.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardBody.test.js'
1 | 'use strict';
2 |
> 3 | const { shallowMount } = require( 'vue-test-utils' );
| ^
4 | const UserCardBody = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/components/UserCardBody.vue' );
5 |
6 | QUnit.module( 'ext.checkUser.userInfoCard.UserCardBody', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardBody.test.js:3:26)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingDialog.test.js
● Test suite failed to run
ReferenceError: /src/repo/extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingDialog.test.js: The module factory of `jest.mock()` is not allowed to reference any out-of-scope variables.
Invalid variable access: useComputedDirectionMock
Allowed objects: AbortController, AbortSignal, AggregateError, Array, ArrayBuffer, Atomics, BigInt, BigInt64Array, BigUint64Array, Blob, Boolean, BroadcastChannel, Buffer, ByteLengthQueuingStrategy, CompressionStream, CountQueuingStrategy, Crypto, CryptoKey, CustomEvent, DOMException, DataView, Date, DecompressionStream, Error, EvalError, Event, EventTarget, File, FinalizationRegistry, Float32Array, Float64Array, FormData, Function, Generator, GeneratorFunction, Headers, Infinity, Int16Array, Int32Array, Int8Array, InternalError, Intl, JSON, Map, Math, MessageChannel, MessageEvent, MessagePort, NaN, Number, Object, Performance, PerformanceEntry, PerformanceMark, PerformanceMeasure, PerformanceObserver, PerformanceObserverEntryList, PerformanceResourceTiming, Promise, Proxy, RangeError, ReadableByteStreamController, ReadableStream, ReadableStreamBYOBReader, ReadableStreamBYOBRequest, ReadableStreamDefaultController, ReadableStreamDefaultReader, ReferenceError, Reflect, RegExp, Request, Response, Set, SharedArrayBuffer, String, SubtleCrypto, Symbol, SyntaxError, TextDecoder, TextDecoderStream, TextEncoder, TextEncoderStream, TransformStream, TransformStreamDefaultController, TypeError, URIError, URL, URLSearchParams, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray, WeakMap, WeakRef, WeakSet, WebAssembly, WritableStream, WritableStreamDefaultController, WritableStreamDefaultWriter, __dirname, __filename, arguments, atob, btoa, clearImmediate, clearInterval, clearTimeout, console, crypto, decodeURI, decodeURIComponent, encodeURI, encodeURIComponent, escape, eval, expect, exports, fetch, global, globalThis, isFinite, isNaN, jest, module, parseFloat, parseInt, performance, process, queueMicrotask, require, setImmediate, setInterval, setTimeout, structuredClone, undefined, unescape.
Note: This is a precaution to guard against uninitialized mock variables. If it is ensured that the mock is required lazily, variable names prefixed with `mock` (case insensitive) are permitted.
15 |
16 | return Object.assign(
> 17 | { __esModule: true }, originalModule, { useComputedDirection: useComputedDirectionMock }
| ^^^^^^^^^^^^^^^^^^^^^^^^
18 | );
19 | } );
20 |
at File.buildCodeFrameError (node_modules/@babel/core/src/transformation/file/file.ts:257:12)
at NodePath.buildError [as buildCodeFrameError] (node_modules/@babel/traverse/src/path/index.ts:157:21)
at call (node_modules/@babel/traverse/src/visitors.ts:303:14)
at NodePath.call [as _call] (node_modules/@babel/traverse/src/path/context.ts:36:20)
at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitMultiple] (node_modules/@babel/traverse/src/context.ts:99:17)
at TraversalContext.visitMultiple [as visit] (node_modules/@babel/traverse/src/context.ts:178:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at NodePath.visit (node_modules/@babel/traverse/src/path/context.ts:104:33)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:109:19)
at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:180:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
at transformFile (node_modules/@babel/core/src/transformation/index.ts:119:15)
at transformFile.next (<anonymous>)
at transformFile (node_modules/@babel/core/src/transformation/index.ts:49:12)
at run.next (<anonymous>)
at transform (node_modules/@babel/core/src/transform.ts:29:20)
at transform.next (<anonymous>)
at evaluateSync (node_modules/gensync/index.js:251:28)
at sync (node_modules/gensync/index.js:89:14)
at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:545:31)
at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:674:40)
at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:726:19)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/ipReveal.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.tempAccounts/ipReveal.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/ipReveal.test.js'
1 | 'use strict';
2 |
> 3 | const ipReveal = require( 'ext.checkUser.tempAccounts/ipReveal.js' );
| ^
4 | const { makeTempUserLink, waitUntilElementDisappears } = require( './utils.js' );
5 | const ipRevealUtils = require( 'ext.checkUser.tempAccounts/ipRevealUtils.js' );
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/ipReveal.test.js:3:18)
FAIL tests/jest/mediawiki.special.block/SpecialBlock.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/resources/src/mediawiki.special.block/SpecialBlock.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
4 | const { createTestingPinia } = require( '@pinia/testing' );
5 |
> 6 | const SpecialBlock = require( '../../../resources/src/mediawiki.special.block/SpecialBlock.vue' );
| ^
7 |
8 | /**
9 | * Mount the SpecialBlock component with the default configuration,
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (tests/jest/mediawiki.special.block/SpecialBlock.setup.js:6:22)
at Object.require (tests/jest/mediawiki.special.block/SpecialBlock.test.js:5:29)
FAIL tests/qunit/resources/mediawiki.api/mediawiki.api.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.api', ( hooks ) => {
| ^
2 | const originalFormData = window.FormData;
3 | const originalMwVersion = mw.config.get( 'wgVersion' );
4 | hooks.beforeEach( function () {
at Object.<anonymous> (tests/qunit/resources/mediawiki.api/mediawiki.api.test.js:1:45)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/mmv.bootstrap.test.js
● Test suite failed to run
Cannot find module 'mmv.bootstrap' from 'extensions/MultimediaViewer/tests/qunit/mmv/mmv.bootstrap.test.js'
> 1 | const { MultimediaViewerBootstrap } = require( 'mmv.bootstrap' );
| ^
2 | const { asyncMethod, waitForAsync, getMultimediaViewer } = require( './mmv.testhelpers.js' );
3 |
4 | QUnit.module( 'mmv.bootstrap', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/mmv.bootstrap.test.js:1:39)
FAIL extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/secureEnclave.test.js
● Test suite failed to run
Cannot find module 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/secureEnclave.js' from 'extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/secureEnclave.test.js'
> 1 | const useSecureEnclave = require( 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/secureEnclave.js' );
| ^
2 | const config = require( 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/config.json' );
3 |
4 | QUnit.module( 'ext.confirmEdit.hCaptcha.secureEnclave', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/secureEnclave.test.js:1:105)
FAIL extensions/VisualEditor/modules/ve-mw/tests/dm/models/ve.dm.MWTemplateSpecModel.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | {
> 2 | QUnit.module( 've.dm.MWTemplateSpecModel' );
| ^
3 |
4 | /**
5 | * @param {string[]} [parameterNames]
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/dm/models/ve.dm.MWTemplateSpecModel.test.js:2:2)
FAIL tests/qunit/resources/mediawiki.Uri.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.Uri', ( hooks ) => {
| ^
2 | hooks.beforeEach( function () {
3 | this.sandbox.replace( mw, 'Uri', mw.UriRelative( 'http://example.org/w/index.php' ) );
4 | } );
at Object.<anonymous> (tests/qunit/resources/mediawiki.Uri.test.js:1:45)
FAIL tests/qunit/resources/mediawiki.rcfilters/dm.SavedQueriesModel.test.js
● Test suite failed to run
Cannot find module 'mediawiki.rcfilters.filters.ui' from 'tests/qunit/resources/mediawiki.rcfilters/dm.SavedQueriesModel.test.js'
1 | /* eslint-disable camelcase */
2 | ( function () {
> 3 | const rcfilters = require( 'mediawiki.rcfilters.filters.ui' );
| ^
4 | const filterDefinition = [ {
5 | name: 'group1',
6 | type: 'send_unselected_if_any',
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (tests/qunit/resources/mediawiki.rcfilters/dm.SavedQueriesModel.test.js:3:20)
at Object.<anonymous> (tests/qunit/resources/mediawiki.rcfilters/dm.SavedQueriesModel.test.js:608:2)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/SpecialBlock.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.tempAccounts/SpecialBlock.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/SpecialBlock.test.js'
1 | 'use strict';
2 |
> 3 | const specialBlock = require( 'ext.checkUser.tempAccounts/SpecialBlock.js' );
| ^
4 | const { waitUntilElementDisappears, waitUntilElementAppears } = require( './utils.js' );
5 |
6 | let server;
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/SpecialBlock.test.js:3:22)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.GuessedThumbnailInfo.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.GuessedThumbnailInfo.test.js'
However, Jest was able to find:
'./mmv.provider.Api.test.js'
'./mmv.provider.GuessedThumbnailInfo.test.js'
'./mmv.provider.Image.test.js'
'./mmv.provider.ImageInfo.test.js'
'./mmv.provider.ThumbnailInfo.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { GuessedThumbnailInfo } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.provider.GuessedThumbnailInfo', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.GuessedThumbnailInfo.test.js:18:34)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.suggestedInvestigations/components/ChangeInvestigationStatusDialog.test.js
● Test suite failed to run
ReferenceError: /src/repo/extensions/CheckUser/tests/jest/utils.js: The module factory of `jest.mock()` is not allowed to reference any out-of-scope variables.
Invalid variable access: byteLength
Allowed objects: AbortController, AbortSignal, AggregateError, Array, ArrayBuffer, Atomics, BigInt, BigInt64Array, BigUint64Array, Blob, Boolean, BroadcastChannel, Buffer, ByteLengthQueuingStrategy, CompressionStream, CountQueuingStrategy, Crypto, CryptoKey, CustomEvent, DOMException, DataView, Date, DecompressionStream, Error, EvalError, Event, EventTarget, File, FinalizationRegistry, Float32Array, Float64Array, FormData, Function, Generator, GeneratorFunction, Headers, Infinity, Int16Array, Int32Array, Int8Array, InternalError, Intl, JSON, Map, Math, MessageChannel, MessageEvent, MessagePort, NaN, Number, Object, Performance, PerformanceEntry, PerformanceMark, PerformanceMeasure, PerformanceObserver, PerformanceObserverEntryList, PerformanceResourceTiming, Promise, Proxy, RangeError, ReadableByteStreamController, ReadableStream, ReadableStreamBYOBReader, ReadableStreamBYOBRequest, ReadableStreamDefaultController, ReadableStreamDefaultReader, ReferenceError, Reflect, RegExp, Request, Response, Set, SharedArrayBuffer, String, SubtleCrypto, Symbol, SyntaxError, TextDecoder, TextDecoderStream, TextEncoder, TextEncoderStream, TransformStream, TransformStreamDefaultController, TypeError, URIError, URL, URLSearchParams, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray, WeakMap, WeakRef, WeakSet, WebAssembly, WritableStream, WritableStreamDefaultController, WritableStreamDefaultWriter, __dirname, __filename, arguments, atob, btoa, clearImmediate, clearInterval, clearTimeout, console, crypto, decodeURI, decodeURIComponent, encodeURI, encodeURIComponent, escape, eval, expect, exports, fetch, global, globalThis, isFinite, isNaN, jest, module, parseFloat, parseInt, performance, process, queueMicrotask, require, setImmediate, setInterval, setTimeout, structuredClone, undefined, unescape.
Note: This is a precaution to guard against uninitialized mock variables. If it is ensured that the mock is required lazily, variable names prefixed with `mock` (case insensitive) are permitted.
187 | const byteLength = jest.fn();
188 | jest.mock( 'mediawiki.String', () => ( {
> 189 | byteLength: byteLength
| ^^^^^^^^^^
190 | } ), { virtual: true } );
191 | return byteLength;
192 | }
3 | const utils = require( '@vue/test-utils' ),
4 | { nextTick } = require( 'vue' ),
> 5 | { waitFor, mockByteLength } = require( '../../utils.js' );
| ^
6 |
7 | // Need to run this here as the import of ChangeInvestigationStatusDialog.vue
8 | // without mediawiki.String defined causes errors in running these tests.
at File.buildCodeFrameError (node_modules/@babel/core/src/transformation/file/file.ts:257:12)
at NodePath.buildError [as buildCodeFrameError] (node_modules/@babel/traverse/src/path/index.ts:157:21)
at call (node_modules/@babel/traverse/src/visitors.ts:303:14)
at NodePath.call [as _call] (node_modules/@babel/traverse/src/path/context.ts:36:20)
at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitMultiple] (node_modules/@babel/traverse/src/context.ts:99:17)
at TraversalContext.visitMultiple [as visit] (node_modules/@babel/traverse/src/context.ts:178:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at NodePath.visit (node_modules/@babel/traverse/src/path/context.ts:104:33)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:109:19)
at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:180:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at NodePath.visit (node_modules/@babel/traverse/src/path/context.ts:104:33)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitMultiple] (node_modules/@babel/traverse/src/context.ts:99:17)
at TraversalContext.visitMultiple [as visit] (node_modules/@babel/traverse/src/context.ts:178:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at NodePath.visit (node_modules/@babel/traverse/src/path/context.ts:104:33)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:109:19)
at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:180:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
at transformFile (node_modules/@babel/core/src/transformation/index.ts:119:15)
at transformFile.next (<anonymous>)
at transformFile (node_modules/@babel/core/src/transformation/index.ts:49:12)
at run.next (<anonymous>)
at transform (node_modules/@babel/core/src/transform.ts:29:20)
at transform.next (<anonymous>)
at evaluateSync (node_modules/gensync/index.js:251:28)
at sync (node_modules/gensync/index.js:89:14)
at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:545:31)
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 (extensions/CheckUser/tests/jest/ext.checkUser.suggestedInvestigations/components/ChangeInvestigationStatusDialog.test.js:5:32)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingPreference.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/CheckUser/modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingPreference.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
1 | 'use strict';
2 |
> 3 | const TempAccountsOnboardingPreference = require( '../../../../modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingPreference.vue' ),
| ^
4 | utils = require( '@vue/test-utils' ),
5 | { mockApiSaveOptions, waitFor, waitForAndExpectTextToExistInElement, getSaveGlobalPreferenceButton, mockJSConfig } = require( '../../utils.js' );
6 |
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingPreference.test.js:3:42)
FAIL skins/Vector/tests/jest/tableOfContents.test.js
● Test suite failed to run
Cannot find module 'mustache' from 'skins/Vector/tests/jest/tableOfContents.test.js'
> 1 | const mustache = require( 'mustache' );
| ^
2 | const fs = require( 'fs' );
3 | const tableOfContentsTemplate = fs.readFileSync( 'includes/templates/TableOfContents.mustache', 'utf8' );
4 | const tableOfContentsContentsTemplate = fs.readFileSync( 'includes/templates/TableOfContents__list.mustache', 'utf8' );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (skins/Vector/tests/jest/tableOfContents.test.js:1:39)
FAIL extensions/VisualEditor/modules/ve-mw/tests/dm/models/ve.dm.MWTemplateModel.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
21 | };
22 |
> 23 | QUnit.module( 've.dm.MWTemplateModel' );
| ^
24 |
25 | /**
26 | * Create a new MWTemplateModel initialized with a static transclusion data fixture.
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/dm/models/ve.dm.MWTemplateModel.test.js:23:2)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/mmv.EmbedFileFormatter.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/mmv.EmbedFileFormatter.test.js'
However, Jest was able to find:
'./mmv.bootstrap.test.js'
'./mmv.Config.test.js'
'./mmv.EmbedFileFormatter.test.js'
'./mmv.HtmlUtils.test.js'
'./mmv.lightboximage.test.js'
'./mmv.lightboxinterface.test.js'
'./mmv.test.js'
'./mmv.testhelpers.js'
'./mmv.ThumbnailWidthCalculator.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
> 1 | const { License, ImageModel } = require( 'mmv' );
| ^
2 | const { EmbedFileFormatter } = require( 'mmv.ui.reuse' );
3 |
4 | QUnit.module( 'mmv.EmbedFileFormatter', QUnit.newMwEnvironment() );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/mmv.EmbedFileFormatter.test.js:1:33)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/initOnLoad.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.tempAccounts/initOnLoad.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/initOnLoad.test.js'
1 | 'use strict';
2 |
> 3 | const initOnLoad = require( 'ext.checkUser.tempAccounts/initOnLoad.js' );
| ^
4 | const { makeTempUserLink, waitUntilElementCount } = require( './utils.js' );
5 | const Utils = require( 'ext.checkUser.tempAccounts/ipRevealUtils.js' );
6 | const { getRevisionId, getLogId } = require( 'ext.checkUser.tempAccounts/ipReveal.js' );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/initOnLoad.test.js:3:20)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.embed.test.js
● Test suite failed to run
Cannot find module 'mmv.ui.reuse' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.embed.test.js'
16 | */
17 |
> 18 | const { Embed, Utils } = require( 'mmv.ui.reuse' );
| ^
19 |
20 | const $qf = $( '#qunit-fixture' );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.embed.test.js:18:26)
FAIL extensions/VisualEditor/modules/ve-mw/tests/preinit/ve.utils.parsoid.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.utils.parsoid', ve.test.utils.newMwEnvironment() );
| ^
9 |
10 | QUnit.test( 'reduplicateStyles/deduplicateStyles', ( assert ) => {
11 | // Test cases based on this page and the templates there:
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/preinit/ve.utils.parsoid.test.js:8:1)
FAIL extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ve/ve.init.mw.HCaptchaOnLoadHandler.test.js
● Test suite failed to run
Cannot find module 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/utils.js' from 'extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ve/ve.init.mw.HCaptchaOnLoadHandler.test.js'
> 1 | const hCaptchaUtils = require( 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/utils.js' );
| ^
2 | const hCaptchaOnLoadHandler = require( 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/ve/ve.init.mw.HCaptchaOnLoadHandler.js' );
3 | const hCaptchaConfig = require( 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/config.json' );
4 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ve/ve.init.mw.HCaptchaOnLoadHandler.test.js:1:94)
FAIL tests/qunit/resources/mediawiki.user.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.user', QUnit.newMwEnvironment(), ( hooks ) => {
| ^
2 | hooks.beforeEach( function () {
3 | this.server = this.sandbox.useFakeServer();
4 | this.server.respondImmediately = true;
at Object.<anonymous> (tests/qunit/resources/mediawiki.user.test.js:1:72)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/getUsersBlockForm.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser/checkuser/getUsersBlockForm.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/getUsersBlockForm.test.js'
1 | 'use strict';
2 |
> 3 | const getUsersBlockForm = require( 'ext.checkUser/checkuser/getUsersBlockForm.js' );
| ^
4 |
5 | QUnit.module( 'ext.checkUser.checkuser.getUsersBlockForm', QUnit.newMwEnvironment() );
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/getUsersBlockForm.test.js:3:27)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardMenu.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardMenu.test.js'
1 | 'use strict';
2 |
> 3 | const { shallowMount } = require( 'vue-test-utils' );
| ^
4 | const UserCardMenu = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/components/UserCardMenu.vue' );
5 |
6 | QUnit.module( 'ext.checkUser.userInfoCard.UserCardMenu', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardMenu.test.js:3:26)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/util.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/util.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/util.test.js'
4 | processEditCountByDay,
5 | parseMediaWikiTimestamp
> 6 | } = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/util.js' );
| ^
7 |
8 | QUnit.module( 'ext.checkUser.userInfoCard.util', QUnit.newMwEnvironment() );
9 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/util.test.js:6:5)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.ImageInfo.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.ImageInfo.test.js'
However, Jest was able to find:
'./mmv.provider.Api.test.js'
'./mmv.provider.GuessedThumbnailInfo.test.js'
'./mmv.provider.Image.test.js'
'./mmv.provider.ImageInfo.test.js'
'./mmv.provider.ThumbnailInfo.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { ImageInfo } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.provider.ImageInfo', QUnit.newMwEnvironment( {
21 | // mw.Title relies on these three config vars
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.ImageInfo.test.js:18:23)
FAIL tests/qunit/resources/mediawiki.base/mediawiki.base.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.base', ( hooks ) => {
| ^
2 | hooks.beforeEach( function () {
3 | this.clock = this.sandbox.useFakeTimers();
4 | } );
at Object.<anonymous> (tests/qunit/resources/mediawiki.base/mediawiki.base.test.js:1:46)
FAIL tests/qunit/resources/mediawiki.rcfilters/UriProcessor.test.js
● Test suite failed to run
Cannot find module 'mediawiki.rcfilters.filters.ui' from 'tests/qunit/resources/mediawiki.rcfilters/UriProcessor.test.js'
2 | /* eslint no-underscore-dangle: "off" */
3 | ( function () {
> 4 | const rcfilters = require( 'mediawiki.rcfilters.filters.ui' );
| ^
5 | const mockFilterStructure = [ {
6 | name: 'group1',
7 | title: 'Group 1',
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (tests/qunit/resources/mediawiki.rcfilters/UriProcessor.test.js:4:20)
at Object.<anonymous> (tests/qunit/resources/mediawiki.rcfilters/UriProcessor.test.js:309:2)
FAIL extensions/WikiEditor/tests/qunit/ext.wikiEditor.toolbar.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'ext.wikiEditor.toolbar', ( hooks ) => {
| ^
2 | hooks.beforeEach( function () {
3 | const $target = $( '<textarea>' )
4 | .attr( 'id', 'wpTextBox1' )
at Object.<anonymous> (extensions/WikiEditor/tests/qunit/ext.wikiEditor.toolbar.test.js:1:54)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingIPInfoStep.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/CheckUser/modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingIPInfoStep.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
1 | 'use strict';
2 |
> 3 | const TempAccountsOnboardingIPInfoStep = require( '../../../../modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingIPInfoStep.vue' ),
| ^
4 | utils = require( '@vue/test-utils' ),
5 | { mockApiSaveOptions, waitForAndExpectTextToExistInElement, mockJSConfig, mockStorageSessionGetValue, getSaveGlobalPreferenceButton } = require( '../../utils.js' );
6 |
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingIPInfoStep.test.js:3:42)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/mmv.HtmlUtils.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/mmv.HtmlUtils.test.js'
However, Jest was able to find:
'./mmv.bootstrap.test.js'
'./mmv.Config.test.js'
'./mmv.EmbedFileFormatter.test.js'
'./mmv.HtmlUtils.test.js'
'./mmv.lightboximage.test.js'
'./mmv.lightboxinterface.test.js'
'./mmv.test.js'
'./mmv.testhelpers.js'
'./mmv.ThumbnailWidthCalculator.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { HtmlUtils } = require( 'mmv' );
| ^
19 |
20 | /* eslint-disable no-jquery/no-parse-html-literal */
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/mmv.HtmlUtils.test.js:18:23)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/mmv.lightboxinterface.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/mmv.lightboxinterface.test.js'
However, Jest was able to find:
'./mmv.bootstrap.test.js'
'./mmv.Config.test.js'
'./mmv.EmbedFileFormatter.test.js'
'./mmv.HtmlUtils.test.js'
'./mmv.lightboximage.test.js'
'./mmv.lightboxinterface.test.js'
'./mmv.test.js'
'./mmv.testhelpers.js'
'./mmv.ThumbnailWidthCalculator.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
> 1 | const { LightboxInterface } = require( 'mmv' );
| ^
2 | const { getMultimediaViewer } = require( './mmv.testhelpers.js' );
3 |
4 | let oldScrollTo;
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/mmv.lightboxinterface.test.js:1:31)
FAIL tests/qunit/resources/mediawiki.DateFormatter/DateFormatter.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
9 | const norm = ( str ) => typeof str === 'string' ? str.replaceAll( '\u2009', ' ' ) : str;
10 |
> 11 | QUnit.module( 'mediawiki.DateFormatter static functions', ( hooks ) => {
| ^
12 | let userOptions;
13 |
14 | function fakeOptionsGet( key, fallback ) {
at Object.QUnit (tests/qunit/resources/mediawiki.DateFormatter/DateFormatter.test.js:11:1)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/initOnHook.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.tempAccounts/initOnHook.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/initOnHook.test.js'
1 | 'use strict';
2 |
> 3 | const initOnHook = require( 'ext.checkUser.tempAccounts/initOnHook.js' );
| ^
4 | const { makeTempUserLink, waitUntilElementCount } = require( './utils.js' );
5 | const Utils = require( 'ext.checkUser.tempAccounts/ipRevealUtils.js' );
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/initOnHook.test.js:3:20)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser/investigate/blockform.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser/investigate/blockform.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser/investigate/blockform.test.js'
1 | 'use strict';
2 |
> 3 | const addBlockForm = require( 'ext.checkUser/investigate/blockform.js' );
| ^
4 |
5 | QUnit.module( 'ext.checkUser.investigate.blockform', QUnit.newMwEnvironment() );
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser/investigate/blockform.test.js:3:22)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.Image.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.Image.test.js'
However, Jest was able to find:
'./mmv.model.Image.test.js'
'./mmv.model.License.test.js'
'./mmv.model.Repo.test.js'
'./mmv.model.TaskQueue.test.js'
'./mmv.model.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { ImageModel, License } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.model.Image', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.Image.test.js:18:33)
FAIL tests/jest/mediawiki.special.block/stores/block.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/resources/src/mediawiki.special.block/SpecialBlock.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
4 | const { createTestingPinia } = require( '@pinia/testing' );
5 |
> 6 | const SpecialBlock = require( '../../../resources/src/mediawiki.special.block/SpecialBlock.vue' );
| ^
7 |
8 | /**
9 | * Mount the SpecialBlock component with the default configuration,
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (tests/jest/mediawiki.special.block/SpecialBlock.setup.js:6:22)
at Object.require (tests/jest/mediawiki.special.block/stores/block.test.js:6:29)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.metadataPanel.test.js
● Test suite failed to run
Cannot find module 'mmv.bootstrap' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.metadataPanel.test.js'
> 1 | const { Config } = require( 'mmv.bootstrap' );
| ^
2 | const { MetadataPanel, License } = require( 'mmv' );
3 |
4 | const mwMessagesExists = mw.messages.exists;
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.metadataPanel.test.js:1:20)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.dm.MWReferenceNode.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | 'use strict';
2 |
> 3 | QUnit.module( 've.dm.MWReferenceNode (Cite)', ve.test.utils.newMwEnvironment() );
| ^
4 |
5 | QUnit.test( 'makeListKey', ( assert ) => {
6 | const internalList = { getNextUniqueNumber: () => 7 };
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.dm.MWReferenceNode.test.js:3:1)
FAIL skins/MinervaNeue/tests/qunit/skins.minerva.scripts/TitleUtil.test.js
● Test suite failed to run
Cannot find module 'skins.minerva.scripts/TitleUtil.js' from 'skins/MinervaNeue/tests/qunit/skins.minerva.scripts/TitleUtil.test.js'
1 | ( function () {
> 2 | const TitleUtil = require( 'skins.minerva.scripts/TitleUtil.js' );
| ^
3 | const UriUtil = require( 'skins.minerva.scripts/UriUtil.js' );
4 |
5 | QUnit.module( 'Minerva TitleUtil', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/TitleUtil.test.js:2:20)
at Object.<anonymous> (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/TitleUtil.test.js:274:2)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/mmv.ThumbnailWidthCalculator.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/mmv.ThumbnailWidthCalculator.test.js'
However, Jest was able to find:
'./mmv.bootstrap.test.js'
'./mmv.Config.test.js'
'./mmv.EmbedFileFormatter.test.js'
'./mmv.HtmlUtils.test.js'
'./mmv.lightboximage.test.js'
'./mmv.lightboxinterface.test.js'
'./mmv.test.js'
'./mmv.testhelpers.js'
'./mmv.ThumbnailWidthCalculator.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
> 1 | const { ThumbnailWidthCalculator } = require( 'mmv' );
| ^
2 |
3 | QUnit.module( 'mmv.ThumbnailWidthCalculator', QUnit.newMwEnvironment() );
4 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/mmv.ThumbnailWidthCalculator.test.js:1:38)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/mmv.Config.test.js
● Test suite failed to run
Cannot find module 'mmv.bootstrap' from 'extensions/MultimediaViewer/tests/qunit/mmv/mmv.Config.test.js'
16 | */
17 |
> 18 | const { Config } = require( 'mmv.bootstrap' );
| ^
19 | const { createLocalStorage, getFakeLocalStorage } = require( './mmv.testhelpers.js' );
20 | const config0 = mw.config;
21 | const storage = mw.storage;
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/mmv.Config.test.js:18:20)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.dialog.test.js
● Test suite failed to run
Cannot find module 'mmv.ui.reuse' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.dialog.test.js'
16 | */
17 |
> 18 | const { ReuseDialog } = require( 'mmv.ui.reuse' );
| ^
19 |
20 | function makeReuseDialog( sandbox ) {
21 | const $fixture = $( '#qunit-fixture' );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.dialog.test.js:18:25)
FAIL tests/qunit/resources/jquery.lengthLimit.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'jquery.lengthLimit', () => {
| ^
2 | // Simple sample (20 chars, 20 bytes)
3 | const simpleSample = '12345678901234567890';
4 |
at Object.<anonymous> (tests/qunit/resources/jquery.lengthLimit.test.js:1:43)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccounts/components/showIPButton.test.js
● Test suite failed to run
ReferenceError: /src/repo/extensions/CheckUser/tests/jest/ext.checkUser.tempAccounts/components/showIPButton.test.js: The module factory of `jest.mock()` is not allowed to reference any out-of-scope variables.
Invalid variable access: getFormattedBlockDetails
Allowed objects: AbortController, AbortSignal, AggregateError, Array, ArrayBuffer, Atomics, BigInt, BigInt64Array, BigUint64Array, Blob, Boolean, BroadcastChannel, Buffer, ByteLengthQueuingStrategy, CompressionStream, CountQueuingStrategy, Crypto, CryptoKey, CustomEvent, DOMException, DataView, Date, DecompressionStream, Error, EvalError, Event, EventTarget, File, FinalizationRegistry, Float32Array, Float64Array, FormData, Function, Generator, GeneratorFunction, Headers, Infinity, Int16Array, Int32Array, Int8Array, InternalError, Intl, JSON, Map, Math, MessageChannel, MessageEvent, MessagePort, NaN, Number, Object, Performance, PerformanceEntry, PerformanceMark, PerformanceMeasure, PerformanceObserver, PerformanceObserverEntryList, PerformanceResourceTiming, Promise, Proxy, RangeError, ReadableByteStreamController, ReadableStream, ReadableStreamBYOBReader, ReadableStreamBYOBRequest, ReadableStreamDefaultController, ReadableStreamDefaultReader, ReferenceError, Reflect, RegExp, Request, Response, Set, SharedArrayBuffer, String, SubtleCrypto, Symbol, SyntaxError, TextDecoder, TextDecoderStream, TextEncoder, TextEncoderStream, TransformStream, TransformStreamDefaultController, TypeError, URIError, URL, URLSearchParams, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray, WeakMap, WeakRef, WeakSet, WebAssembly, WritableStream, WritableStreamDefaultController, WritableStreamDefaultWriter, __dirname, __filename, arguments, atob, btoa, clearImmediate, clearInterval, clearTimeout, console, crypto, decodeURI, decodeURIComponent, encodeURI, encodeURIComponent, escape, eval, expect, exports, fetch, global, globalThis, isFinite, isNaN, jest, module, parseFloat, parseInt, performance, process, queueMicrotask, require, setImmediate, setInterval, setTimeout, structuredClone, undefined, unescape.
Note: This is a precaution to guard against uninitialized mock variables. If it is ensured that the mock is required lazily, variable names prefixed with `mock` (case insensitive) are permitted.
22 | jest.mock(
23 | '../../../../modules/ext.checkUser.tempAccounts/api.js',
> 24 | () => ( { getFormattedBlockDetails } )
| ^^^^^^^^^^^^^^^^^^^^^^^^
25 | );
26 |
27 | const ShowIPButton = require( '../../../../modules/ext.checkUser.tempAccounts/components/ShowIPButton.vue' );
at File.buildCodeFrameError (node_modules/@babel/core/src/transformation/file/file.ts:257:12)
at NodePath.buildError [as buildCodeFrameError] (node_modules/@babel/traverse/src/path/index.ts:157:21)
at call (node_modules/@babel/traverse/src/visitors.ts:303:14)
at NodePath.call [as _call] (node_modules/@babel/traverse/src/path/context.ts:36:20)
at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitMultiple] (node_modules/@babel/traverse/src/context.ts:99:17)
at TraversalContext.visitMultiple [as visit] (node_modules/@babel/traverse/src/context.ts:178:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at NodePath.visit (node_modules/@babel/traverse/src/path/context.ts:104:33)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:109:19)
at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:180:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
at transformFile (node_modules/@babel/core/src/transformation/index.ts:119:15)
at transformFile.next (<anonymous>)
at transformFile (node_modules/@babel/core/src/transformation/index.ts:49:12)
at run.next (<anonymous>)
at transform (node_modules/@babel/core/src/transform.ts:29:20)
at transform.next (<anonymous>)
at evaluateSync (node_modules/gensync/index.js:251:28)
at sync (node_modules/gensync/index.js:89:14)
at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:545:31)
at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:674:40)
at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:726:19)
FAIL skins/Vector/tests/jest/pinnableElement.test.js
● Test suite failed to run
Cannot find module 'mustache' from 'skins/Vector/tests/jest/pinnableElement.test.js'
2 |
3 | const features = require( '../../resources/skins.vector.js/features.js' );
> 4 | const mustache = require( 'mustache' );
| ^
5 | const fs = require( 'fs' );
6 | const pinnableHeaderTemplate = fs.readFileSync( 'includes/templates/PinnableHeader.mustache', 'utf8' );
7 | const pinnableElement = require( '../../resources/skins.vector.js/pinnableElement.js' );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (skins/Vector/tests/jest/pinnableElement.test.js:4:18)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/App.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/App.test.js'
2 |
3 | const { nextTick } = require( 'vue' );
> 4 | const { mount } = require( 'vue-test-utils' );
| ^
5 | const App = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/components/App.vue' );
6 |
7 | QUnit.module( 'ext.checkUser.userInfoCard.App', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/App.test.js:4:19)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/ipRevealUtils.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.tempAccounts/ipRevealUtils.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/ipRevealUtils.test.js'
1 | 'use strict';
2 |
> 3 | const ipRevealUtils = require( 'ext.checkUser.tempAccounts/ipRevealUtils.js' );
| ^
4 | const autoRevealPreferenceName = 'checkuser-temporary-account-enable-auto-reveal';
5 |
6 | QUnit.module( 'ext.checkUser.tempAccounts.ipRevealUtils', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/ipRevealUtils.test.js:3:23)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.canvas.test.js
● Test suite failed to run
Cannot find module 'mmv.bootstrap' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.canvas.test.js'
16 | */
17 |
> 18 | const { LightboxImage } = require( 'mmv.bootstrap' );
| ^
19 | const { Canvas } = require( 'mmv' );
20 |
21 | QUnit.module( 'mmv.ui.Canvas', QUnit.newMwEnvironment() );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.canvas.test.js:18:27)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.ThumbnailInfo.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.ThumbnailInfo.test.js'
However, Jest was able to find:
'./mmv.provider.Api.test.js'
'./mmv.provider.GuessedThumbnailInfo.test.js'
'./mmv.provider.Image.test.js'
'./mmv.provider.ImageInfo.test.js'
'./mmv.provider.ThumbnailInfo.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { ThumbnailInfo } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.provider.ThumbnailInfo', QUnit.newMwEnvironment( {
21 | // mw.Title relies on these three config vars
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.ThumbnailInfo.test.js:18:27)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | */
6 |
> 7 | QUnit.module( 've.ui.MWWikitextStringTransferHandler', ve.test.utils.newMwEnvironment( {
| ^
8 | beforeEach() {
9 | // Mock XHR for mw.Api()
10 | this.server = this.sandbox.useFakeServer();
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.MWWikitextStringTransferHandler.test.js:7:1)
FAIL tests/qunit/resources/startup/mediawiki.test.js
● Test suite failed to run
Cannot find module 'mediawiki.jqueryMsg' from 'tests/qunit/resources/startup/mediawiki.test.js'
1 | ( function () {
> 2 | const jqueryMsg = require( 'mediawiki.jqueryMsg' ).test;
| ^
3 | QUnit.module( 'mediawiki' );
4 |
5 | QUnit.test( 'Initial check', ( assert ) => {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (tests/qunit/resources/startup/mediawiki.test.js:2:20)
at Object.<anonymous> (tests/qunit/resources/startup/mediawiki.test.js:156:2)
FAIL extensions/VisualEditor/modules/ve-mw/tests/init/targets/ve.init.mw.DesktopArticleTarget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.init.mw.DesktopArticleTarget', ve.test.utils.newMwEnvironment( {
| ^
9 | config: {
10 | wgVisualEditor: ve.extendObject( {}, mw.config.get( 'wgVisualEditor' ), {
11 | pageLanguageCode: 'he',
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/init/targets/ve.init.mw.DesktopArticleTarget.test.js:8:1)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.metadataPanelScroller.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/mmv.testhelpers.js'
Require stack:
extensions/MultimediaViewer/tests/qunit/mmv/mmv.testhelpers.js
extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.metadataPanelScroller.test.js
However, Jest was able to find:
'./mmv.bootstrap.test.js'
'./mmv.Config.test.js'
'./mmv.EmbedFileFormatter.test.js'
'./mmv.HtmlUtils.test.js'
'./mmv.lightboximage.test.js'
'./mmv.lightboxinterface.test.js'
'./mmv.test.js'
'./mmv.testhelpers.js'
'./mmv.ThumbnailWidthCalculator.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
> 1 | const { MultimediaViewer } = require( 'mmv' );
| ^
2 |
3 | const MTH = {};
4 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/mmv.testhelpers.js:1:30)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.metadataPanelScroller.test.js:18:81)
FAIL skins/MinervaNeue/tests/qunit/skins.minerva.scripts/downloadPageAction.test.js
● Test suite failed to run
ReferenceError: $ is not defined
5 | $el: $( '<span>' )
6 | } );
> 7 | const Deferred = $.Deferred;
| ^
8 | const windowChrome = { chrome: true };
9 | const windowNotChrome = {};
10 | const downloadAction = require( 'skins.minerva.scripts/downloadPageAction.js' );
at $ (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/downloadPageAction.test.js:7:19)
at Object.<anonymous> (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/downloadPageAction.test.js:178:2)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.License.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.License.test.js'
However, Jest was able to find:
'./mmv.model.Image.test.js'
'./mmv.model.License.test.js'
'./mmv.model.Repo.test.js'
'./mmv.model.TaskQueue.test.js'
'./mmv.model.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { License } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.model.License', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.License.test.js:18:21)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/InfoRowWithLinks.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/InfoRowWithLinks.test.js'
1 | 'use strict';
2 |
> 3 | const { shallowMount, mount } = require( 'vue-test-utils' );
| ^
4 | const InfoRowWithLinks = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/components/InfoRowWithLinks.vue' );
5 |
6 | QUnit.module( 'ext.checkUser.userInfoCard.InfoRowWithLinks', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/InfoRowWithLinks.test.js:3:33)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/SpecialContributions.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.tempAccounts/SpecialContributions.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/SpecialContributions.test.js'
1 | 'use strict';
2 |
> 3 | const specialContributions = require( 'ext.checkUser.tempAccounts/SpecialContributions.js' ),
| ^
4 | { waitUntilElementCount } = require( './utils.js' ),
5 | ipRevealUtils = require( 'ext.checkUser.tempAccounts/ipRevealUtils.js' );
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/SpecialContributions.test.js:3:30)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.TaskQueue.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.TaskQueue.test.js'
However, Jest was able to find:
'./mmv.model.Image.test.js'
'./mmv.model.License.test.js'
'./mmv.model.Repo.test.js'
'./mmv.model.TaskQueue.test.js'
'./mmv.model.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { TaskQueue } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.model.TaskQueue', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.TaskQueue.test.js:18:23)
FAIL extensions/VisualEditor/modules/ve-mw/tests/dm/annotations/ve.dm.MWInternalLinkAnnotation.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | */
6 |
> 7 | QUnit.module( 've.dm.MWInternalLinkAnnotation', ve.test.utils.newMwEnvironment() );
| ^
8 |
9 | QUnit.test( 'toDataElement', ( assert ) => {
10 | // The expected data depends on site configuration, so we need to generate the cases several times.
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/dm/annotations/ve.dm.MWInternalLinkAnnotation.test.js:7:1)
FAIL tests/qunit/resources/jquery.highlightText.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'jquery.highlightText', () => {
| ^
2 |
3 | QUnit.test.each( 'highlightText()', [
4 | {
at Object.<anonymous> (tests/qunit/resources/jquery.highlightText.test.js:1:45)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.dm.InternalList.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
8 | */
9 |
> 10 | QUnit.module( 've.dm.InternalList (Cite)', ve.test.utils.newMwEnvironment() );
| ^
11 |
12 | /**
13 | * @param {QUnit.assert} assert
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.dm.InternalList.test.js:10:1)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.Api.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.Api.test.js'
However, Jest was able to find:
'./mmv.provider.Api.test.js'
'./mmv.provider.GuessedThumbnailInfo.test.js'
'./mmv.provider.Image.test.js'
'./mmv.provider.ImageInfo.test.js'
'./mmv.provider.ThumbnailInfo.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { Api } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.provider.Api', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.Api.test.js:18:17)
FAIL skins/Vector/tests/jest/skins.vector.js/dropdownMenus.test.js
● Test suite failed to run
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
157 | // Enhance previously added items.
158 | Array.prototype.forEach.call(
> 159 | document.querySelectorAll( '.mw-list-item-js' ),
| ^
160 | ( item ) => {
161 | addPortletLinkHandler( item, {
162 | id: item.getAttribute( 'id' )
at Object.document (skins/Vector/resources/skins.vector.js/dropdownMenus.js:159:2)
at Object.require (skins/Vector/tests/jest/skins.vector.js/dropdownMenus.test.js:3:35)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccounts/components/IPAutoRevealOffDialog.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/CheckUser/modules/ext.checkUser.tempAccounts/components/IPAutoRevealOffDialog.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
21 | } ), { virtual: true } );
22 |
> 23 | const IPAutoRevealOffDialog = require( '../../../../modules/ext.checkUser.tempAccounts/components/IPAutoRevealOffDialog.vue' );
| ^
24 | const useInstrument = require( '../../../../modules/ext.checkUser.tempAccounts/useInstrument.js' );
25 | const { nextTick } = require( 'vue' );
26 | const utils = require( '@vue/test-utils' );
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/CheckUser/tests/jest/ext.checkUser.tempAccounts/components/IPAutoRevealOffDialog.test.js:23:31)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/rest.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.tempAccounts/rest.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/rest.test.js'
1 | 'use strict';
2 |
> 3 | const rest = require( 'ext.checkUser.tempAccounts/rest.js' );
| ^
4 |
5 | let server;
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/rest.test.js:3:14)
FAIL tests/qunit/resources/mediawiki.util/accessKeyLabel.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | ( function () {
> 2 | QUnit.module( 'mediawiki.util: jquery.accessKeyLabel', QUnit.newMwEnvironment( {
| ^
3 | messages: {
4 | brackets: '[$1]',
5 | 'word-separator': ' '
at QUnit (tests/qunit/resources/mediawiki.util/accessKeyLabel.test.js:2:2)
at Object.<anonymous> (tests/qunit/resources/mediawiki.util/accessKeyLabel.test.js:106:2)
FAIL tests/qunit/resources/mediawiki.widgets/MediaSearch/mediawiki.widgets.APIResultsQueue.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | */
6 |
> 7 | QUnit.module( 'mediawiki.widgets.APIResultsQueue' );
| ^
8 |
9 | ( function () {
10 | let itemCounter = 0;
at Object.QUnit (tests/qunit/resources/mediawiki.widgets/MediaSearch/mediawiki.widgets.APIResultsQueue.test.js:7:1)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardView.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardView.test.js'
2 |
3 | const { nextTick } = require( 'vue' );
> 4 | const { mount } = require( 'vue-test-utils' );
| ^
5 | const UserCardView = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/components/UserCardView.vue' );
6 |
7 | // Using mocks since we don't need to fully load child components
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardView.test.js:4:19)
FAIL tests/jest/mediawiki.special.block/BlockLog.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/resources/src/mediawiki.special.block/SpecialBlock.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
4 | const { createTestingPinia } = require( '@pinia/testing' );
5 |
> 6 | const SpecialBlock = require( '../../../resources/src/mediawiki.special.block/SpecialBlock.vue' );
| ^
7 |
8 | /**
9 | * Mount the SpecialBlock component with the default configuration,
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (tests/jest/mediawiki.special.block/SpecialBlock.setup.js:6:22)
at Object.require (tests/jest/mediawiki.special.block/BlockLog.test.js:6:43)
FAIL extensions/Cite/tests/qunit/ext.cite.referencePreviews/createReferenceGateway.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
2 |
3 | {
> 4 | QUnit.module.if( 'ext.cite.referencePreviews#createReferenceGateway',
| ^
5 | mw.loader.getModuleNames().includes( 'ext.popups.main' ),
6 | {
7 | beforeEach: function () {
at Object.QUnit (extensions/Cite/tests/qunit/ext.cite.referencePreviews/createReferenceGateway.test.js:4:2)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTemplateTitleInputWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
4 | } ) );
5 |
> 6 | QUnit.module( 've.ui.MWTemplateTitleInputWidget', ve.test.utils.newMwEnvironment( {
| ^
7 | messages: {
8 | // Force `templateDataInstalled` condition
9 | 'templatedata-doc-subpage': '(templatedata-doc-subpage)',
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTemplateTitleInputWidget.test.js:6:2)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlineTemplateWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWTransclusionOutlineTemplateWidget' );
| ^
2 |
3 | QUnit.test( 'Constructor', ( assert ) => {
4 | const transclusion = new ve.dm.MWTransclusionModel(),
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlineTemplateWidget.test.js:1:60)
FAIL tests/qunit/resources/mediawiki.storage.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
2 | const EXPIRY_PREFIX = '_EXPIRY_';
3 |
> 4 | QUnit.module( 'mediawiki.storage' );
| ^
5 |
6 | QUnit.test( 'set/get(Object) with storage support', function ( assert ) {
7 | const data = {},
at QUnit (tests/qunit/resources/mediawiki.storage.test.js:4:2)
at Object.<anonymous> (tests/qunit/resources/mediawiki.storage.test.js:156:2)
FAIL tests/qunit/resources/mediawiki.api/mediawiki.api.edit.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.api.edit', ( hooks ) => {
| ^
2 | let server;
3 | hooks.beforeEach( function () {
4 | server = this.sandbox.useFakeServer();
at Object.<anonymous> (tests/qunit/resources/mediawiki.api/mediawiki.api.edit.test.js:1:50)
FAIL extensions/VisualEditor/modules/ve-mw/tests/dm/models/ve.dm.MWImageModel.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.dm.MWImageModel' );
| ^
9 |
10 | /* Tests */
11 |
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/dm/models/ve.dm.MWImageModel.test.js:8:1)
FAIL skins/MinervaNeue/tests/qunit/skins.minerva.scripts/page-issues/parser.test.js
● Test suite failed to run
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
1 | ( function () {
> 2 | const iconElement = document.createElement( 'div' ),
| ^
3 | pageIssuesParser = require( 'skins.minerva.scripts/page-issues/parser.js' ),
4 | extractMessage = pageIssuesParser.extract;
5 |
at document (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/page-issues/parser.test.js:2:22)
at Object.<anonymous> (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/page-issues/parser.test.js:187:2)
FAIL tests/qunit/resources/mediawiki.String.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.String', () => {
| ^
2 | const { byteLength } = require( 'mediawiki.String' );
3 |
4 | QUnit.test.each( 'byteLength()', {
at Object.<anonymous> (tests/qunit/resources/mediawiki.String.test.js:1:41)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardHeader.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardHeader.test.js'
1 | 'use strict';
2 |
> 3 | const { shallowMount } = require( 'vue-test-utils' );
| ^
4 | const UserCardHeader = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/components/UserCardHeader.vue' );
5 |
6 | QUnit.module( 'ext.checkUser.userInfoCard.UserCardHeader', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardHeader.test.js:3:26)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/inspectors/ve.ui.FragmentInspector.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | */
6 |
> 7 | QUnit.module( 've.ui.FragmentInspector (MW)', ve.test.utils.newMwEnvironment( {
| ^
8 | beforeEach() {
9 | // Mock XHR for mw.Api()
10 | this.server = this.sandbox.useFakeServer();
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ui/inspectors/ve.ui.FragmentInspector.test.js:7:1)
FAIL tests/qunit/resources/mediawiki.api/mediawiki.api.options.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.api.options', QUnit.newMwEnvironment(), ( hooks ) => {
| ^
2 | mw.config.set( {
3 | wgUserName: 'Foo'
4 | } );
at Object.<anonymous> (tests/qunit/resources/mediawiki.api/mediawiki.api.options.test.js:1:79)
FAIL extensions/VisualEditor/modules/ve-mw/tests/dm/ve.dm.Document.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.dm.Document (MW)' );
| ^
9 |
10 | /* Tests */
11 |
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/dm/ve.dm.Document.test.js:8:1)
FAIL tests/qunit/resources/mediawiki.rcfilters/dm.FilterItem.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | /* eslint-disable camelcase */
2 | ( function () {
> 3 | QUnit.module( 'mediawiki.rcfilters - FilterItem' );
| ^
4 | const rcfilters = require( 'mediawiki.rcfilters.filters.ui' );
5 |
6 | QUnit.test( 'Initializing filter item', ( assert ) => {
at QUnit (tests/qunit/resources/mediawiki.rcfilters/dm.FilterItem.test.js:3:2)
at Object.<anonymous> (tests/qunit/resources/mediawiki.rcfilters/dm.FilterItem.test.js:195:2)
FAIL tests/qunit/resources/mediawiki.cookie.test.js
● Test suite failed to run
Cannot find module 'mediawiki.cookie' from 'tests/qunit/resources/mediawiki.cookie.test.js'
11 | secure: false
12 | },
> 13 | mwCookie = require( 'mediawiki.cookie' ),
| ^
14 | setDefaults = mwCookie.setDefaults,
15 | expiryDate = new Date();
16 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (tests/qunit/resources/mediawiki.cookie.test.js:13:14)
at Object.<anonymous> (tests/qunit/resources/mediawiki.cookie.test.js:183:2)
FAIL extensions/Nuke/tests/jest/codex/components/NukeNamespaceLookup.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/Nuke/modules/ext.nuke.codex/components/NukeNamespaceLookup.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
1 | const { mount, flushPromises } = require( '@vue/test-utils' );
> 2 | const NukeNamespaceLookup = require( '../../../../modules/ext.nuke.codex/components/NukeNamespaceLookup.vue' );
| ^
3 | const namespaces = require( '../../../assets/namespaces.json' );
4 | const { nextTick } = require( 'vue' );
5 |
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/Nuke/tests/jest/codex/components/NukeNamespaceLookup.test.js:2:29)
FAIL tests/jest/mediawiki.special.block/UserLookup.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/resources/src/mediawiki.special.block/SpecialBlock.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
4 | const { createTestingPinia } = require( '@pinia/testing' );
5 |
> 6 | const SpecialBlock = require( '../../../resources/src/mediawiki.special.block/SpecialBlock.vue' );
| ^
7 |
8 | /**
9 | * Mount the SpecialBlock component with the default configuration,
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (tests/jest/mediawiki.special.block/SpecialBlock.setup.js:6:22)
at Object.require (tests/jest/mediawiki.special.block/UserLookup.test.js:6:60)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.suggestedInvestigations/utils.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.suggestedInvestigations/utils.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.suggestedInvestigations/utils.test.js'
1 | 'use strict';
2 |
> 3 | const utils = require( 'ext.checkUser.suggestedInvestigations/utils.js' );
| ^
4 |
5 | QUnit.module( 'ext.checkUser.suggestedInvestigations.utils', QUnit.newMwEnvironment() );
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.suggestedInvestigations/utils.test.js:3:15)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ce.ClipboardHandler.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.ce.ClipboardHandler (Cite)', ve.test.utils.newMwEnvironment() );
| ^
9 |
10 | /* Tests */
11 |
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ce.ClipboardHandler.test.js:8:1)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/composables/useWatchList.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/composables/useWatchList.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/composables/useWatchList.test.js'
2 |
3 | const { nextTick } = require( 'vue' );
> 4 | const useWatchList = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/composables/useWatchList.js' );
| ^
5 |
6 | // Store stubs for use in arrow functions
7 | let watchStub, unwatchStub, notifyStub;
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/composables/useWatchList.test.js:4:22)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.Image.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.Image.test.js'
However, Jest was able to find:
'./mmv.provider.Api.test.js'
'./mmv.provider.GuessedThumbnailInfo.test.js'
'./mmv.provider.Image.test.js'
'./mmv.provider.ImageInfo.test.js'
'./mmv.provider.ThumbnailInfo.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { ImageProvider } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.provider.Image', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/provider/mmv.provider.Image.test.js:18:27)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/pages/ve.ui.MWParameterPage.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWParameterPage', ve.test.utils.newMwEnvironment );
| ^
2 |
3 | [
4 | [ undefined, '', ve.ui.MWLazyMultilineTextInputWidget ],
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/pages/ve.ui.MWParameterPage.test.js:1:72)
FAIL skins/Vector/tests/jest/stickyHeader.test.js
● Test suite failed to run
Cannot find module 'mustache' from 'skins/Vector/tests/jest/stickyHeader.test.js'
> 1 | const mustache = require( 'mustache' );
| ^
2 | const fs = require( 'fs' );
3 | const stickyHeaderTemplate = fs.readFileSync( 'includes/templates/StickyHeader.mustache', 'utf8' );
4 | const buttonTemplate = fs.readFileSync( 'includes/templates/Button.mustache', 'utf8' );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (skins/Vector/tests/jest/stickyHeader.test.js:1:39)
FAIL tests/qunit/resources/mediawiki.visibleTimeout.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.visibleTimeout', QUnit.newMwEnvironment( {
| ^
2 | beforeEach: function () {
3 | // Document with just enough stuff to make the tests work.
4 | const listeners = [];
at Object.<anonymous> (tests/qunit/resources/mediawiki.visibleTimeout.test.js:1:67)
FAIL extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/utils.test.js
● Test suite failed to run
Cannot find module 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/utils.js' from 'extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/utils.test.js'
> 1 | const { executeHCaptcha, loadHCaptcha } = require( 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/utils.js' );
| ^
2 |
3 | QUnit.module( 'ext.confirmEdit.hCaptcha.utils', QUnit.newMwEnvironment( {
4 | beforeEach() {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/utils.test.js:1:43)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/app.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/CheckUser/modules/ext.checkUser.tempAccountsOnboarding/components/App.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
6 | } ), { virtual: true } );
7 |
> 8 | const App = require( '../../../../modules/ext.checkUser.tempAccountsOnboarding/components/App.vue' ),
| ^
9 | utils = require( '@vue/test-utils' ),
10 | { waitFor, mockJSConfig } = require( '../../utils.js' );
11 |
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/app.test.js:8:13)
FAIL tests/qunit/resources/startup/mw.Map.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | const arry = [];
6 |
> 7 | QUnit.module( 'mw.Map' );
| ^
8 |
9 | QUnit.test( 'Store simple string key', ( assert ) => {
10 | const conf = new mw.Map();
at QUnit (tests/qunit/resources/startup/mw.Map.test.js:7:2)
at Object.<anonymous> (tests/qunit/resources/startup/mw.Map.test.js:130:2)
FAIL skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js
● isNightModeGadgetEnabled › should return false if no gadgets are installed
ReferenceError: mw is not defined
9 | beforeEach( () => {
10 | // https://github.com/wikimedia/mw-node-qunit/pull/38
> 11 | mw.loader.getState = () => null;
| ^
12 | } );
13 |
14 | it( 'should return false if no gadgets are installed', () => {
at Object.mw (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:11:3)
● isNightModeGadgetEnabled › should return false if the gadgets are installed but not enabled
ReferenceError: mw is not defined
9 | beforeEach( () => {
10 | // https://github.com/wikimedia/mw-node-qunit/pull/38
> 11 | mw.loader.getState = () => null;
| ^
12 | } );
13 |
14 | it( 'should return false if no gadgets are installed', () => {
at Object.mw (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:11:3)
● isNightModeGadgetEnabled › should return true if the gadgets are enabled
ReferenceError: mw is not defined
9 | beforeEach( () => {
10 | // https://github.com/wikimedia/mw-node-qunit/pull/38
> 11 | mw.loader.getState = () => null;
| ^
12 | } );
13 |
14 | it( 'should return false if no gadgets are installed', () => {
at Object.mw (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:11:3)
● disableNightModeForGadget › should disable night mode
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
33 | describe( 'disableNightModeForGadget', () => {
34 | beforeEach( () => {
> 35 | document.documentElement.classList.remove( 'skin-theme-clientpref--excluded' );
| ^
36 | document.documentElement.classList.remove( 'skin-theme-clientpref-night' );
37 | document.documentElement.classList.remove( 'skin-theme-clientpref-os' );
38 | } );
at Object.document (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:35:3)
● disableNightModeForGadget › should disable automatic mode
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
33 | describe( 'disableNightModeForGadget', () => {
34 | beforeEach( () => {
> 35 | document.documentElement.classList.remove( 'skin-theme-clientpref--excluded' );
| ^
36 | document.documentElement.classList.remove( 'skin-theme-clientpref-night' );
37 | document.documentElement.classList.remove( 'skin-theme-clientpref-os' );
38 | } );
at Object.document (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:35:3)
● disableNightModeForGadget › should add the excluded class
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
33 | describe( 'disableNightModeForGadget', () => {
34 | beforeEach( () => {
> 35 | document.documentElement.classList.remove( 'skin-theme-clientpref--excluded' );
| ^
36 | document.documentElement.classList.remove( 'skin-theme-clientpref-night' );
37 | document.documentElement.classList.remove( 'skin-theme-clientpref-os' );
38 | } );
at Object.document (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:35:3)
● alterDisableLink › should exit early if the gadget names are empty
ReferenceError: mw is not defined
67 |
68 | it( 'should exit early if the gadget names are empty', () => {
> 69 | jest.spyOn( mw, 'msg' ).mockImplementation( () => '' );
| ^
70 |
71 | const p = document.createElement( 'p' );
72 | const a = document.createElement( 'a' );
at Object.mw (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:69:15)
● alterDisableLink › should leave the surrounding element unaltered
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
83 |
84 | it( 'should leave the surrounding element unaltered', () => {
> 85 | const p = document.createElement( 'p' );
| ^
86 | const a = document.createElement( 'a' );
87 | p.appendChild( a );
88 |
at Object.document (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:85:13)
● alterDisableLink › should strip the title and href attributes
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
95 |
96 | it( 'should strip the title and href attributes', () => {
> 97 | const p = document.createElement( 'p' );
| ^
98 | const a = document.createElement( 'a' );
99 | p.appendChild( a );
100 |
at Object.document (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:97:13)
● alterDisableLink › should make the link display inline
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
109 |
110 | it( 'should make the link display inline', () => {
> 111 | const p = document.createElement( 'p' );
| ^
112 | const a = document.createElement( 'a' );
113 | p.appendChild( a );
114 |
at Object.document (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:111:13)
● alterExclusionMessage › should remove the existing text from the notice
ReferenceError: mw is not defined
123 | describe( 'alterExclusionMessage', () => {
124 | beforeEach( () => {
> 125 | jest.spyOn( mw.loader, 'using' ).mockImplementation( () => ( {
| ^
126 | then: ( fn ) => fn()
127 | } ) );
128 |
at Object.mw (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:125:15)
● alterExclusionMessage › should not target other client prefs
ReferenceError: mw is not defined
123 | describe( 'alterExclusionMessage', () => {
124 | beforeEach( () => {
> 125 | jest.spyOn( mw.loader, 'using' ).mockImplementation( () => ( {
| ^
126 | then: ( fn ) => fn()
127 | } ) );
128 |
at Object.mw (skins/Vector/tests/jest/skins.vector.js/disableNightModeIfGadget.test.js:125:15)
FAIL tests/qunit/resources/jquery.textSelection.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'jquery.textSelection', () => {
| ^
2 | const sig = {
3 | pre: '--~~~~'
4 | };
at Object.<anonymous> (tests/qunit/resources/jquery.textSelection.test.js:1:45)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.Repo.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.Repo.test.js'
However, Jest was able to find:
'./mmv.model.Image.test.js'
'./mmv.model.License.test.js'
'./mmv.model.Repo.test.js'
'./mmv.model.TaskQueue.test.js'
'./mmv.model.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { Repo, ForeignApiRepo, ForeignDbRepo } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.model.Repo', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.Repo.test.js:18:49)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingDialogStepper.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/CheckUser/modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingStepper.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
1 | 'use strict';
2 |
> 3 | const TempAccountsOnboardingStepper = require( '../../../../modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingStepper.vue' ),
| ^
4 | utils = require( '@vue/test-utils' );
5 |
6 | const renderComponent = ( props ) => {
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingDialogStepper.test.js:3:39)
FAIL extensions/DiscussionTools/tests/qunit/modifier.test.js
● Test suite failed to run
Cannot find module 'ext.discussionTools.init' from 'extensions/DiscussionTools/tests/qunit/testUtils.js'
Require stack:
extensions/DiscussionTools/tests/qunit/testUtils.js
extensions/DiscussionTools/tests/qunit/modifier.test.js
> 1 | const utils = require( 'ext.discussionTools.init' ).utils;
| ^
2 |
3 | module.exports = {};
4 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (extensions/DiscussionTools/tests/qunit/testUtils.js:1:58)
at Object.<anonymous> (extensions/DiscussionTools/tests/qunit/modifier.test.js:2:41)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.permission.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.permission.test.js'
However, Jest was able to find:
'./mmv.ui.canvas.test.js'
'./mmv.ui.canvasButtons.test.js'
'./mmv.ui.description.test.js'
'./mmv.ui.download.pane.test.js'
'./mmv.ui.metadataPanel.test.js'
'./mmv.ui.metadataPanelScroller.test.js'
'./mmv.ui.permission.test.js'
'./mmv.ui.progressBar.test.js'
'./mmv.ui.reuse.dialog.test.js'
'./mmv.ui.reuse.embed.test.js'
'./mmv.ui.reuse.share.test.js'
'./mmv.ui.reuse.utils.test.js'
'./mmv.ui.stripeButtons.test.js'
'./mmv.ui.test.js'
'./mmv.ui.truncatableTextField.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { Permission } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'Permission', QUnit.newMwEnvironment( {
21 | beforeEach: function () {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.permission.test.js:18:24)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/BlockDetailsPopupButtonWidget.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.tempAccounts/BlockDetailsPopupButtonWidget.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/BlockDetailsPopupButtonWidget.test.js'
1 | 'use strict';
2 |
> 3 | const BlockDetailsPopupButtonWidget = require(
| ^
4 | 'ext.checkUser.tempAccounts/BlockDetailsPopupButtonWidget.js'
5 | );
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/BlockDetailsPopupButtonWidget.test.js:3:39)
FAIL tests/jest/mediawiki.special.block/ExpiryField.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/resources/src/mediawiki.special.block/SpecialBlock.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
4 | const { createTestingPinia } = require( '@pinia/testing' );
5 |
> 6 | const SpecialBlock = require( '../../../resources/src/mediawiki.special.block/SpecialBlock.vue' );
| ^
7 |
8 | /**
9 | * Mount the SpecialBlock component with the default configuration,
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (tests/jest/mediawiki.special.block/SpecialBlock.setup.js:6:22)
at Object.require (tests/jest/mediawiki.special.block/ExpiryField.test.js:5:29)
FAIL tests/jest/mediawiki.skinning.typeaheadSearch/restSearchClient.test.js
● restApiSearchClient › 2 results
ReferenceError: mw is not defined
121 | const params = { q, limit: limit.toString() };
122 | const search = new URLSearchParams( params );
> 123 | mw.hook( 'typeaheadSearch.appendUrlParams' ).fire( ( key, value ) => {
| ^
124 | search.append( key, value );
125 | } );
126 | const url = `${ searchApiUrl }/v1/search/title?${ search.toString() }`;
at Object.mw [as fetchByTitle] (resources/src/mediawiki.skinning.typeaheadSearch/restSearchClient.js:123:4)
at Object.fetchByTitle (tests/jest/mediawiki.skinning.typeaheadSearch/restSearchClient.test.js:59:99)
● restApiSearchClient › 0 results
ReferenceError: mw is not defined
121 | const params = { q, limit: limit.toString() };
122 | const search = new URLSearchParams( params );
> 123 | mw.hook( 'typeaheadSearch.appendUrlParams' ).fire( ( key, value ) => {
| ^
124 | search.append( key, value );
125 | } );
126 | const url = `${ searchApiUrl }/v1/search/title?${ search.toString() }`;
at Object.mw [as fetchByTitle] (resources/src/mediawiki.skinning.typeaheadSearch/restSearchClient.js:123:4)
at Object.fetchByTitle (tests/jest/mediawiki.skinning.typeaheadSearch/restSearchClient.test.js:90:99)
● restApiSearchClient › recommendations service
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: window is not defined
27 | // so replacing it with no-op if it doesn't exist.
28 | // eslint-disable-next-line compat/compat
> 29 | const controller = window.AbortController ?
| ^
30 | // eslint-disable-next-line compat/compat
31 | new AbortController() :
32 | nullAbortController;
at window (resources/src/mediawiki.skinning.typeaheadSearch/fetch.js:29:21)
at Object.fetchJson [as fetchRecommendationByTitle] (resources/src/mediawiki.skinning.typeaheadSearch/restSearchClient.js:103:19)
at Object.fetchRecommendationByTitle (tests/jest/mediawiki.skinning.typeaheadSearch/restSearchClient.test.js:123:5)
● restApiSearchClient › network error
ReferenceError: mw is not defined
121 | const params = { q, limit: limit.toString() };
122 | const search = new URLSearchParams( params );
> 123 | mw.hook( 'typeaheadSearch.appendUrlParams' ).fire( ( key, value ) => {
| ^
124 | search.append( key, value );
125 | } );
126 | const url = `${ searchApiUrl }/v1/search/title?${ search.toString() }`;
at Object.mw [as fetchByTitle] (resources/src/mediawiki.skinning.typeaheadSearch/restSearchClient.js:123:4)
at Object.fetchByTitle (tests/jest/mediawiki.skinning.typeaheadSearch/restSearchClient.test.js:137:87)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.download.pane.test.js
● Test suite failed to run
Cannot find module 'mmv.ui.reuse' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.download.pane.test.js'
16 | */
17 |
> 18 | const { Download: DownloadPane, Utils } = require( 'mmv.ui.reuse' );
| ^
19 |
20 | QUnit.module( 'mmv.ui.download.pane', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.download.pane.test.js:18:43)
FAIL tests/qunit/resources/mediawiki.widgets/UserInputWidget/mediawiki.widgets.UserInputWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
3 | */
4 |
> 5 | QUnit.module( 'mediawiki.widgets.UserInputWidget' );
| ^
6 |
7 | ( function () {
8 | const widgetWithDefaults = new mw.widgets.UserInputWidget( {} );
at Object.QUnit (tests/qunit/resources/mediawiki.widgets/UserInputWidget/mediawiki.widgets.UserInputWidget.test.js:5:1)
FAIL tests/qunit/resources/mediawiki.api/mediawiki.rest.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.rest', ( hooks ) => {
| ^
2 | let server;
3 | hooks.beforeEach( function () {
4 | server = this.sandbox.useFakeServer();
at Object.<anonymous> (tests/qunit/resources/mediawiki.api/mediawiki.rest.test.js:1:46)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferenceEditPanel.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
2 |
3 | {
> 4 | QUnit.module( 've.ui.MWReferenceEditPanel (Cite)', ve.test.utils.newMwEnvironment() );
| ^
5 |
6 | /**
7 | * @param {ve.dm.Document} doc
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferenceEditPanel.test.js:4:2)
FAIL tests/qunit/resources/mediawiki.cldr.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
60 | };
61 |
> 62 | QUnit.module( 'mediawiki.cldr', QUnit.newMwEnvironment() );
| ^
63 |
64 | function pluralTest( langCode, tests ) {
65 | QUnit.test( 'Plural Test for ' + langCode, ( assert ) => {
at QUnit (tests/qunit/resources/mediawiki.cldr.test.js:62:2)
at Object.<anonymous> (tests/qunit/resources/mediawiki.cldr.test.js:83:2)
FAIL tests/qunit/resources/mediawiki.deflate.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.deflate', () => {
| ^
2 | let seed = 1234567890;
3 | function getPseudoRandom() {
4 | seed = seed * 16807 % 2147483646;
at Object.<anonymous> (tests/qunit/resources/mediawiki.deflate.test.js:1:42)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/pages/ve.ui.MWAddParameterPage.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWAddParameterPage', ve.test.utils.newMwEnvironment() );
| ^
2 |
3 | QUnit.test( 'Input event handlers', ( assert ) => {
4 | const transclusion = new ve.dm.MWTransclusionModel(),
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/pages/ve.ui.MWAddParameterPage.test.js:1:77)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserActivityChart.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserActivityChart.test.js'
1 | 'use strict';
2 |
> 3 | const { mount } = require( 'vue-test-utils' );
| ^
4 | const UserActivityChart = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/components/UserActivityChart.vue' );
5 |
6 | QUnit.module( 'ext.checkUser.userInfoCard.UserActivityChart', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserActivityChart.test.js:3:19)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/AbuseLog.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.tempAccounts/AbuseLog.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/AbuseLog.test.js'
1 | 'use strict';
2 |
> 3 | const abuseLog = require( 'ext.checkUser.tempAccounts/AbuseLog.js' );
| ^
4 |
5 | let server;
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.tempAccounts/AbuseLog.test.js:3:18)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlineWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWTransclusionOutlineWidget' );
| ^
2 |
3 | QUnit.test( 'Constructor', ( assert ) => {
4 | const widget = new ve.ui.MWTransclusionOutlineWidget();
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlineWidget.test.js:1:52)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.dm.MWGroupReferences.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | 'use strict';
2 |
> 3 | QUnit.module( 've.dm.MWGroupReferences (Cite)', ve.test.utils.newMwEnvironment( {
| ^
4 | beforeEach: function () {
5 | const doc = ve.dm.citeExample.createExampleDocument( 'references' );
6 | const docRefs = ve.dm.MWDocumentReferences.static.refsForDoc( doc );
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.dm.MWGroupReferences.test.js:3:1)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.utils.test.js
● Test suite failed to run
Cannot find module 'mmv.ui.reuse' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.utils.test.js'
16 | */
17 |
> 18 | const { Utils } = require( 'mmv.ui.reuse' );
| ^
19 |
20 | QUnit.module( 'mmv.ui.reuse.utils', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.utils.test.js:18:19)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.dm.MWReferenceModel.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | */
6 |
> 7 | QUnit.module( 've.dm.MWReferenceModel (Cite)', ve.test.utils.newMwEnvironment() );
| ^
8 |
9 | /* Tests */
10 |
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.dm.MWReferenceModel.test.js:7:1)
FAIL tests/qunit/resources/mediawiki.api/mediawiki.api.category.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.api.category', ( hooks ) => {
| ^
2 | let server;
3 | hooks.beforeEach( function () {
4 | server = this.sandbox.useFakeServer();
at Object.<anonymous> (tests/qunit/resources/mediawiki.api/mediawiki.api.category.test.js:1:54)
FAIL extensions/VisualEditor/modules/ve-mw/tests/dm/models/ve.dm.MWTransclusionModel.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 |
7 | {
> 8 | QUnit.module( 've.dm.MWTransclusionModel', ve.test.utils.newMwEnvironment( {
| ^
9 | beforeEach() {
10 | // Mock XHR for mw.Api()
11 | this.server = this.sandbox.useFakeServer();
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/dm/models/ve.dm.MWTransclusionModel.test.js:8:2)
FAIL tests/qunit/resources/mediawiki.pager.codex/limitSelectors.test.js
● Test suite failed to run
Cannot find module 'mediawiki.pager.codex/limitSelectors.js' from 'tests/qunit/resources/mediawiki.pager.codex/limitSelectors.test.js'
> 1 | const limitSelectors = require( 'mediawiki.pager.codex/limitSelectors.js' );
| ^
2 |
3 | QUnit.module( 'mediawiki.pager.codex.limitSelectors', QUnit.newMwEnvironment( {
4 | beforeEach: function () {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (tests/qunit/resources/mediawiki.pager.codex/limitSelectors.test.js:1:76)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/actions/ve.ui.MWLinkAction.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.ui.MWLinkAction' );
| ^
9 |
10 | /* Tests */
11 |
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ui/actions/ve.ui.MWLinkAction.test.js:8:1)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/composables/useInstrument.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/composables/useInstrument.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/composables/useInstrument.test.js'
1 | 'use strict';
2 |
> 3 | const useInstrument = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/composables/useInstrument.js' );
| ^
4 |
5 | // Store stubs for use in arrow functions
6 | let configStub, newInstrumentStub, submitInteractionStub, instrumentStub;
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/composables/useInstrument.test.js:3:23)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.stripeButtons.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.stripeButtons.test.js'
However, Jest was able to find:
'./mmv.ui.canvas.test.js'
'./mmv.ui.canvasButtons.test.js'
'./mmv.ui.description.test.js'
'./mmv.ui.download.pane.test.js'
'./mmv.ui.metadataPanel.test.js'
'./mmv.ui.metadataPanelScroller.test.js'
'./mmv.ui.permission.test.js'
'./mmv.ui.progressBar.test.js'
'./mmv.ui.reuse.dialog.test.js'
'./mmv.ui.reuse.embed.test.js'
'./mmv.ui.reuse.share.test.js'
'./mmv.ui.reuse.utils.test.js'
'./mmv.ui.stripeButtons.test.js'
'./mmv.ui.test.js'
'./mmv.ui.truncatableTextField.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { StripeButtons } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.ui.StripeButtons', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.stripeButtons.test.js:18:27)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.ipInfo.hooks/ext.ipinfo.infobox.widget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
2 | const addSpecialGlobalContributionsLink = require( '../../../modules/ext.checkUser.ipInfo.hooks/infobox.js' );
3 |
> 4 | QUnit.module( 'ext.checkUser.ipInfo.hooks', QUnit.newMwEnvironment( {
| ^
5 | beforeEach: function () {
6 | // simulate setting wgAutoCreateTempUser to { enabled: true, matchPattern: '~$1' }
7 | // (setting it in mw.config has no effect, so we need to
at Object.QUnit (extensions/CheckUser/tests/qunit/ext.checkUser.ipInfo.hooks/ext.ipinfo.infobox.widget.test.js:4:1)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.progressBar.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.progressBar.test.js'
However, Jest was able to find:
'./mmv.ui.canvas.test.js'
'./mmv.ui.canvasButtons.test.js'
'./mmv.ui.description.test.js'
'./mmv.ui.download.pane.test.js'
'./mmv.ui.metadataPanel.test.js'
'./mmv.ui.metadataPanelScroller.test.js'
'./mmv.ui.permission.test.js'
'./mmv.ui.progressBar.test.js'
'./mmv.ui.reuse.dialog.test.js'
'./mmv.ui.reuse.embed.test.js'
'./mmv.ui.reuse.share.test.js'
'./mmv.ui.reuse.utils.test.js'
'./mmv.ui.stripeButtons.test.js'
'./mmv.ui.test.js'
'./mmv.ui.truncatableTextField.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { ProgressBar } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.ui.ProgressBar', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.progressBar.test.js:18:25)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccounts/components/IPAutoRevealOnDialog.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/CheckUser/modules/ext.checkUser.tempAccounts/components/IPAutoRevealOnDialog.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
24 | jest.mock( '../../../../modules/ext.checkUser.tempAccounts/useInstrument.js' );
25 |
> 26 | const IPAutoRevealOnDialog = require( '../../../../modules/ext.checkUser.tempAccounts/components/IPAutoRevealOnDialog.vue' );
| ^
27 | const useInstrument = require( '../../../../modules/ext.checkUser.tempAccounts/useInstrument.js' );
28 | const { nextTick } = require( 'vue' );
29 | const utils = require( '@vue/test-utils' );
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/CheckUser/tests/jest/ext.checkUser.tempAccounts/components/IPAutoRevealOnDialog.test.js:26:30)
FAIL extensions/Nuke/tests/jest/codex/components/NukeTargetLookup.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/Nuke/modules/ext.nuke.codex/components/NukeTargetLookup.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
1 | const { mount, flushPromises } = require( '@vue/test-utils' );
> 2 | const NukeTargetLookup = require( '../../../../modules/ext.nuke.codex/components/NukeTargetLookup.vue' );
| ^
3 |
4 | function getWrapper( props = {} ) {
5 | const div = document.createElement( 'div' );
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/Nuke/tests/jest/codex/components/NukeTargetLookup.test.js:2:26)
FAIL skins/Vector/tests/jest/skins.vector.es6/main.test.js
● Test suite failed to run
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: window is not defined
> 1 | window.matchMedia = window.matchMedia || function () {
| ^
2 | return {
3 | matches: false,
4 | onchange: () => {}
at Object.<anonymous> (skins/Vector/tests/jest/skins.vector.es6/main.test.js:1:54)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.dm.Transaction.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
8 | */
9 |
> 10 | QUnit.module( 've.dm.Transaction (Cite)', ve.test.utils.newMwEnvironment() );
| ^
11 |
12 | // FIXME: Duplicates test runner; should be using a data provider
13 | QUnit.test( 'newFromDocumentInsertion with references', ( assert ) => {
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.dm.Transaction.test.js:10:1)
FAIL skins/Vector/tests/jest/skins.vector.legacy.js/portlets.test.js
● Test suite failed to run
Cannot find module 'mustache' from 'skins/Vector/tests/jest/skins.vector.legacy.js/portlets.test.js'
1 | const portlets = require( '../../../resources/skins.vector.legacy.js/portlets.js' );
> 2 | const mustache = require( 'mustache' );
| ^
3 | const fs = require( 'fs' );
4 | const menuTemplate = fs.readFileSync( 'includes/templates/LegacyMenu.mustache', 'utf8' );
5 | const menuContentsTemplate = fs.readFileSync( 'includes/templates/MenuContents.mustache', 'utf8' );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (skins/Vector/tests/jest/skins.vector.legacy.js/portlets.test.js:2:18)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ce/ve.ce.ClipboardHandler.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.ce.ClipboardHandler (MW)', ve.test.utils.newMwEnvironment() );
| ^
9 |
10 | /* Tests */
11 |
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ce/ve.ce.ClipboardHandler.test.js:8:1)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/actions/ve.ui.FormatAction.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.ui.FormatAction (MW)', ve.test.utils.newMwEnvironment() );
| ^
9 |
10 | QUnit.test.each( 'convert (MW-specific types)',
11 | [
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ui/actions/ve.ui.FormatAction.test.js:8:1)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.suggestedInvestigations/components/SignalsPopover.test.js
● Test suite failed to run
ReferenceError: /src/repo/extensions/CheckUser/tests/jest/utils.js: The module factory of `jest.mock()` is not allowed to reference any out-of-scope variables.
Invalid variable access: byteLength
Allowed objects: AbortController, AbortSignal, AggregateError, Array, ArrayBuffer, Atomics, BigInt, BigInt64Array, BigUint64Array, Blob, Boolean, BroadcastChannel, Buffer, ByteLengthQueuingStrategy, CompressionStream, CountQueuingStrategy, Crypto, CryptoKey, CustomEvent, DOMException, DataView, Date, DecompressionStream, Error, EvalError, Event, EventTarget, File, FinalizationRegistry, Float32Array, Float64Array, FormData, Function, Generator, GeneratorFunction, Headers, Infinity, Int16Array, Int32Array, Int8Array, InternalError, Intl, JSON, Map, Math, MessageChannel, MessageEvent, MessagePort, NaN, Number, Object, Performance, PerformanceEntry, PerformanceMark, PerformanceMeasure, PerformanceObserver, PerformanceObserverEntryList, PerformanceResourceTiming, Promise, Proxy, RangeError, ReadableByteStreamController, ReadableStream, ReadableStreamBYOBReader, ReadableStreamBYOBRequest, ReadableStreamDefaultController, ReadableStreamDefaultReader, ReferenceError, Reflect, RegExp, Request, Response, Set, SharedArrayBuffer, String, SubtleCrypto, Symbol, SyntaxError, TextDecoder, TextDecoderStream, TextEncoder, TextEncoderStream, TransformStream, TransformStreamDefaultController, TypeError, URIError, URL, URLSearchParams, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray, WeakMap, WeakRef, WeakSet, WebAssembly, WritableStream, WritableStreamDefaultController, WritableStreamDefaultWriter, __dirname, __filename, arguments, atob, btoa, clearImmediate, clearInterval, clearTimeout, console, crypto, decodeURI, decodeURIComponent, encodeURI, encodeURIComponent, escape, eval, expect, exports, fetch, global, globalThis, isFinite, isNaN, jest, module, parseFloat, parseInt, performance, process, queueMicrotask, require, setImmediate, setInterval, setTimeout, structuredClone, undefined, unescape.
Note: This is a precaution to guard against uninitialized mock variables. If it is ensured that the mock is required lazily, variable names prefixed with `mock` (case insensitive) are permitted.
187 | const byteLength = jest.fn();
188 | jest.mock( 'mediawiki.String', () => ( {
> 189 | byteLength: byteLength
| ^^^^^^^^^^
190 | } ), { virtual: true } );
191 | return byteLength;
192 | }
4 | { nextTick } = require( 'vue' ),
5 | { CdxToggleButton } = require( '@wikimedia/codex' ),
> 6 | { mockJSConfig } = require( '../../utils.js' );
| ^
7 |
8 | const SignalsPopover = require( '../../../../modules/ext.checkUser.suggestedInvestigations/components/SignalsPopover.vue' );
9 |
at File.buildCodeFrameError (node_modules/@babel/core/src/transformation/file/file.ts:257:12)
at NodePath.buildError [as buildCodeFrameError] (node_modules/@babel/traverse/src/path/index.ts:157:21)
at call (node_modules/@babel/traverse/src/visitors.ts:303:14)
at NodePath.call [as _call] (node_modules/@babel/traverse/src/path/context.ts:36:20)
at NodePath.call (node_modules/@babel/traverse/src/path/context.ts:21:18)
at NodePath.call [as visit] (node_modules/@babel/traverse/src/path/context.ts:97:31)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitMultiple] (node_modules/@babel/traverse/src/context.ts:99:17)
at TraversalContext.visitMultiple [as visit] (node_modules/@babel/traverse/src/context.ts:178:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at NodePath.visit (node_modules/@babel/traverse/src/path/context.ts:104:33)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:109:19)
at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:180:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at NodePath.visit (node_modules/@babel/traverse/src/path/context.ts:104:33)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitMultiple] (node_modules/@babel/traverse/src/context.ts:99:17)
at TraversalContext.visitMultiple [as visit] (node_modules/@babel/traverse/src/context.ts:178:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at NodePath.visit (node_modules/@babel/traverse/src/path/context.ts:104:33)
at TraversalContext.visit [as visitQueue] (node_modules/@babel/traverse/src/context.ts:148:16)
at TraversalContext.visitQueue [as visitSingle] (node_modules/@babel/traverse/src/context.ts:109:19)
at TraversalContext.visitSingle [as visit] (node_modules/@babel/traverse/src/context.ts:180:19)
at visit (node_modules/@babel/traverse/src/traverse-node.ts:208:17)
at traverse (node_modules/@babel/traverse/src/index.ts:84:15)
at transformFile (node_modules/@babel/core/src/transformation/index.ts:119:15)
at transformFile.next (<anonymous>)
at transformFile (node_modules/@babel/core/src/transformation/index.ts:49:12)
at run.next (<anonymous>)
at transform (node_modules/@babel/core/src/transform.ts:29:20)
at transform.next (<anonymous>)
at evaluateSync (node_modules/gensync/index.js:251:28)
at sync (node_modules/gensync/index.js:89:14)
at fn (node_modules/@babel/core/src/errors/rewrite-stack-trace.ts:99:14)
at transformSync (node_modules/@babel/core/src/transform.ts:66:52)
at ScriptTransformer.transformSource (node_modules/@jest/transform/build/ScriptTransformer.js:545:31)
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 (extensions/CheckUser/tests/jest/ext.checkUser.suggestedInvestigations/components/SignalsPopover.test.js:6:21)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.suggestedInvestigations/components/CharacterLimitedTextInput.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/CheckUser/modules/ext.checkUser.suggestedInvestigations/components/CharacterLimitedTextInput.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
8 | } ), { virtual: true } );
9 |
> 10 | const CharacterLimitedTextInput = require( '../../../../modules/ext.checkUser.suggestedInvestigations/components/CharacterLimitedTextInput.vue' );
| ^
11 |
12 | describe( 'CharacterLimitedTextInput', () => {
13 | beforeEach( () => {
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/CheckUser/tests/jest/ext.checkUser.suggestedInvestigations/components/CharacterLimitedTextInput.test.js:10:35)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.suggestedInvestigations/rest.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser.suggestedInvestigations/rest.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser.suggestedInvestigations/rest.test.js'
1 | 'use strict';
2 |
> 3 | const rest = require( 'ext.checkUser.suggestedInvestigations/rest.js' );
| ^
4 |
5 | let server;
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.suggestedInvestigations/rest.test.js:3:14)
FAIL tests/qunit/resources/mediawiki.widgets/Table/mediawiki.widgets.TableWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
3 | */
4 |
> 5 | QUnit.module( 'mediawiki.widgets.TableWidget' );
| ^
6 |
7 | ( function () {
8 | const widgetA = new mw.widgets.TableWidget( {
at Object.QUnit (tests/qunit/resources/mediawiki.widgets/Table/mediawiki.widgets.TableWidget.test.js:5:1)
FAIL skins/Vector/tests/jest/popupNotification.test.js
● Popup Notification › add
TypeError: Cannot set properties of undefined (setting 'matchMedia')
23 | describe( 'Popup Notification', () => {
24 | beforeEach( () => {
> 25 | global.window.matchMedia = jest.fn( () => ( {} ) );
| ^
26 | document.body.style = 'direction: ltr';
27 | jest.spyOn( mw.loader, 'using' )
28 | .mockImplementation( () => Promise.resolve() );
at Object.<anonymous> (skins/Vector/tests/jest/popupNotification.test.js:25:27)
● Popup Notification › hide
TypeError: Cannot set properties of undefined (setting 'matchMedia')
23 | describe( 'Popup Notification', () => {
24 | beforeEach( () => {
> 25 | global.window.matchMedia = jest.fn( () => ( {} ) );
| ^
26 | document.body.style = 'direction: ltr';
27 | jest.spyOn( mw.loader, 'using' )
28 | .mockImplementation( () => Promise.resolve() );
at Object.<anonymous> (skins/Vector/tests/jest/popupNotification.test.js:25:27)
● Popup Notification › show
TypeError: Cannot set properties of undefined (setting 'matchMedia')
23 | describe( 'Popup Notification', () => {
24 | beforeEach( () => {
> 25 | global.window.matchMedia = jest.fn( () => ( {} ) );
| ^
26 | document.body.style = 'direction: ltr';
27 | jest.spyOn( mw.loader, 'using' )
28 | .mockImplementation( () => Promise.resolve() );
at Object.<anonymous> (skins/Vector/tests/jest/popupNotification.test.js:25:27)
● Popup Notification › hideAll
TypeError: Cannot set properties of undefined (setting 'matchMedia')
23 | describe( 'Popup Notification', () => {
24 | beforeEach( () => {
> 25 | global.window.matchMedia = jest.fn( () => ( {} ) );
| ^
26 | document.body.style = 'direction: ltr';
27 | jest.spyOn( mw.loader, 'using' )
28 | .mockImplementation( () => Promise.resolve() );
at Object.<anonymous> (skins/Vector/tests/jest/popupNotification.test.js:25:27)
FAIL extensions/Cite/tests/qunit/ext.cite.referencePreviews/renderer.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | const previewTypes = { TYPE_REFERENCE: 'reference' };
6 |
> 7 | QUnit.module.if( 'ext.cite.referencePreviews#renderer',
| ^
8 | mw.loader.getModuleNames().includes( 'ext.popups.main' ),
9 | {
10 | before() {
at Object.QUnit (extensions/Cite/tests/qunit/ext.cite.referencePreviews/renderer.test.js:7:2)
FAIL extensions/Cite/tests/qunit/ext.cite.referencePreviews/isReferencePreviewsEnabled.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
2 |
3 | {
> 4 | QUnit.module.if( 'ext.cite.referencePreviews#isReferencePreviewsEnabled',
| ^
5 | mw.loader.getModuleNames().includes( 'ext.popups.main' ) );
6 |
7 | const createStubUserSettings = () => ( {
at Object.QUnit (extensions/Cite/tests/qunit/ext.cite.referencePreviews/isReferencePreviewsEnabled.test.js:4:2)
FAIL extensions/DiscussionTools/tests/qunit/parser.test.js
● Test suite failed to run
Cannot find module 'ext.discussionTools.init' from 'extensions/DiscussionTools/tests/qunit/testUtils.js'
Require stack:
extensions/DiscussionTools/tests/qunit/testUtils.js
extensions/DiscussionTools/tests/qunit/parser.test.js
> 1 | const utils = require( 'ext.discussionTools.init' ).utils;
| ^
2 |
3 | module.exports = {};
4 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (extensions/DiscussionTools/tests/qunit/testUtils.js:1:58)
at Object.require (extensions/DiscussionTools/tests/qunit/parser.test.js:3:14)
FAIL skins/Vector/tests/jest/skins.vector.js/tables.test.js
● tables › wraps table with div
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
3 | describe( 'tables', () => {
4 | test( 'wraps table with div', () => {
> 5 | document.body.innerHTML = `
| ^
6 | <div class="mw-parser-output">
7 | <table class="wikitable">
8 | <tbody><tr><th>table table table</th></tr></tbody>
at Object.document (skins/Vector/tests/jest/skins.vector.js/tables.test.js:5:3)
● tables › wraps multiple table with div
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
16 |
17 | test( 'wraps multiple table with div', () => {
> 18 | document.body.innerHTML = `
| ^
19 | <div class="mw-parser-output">
20 | <table class="wikitable">
21 | <tbody><tr><th>table table table</th></tr></tbody>
at Object.document (skins/Vector/tests/jest/skins.vector.js/tables.test.js:18:3)
● tables › doesnt wrap nested tables
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
36 |
37 | test( 'doesnt wrap nested tables', () => {
> 38 | document.body.innerHTML = `
| ^
39 | <div class="mw-parser-output">
40 | <table class="wikitable">
41 | <tbody>
at Object.document (skins/Vector/tests/jest/skins.vector.js/tables.test.js:38:3)
● tables › doesnt wrap tables that are not wikitables
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
52 |
53 | test( 'doesnt wrap tables that are not wikitables', () => {
> 54 | document.body.innerHTML = `
| ^
55 | <div class="mw-parser-output">
56 | <table>
57 | <tbody>
at Object.document (skins/Vector/tests/jest/skins.vector.js/tables.test.js:54:3)
● tables › doesnt wrap tables that already have noresize
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
68 |
69 | test( 'doesnt wrap tables that already have noresize', () => {
> 70 | document.body.innerHTML = `
| ^
71 | <div class="mw-parser-output">
72 | <div class="noresize">
73 | <table class="wikitable">
at Object.document (skins/Vector/tests/jest/skins.vector.js/tables.test.js:70:3)
● tables › doesnt wrap tables that are already wrapped
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
85 |
86 | test( 'doesnt wrap tables that are already wrapped', () => {
> 87 | document.body.innerHTML = `
| ^
88 | <div class="mw-parser-output">
89 | <div>
90 | <table class="wikitable">
at Object.document (skins/Vector/tests/jest/skins.vector.js/tables.test.js:87:3)
● tables › doesnt wrap floated tables
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
102 |
103 | test( 'doesnt wrap floated tables', () => {
> 104 | document.body.innerHTML = `
| ^
105 | <div class="mw-parser-output">
106 | <table class="wikitable" style="float:right">
107 | <tbody>
at Object.document (skins/Vector/tests/jest/skins.vector.js/tables.test.js:104:3)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/dialogs/ve.ui.MWTransclusionDialog.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 |
7 | {
> 8 | QUnit.module( 've.ui.MWTransclusionDialog', ve.test.utils.newMwEnvironment( {
| ^
9 | config: {
10 | // Set config variable to activate new sidebar feature
11 | // TODO: remove this when sidebar feature will be default
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ui/dialogs/ve.ui.MWTransclusionDialog.test.js:8:2)
FAIL extensions/VisualEditor/modules/ve-mw/tests/dm/ve.dm.SurfaceFragment.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.dm.SurfaceFragment (MW)', ve.test.utils.newMwEnvironment() );
| ^
9 |
10 | /* Tests */
11 |
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/dm/ve.dm.SurfaceFragment.test.js:8:1)
FAIL skins/MinervaNeue/tests/jest/skins.minerva.scripts/reportIfNightModeWasDisabledOnPage.test.js
● Test suite failed to run
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
3 | '../../../resources/skins.minerva.scripts/reportIfNightModeWasDisabledOnPage.js'
4 | );
> 5 | const nightModeDisabledDoc = document.createElement( 'html' );
| ^
6 | nightModeDisabledDoc.setAttribute( 'class', 'skin-night-mode-page-disabled' );
7 |
8 | const userOptionsEnabled = new Map();
at Object.document (skins/MinervaNeue/tests/jest/skins.minerva.scripts/reportIfNightModeWasDisabledOnPage.test.js:5:30)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ui.MWWikitextStringTransferHandler.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
8 | */
9 |
> 10 | QUnit.module( 've.ui.MWWikitextStringTransferHandler (Cite)', ve.test.utils.newMwEnvironment( {
| ^
11 | beforeEach: function () {
12 | // Mock XHR for mw.Api()
13 | this.server = this.sandbox.useFakeServer();
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ui.MWWikitextStringTransferHandler.test.js:10:1)
FAIL tests/qunit/resources/startup/clientprefs.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'startup/clientprefs', () => {
| ^
2 | // See /resources/src/startup/clientprefs.js
3 | const clientprefs = mw.clientprefs;
4 |
at Object.<anonymous> (tests/qunit/resources/startup/clientprefs.test.js:1:44)
FAIL tests/jest/mediawiki.special.block/util.test.js
● util › sanitizeRange (IPv4 range)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv4 range 2)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv4 large range)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv4 intermediate range)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv4 silly range)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv4 non-range)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv6 range)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv6 range 2)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv6 large range)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv6 intermediate range)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv6 silly range)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › sanitizeRange (IPv6 non range)
ReferenceError: mw is not defined
71 | it.each( santizeRangeTestCases )( 'sanitizeRange ($title)',
72 | ( { input, expected, sanitizeIP, isIPv4Address, isIPv6Address } ) => {
> 73 | mw.util.sanitizeIP = jest.fn().mockReturnValue( sanitizeIP || input );
| ^
74 | mw.util.isIPv4Address = jest.fn().mockReturnValue( !!isIPv4Address );
75 | mw.util.isIPv6Address = jest.fn().mockReturnValue( !!isIPv6Address );
76 | expect( util.sanitizeRange( input ) ).toBe( expected );
at mw (tests/jest/mediawiki.special.block/util.test.js:73:4)
● util › formatTimestamp
ReferenceError: mw is not defined
92 |
93 | it.each( formatTimestampCases )( 'formatTimestamp', ( { input, expected } ) => {
> 94 | mw.util.isInfinity = jest.fn().mockReturnValue( input === 'infinity' );
| ^
95 | expect( util.formatTimestamp( input ) ).toBe( expected );
96 | } );
97 | } );
at mw (tests/jest/mediawiki.special.block/util.test.js:94:3)
● util › formatTimestamp
ReferenceError: mw is not defined
92 |
93 | it.each( formatTimestampCases )( 'formatTimestamp', ( { input, expected } ) => {
> 94 | mw.util.isInfinity = jest.fn().mockReturnValue( input === 'infinity' );
| ^
95 | expect( util.formatTimestamp( input ) ).toBe( expected );
96 | } );
97 | } );
at mw (tests/jest/mediawiki.special.block/util.test.js:94:3)
FAIL tests/qunit/resources/mediawiki.base/track.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.base/track', () => {
| ^
2 |
3 | QUnit.test( 'track', ( assert ) => {
4 | const sequence = [];
at Object.<anonymous> (tests/qunit/resources/mediawiki.base/track.test.js:1:45)
FAIL extensions/VisualEditor/modules/ve-mw/tests/dm/nodes/ve.dm.MWTransclusionNode.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.dm.MWTransclusionNode' );
| ^
9 |
10 | QUnit.test.each( 'getWikitext', {
11 | 'mix of numbered and named parameters': {
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/dm/nodes/ve.dm.MWTransclusionNode.test.js:8:1)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferenceSearchWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
2 |
3 | {
> 4 | QUnit.module( 've.ui.MWReferenceSearchWidget (Cite)', ve.test.utils.newMwEnvironment() );
| ^
5 |
6 | /**
7 | * @param {boolean} [hasNode=false]
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferenceSearchWidget.test.js:4:2)
FAIL tests/jest/mediawiki.skinning.typeaheadSearch/fetch.test.js
● abort() using AbortController › Aborting an unfinished request throws an AbortError
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: window is not defined
27 | // so replacing it with no-op if it doesn't exist.
28 | // eslint-disable-next-line compat/compat
> 29 | const controller = window.AbortController ?
| ^
30 | // eslint-disable-next-line compat/compat
31 | new AbortController() :
32 | nullAbortController;
at window (resources/src/mediawiki.skinning.typeaheadSearch/fetch.js:29:21)
at Object.fetchJson (tests/jest/mediawiki.skinning.typeaheadSearch/fetch.test.js:12:28)
● abort() using AbortController › Aborting an unfinished request throws an AbortError
expect.assertions(1)
Expected one assertion to be called but received zero assertion calls.
8 | describe( 'abort() using AbortController', () => {
9 | test( 'Aborting an unfinished request throws an AbortError', async () => {
> 10 | expect.assertions( 1 );
| ^
11 |
12 | const { abort, fetch } = fetchJson( url );
13 |
at Object.assertions (tests/jest/mediawiki.skinning.typeaheadSearch/fetch.test.js:10:10)
● fetch() using window.fetch › 200 without init param passed
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: window is not defined
27 | // so replacing it with no-op if it doesn't exist.
28 | // eslint-disable-next-line compat/compat
> 29 | const controller = window.AbortController ?
| ^
30 | // eslint-disable-next-line compat/compat
31 | new AbortController() :
32 | nullAbortController;
at window (resources/src/mediawiki.skinning.typeaheadSearch/fetch.js:29:21)
at Object.fetchJson (tests/jest/mediawiki.skinning.typeaheadSearch/fetch.test.js:54:21)
● fetch() using window.fetch › 200 with init param passed
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: window is not defined
27 | // so replacing it with no-op if it doesn't exist.
28 | // eslint-disable-next-line compat/compat
> 29 | const controller = window.AbortController ?
| ^
30 | // eslint-disable-next-line compat/compat
31 | new AbortController() :
32 | nullAbortController;
at window (resources/src/mediawiki.skinning.typeaheadSearch/fetch.js:29:21)
at Object.fetchJson (tests/jest/mediawiki.skinning.typeaheadSearch/fetch.test.js:66:21)
● fetch() using window.fetch › 404 response
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: window is not defined
27 | // so replacing it with no-op if it doesn't exist.
28 | // eslint-disable-next-line compat/compat
> 29 | const controller = window.AbortController ?
| ^
30 | // eslint-disable-next-line compat/compat
31 | new AbortController() :
32 | nullAbortController;
at window (resources/src/mediawiki.skinning.typeaheadSearch/fetch.js:29:21)
at Object.fetchJson (tests/jest/mediawiki.skinning.typeaheadSearch/fetch.test.js:82:21)
● fetch() using window.fetch › 404 response
expect.assertions(1)
Expected one assertion to be called but received zero assertion calls.
79 |
80 | test( '404 response', async () => {
> 81 | expect.assertions( 1 );
| ^
82 | const { fetch } = fetchJson( '//en.wikipedia.org/doesNotExist' );
83 |
84 | await expect( fetch )
at Object.assertions (tests/jest/mediawiki.skinning.typeaheadSearch/fetch.test.js:81:10)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ui.DiffElement.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
7 | */
8 |
> 9 | QUnit.module( 've.ui.DiffElement (Cite)' );
| ^
10 |
11 | QUnit.test( 'Diffing', ( assert ) => {
12 | const spacer = '<div class="ve-ui-diffElement-spacer">⋮</div>',
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ui.DiffElement.test.js:9:1)
FAIL skins/Vector/tests/jest/skins.vector.js/portlets.test.js
● Test suite failed to run
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
157 | // Enhance previously added items.
158 | Array.prototype.forEach.call(
> 159 | document.querySelectorAll( '.mw-list-item-js' ),
| ^
160 | ( item ) => {
161 | addPortletLinkHandler( item, {
162 | id: item.getAttribute( 'id' )
at Object.document (skins/Vector/resources/skins.vector.js/dropdownMenus.js:159:2)
at Object.<anonymous> (skins/Vector/resources/skins.vector.js/portlets.js:1:54)
at Object.<anonymous> (skins/Vector/tests/jest/skins.vector.js/portlets.test.js:1:77)
FAIL tests/qunit/resources/mediawiki.ForeignApi/mediawiki.ForeignApi.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.ForeignApi', ( hooks ) => {
| ^
2 | const CoreForeignApi = require( 'mediawiki.ForeignApi.core' ).ForeignApi;
3 |
4 | hooks.beforeEach( function () {
at Object.<anonymous> (tests/qunit/resources/mediawiki.ForeignApi/mediawiki.ForeignApi.test.js:1:52)
FAIL tests/qunit/resources/mediawiki.base/html.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.base/html', () => {
| ^
2 |
3 | QUnit.test( 'escape', ( assert ) => {
4 | assert.throws(
at Object.<anonymous> (tests/qunit/resources/mediawiki.base/html.test.js:1:44)
FAIL extensions/Cite/tests/qunit/ext.cite.highlighting.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
2 |
3 | /* eslint-disable no-jquery/no-global-selector */
> 4 | QUnit.module( 'ext.cite.highlighting (Cite)', {
| ^
5 | beforeEach: function () {
6 | const $content = $( `
7 | <div>
at Object.QUnit (extensions/Cite/tests/qunit/ext.cite.highlighting.test.js:4:1)
FAIL skins/Vector/tests/jest/skins.vector.clientPreferences.test.js
● clientPreferences › render empty
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
4 | describe( 'clientPreferences', () => {
5 | beforeEach( () => {
> 6 | document.body.innerHTML = '';
| ^
7 | cp = document.createElement( 'div' );
8 | cp.id = 'cp';
9 | document.body.appendChild( cp );
at Object.document (skins/Vector/tests/jest/skins.vector.clientPreferences.test.js:6:3)
● clientPreferences › render font size
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
4 | describe( 'clientPreferences', () => {
5 | beforeEach( () => {
> 6 | document.body.innerHTML = '';
| ^
7 | cp = document.createElement( 'div' );
8 | cp.id = 'cp';
9 | document.body.appendChild( cp );
at Object.document (skins/Vector/tests/jest/skins.vector.clientPreferences.test.js:6:3)
● clientPreferences › doesnt render exclusion notice if the msg key doesnt exist
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
4 | describe( 'clientPreferences', () => {
5 | beforeEach( () => {
> 6 | document.body.innerHTML = '';
| ^
7 | cp = document.createElement( 'div' );
8 | cp.id = 'cp';
9 | document.body.appendChild( cp );
at Object.document (skins/Vector/tests/jest/skins.vector.clientPreferences.test.js:6:3)
● clientPreferences › render toggle
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
4 | describe( 'clientPreferences', () => {
5 | beforeEach( () => {
> 6 | document.body.innerHTML = '';
| ^
7 | cp = document.createElement( 'div' );
8 | cp.id = 'cp';
9 | document.body.appendChild( cp );
at Object.document (skins/Vector/tests/jest/skins.vector.clientPreferences.test.js:6:3)
FAIL tests/qunit/resources/testrunner.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'testrunner', () => {
| ^
2 | QUnit.test( 'assert.htmlEqual', ( assert ) => {
3 | assert.htmlEqual(
4 | '<div><p class="some classes" data-length="10">Child paragraph with <a href="http://example.com">A link</a></p>Regular text<span>A span</span></div>',
at Object.<anonymous> (tests/qunit/resources/testrunner.test.js:1:35)
FAIL tests/qunit/resources/mediawiki.ForeignApi/mediawiki.ForeignRest.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.ForeignRest', ( hooks ) => {
| ^
2 | const CoreForeignApi = require( 'mediawiki.ForeignApi.core' ).ForeignApi;
3 | const CoreForeignRest = require( 'mediawiki.ForeignApi.core' ).ForeignRest;
4 |
at Object.<anonymous> (tests/qunit/resources/mediawiki.ForeignApi/mediawiki.ForeignRest.test.js:1:53)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserInfoCardError.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserInfoCardError.test.js'
1 | 'use strict';
2 |
> 3 | const { mount } = require( 'vue-test-utils' );
| ^
4 | const UserInfoCardError = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/components/UserInfoCardError.vue' );
5 |
6 | QUnit.module( 'ext.checkUser.userInfoCard.UserInfoCardError', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserInfoCardError.test.js:3:19)
FAIL tests/qunit/resources/startup/mw.requestIdleCallback.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | ( function () {
> 2 | QUnit.module( 'mw.requestIdleCallback', QUnit.newMwEnvironment( {
| ^
3 | beforeEach: function () {
4 | const clock = this.clock = this.sandbox.useFakeTimers();
5 |
at QUnit (tests/qunit/resources/startup/mw.requestIdleCallback.test.js:2:2)
at Object.<anonymous> (tests/qunit/resources/startup/mw.requestIdleCallback.test.js:105:2)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/layouts/ve.ui.MWTwoPaneTransclusionDialogLayout.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWTwoPaneTransclusionDialogLayout', ve.test.utils.newMwEnvironment() );
| ^
2 |
3 | const createLayout = function () {
4 | return new ve.ui.MWTwoPaneTransclusionDialogLayout( { continuous: true } );
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/layouts/ve.ui.MWTwoPaneTransclusionDialogLayout.test.js:1:92)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.truncatableTextField.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.truncatableTextField.test.js'
However, Jest was able to find:
'./mmv.ui.canvas.test.js'
'./mmv.ui.canvasButtons.test.js'
'./mmv.ui.description.test.js'
'./mmv.ui.download.pane.test.js'
'./mmv.ui.metadataPanel.test.js'
'./mmv.ui.metadataPanelScroller.test.js'
'./mmv.ui.permission.test.js'
'./mmv.ui.progressBar.test.js'
'./mmv.ui.reuse.dialog.test.js'
'./mmv.ui.reuse.embed.test.js'
'./mmv.ui.reuse.share.test.js'
'./mmv.ui.reuse.utils.test.js'
'./mmv.ui.stripeButtons.test.js'
'./mmv.ui.test.js'
'./mmv.ui.truncatableTextField.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { TruncatableTextField } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.ui.TruncatableTextField', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.truncatableTextField.test.js:18:34)
FAIL vendor/wikimedia/parsoid/bin/domdiff.test.js
● Test suite failed to run
Cannot find module './lib/utils/promise.js' from 'vendor/wikimedia/parsoid/core-upgrade.js'
Require stack:
vendor/wikimedia/parsoid/core-upgrade.js
vendor/wikimedia/parsoid/bin/domdiff.test.js
2 |
3 | // Register prfun's Promises with node-pn
> 4 | var Promise = require('./lib/utils/promise.js');
| ^
5 | require('pn/_promise')(Promise); // This only needs to be done once.
6 |
7 | // Comments below annotate the highest lts version of node for which the
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (vendor/wikimedia/parsoid/core-upgrade.js:4:15)
at Object.require (vendor/wikimedia/parsoid/bin/domdiff.test.js:5:1)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/ve.ui.DiffElement.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | */
6 |
> 7 | QUnit.module( 've.ui.DiffElement (MW)', ve.test.utils.newMwEnvironment() );
| ^
8 |
9 | QUnit.test.each( 'Diffing',
10 | [
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ui/ve.ui.DiffElement.test.js:7:1)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.test.js'
However, Jest was able to find:
'./mmv.model.Image.test.js'
'./mmv.model.License.test.js'
'./mmv.model.Repo.test.js'
'./mmv.model.TaskQueue.test.js'
'./mmv.model.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { Thumbnail, ThumbnailWidth } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.model', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/model/mmv.model.test.js:18:39)
FAIL extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ve/ve.init.mw.HCaptchaSaveErrorHandler.test.js
● Test suite failed to run
Cannot find module 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/utils.js' from 'extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ve/ve.init.mw.HCaptchaSaveErrorHandler.test.js'
> 1 | const utils = require( 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/utils.js' );
| ^
2 | const hCaptchaSaveErrorHandler = require( 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/ve/ve.init.mw.HCaptchaSaveErrorHandler.js' );
3 |
4 | QUnit.module( 'ext.confirmEdit.hCaptcha.ve.HCaptchaSaveErrorHandler', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ve/ve.init.mw.HCaptchaSaveErrorHandler.test.js:1:86)
FAIL tests/qunit/resources/mediawiki.base/errorLogger.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.base/errorLogger', () => {
| ^
2 |
3 | QUnit.test( 'installGlobalHandler', function ( assert ) {
4 | const errorMessage = 'Foo';
at Object.<anonymous> (tests/qunit/resources/mediawiki.base/errorLogger.test.js:1:51)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.description.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.description.test.js'
However, Jest was able to find:
'./mmv.ui.canvas.test.js'
'./mmv.ui.canvasButtons.test.js'
'./mmv.ui.description.test.js'
'./mmv.ui.download.pane.test.js'
'./mmv.ui.metadataPanel.test.js'
'./mmv.ui.metadataPanelScroller.test.js'
'./mmv.ui.permission.test.js'
'./mmv.ui.progressBar.test.js'
'./mmv.ui.reuse.dialog.test.js'
'./mmv.ui.reuse.embed.test.js'
'./mmv.ui.reuse.share.test.js'
'./mmv.ui.reuse.utils.test.js'
'./mmv.ui.stripeButtons.test.js'
'./mmv.ui.test.js'
'./mmv.ui.truncatableTextField.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
> 1 | const { Description } = require( 'mmv' );
| ^
2 |
3 | QUnit.module( 'mmv.ui.description', QUnit.newMwEnvironment() );
4 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.description.test.js:1:25)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlineParameterSelectWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWTransclusionOutlineParameterSelectWidget' );
| ^
2 |
3 | QUnit.test( 'static item constructor', ( assert ) => {
4 | const item = ve.ui.MWTransclusionOutlineParameterSelectWidget.static.createItem( { data: 'p1' } );
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlineParameterSelectWidget.test.js:1:67)
FAIL tests/jest/mediawiki.skinning.typeaheadSearch/instrumentation.test.js
● instrumentation › addWprovToSearchResultUrls without offset
ReferenceError: location is not defined
57 | return results.map( ( result, index ) => {
58 | if ( result.url ) {
> 59 | const url = new URL( result.url, location.href );
| ^
60 | url.searchParams.set( 'wprov', getWprovFromResultIndex( index + offset ) );
61 | result = Object.assign( {}, result, { url: url.toString() } );
62 | }
at location (resources/src/mediawiki.skinning.typeaheadSearch/instrumentation.js:59:37)
at Array.map (<anonymous>)
at Object.map [as addWprovToSearchResultUrls] (resources/src/mediawiki.skinning.typeaheadSearch/instrumentation.js:57:17)
at Object.addWprovToSearchResultUrls (tests/jest/mediawiki.skinning.typeaheadSearch/instrumentation.test.js:40:27)
● instrumentation › addWprovToSearchResultUrls with offset
ReferenceError: location is not defined
57 | return results.map( ( result, index ) => {
58 | if ( result.url ) {
> 59 | const url = new URL( result.url, location.href );
| ^
60 | url.searchParams.set( 'wprov', getWprovFromResultIndex( index + offset ) );
61 | result = Object.assign( {}, result, { url: url.toString() } );
62 | }
at location (resources/src/mediawiki.skinning.typeaheadSearch/instrumentation.js:59:37)
at Array.map (<anonymous>)
at Object.map [as addWprovToSearchResultUrls] (resources/src/mediawiki.skinning.typeaheadSearch/instrumentation.js:57:17)
at Object.addWprovToSearchResultUrls (tests/jest/mediawiki.skinning.typeaheadSearch/instrumentation.test.js:79:27)
FAIL tests/jest/mediawiki.special.block/NamespacesField.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/resources/src/mediawiki.special.block/SpecialBlock.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
4 | const { createTestingPinia } = require( '@pinia/testing' );
5 |
> 6 | const SpecialBlock = require( '../../../resources/src/mediawiki.special.block/SpecialBlock.vue' );
| ^
7 |
8 | /**
9 | * Mount the SpecialBlock component with the default configuration,
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (tests/jest/mediawiki.special.block/SpecialBlock.setup.js:6:22)
at Object.require (tests/jest/mediawiki.special.block/NamespacesField.test.js:5:29)
FAIL tests/qunit/resources/mediawiki.api/mediawiki.api.watch.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.api.watch', ( hooks ) => {
| ^
2 | let server;
3 | hooks.beforeEach( function () {
4 | server = this.sandbox.useFakeServer();
at Object.<anonymous> (tests/qunit/resources/mediawiki.api/mediawiki.api.watch.test.js:1:51)
FAIL tests/jest/mediawiki.skinning.typeaheadSearch/App.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/resources/src/mediawiki.skinning.typeaheadSearch/App.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
1 | const VueTestUtils = require( '@vue/test-utils' );
> 2 | const App = require( '../../../resources/src/mediawiki.skinning.typeaheadSearch/App.vue' );
| ^
3 | const urlGeneratorFn = require( '../../../resources/src/mediawiki.skinning.typeaheadSearch/urlGenerator.js' );
4 | const scriptPath = '/w/index.php';
5 | const urlGenerator = urlGeneratorFn( scriptPath );
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (tests/jest/mediawiki.skinning.typeaheadSearch/App.test.js:2:13)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.share.test.js
● Test suite failed to run
Cannot find module 'mmv.ui.reuse' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.share.test.js'
16 | */
17 |
> 18 | const { Share } = require( 'mmv.ui.reuse' );
| ^
19 |
20 | function makeShare() {
21 | return new Share( $( '#qunit-fixture' ) );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.reuse.share.test.js:18:19)
FAIL extensions/Cite/tests/qunit/ve-cite/converter/ve.dm.Converter.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
8 | */
9 |
> 10 | QUnit.module( 've.dm.Converter (Cite)', ve.test.utils.newMwEnvironment( {
| ^
11 | before: function () {
12 | this.prepareCases = ( caseItem ) => {
13 | caseItem.base = ve.dm.citeExample.baseUri;
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/converter/ve.dm.Converter.test.js:10:1)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingStep.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/CheckUser/modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingStep.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
1 | 'use strict';
2 |
> 3 | const TempAccountsOnboardingStep = require( '../../../../modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingStep.vue' ),
| ^
4 | utils = require( '@vue/test-utils' );
5 |
6 | const renderComponent = ( props, slots ) => utils.mount( TempAccountsOnboardingStep, {
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingStep.test.js:3:36)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardLoadingView.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardLoadingView.test.js'
1 | 'use strict';
2 |
> 3 | const { mount } = require( 'vue-test-utils' );
| ^
4 | const UserCardLoadingView = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/components/UserCardLoadingView.vue' );
5 |
6 | QUnit.module( 'ext.checkUser.userInfoCard.UserCardLoadingView', QUnit.newMwEnvironment( {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/UserCardLoadingView.test.js:3:19)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/generateData.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser/checkuser/checkUserHelper/generateData.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/generateData.test.js'
1 | 'use strict';
2 |
> 3 | const generateData = require( 'ext.checkUser/checkuser/checkUserHelper/generateData.js' );
| ^
4 |
5 | QUnit.module( 'ext.checkUser.checkuser.checkUserHelper.generateData', QUnit.newMwEnvironment() );
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/generateData.test.js:3:22)
FAIL skins/Vector/tests/jest/skins.vector.js/menuTabs.test.js
● menuTabs › adds vector-tab-noicon class to li element when part of tabs
ReferenceError: mw is not defined
5 | /** @type {Function} */
6 | let callback;
> 7 | jest.spyOn( mw, 'hook' ).mockImplementation( () => ( {
| ^
8 | add: function ( fn ) {
9 | callback = fn;
10 |
at Object.mw (skins/Vector/tests/jest/skins.vector.js/menuTabs.test.js:7:15)
● menuTabs › does not add vector-tab-noicon class to li element when not part of tabs
ReferenceError: mw is not defined
5 | /** @type {Function} */
6 | let callback;
> 7 | jest.spyOn( mw, 'hook' ).mockImplementation( () => ( {
| ^
8 | add: function ( fn ) {
9 | callback = fn;
10 |
at Object.mw (skins/Vector/tests/jest/skins.vector.js/menuTabs.test.js:7:15)
FAIL tests/qunit/resources/mediawiki.toc.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | ( function () {
> 2 | QUnit.module( 'mediawiki.toc', {
| ^
3 | beforeEach: function () {
4 | this.getCookie = this.stub( mw.cookie, 'get' ).returns( null );
5 | this.setCookie = this.stub( mw.cookie, 'set' ).returns( null );
at QUnit (tests/qunit/resources/mediawiki.toc.test.js:2:2)
at Object.<anonymous> (tests/qunit/resources/mediawiki.toc.test.js:42:2)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/InfoRow.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/InfoRow.test.js'
1 | 'use strict';
2 |
> 3 | const { shallowMount } = require( 'vue-test-utils' );
| ^
4 | const InfoRow = require( 'ext.checkUser.userInfoCard/modules/ext.checkUser.userInfoCard/components/InfoRow.vue' );
5 |
6 | QUnit.module( 'ext.checkUser.userInfoCard.InfoRow' );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser.userInfoCard/components/InfoRow.test.js:3:26)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingIntroStep.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/extensions/CheckUser/modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingIntroStep.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
1 | 'use strict';
2 |
> 3 | const TempAccountsOnboardingIntroStep = require( '../../../../modules/ext.checkUser.tempAccountsOnboarding/components/TempAccountsOnboardingIntroStep.vue' ),
| ^
4 | utils = require( '@vue/test-utils' );
5 |
6 | describe( 'First step of temporary accounts onboarding dialog', () => {
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (extensions/CheckUser/tests/jest/ext.checkUser.tempAccountsOnboarding/components/tempAccountsOnboardingIntroStep.test.js:3:41)
FAIL tests/qunit/resources/mediawiki.rcfilters/dm.SavedQueryItemModel.test.js
● Test suite failed to run
Cannot find module 'mediawiki.rcfilters.filters.ui' from 'tests/qunit/resources/mediawiki.rcfilters/dm.SavedQueryItemModel.test.js'
1 | /* eslint-disable camelcase */
2 | ( function () {
> 3 | const rcfilters = require( 'mediawiki.rcfilters.filters.ui' );
| ^
4 | const itemData = {
5 | params: {
6 | param1: '1',
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (tests/qunit/resources/mediawiki.rcfilters/dm.SavedQueryItemModel.test.js:3:20)
at Object.<anonymous> (tests/qunit/resources/mediawiki.rcfilters/dm.SavedQueryItemModel.test.js:88:2)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlineParameterWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWTransclusionOutlineParameterWidget' );
| ^
2 |
3 | QUnit.test( 'interprets param with no attributes', ( assert ) => {
4 | const widget = new ve.ui.MWTransclusionOutlineParameterWidget( {} );
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlineParameterWidget.test.js:1:61)
FAIL vendor/wikimedia/parsoid/bin/normalize.test.js
● Test suite failed to run
Cannot find module './lib/utils/promise.js' from 'vendor/wikimedia/parsoid/core-upgrade.js'
Require stack:
vendor/wikimedia/parsoid/core-upgrade.js
vendor/wikimedia/parsoid/bin/normalize.test.js
2 |
3 | // Register prfun's Promises with node-pn
> 4 | var Promise = require('./lib/utils/promise.js');
| ^
5 | require('pn/_promise')(Promise); // This only needs to be done once.
6 |
7 | // Comments below annotate the highest lts version of node for which the
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (vendor/wikimedia/parsoid/core-upgrade.js:4:15)
at Object.require (vendor/wikimedia/parsoid/bin/normalize.test.js:5:1)
FAIL skins/MinervaNeue/tests/qunit/skins.minerva.scripts/watchstar.test.js
● Test suite failed to run
Cannot find module 'skins.minerva.scripts/watchstar.js' from 'skins/MinervaNeue/tests/qunit/skins.minerva.scripts/watchstar.test.js'
1 | /* eslint-disable no-jquery/no-class-state */
2 | ( function () {
> 3 | const watchstar = require( 'skins.minerva.scripts/watchstar.js' );
| ^
4 | const toggleClasses = watchstar.test.toggleClasses;
5 | const WATCHED_CLASS = watchstar.test.WATCHED_ICON_CLASS;
6 | const TEMP_WATCHED_CLASS = watchstar.test.TEMP_WATCHED_ICON_CLASS;
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/watchstar.test.js:3:20)
at Object.<anonymous> (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/watchstar.test.js:40:2)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.dm.MWReferencesListNode.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | 'use strict';
2 |
> 3 | QUnit.module( 've.dm.MWReferencesListNode (Cite)', ve.test.utils.newMwEnvironment() );
| ^
4 |
5 | QUnit.test( 'isEditable', ( assert ) => {
6 | let model = new ve.dm.MWReferencesListNode();
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.dm.MWReferencesListNode.test.js:3:1)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ce/ve.ce.ContentBranchNode.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.ce.ContentBranchNode (MW)' );
| ^
9 |
10 | /* Tests */
11 |
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ce/ve.ce.ContentBranchNode.test.js:8:1)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/logging/mmv.logging.ViewLogger.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/logging/mmv.logging.ViewLogger.test.js'
However, Jest was able to find:
'./mmv.logging.ViewLogger.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
> 1 | const { ViewLogger } = require( 'mmv' );
| ^
2 |
3 | QUnit.module( 'mmv.logging.ViewLogger', QUnit.newMwEnvironment( {
4 | beforeEach: function () {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/logging/mmv.logging.ViewLogger.test.js:1:24)
FAIL tests/qunit/resources/mediawiki.template.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | ( function () {
2 |
> 3 | QUnit.module( 'mediawiki.template', {
| ^
4 | beforeEach: function () {
5 | const abcCompiler = {
6 | compile: function () {
at QUnit (tests/qunit/resources/mediawiki.template.test.js:3:2)
at Object.<anonymous> (tests/qunit/resources/mediawiki.template.test.js:63:2)
FAIL extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ErrorWidget.test.js
● Test suite failed to run
Cannot find module 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/ErrorWidget.js' from 'extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ErrorWidget.test.js'
> 1 | const ErrorWidget = require( 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/ErrorWidget.js' );
| ^
2 |
3 | QUnit.module( 'ext.confirmEdit.hCaptcha.ErrorWidget', {
4 | beforeEach() {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ErrorWidget.test.js:1:98)
FAIL tests/jest/mediawiki.special.block/ReasonField.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/resources/src/mediawiki.special.block/components/ReasonField.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
2 |
3 | const { mount, shallowMount } = require( '@vue/test-utils' );
> 4 | const ReasonField = require( '../../../resources/src/mediawiki.special.block/components/ReasonField.vue' );
| ^
5 | const { mockMwConfigGet } = require( './SpecialBlock.setup.js' );
6 |
7 | describe( 'ReasonField', () => {
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (tests/jest/mediawiki.special.block/ReasonField.test.js:4:21)
FAIL skins/MinervaNeue/tests/qunit/skins.minerva.scripts/AB.test.js
● Test suite failed to run
Cannot find module 'skins.minerva.scripts/AB.js' from 'skins/MinervaNeue/tests/qunit/skins.minerva.scripts/AB.test.js'
1 | ( function () {
2 |
> 3 | const AB = require( 'skins.minerva.scripts/AB.js' );
| ^
4 | const defaultConfig = {
5 | testName: 'WME.MinervaABTest',
6 | samplingRate: 0.5,
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/AB.test.js:3:13)
at Object.<anonymous> (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/AB.test.js:52:2)
FAIL tests/qunit/resources/mediawiki.api/mediawiki.api.parse.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.api.edit', ( hooks ) => {
| ^
2 | let server;
3 | hooks.beforeEach( function () {
4 | server = this.sandbox.useFakeServer();
at Object.<anonymous> (tests/qunit/resources/mediawiki.api/mediawiki.api.parse.test.js:1:50)
FAIL tests/qunit/resources/mediawiki.api/mediawiki.api.messages.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.api.messages', ( hooks ) => {
| ^
2 | let server;
3 | hooks.beforeEach( function () {
4 | server = this.sandbox.useFakeServer();
at Object.<anonymous> (tests/qunit/resources/mediawiki.api/mediawiki.api.messages.test.js:1:54)
FAIL tests/jest/mediawiki.special.block/BlockDetailsField.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/resources/src/mediawiki.special.block/SpecialBlock.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
4 | const { createTestingPinia } = require( '@pinia/testing' );
5 |
> 6 | const SpecialBlock = require( '../../../resources/src/mediawiki.special.block/SpecialBlock.vue' );
| ^
7 |
8 | /**
9 | * Mount the SpecialBlock component with the default configuration,
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (tests/jest/mediawiki.special.block/SpecialBlock.setup.js:6:22)
at Object.require (tests/jest/mediawiki.special.block/BlockDetailsField.test.js:5:29)
FAIL tests/jest/mediawiki.special.block/init.test.js
● SpecialBlock init.js › should give the form the ID mw-block-form
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
5 |
6 | beforeEach( () => {
> 7 | document.body.innerHTML = '';
| ^
8 | const form = document.createElement( 'form' );
9 | form.className = 'mw-htmlform';
10 | document.body.appendChild( form );
at Object.document (tests/jest/mediawiki.special.block/init.test.js:7:3)
● SpecialBlock init.js › should do nothing if there is no mw-htmlform
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
5 |
6 | beforeEach( () => {
> 7 | document.body.innerHTML = '';
| ^
8 | const form = document.createElement( 'form' );
9 | form.className = 'mw-htmlform';
10 | document.body.appendChild( form );
at Object.document (tests/jest/mediawiki.special.block/init.test.js:7:3)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.canvasButtons.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.canvasButtons.test.js'
However, Jest was able to find:
'./mmv.ui.canvas.test.js'
'./mmv.ui.canvasButtons.test.js'
'./mmv.ui.description.test.js'
'./mmv.ui.download.pane.test.js'
'./mmv.ui.metadataPanel.test.js'
'./mmv.ui.metadataPanelScroller.test.js'
'./mmv.ui.permission.test.js'
'./mmv.ui.progressBar.test.js'
'./mmv.ui.reuse.dialog.test.js'
'./mmv.ui.reuse.embed.test.js'
'./mmv.ui.reuse.share.test.js'
'./mmv.ui.reuse.utils.test.js'
'./mmv.ui.stripeButtons.test.js'
'./mmv.ui.test.js'
'./mmv.ui.truncatableTextField.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
16 | */
17 |
> 18 | const { CanvasButtons } = require( 'mmv' );
| ^
19 |
20 | QUnit.module( 'mmv.ui.CanvasButtons', QUnit.newMwEnvironment() );
21 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.canvasButtons.test.js:18:27)
FAIL skins/MinervaNeue/tests/qunit/skins.minerva.scripts/page-issues/index.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'Minerva pageIssues', () => {
| ^
2 | const mobile = require( 'mobile.startup' );
3 | const pageIssues = require( 'skins.minerva.scripts/page-issues/index.js' );
4 | const insertBannersOrNotice = pageIssues.test.insertBannersOrNotice;
at Object.<anonymous> (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/page-issues/index.test.js:1:43)
FAIL tests/qunit/resources/mediawiki.experiments.test.js
● Test suite failed to run
ReferenceError: mw is not defined
1 | ( function () {
2 |
> 3 | const getBucket = mw.experiments.getBucket;
| ^
4 |
5 | function createExperiment() {
6 | return {
at mw (tests/qunit/resources/mediawiki.experiments.test.js:3:20)
at Object.<anonymous> (tests/qunit/resources/mediawiki.experiments.test.js:63:2)
FAIL skins/Vector/tests/integration-qunit/integration.test.js
● Test suite failed to run
Cannot find module 'skins.vector.clientPreferences' from 'skins/Vector/tests/integration-qunit/integration.test.js'
1 | /* global QUnit */
> 2 | const clientPreferences = require( 'skins.vector.clientPreferences' );
| ^
3 |
4 | /*!
5 | * Vector integration tests.
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (skins/Vector/tests/integration-qunit/integration.test.js:2:27)
FAIL extensions/DiscussionTools/tests/qunit/utils.test.js
● Test suite failed to run
Cannot find module 'ext.discussionTools.init' from 'extensions/DiscussionTools/tests/qunit/utils.test.js'
> 1 | const utils = require( 'ext.discussionTools.init' ).utils;
| ^
2 |
3 | QUnit.module( 'mw.dt.utils', QUnit.newMwEnvironment() );
4 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (extensions/DiscussionTools/tests/qunit/utils.test.js:1:58)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlinePartWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWTransclusionOutlinePartWidget' );
| ^
2 |
3 | QUnit.test( 'Constructor', ( assert ) => {
4 | const transclusion = new ve.dm.MWTransclusionModel(),
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlinePartWidget.test.js:1:56)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser.clientHints/index.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | 'use strict';
2 |
> 3 | QUnit.module( 'ext.checkUser.clientHints', QUnit.newMwEnvironment( {} ) );
| ^
4 |
5 | QUnit.test( 'Client hints code is setup if navigator.userAgentData.getHighEntropyValues() is available', function ( assert ) {
6 | const clientHints = require( 'ext.checkUser.clientHints/index.js' );
at Object.QUnit (extensions/CheckUser/tests/qunit/ext.checkUser.clientHints/index.test.js:3:1)
FAIL extensions/CheckUser/tests/jest/ext.checkUser.tempAccounts/useInstrument.test.js
● useInstrument › should record events
ReferenceError: mw is not defined
8 | submitInteraction
9 | } ) );
> 10 | mw.eventLog = { newInstrument };
| ^
11 |
12 | const logEvent = useInstrument();
13 |
at Object.mw (extensions/CheckUser/tests/jest/ext.checkUser.tempAccounts/useInstrument.test.js:10:3)
● useInstrument › should not try to record events if EventLogging is unavailable
ReferenceError: mw is not defined
27 | it( 'should not try to record events if EventLogging is unavailable', () => {
28 | // Simulate EventLogging being unavailable
> 29 | mw.eventLog = undefined;
| ^
30 |
31 | const logEvent = useInstrument();
32 |
at Object.mw (extensions/CheckUser/tests/jest/ext.checkUser.tempAccounts/useInstrument.test.js:29:3)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.dm.MWDocumentReferences.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | 'use strict';
2 |
> 3 | QUnit.module( 've.dm.MWDocumentReferences (Cite)', ve.test.utils.newMwEnvironment() );
| ^
4 |
5 | QUnit.test( 'first simple test', ( assert ) => {
6 | const doc = ve.dm.citeExample.createExampleDocument( 'references' );
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.dm.MWDocumentReferences.test.js:3:1)
FAIL tests/jest/mediawiki.special.block/AdditionalDetailsField.test.js
● Test suite failed to run
Jest encountered an unexpected token
Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.
Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.
By default "node_modules" folder is ignored by transformers.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
• If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript
• To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
• If you need a custom transformation specify a "transform" option in your config.
• If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.
You'll find more details and examples of these config options in the docs:
https://jestjs.io/docs/configuration
For information about custom transformations, see:
https://jestjs.io/docs/code-transformation
Details:
/src/repo/resources/src/mediawiki.special.block/SpecialBlock.vue:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){<template>
^
SyntaxError: Unexpected token '<'
4 | const { createTestingPinia } = require( '@pinia/testing' );
5 |
> 6 | const SpecialBlock = require( '../../../resources/src/mediawiki.special.block/SpecialBlock.vue' );
| ^
7 |
8 | /**
9 | * Mount the SpecialBlock component with the default configuration,
at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14)
at Object.require (tests/jest/mediawiki.special.block/SpecialBlock.setup.js:6:22)
at Object.require (tests/jest/mediawiki.special.block/AdditionalDetailsField.test.js:5:29)
FAIL extensions/DiscussionTools/tests/qunit/ThreadItem.test.js
● Test suite failed to run
Cannot find module 'ext.discussionTools.init' from 'extensions/DiscussionTools/tests/qunit/ThreadItem.test.js'
1 | const
> 2 | CommentItem = require( 'ext.discussionTools.init' ).CommentItem,
| ^
3 | HeadingItem = require( 'ext.discussionTools.init' ).HeadingItem;
4 |
5 | QUnit.module( 'mw.dt.ThreadItem', QUnit.newMwEnvironment() );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (extensions/DiscussionTools/tests/qunit/ThreadItem.test.js:2:65)
FAIL skins/MinervaNeue/tests/qunit/skins.minerva.scripts/UriUtil.test.js
● Test suite failed to run
Cannot find module 'skins.minerva.scripts/UriUtil.js' from 'skins/MinervaNeue/tests/qunit/skins.minerva.scripts/UriUtil.test.js'
1 | ( function () {
> 2 | const UriUtil = require( 'skins.minerva.scripts/UriUtil.js' );
| ^
3 |
4 | QUnit.module( 'Minerva UriUtil', {
5 | beforeEach: function () {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at require (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/UriUtil.test.js:2:18)
at Object.<anonymous> (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/UriUtil.test.js:39:2)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWParameterCheckboxInputWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWParameterCheckboxInputWidget' );
| ^
2 |
3 | QUnit.test( 'Constructor passes config to parent', ( assert ) => {
4 | const widget = new ve.ui.MWParameterCheckboxInputWidget( { selected: true } );
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWParameterCheckboxInputWidget.test.js:1:55)
FAIL tests/qunit/resources/mediawiki.widgets/NamespaceInput/mediawiki.widgets.NamespaceInputWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
3 | */
4 |
> 5 | QUnit.module( 'mediawiki.widgets.NamespaceInputWidget' );
| ^
6 |
7 | ( function () {
8 | const widgetA = new mw.widgets.NamespaceInputWidget( {} );
at Object.QUnit (tests/qunit/resources/mediawiki.widgets/NamespaceInput/mediawiki.widgets.NamespaceInputWidget.test.js:5:1)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/createTable.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser/checkuser/checkUserHelper/createTable.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/createTable.test.js'
1 | 'use strict';
2 |
> 3 | const createTable = require( 'ext.checkUser/checkuser/checkUserHelper/createTable.js' );
| ^
4 |
5 | QUnit.module( 'ext.checkUser.checkuser.checkUserHelper.createTable', QUnit.newMwEnvironment( {
6 | beforeEach: function () {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/createTable.test.js:3:21)
FAIL tests/qunit/resources/startup/jscompat.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | // JavaScript compatibility tests to confirm that server and browser
2 | // are behaving consistently and configured correctly.
> 3 | QUnit.module( 'startup/jscompat', () => {
| ^
4 |
5 | QUnit.test( 'Unicode variable name', ( assert ) => {
6 | const ŝablono = true;
at Object.QUnit (tests/qunit/resources/startup/jscompat.test.js:3:1)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlinePlaceholderWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWTransclusionOutlinePlaceholderWidget' );
| ^
2 |
3 | QUnit.test( 'Constructor', ( assert ) => {
4 | const transclusion = new ve.dm.MWTransclusionModel(),
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlinePlaceholderWidget.test.js:1:63)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ce/ve.ce.Document.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | */
6 |
> 7 | QUnit.module( 've.ce.Document (MW)' );
| ^
8 |
9 | /* Tests */
10 |
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ce/ve.ce.Document.test.js:7:1)
FAIL skins/Vector/tests/jest/skins.vector.es6/features.test.js
● features › toggle
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
3 | describe( 'features', () => {
4 | beforeEach( () => {
> 5 | document.documentElement.setAttribute( 'class', 'vector-feature-foo-disabled vector-feature-bar-enabled hello' );
| ^
6 | } );
7 |
8 | test( 'toggle', () => {
at Object.document (skins/Vector/tests/jest/skins.vector.es6/features.test.js:5:3)
● features › toggle unknown feature
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
3 | describe( 'features', () => {
4 | beforeEach( () => {
> 5 | document.documentElement.setAttribute( 'class', 'vector-feature-foo-disabled vector-feature-bar-enabled hello' );
| ^
6 | } );
7 |
8 | test( 'toggle', () => {
at Object.document (skins/Vector/tests/jest/skins.vector.es6/features.test.js:5:3)
FAIL extensions/VisualEditor/modules/ve-mw/tests/dm/ve.dm.Converter.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
6 | */
7 |
> 8 | QUnit.module( 've.dm.Converter (MW)', ve.test.utils.newMwEnvironment() );
| ^
9 |
10 | QUnit.test( 'getModelFromDom', ( assert ) => {
11 | const cases = ve.dm.mwExample.domToDataCases;
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/dm/ve.dm.Converter.test.js:8:1)
FAIL tests/qunit/resources/mediawiki.special.block/AdditionalDetailsField.test.js
● Test suite failed to run
Cannot find module 'vue-test-utils' from 'tests/qunit/resources/mediawiki.special.block/AdditionalDetailsField.test.js'
> 1 | const { shallowMount } = require( 'vue-test-utils' );
| ^
2 | const { createPinia } = require( 'pinia' );
3 | const AdditionalDetailsField = require( 'mediawiki.special.block.codex/components/AdditionalDetailsField.vue' );
4 | const useBlockStore = require( 'mediawiki.special.block.codex/stores/block.js' );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (tests/qunit/resources/mediawiki.special.block/AdditionalDetailsField.test.js:1:26)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ui.MWUseExistingReferenceCommand.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | 'use strict';
2 |
> 3 | QUnit.module( 've.ui.MWUseExistingReferenceCommand (Cite)', ve.test.utils.newMwEnvironment() );
| ^
4 |
5 | function getFragmentMock( hasRefs ) {
6 | return {
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ui.MWUseExistingReferenceCommand.test.js:3:1)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferenceGroupInputWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | 'use strict';
2 |
> 3 | QUnit.module( 've.ui.MWReferenceGroupInputWidget (Cite)', ve.test.utils.newMwEnvironment() );
| ^
4 |
5 | QUnit.test( 'Constructor', ( assert ) => {
6 | const widget = new ve.ui.MWReferenceGroupInputWidget( {
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferenceGroupInputWidget.test.js:3:1)
FAIL tests/qunit/resources/mediawiki.template.mustache.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.template.mustache', ( hooks ) => {
| ^
2 |
3 | hooks.beforeEach( function () {
4 | // Stub register some templates
at Object.<anonymous> (tests/qunit/resources/mediawiki.template.mustache.test.js:1:59)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/utils.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser/checkuser/checkUserHelper/utils.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/utils.test.js'
1 | 'use strict';
2 |
> 3 | const Utils = require( 'ext.checkUser/checkuser/checkUserHelper/utils.js' );
| ^
4 |
5 | QUnit.module( 'ext.checkUser.checkuser.checkUserHelper.utils' );
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/utils.test.js:3:15)
FAIL tests/qunit/resources/mediawiki.messagePoster/factory.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.messagePoster', ( hooks ) => {
| ^
2 | const TEST_MODEL = 'test-content-model';
3 |
4 | hooks.afterEach( () => {
at Object.<anonymous> (tests/qunit/resources/mediawiki.messagePoster/factory.test.js:1:55)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.UrlStringTransferHandler.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | */
6 |
> 7 | QUnit.module( 've.ui.UrlStringTransferHandler (MW)' );
| ^
8 |
9 | /* Tests */
10 |
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/ui/datatransferhandlers/ve.ui.UrlStringTransferHandler.test.js:7:1)
FAIL skins/Vector/tests/jest/deferUntilFrame.test.js
● deferUntilFrame.js › does not fire rAF if `0` is passed
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: window is not defined
5 |
6 | beforeEach( () => {
> 7 | spy = jest.spyOn( window, 'requestAnimationFrame' ).mockImplementation( ( cb ) => {
| ^
8 | setTimeout( () => {
9 | cb( 1 );
10 | } );
at Object.window (skins/Vector/tests/jest/deferUntilFrame.test.js:7:21)
● deferUntilFrame.js › does not fire rAF if `0` is passed
TypeError: Cannot read properties of undefined (reading 'mockRestore')
15 |
16 | afterEach( () => {
> 17 | spy.mockRestore();
| ^
18 | } );
19 |
20 | it( 'does not fire rAF if `0` is passed', ( done ) => {
at Object.mockRestore (skins/Vector/tests/jest/deferUntilFrame.test.js:17:7)
● deferUntilFrame.js › fires rAF the specified number of times
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
ReferenceError: window is not defined
5 |
6 | beforeEach( () => {
> 7 | spy = jest.spyOn( window, 'requestAnimationFrame' ).mockImplementation( ( cb ) => {
| ^
8 | setTimeout( () => {
9 | cb( 1 );
10 | } );
at Object.window (skins/Vector/tests/jest/deferUntilFrame.test.js:7:21)
● deferUntilFrame.js › fires rAF the specified number of times
TypeError: Cannot read properties of undefined (reading 'mockRestore')
15 |
16 | afterEach( () => {
> 17 | spy.mockRestore();
| ^
18 | } );
19 |
20 | it( 'does not fire rAF if `0` is passed', ( done ) => {
at Object.mockRestore (skins/Vector/tests/jest/deferUntilFrame.test.js:17:7)
FAIL skins/MinervaNeue/tests/qunit/skins.minerva.scripts/integration.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
5 | * For unit tests please see tests/jest.
6 | */
> 7 | QUnit.module( 'Minerva (integration)', () => {
| ^
8 | QUnit.test( '[T356653] Client preferences: Check assumptions about the cookie it writes to', function ( assert ) {
9 | mw.cookie.set( 'mwclientpreferences', '' );
10 | this.sandbox.stub( mw.user, 'isAnon' ).returns( true );
at Object.QUnit (skins/MinervaNeue/tests/qunit/skins.minerva.scripts/integration.test.js:7:1)
FAIL extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlineButtonWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.ui.MWTransclusionOutlineButtonWidget' );
| ^
2 |
3 | QUnit.test( 'Constructor', ( assert ) => {
4 | const widget = new ve.ui.MWTransclusionOutlineButtonWidget( {} );
at Object.<anonymous> (extensions/VisualEditor/modules/ve-mw/tests/ui/widgets/ve.ui.MWTransclusionOutlineButtonWidget.test.js:1:58)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/buildUserElement.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser/checkuser/checkUserHelper/buildUserElement.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/buildUserElement.test.js'
1 | 'use strict';
2 |
> 3 | const buildUserElement = require( 'ext.checkUser/checkuser/checkUserHelper/buildUserElement.js' );
| ^
4 |
5 | QUnit.module( 'ext.checkUser.checkuser.checkUserHelper.buildUserElement', QUnit.newMwEnvironment( {
6 | beforeEach: function () {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/buildUserElement.test.js:3:26)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferenceContextItem.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | 'use strict';
2 |
> 3 | QUnit.module( 've.ui.MWReferenceContextItem (Cite)', ve.test.utils.newMwEnvironment() );
| ^
4 |
5 | QUnit.test( 'getReferenceNode', ( assert ) => {
6 | // XXX: This is a regression test with a fragile setup. Please feel free to delete this test
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferenceContextItem.test.js:3:1)
FAIL extensions/VisualEditor/modules/ve-mw/tests/dm/models/ve.dm.MWTransclusionContentModel.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | {
> 2 | QUnit.module( 've.dm.MWTransclusionContentModel' );
| ^
3 |
4 | /**
5 | * @return {ve.dm.MWTransclusionModel} but it's a mock
at Object.QUnit (extensions/VisualEditor/modules/ve-mw/tests/dm/models/ve.dm.MWTransclusionContentModel.test.js:2:2)
FAIL extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/createTableText.test.js
● Test suite failed to run
Cannot find module 'ext.checkUser/checkuser/checkUserHelper/createTableText.js' from 'extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/createTableText.test.js'
1 | 'use strict';
2 |
> 3 | const createTableText = require( 'ext.checkUser/checkuser/checkUserHelper/createTableText.js' );
| ^
4 |
5 | QUnit.module( 'ext.checkUser.checkuser.checkUserHelper.createTableText' );
6 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/CheckUser/tests/qunit/ext.checkUser/checkuser/checkUserHelper/createTableText.test.js:3:25)
FAIL tests/qunit/resources/mediawiki.inspect.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.inspect', () => {
| ^
2 |
3 | QUnit.test( '.getModuleSize() - scripts', ( assert ) => {
4 | // Use eval so that the size doesn't change depending on minification
at Object.<anonymous> (tests/qunit/resources/mediawiki.inspect.test.js:1:42)
FAIL extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ProgressIndicatorWidget.test.js
● Test suite failed to run
Cannot find module 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/ProgressIndicatorWidget.js' from 'extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ProgressIndicatorWidget.test.js'
> 1 | const ProgressIndicatorWidget = require( 'ext.confirmEdit.hCaptcha/ext.confirmEdit.hCaptcha/ProgressIndicatorWidget.js' );
| ^
2 |
3 | QUnit.module( 'ext.confirmEdit.hCaptcha.ProgressIndicatorWidget' );
4 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (extensions/ConfirmEdit/tests/qunit/ext.confirmEdit.hCaptcha/ProgressIndicatorWidget.test.js:1:122)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferenceResultWidget.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
2 |
3 | {
> 4 | QUnit.module( 've.ui.MWReferenceResultWidget (Cite)', ve.test.utils.newMwEnvironment() );
| ^
5 |
6 | const getConfigMock = () => ( {
7 | item: {
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferenceResultWidget.test.js:4:2)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.test.js
● Test suite failed to run
Cannot find module 'mmv' from 'extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.test.js'
However, Jest was able to find:
'./mmv.ui.canvas.test.js'
'./mmv.ui.canvasButtons.test.js'
'./mmv.ui.description.test.js'
'./mmv.ui.download.pane.test.js'
'./mmv.ui.metadataPanel.test.js'
'./mmv.ui.metadataPanelScroller.test.js'
'./mmv.ui.permission.test.js'
'./mmv.ui.progressBar.test.js'
'./mmv.ui.reuse.dialog.test.js'
'./mmv.ui.reuse.embed.test.js'
'./mmv.ui.reuse.share.test.js'
'./mmv.ui.reuse.utils.test.js'
'./mmv.ui.stripeButtons.test.js'
'./mmv.ui.test.js'
'./mmv.ui.truncatableTextField.test.js'
You might want to include a file extension in your import, or update your 'moduleFileExtensions', which is currently ['js', 'mjs', 'cjs', 'jsx', 'ts', 'tsx', 'json', 'node'].
See https://jestjs.io/docs/configuration#modulefileextensions-arraystring
> 1 | const { UiElement } = require( 'mmv' );
| ^
2 |
3 | QUnit.module( 'mmv.ui', QUnit.newMwEnvironment( {
4 | beforeEach: function () {
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/ui/mmv.ui.test.js:1:23)
FAIL extensions/Math/modules/ve-math/tests/ve.dm.Autocomplete.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 've.dm.Autocomplete (Math)', ve.test.utils.newMwEnvironment() );
| ^
2 |
3 | QUnit.test( 'Autocomplete list', ( assert ) => {
4 | assert.notStrictEqual(
at Object.<anonymous> (extensions/Math/modules/ve-math/tests/ve.dm.Autocomplete.test.js:1:78)
FAIL extensions/MultimediaViewer/tests/qunit/mmv/mmv.lightboximage.test.js
● Test suite failed to run
Cannot find module 'mmv.bootstrap' from 'extensions/MultimediaViewer/tests/qunit/mmv/mmv.lightboximage.test.js'
> 1 | const { LightboxImage } = require( 'mmv.bootstrap' );
| ^
2 |
3 | QUnit.module( 'mmv.lightboximage', QUnit.newMwEnvironment() );
4 |
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.require (extensions/MultimediaViewer/tests/qunit/mmv/mmv.lightboximage.test.js:1:27)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ui.MWCitationDialogTool.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | 'use strict';
2 |
> 3 | QUnit.module( 've.ui.MWCitationDialogTool (Cite)', ve.test.utils.newMwEnvironment() );
| ^
4 |
5 | QUnit.test( 'isCompatibleWith', ( assert ) => {
6 | const model = new ve.dm.MWReferenceNode();
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ui.MWCitationDialogTool.test.js:3:1)
FAIL tests/qunit/resources/mediawiki.api/mediawiki.api.upload.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.api.upload', () => {
| ^
2 |
3 | QUnit.test( 'Basic functionality', ( assert ) => {
4 | const api = new mw.Api();
at Object.<anonymous> (tests/qunit/resources/mediawiki.api/mediawiki.api.upload.test.js:1:45)
FAIL extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferencesListDialog.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
1 | 'use strict';
2 |
> 3 | QUnit.module( 've.ui.MWReferencesListDialog (Cite)', ve.test.utils.newMwEnvironment() );
| ^
4 |
5 | QUnit.test( 'isModified', ( assert ) => {
6 | const dialog = new ve.ui.MWReferencesListDialog();
at Object.QUnit (extensions/Cite/tests/qunit/ve-cite/ve.ui.MWReferencesListDialog.test.js:3:1)
FAIL tests/qunit/resources/jquery.tablesorter.parsers.test.js
● Test suite failed to run
Your test suite must contain at least one test.
at onResult (node_modules/@jest/core/build/TestScheduler.js:133:18)
at node_modules/@jest/core/build/TestScheduler.js:254:19
at node_modules/emittery/index.js:363:13
at Array.map (<anonymous>)
at Emittery.emit (node_modules/emittery/index.js:361:23)
FAIL skins/Vector/tests/jest/userLinks.test.js
● Test suite failed to run
Cannot find module 'mustache' from 'skins/Vector/tests/jest/userLinksData.js'
Require stack:
skins/Vector/tests/jest/userLinksData.js
skins/Vector/tests/jest/userLinks.test.js
> 1 | const mustache = require( 'mustache' );
| ^
2 | const fs = require( 'fs' );
3 | const menuContents = fs.readFileSync( 'includes/templates/MenuContents.mustache', 'utf8' );
4 | const userLinksTemplate = fs.readFileSync( 'includes/templates/UserLinks.mustache', 'utf8' );
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (skins/Vector/tests/jest/userLinksData.js:1:39)
at Object.require (skins/Vector/tests/jest/userLinks.test.js:1:27)
FAIL tests/qunit/resources/mediawiki.router.test.js
● Test suite failed to run
ReferenceError: QUnit is not defined
> 1 | QUnit.module( 'mediawiki.router', () => {
| ^
2 | const router = require( 'mediawiki.router' );
3 |
4 | QUnit.test( 'instance', ( assert ) => {
at Object.<anonymous> (tests/qunit/resources/mediawiki.router.test.js:1:41)
Test Suites: 255 failed, 1 passed, 256 total
Tests: 61 failed, 8 passed, 69 total
Snapshots: 0 total
Time: 9.514 s
Ran all test suites.
--- stdout ---
--- end ---
Traceback (most recent call last):
File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 324, in npm_test
self.check_call(["npm", "test"])
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.13/site-packages/runner/shell2.py", line 63, in check_call
res.check_returncode()
~~~~~~~~~~~~~~~~~~~~^^
File "/usr/lib/python3.13/subprocess.py", line 508, in check_returncode
raise CalledProcessError(self.returncode, self.args, self.stdout,
self.stderr)
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.13/site-packages/runner/__init__.py", line 2030, in main
libup.run(args.repo, args.output, args.branch)
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 1972, in run
self.npm_audit_fix(new_npm_audit)
~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 274, in npm_audit_fix
self.npm_test()
~~~~~~~~~~~~~^^
File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 329, in npm_test
self.check_call(["node_modules/.bin/jest", "-u"])
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.13/site-packages/runner/shell2.py", line 63, in check_call
res.check_returncode()
~~~~~~~~~~~~~~~~~~~~^^
File "/usr/lib/python3.13/subprocess.py", line 508, in check_returncode
raise CalledProcessError(self.returncode, self.args, self.stdout,
self.stderr)
subprocess.CalledProcessError: Command '['node_modules/.bin/jest', '-u']' returned non-zero exit status 1.