This run took 153 seconds.
$ date
--- stdout ---
Mon Feb 23 01:15:12 UTC 2026
--- end ---
$ git clone file:///srv/git/mediawiki-extensions-PageTriage.git /src/repo --depth=1 -b REL1_45
--- stderr ---
Cloning into '/src/repo'...
--- stdout ---
--- end ---
$ git config user.name libraryupgrader
--- stdout ---
--- end ---
$ git config user.email tools.libraryupgrader@tools.wmflabs.org
--- stdout ---
--- end ---
$ git submodule update --init
--- stdout ---
--- end ---
$ grr init
--- stdout ---
Installed commit-msg hook.
--- end ---
$ git show-ref refs/heads/REL1_45
--- stdout ---
9d3512285997a698cc7dbab663bbb85b230aa5cb refs/heads/REL1_45
--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
"auditReportVersion": 2,
"vulnerabilities": {
"@eslint/eslintrc": {
"name": "@eslint/eslintrc",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"eslint",
"eslint-plugin-unicorn"
],
"range": "0.0.1 || >=0.1.1",
"nodes": [
"node_modules/@eslint/eslintrc",
"node_modules/eslint-plugin-unicorn/node_modules/@eslint/eslintrc"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"@humanwhocodes/config-array": {
"name": "@humanwhocodes/config-array",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"eslint"
],
"range": "*",
"nodes": [
"node_modules/@humanwhocodes/config-array"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"@jest/core": {
"name": "@jest/core",
"severity": "high",
"isDirect": false,
"via": [
"@jest/reporters",
"@jest/transform",
"jest-config",
"jest-resolve-dependencies",
"jest-runner",
"jest-runtime",
"jest-snapshot"
],
"effects": [
"jest",
"jest-cli"
],
"range": "*",
"nodes": [
"node_modules/@jest/core"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"@jest/expect": {
"name": "@jest/expect",
"severity": "high",
"isDirect": false,
"via": [
"jest-snapshot"
],
"effects": [
"@jest/globals",
"jest-circus"
],
"range": "*",
"nodes": [
"node_modules/@jest/expect"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"@jest/globals": {
"name": "@jest/globals",
"severity": "high",
"isDirect": false,
"via": [
"@jest/expect"
],
"effects": [
"jest-runtime"
],
"range": ">=28.0.0-alpha.0",
"nodes": [
"node_modules/@jest/globals"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"@jest/reporters": {
"name": "@jest/reporters",
"severity": "high",
"isDirect": false,
"via": [
"@jest/transform",
"glob"
],
"effects": [
"@jest/core"
],
"range": "*",
"nodes": [
"node_modules/@jest/reporters"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"@jest/transform": {
"name": "@jest/transform",
"severity": "high",
"isDirect": false,
"via": [
"babel-plugin-istanbul"
],
"effects": [
"babel-jest",
"jest-runner",
"jest-runtime",
"jest-snapshot"
],
"range": "*",
"nodes": [
"node_modules/@jest/transform"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"@typescript-eslint/eslint-plugin": {
"name": "@typescript-eslint/eslint-plugin",
"severity": "high",
"isDirect": false,
"via": [
"@typescript-eslint/type-utils",
"@typescript-eslint/utils",
"eslint"
],
"effects": [],
"range": "<=8.55.1-alpha.3",
"nodes": [
"node_modules/@typescript-eslint/eslint-plugin"
],
"fixAvailable": true
},
"@typescript-eslint/parser": {
"name": "@typescript-eslint/parser",
"severity": "high",
"isDirect": false,
"via": [
"@typescript-eslint/typescript-estree",
"eslint"
],
"effects": [
"eslint-config-wikimedia"
],
"range": "1.1.1-alpha.0 - 8.56.1-alpha.2",
"nodes": [
"node_modules/@typescript-eslint/parser"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"@typescript-eslint/type-utils": {
"name": "@typescript-eslint/type-utils",
"severity": "high",
"isDirect": false,
"via": [
"@typescript-eslint/typescript-estree",
"@typescript-eslint/utils",
"eslint"
],
"effects": [
"@typescript-eslint/eslint-plugin"
],
"range": "5.9.2-alpha.0 - 8.56.1-alpha.2",
"nodes": [
"node_modules/@typescript-eslint/type-utils"
],
"fixAvailable": true
},
"@typescript-eslint/typescript-estree": {
"name": "@typescript-eslint/typescript-estree",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"@typescript-eslint/parser",
"@typescript-eslint/type-utils",
"@typescript-eslint/utils"
],
"range": "6.16.0 - 8.56.1-alpha.2",
"nodes": [
"node_modules/@typescript-eslint/typescript-estree"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"@typescript-eslint/utils": {
"name": "@typescript-eslint/utils",
"severity": "high",
"isDirect": false,
"via": [
"@typescript-eslint/typescript-estree",
"eslint"
],
"effects": [
"@typescript-eslint/eslint-plugin",
"@typescript-eslint/type-utils"
],
"range": "<=8.56.1-alpha.2",
"nodes": [
"node_modules/@typescript-eslint/utils"
],
"fixAvailable": true
},
"@vue/test-utils": {
"name": "@vue/test-utils",
"severity": "high",
"isDirect": true,
"via": [
"js-beautify"
],
"effects": [],
"range": ">=2.4.1",
"nodes": [
"node_modules/@vue/test-utils"
],
"fixAvailable": {
"name": "@vue/test-utils",
"version": "2.4.0",
"isSemVerMajor": true
}
},
"@vue/vue3-jest": {
"name": "@vue/vue3-jest",
"severity": "high",
"isDirect": true,
"via": [
"babel-jest",
"jest"
],
"effects": [],
"range": "*",
"nodes": [
"node_modules/@vue/vue3-jest"
],
"fixAvailable": false
},
"@wdio/cli": {
"name": "@wdio/cli",
"severity": "high",
"isDirect": true,
"via": [
"@wdio/config",
"@wdio/globals",
"create-wdio",
"webdriverio"
],
"effects": [],
"range": "*",
"nodes": [
"node_modules/@wdio/cli"
],
"fixAvailable": false
},
"@wdio/config": {
"name": "@wdio/config",
"severity": "high",
"isDirect": false,
"via": [
"glob"
],
"effects": [
"@wdio/cli",
"@wdio/runner",
"webdriver",
"webdriverio"
],
"range": "*",
"nodes": [
"node_modules/@wdio/config",
"node_modules/@wdio/runner/node_modules/@wdio/config"
],
"fixAvailable": false
},
"@wdio/globals": {
"name": "@wdio/globals",
"severity": "high",
"isDirect": false,
"via": [
"expect-webdriverio",
"webdriverio"
],
"effects": [
"@wdio/cli",
"@wdio/runner"
],
"range": "*",
"nodes": [
"node_modules/@wdio/cli/node_modules/@wdio/globals",
"node_modules/@wdio/globals"
],
"fixAvailable": false
},
"@wdio/local-runner": {
"name": "@wdio/local-runner",
"severity": "high",
"isDirect": true,
"via": [
"@wdio/runner",
"expect-webdriverio"
],
"effects": [],
"range": "*",
"nodes": [
"node_modules/@wdio/local-runner"
],
"fixAvailable": false
},
"@wdio/mocha-framework": {
"name": "@wdio/mocha-framework",
"severity": "high",
"isDirect": true,
"via": [
"mocha"
],
"effects": [],
"range": "*",
"nodes": [
"node_modules/@wdio/mocha-framework"
],
"fixAvailable": false
},
"@wdio/runner": {
"name": "@wdio/runner",
"severity": "high",
"isDirect": false,
"via": [
"@wdio/config",
"@wdio/globals",
"expect-webdriverio",
"webdriver",
"webdriverio"
],
"effects": [
"@wdio/local-runner"
],
"range": "*",
"nodes": [
"node_modules/@wdio/runner"
],
"fixAvailable": false
},
"@wikimedia/mw-node-qunit": {
"name": "@wikimedia/mw-node-qunit",
"severity": "high",
"isDirect": true,
"via": [
"glob"
],
"effects": [],
"range": "*",
"nodes": [
"node_modules/@wikimedia/mw-node-qunit"
],
"fixAvailable": false
},
"ajv": {
"name": "ajv",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1113398,
"name": "ajv",
"dependency": "ajv",
"title": "ajv has ReDoS when using `$data` option",
"url": "https://github.com/advisories/GHSA-2g4f-4pwh-qvx6",
"severity": "moderate",
"cwe": [
"CWE-400"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": "<6.14.0"
},
{
"source": 1113399,
"name": "ajv",
"dependency": "ajv",
"title": "ajv has ReDoS when using `$data` option",
"url": "https://github.com/advisories/GHSA-2g4f-4pwh-qvx6",
"severity": "moderate",
"cwe": [
"CWE-400"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": ">=7.0.0-alpha.0 <8.18.0"
}
],
"effects": [],
"range": "<6.14.0 || >=7.0.0-alpha.0 <8.18.0",
"nodes": [
"node_modules/ajv",
"node_modules/table/node_modules/ajv"
],
"fixAvailable": true
},
"archiver": {
"name": "archiver",
"severity": "high",
"isDirect": false,
"via": [
"archiver-utils",
"readdir-glob",
"zip-stream"
],
"effects": [
"webdriverio"
],
"range": ">=0.20.0",
"nodes": [
"node_modules/archiver"
],
"fixAvailable": false
},
"archiver-utils": {
"name": "archiver-utils",
"severity": "high",
"isDirect": false,
"via": [
"glob"
],
"effects": [
"archiver",
"zip-stream"
],
"range": ">=0.2.0",
"nodes": [
"node_modules/archiver-utils"
],
"fixAvailable": false
},
"babel-jest": {
"name": "babel-jest",
"severity": "high",
"isDirect": true,
"via": [
"@jest/transform",
"babel-plugin-istanbul"
],
"effects": [
"@vue/vue3-jest",
"jest-config"
],
"range": ">=24.0.0-alpha.0",
"nodes": [
"node_modules/babel-jest"
],
"fixAvailable": false
},
"babel-plugin-istanbul": {
"name": "babel-plugin-istanbul",
"severity": "high",
"isDirect": false,
"via": [
"test-exclude"
],
"effects": [
"@jest/transform",
"babel-jest"
],
"range": ">=5.0.1",
"nodes": [
"node_modules/babel-plugin-istanbul"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"create-jest": {
"name": "create-jest",
"severity": "high",
"isDirect": false,
"via": [
"jest-config"
],
"effects": [
"jest-cli"
],
"range": ">=29.7.0",
"nodes": [
"node_modules/create-jest"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"create-wdio": {
"name": "create-wdio",
"severity": "high",
"isDirect": false,
"via": [
"recursive-readdir"
],
"effects": [
"@wdio/cli"
],
"range": ">=9.17.0",
"nodes": [
"node_modules/create-wdio"
],
"fixAvailable": false
},
"doiuse": {
"name": "doiuse",
"severity": "high",
"isDirect": false,
"via": [
"multimatch"
],
"effects": [
"stylelint-no-unsupported-browser-features"
],
"range": ">=2.2.0",
"nodes": [
"node_modules/doiuse"
],
"fixAvailable": {
"name": "stylelint-config-wikimedia",
"version": "0.10.1",
"isSemVerMajor": true
}
},
"editorconfig": {
"name": "editorconfig",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"js-beautify"
],
"range": ">=1.0.0",
"nodes": [
"node_modules/editorconfig"
],
"fixAvailable": {
"name": "@vue/test-utils",
"version": "2.4.0",
"isSemVerMajor": true
}
},
"eslint": {
"name": "eslint",
"severity": "high",
"isDirect": false,
"via": [
"@eslint/eslintrc",
"@humanwhocodes/config-array",
"file-entry-cache",
"minimatch"
],
"effects": [
"@typescript-eslint/eslint-plugin",
"@typescript-eslint/parser",
"@typescript-eslint/type-utils",
"@typescript-eslint/utils",
"eslint-config-wikimedia",
"eslint-plugin-jest",
"eslint-plugin-jsdoc",
"eslint-plugin-vue"
],
"range": "0.7.1 - 2.0.0-rc.1 || 4.1.0 - 10.0.0-rc.2",
"nodes": [
"node_modules/eslint"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"eslint-config-wikimedia": {
"name": "eslint-config-wikimedia",
"severity": "high",
"isDirect": true,
"via": [
"@typescript-eslint/eslint-plugin",
"@typescript-eslint/parser",
"eslint",
"eslint-plugin-jest",
"eslint-plugin-jsdoc",
"eslint-plugin-unicorn",
"eslint-plugin-vue"
],
"effects": [],
"range": ">=0.9.0",
"nodes": [
"node_modules/eslint-config-wikimedia"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"eslint-plugin-jest": {
"name": "eslint-plugin-jest",
"severity": "high",
"isDirect": false,
"via": [
"eslint"
],
"effects": [
"eslint-config-wikimedia"
],
"range": "25.0.1 - 29.12.2",
"nodes": [
"node_modules/eslint-plugin-jest"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"eslint-plugin-jsdoc": {
"name": "eslint-plugin-jsdoc",
"severity": "high",
"isDirect": false,
"via": [
"eslint"
],
"effects": [
"eslint-config-wikimedia"
],
"range": "8.4.4 - 62.6.1",
"nodes": [
"node_modules/eslint-plugin-jsdoc"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"eslint-plugin-mediawiki": {
"name": "eslint-plugin-mediawiki",
"severity": "high",
"isDirect": false,
"via": [
"eslint-plugin-vue"
],
"effects": [],
"range": "0.2.3 - 0.7.0",
"nodes": [
"node_modules/eslint-plugin-mediawiki"
],
"fixAvailable": true
},
"eslint-plugin-n": {
"name": "eslint-plugin-n",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [],
"range": "<=17.21.1",
"nodes": [
"node_modules/eslint-plugin-n"
],
"fixAvailable": true
},
"eslint-plugin-unicorn": {
"name": "eslint-plugin-unicorn",
"severity": "high",
"isDirect": false,
"via": [
"@eslint/eslintrc"
],
"effects": [
"eslint-config-wikimedia"
],
"range": "50.0.0 - 54.0.0",
"nodes": [
"node_modules/eslint-plugin-unicorn"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"eslint-plugin-vue": {
"name": "eslint-plugin-vue",
"severity": "high",
"isDirect": true,
"via": [
"eslint"
],
"effects": [
"eslint-config-wikimedia",
"eslint-plugin-mediawiki"
],
"range": "5.0.0-beta.0 - 10.7.0",
"nodes": [
"node_modules/eslint-plugin-vue"
],
"fixAvailable": {
"name": "eslint-plugin-vue",
"version": "10.8.0",
"isSemVerMajor": true
}
},
"expect-webdriverio": {
"name": "expect-webdriverio",
"severity": "high",
"isDirect": false,
"via": [
"@wdio/globals",
"webdriverio"
],
"effects": [
"@wdio/globals",
"@wdio/local-runner",
"@wdio/runner"
],
"range": "4.0.0-alpha.0 - 4.0.0-alpha.6 || >=4.0.1",
"nodes": [
"node_modules/expect-webdriverio"
],
"fixAvailable": false
},
"fast-xml-parser": {
"name": "fast-xml-parser",
"severity": "critical",
"isDirect": false,
"via": [
{
"source": 1113153,
"name": "fast-xml-parser",
"dependency": "fast-xml-parser",
"title": "fast-xml-parser has RangeError DoS Numeric Entities Bug",
"url": "https://github.com/advisories/GHSA-37qj-frw5-hhjh",
"severity": "high",
"cwe": [
"CWE-20",
"CWE-248"
],
"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": ">=5.0.9 <=5.3.3"
},
{
"source": 1113331,
"name": "fast-xml-parser",
"dependency": "fast-xml-parser",
"title": "fast-xml-parser affected by DoS through entity expansion in DOCTYPE (no expansion limit)",
"url": "https://github.com/advisories/GHSA-jmr7-xgp7-cmfj",
"severity": "high",
"cwe": [
"CWE-776"
],
"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": ">=4.1.3 <5.3.6"
},
{
"source": 1113407,
"name": "fast-xml-parser",
"dependency": "fast-xml-parser",
"title": "fast-xml-parser has an entity encoding bypass via regex injection in DOCTYPE entity names",
"url": "https://github.com/advisories/GHSA-m7jm-9gc2-mpf2",
"severity": "critical",
"cwe": [
"CWE-185"
],
"cvss": {
"score": 9.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:H/A:N"
},
"range": ">=4.1.3 <5.3.5"
}
],
"effects": [],
"range": "4.1.3 - 5.3.5",
"nodes": [
"node_modules/fast-xml-parser"
],
"fixAvailable": true
},
"file-entry-cache": {
"name": "file-entry-cache",
"severity": "high",
"isDirect": false,
"via": [
"flat-cache"
],
"effects": [
"eslint"
],
"range": "4.0.0 - 7.0.2",
"nodes": [
"node_modules/file-entry-cache"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"filelist": {
"name": "filelist",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [],
"range": "0.0.2 - 1.0.4",
"nodes": [
"node_modules/filelist"
],
"fixAvailable": true
},
"flat-cache": {
"name": "flat-cache",
"severity": "high",
"isDirect": false,
"via": [
"rimraf"
],
"effects": [
"file-entry-cache"
],
"range": "1.3.4 - 4.0.0",
"nodes": [
"node_modules/flat-cache"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"form-data": {
"name": "form-data",
"severity": "critical",
"isDirect": false,
"via": [
{
"source": 1109540,
"name": "form-data",
"dependency": "form-data",
"title": "form-data uses unsafe random function in form-data for choosing boundary",
"url": "https://github.com/advisories/GHSA-fjxv-7rqg-78g4",
"severity": "critical",
"cwe": [
"CWE-330"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": "<2.5.4"
}
],
"effects": [
"request"
],
"range": "<2.5.4",
"nodes": [
"node_modules/request/node_modules/form-data"
],
"fixAvailable": {
"name": "wdio-mediawiki",
"version": "6.3.2",
"isSemVerMajor": true
}
},
"glob": {
"name": "glob",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"@jest/reporters",
"@wdio/config",
"@wikimedia/mw-node-qunit",
"archiver-utils",
"jest-config",
"jest-runtime",
"js-beautify",
"mocha",
"rimraf",
"test-exclude"
],
"range": "3.0.0 - 10.5.0",
"nodes": [
"node_modules/@wdio/config/node_modules/glob",
"node_modules/@wdio/runner/node_modules/glob",
"node_modules/@wikimedia/mw-node-qunit/node_modules/glob",
"node_modules/archiver-utils/node_modules/glob",
"node_modules/glob",
"node_modules/js-beautify/node_modules/glob",
"node_modules/mocha/node_modules/glob"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"jest": {
"name": "jest",
"severity": "high",
"isDirect": true,
"via": [
"@jest/core",
"jest-cli"
],
"effects": [],
"range": ">=19.1.0-alpha.eed82034",
"nodes": [
"node_modules/jest"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"jest-circus": {
"name": "jest-circus",
"severity": "high",
"isDirect": false,
"via": [
"@jest/expect",
"jest-runtime",
"jest-snapshot"
],
"effects": [
"jest-config"
],
"range": ">=25.2.4",
"nodes": [
"node_modules/jest-circus"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"jest-cli": {
"name": "jest-cli",
"severity": "high",
"isDirect": false,
"via": [
"@jest/core",
"create-jest",
"jest-config"
],
"effects": [
"jest"
],
"range": ">=19.1.0-alpha.eed82034",
"nodes": [
"node_modules/jest-cli"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"jest-config": {
"name": "jest-config",
"severity": "high",
"isDirect": false,
"via": [
"babel-jest",
"glob",
"jest-circus",
"jest-runner"
],
"effects": [
"create-jest",
"jest-cli"
],
"range": ">=19.1.0-alpha.eed82034",
"nodes": [
"node_modules/jest-config"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"jest-resolve-dependencies": {
"name": "jest-resolve-dependencies",
"severity": "high",
"isDirect": false,
"via": [
"jest-snapshot"
],
"effects": [],
"range": ">=27.0.0-next.0",
"nodes": [
"node_modules/jest-resolve-dependencies"
],
"fixAvailable": true
},
"jest-runner": {
"name": "jest-runner",
"severity": "high",
"isDirect": false,
"via": [
"@jest/transform",
"jest-runtime"
],
"effects": [
"jest-config"
],
"range": ">=24.0.0-alpha.0",
"nodes": [
"node_modules/jest-runner"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"jest-runtime": {
"name": "jest-runtime",
"severity": "high",
"isDirect": false,
"via": [
"@jest/globals",
"@jest/transform",
"glob",
"jest-snapshot"
],
"effects": [
"jest-circus",
"jest-runner"
],
"range": ">=24.0.0-alpha.0",
"nodes": [
"node_modules/jest-runtime"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"jest-snapshot": {
"name": "jest-snapshot",
"severity": "high",
"isDirect": false,
"via": [
"@jest/transform"
],
"effects": [
"@jest/core",
"@jest/expect",
"jest-circus",
"jest-resolve-dependencies",
"jest-runtime"
],
"range": ">=27.0.0-next.0",
"nodes": [
"node_modules/jest-snapshot"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"js-beautify": {
"name": "js-beautify",
"severity": "high",
"isDirect": false,
"via": [
"editorconfig",
"glob"
],
"effects": [
"@vue/test-utils"
],
"range": ">=1.8.9",
"nodes": [
"node_modules/js-beautify"
],
"fixAvailable": {
"name": "@vue/test-utils",
"version": "2.4.0",
"isSemVerMajor": true
}
},
"minimatch": {
"name": "minimatch",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1113371,
"name": "minimatch",
"dependency": "minimatch",
"title": "minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern",
"url": "https://github.com/advisories/GHSA-3ppc-4f35-3m26",
"severity": "high",
"cwe": [
"CWE-1333"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": "<10.2.1"
}
],
"effects": [
"@eslint/eslintrc",
"@humanwhocodes/config-array",
"@typescript-eslint/typescript-estree",
"editorconfig",
"eslint",
"eslint-plugin-n",
"filelist",
"glob",
"mocha",
"multimatch",
"readdir-glob",
"recursive-readdir",
"test-exclude"
],
"range": "<10.2.1",
"nodes": [
"node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch",
"node_modules/@wdio/config/node_modules/minimatch",
"node_modules/@wdio/runner/node_modules/minimatch",
"node_modules/archiver-utils/node_modules/minimatch",
"node_modules/editorconfig/node_modules/minimatch",
"node_modules/eslint-plugin-n/node_modules/minimatch",
"node_modules/filelist/node_modules/minimatch",
"node_modules/js-beautify/node_modules/minimatch",
"node_modules/minimatch",
"node_modules/mocha/node_modules/minimatch",
"node_modules/readdir-glob/node_modules/minimatch"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"mocha": {
"name": "mocha",
"severity": "high",
"isDirect": false,
"via": [
"glob",
"minimatch"
],
"effects": [
"@wdio/mocha-framework"
],
"range": ">=1.10.0",
"nodes": [
"node_modules/mocha"
],
"fixAvailable": false
},
"multimatch": {
"name": "multimatch",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"doiuse"
],
"range": "<=7.0.0",
"nodes": [
"node_modules/multimatch"
],
"fixAvailable": {
"name": "stylelint-config-wikimedia",
"version": "0.10.1",
"isSemVerMajor": true
}
},
"mwbot": {
"name": "mwbot",
"severity": "moderate",
"isDirect": false,
"via": [
"request"
],
"effects": [
"wdio-mediawiki"
],
"range": ">=0.1.6",
"nodes": [
"node_modules/mwbot"
],
"fixAvailable": {
"name": "wdio-mediawiki",
"version": "6.3.2",
"isSemVerMajor": true
}
},
"qs": {
"name": "qs",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1113132,
"name": "qs",
"dependency": "qs",
"title": "qs's arrayLimit bypass in its bracket notation allows DoS via memory exhaustion",
"url": "https://github.com/advisories/GHSA-6rw7-vpxm-498p",
"severity": "high",
"cwe": [
"CWE-20"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": "<6.14.1"
}
],
"effects": [
"request"
],
"range": "<6.14.1",
"nodes": [
"node_modules/qs"
],
"fixAvailable": {
"name": "wdio-mediawiki",
"version": "6.3.2",
"isSemVerMajor": true
}
},
"readdir-glob": {
"name": "readdir-glob",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"archiver"
],
"range": "<=2.0.1",
"nodes": [
"node_modules/readdir-glob"
],
"fixAvailable": false
},
"recursive-readdir": {
"name": "recursive-readdir",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"create-wdio"
],
"range": ">=1.2.0",
"nodes": [
"node_modules/recursive-readdir"
],
"fixAvailable": false
},
"request": {
"name": "request",
"severity": "critical",
"isDirect": false,
"via": [
{
"source": 1096727,
"name": "request",
"dependency": "request",
"title": "Server-Side Request Forgery in Request",
"url": "https://github.com/advisories/GHSA-p8p7-x288-28g6",
"severity": "moderate",
"cwe": [
"CWE-918"
],
"cvss": {
"score": 6.1,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
},
"range": "<=2.88.2"
},
"form-data",
"qs",
"tough-cookie"
],
"effects": [
"mwbot"
],
"range": "*",
"nodes": [
"node_modules/request"
],
"fixAvailable": {
"name": "wdio-mediawiki",
"version": "6.3.2",
"isSemVerMajor": true
}
},
"rimraf": {
"name": "rimraf",
"severity": "high",
"isDirect": false,
"via": [
"glob"
],
"effects": [
"flat-cache"
],
"range": "2.3.0 - 3.0.2 || 4.2.0 - 5.0.10",
"nodes": [
"node_modules/rimraf"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"stylelint-config-wikimedia": {
"name": "stylelint-config-wikimedia",
"severity": "high",
"isDirect": true,
"via": [
"stylelint-no-unsupported-browser-features"
],
"effects": [],
"range": ">=0.10.2",
"nodes": [
"node_modules/stylelint-config-wikimedia"
],
"fixAvailable": {
"name": "stylelint-config-wikimedia",
"version": "0.10.1",
"isSemVerMajor": true
}
},
"stylelint-no-unsupported-browser-features": {
"name": "stylelint-no-unsupported-browser-features",
"severity": "high",
"isDirect": false,
"via": [
"doiuse"
],
"effects": [
"stylelint-config-wikimedia"
],
"range": "*",
"nodes": [
"node_modules/stylelint-no-unsupported-browser-features"
],
"fixAvailable": {
"name": "stylelint-config-wikimedia",
"version": "0.10.1",
"isSemVerMajor": true
}
},
"test-exclude": {
"name": "test-exclude",
"severity": "high",
"isDirect": false,
"via": [
"glob",
"minimatch"
],
"effects": [
"babel-plugin-istanbul"
],
"range": "4.2.2 || 5.0.0 - 7.0.2",
"nodes": [
"node_modules/test-exclude"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"tough-cookie": {
"name": "tough-cookie",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1097682,
"name": "tough-cookie",
"dependency": "tough-cookie",
"title": "tough-cookie Prototype Pollution vulnerability",
"url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3",
"severity": "moderate",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 6.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"
},
"range": "<4.1.3"
}
],
"effects": [
"request"
],
"range": "<4.1.3",
"nodes": [
"node_modules/request/node_modules/tough-cookie"
],
"fixAvailable": {
"name": "wdio-mediawiki",
"version": "6.3.2",
"isSemVerMajor": true
}
},
"wdio-mediawiki": {
"name": "wdio-mediawiki",
"severity": "moderate",
"isDirect": true,
"via": [
"mwbot"
],
"effects": [],
"range": "<=5.1.0",
"nodes": [
"node_modules/wdio-mediawiki"
],
"fixAvailable": {
"name": "wdio-mediawiki",
"version": "6.3.2",
"isSemVerMajor": true
}
},
"webdriver": {
"name": "webdriver",
"severity": "high",
"isDirect": false,
"via": [
"@wdio/config"
],
"effects": [
"@wdio/runner"
],
"range": ">=5.0.0-alpha.2",
"nodes": [
"node_modules/@wdio/runner/node_modules/webdriver",
"node_modules/webdriver"
],
"fixAvailable": false
},
"webdriverio": {
"name": "webdriverio",
"severity": "high",
"isDirect": false,
"via": [
"@wdio/config",
"archiver",
"webdriver"
],
"effects": [
"@wdio/globals",
"expect-webdriverio"
],
"range": ">=5.0.0-alpha.2",
"nodes": [
"node_modules/@wdio/runner/node_modules/webdriverio",
"node_modules/webdriverio"
],
"fixAvailable": false
},
"zip-stream": {
"name": "zip-stream",
"severity": "high",
"isDirect": false,
"via": [
"archiver-utils"
],
"effects": [],
"range": "0.8.0 - 6.0.1",
"nodes": [
"node_modules/zip-stream"
],
"fixAvailable": true
}
},
"metadata": {
"vulnerabilities": {
"info": 0,
"low": 0,
"moderate": 4,
"high": 64,
"critical": 3,
"total": 71
},
"dependencies": {
"prod": 1,
"dev": 1450,
"optional": 42,
"peer": 8,
"peerOptional": 0,
"total": 1450
}
}
}
--- end ---
$ /usr/bin/composer install
--- stderr ---
No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.
Loading composer repositories with package information
Updating dependencies
Lock file operations: 38 installs, 0 updates, 0 removals
- Locking composer/pcre (3.3.2)
- Locking composer/semver (3.4.4)
- Locking composer/spdx-licenses (1.5.9)
- Locking composer/xdebug-handler (3.0.5)
- Locking dealerdirect/phpcodesniffer-composer-installer (v1.2.0)
- Locking doctrine/deprecations (1.1.6)
- Locking felixfbecker/advanced-json-rpc (v3.2.1)
- 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 netresearch/jsonmapper (v4.5.0)
- Locking phan/phan (5.5.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.6)
- Locking phpdocumentor/type-resolver (1.12.0)
- Locking phpstan/phpdoc-parser (2.3.2)
- Locking psr/container (2.0.2)
- Locking psr/log (3.0.2)
- Locking sabre/event (5.1.7)
- Locking squizlabs/php_codesniffer (3.13.2)
- Locking symfony/console (v7.4.4)
- Locking symfony/deprecation-contracts (v3.6.0)
- Locking symfony/polyfill-ctype (v1.33.0)
- Locking symfony/polyfill-intl-grapheme (v1.33.0)
- Locking symfony/polyfill-intl-normalizer (v1.33.0)
- Locking symfony/polyfill-mbstring (v1.33.0)
- Locking symfony/polyfill-php80 (v1.33.0)
- Locking symfony/service-contracts (v3.6.1)
- Locking symfony/string (v8.0.4)
- Locking tysonandre/var_representation_polyfill (0.1.3)
- Locking webmozart/assert (2.1.5)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 38 installs, 0 updates, 0 removals
0 [>---------------------------] 0 [->--------------------------]
- Installing squizlabs/php_codesniffer (3.13.2): Extracting archive
- Installing dealerdirect/phpcodesniffer-composer-installer (v1.2.0): Extracting archive
- Installing composer/pcre (3.3.2): Extracting archive
- Installing phpcsstandards/phpcsutils (1.1.1): Extracting archive
- Installing phpcsstandards/phpcsextra (1.4.0): Extracting archive
- Installing symfony/polyfill-mbstring (v1.33.0): Extracting archive
- Installing composer/spdx-licenses (1.5.9): Extracting archive
- Installing composer/semver (3.4.4): Extracting archive
- Installing mediawiki/mediawiki-codesniffer (v48.0.0): Extracting archive
- Installing tysonandre/var_representation_polyfill (0.1.3): Extracting archive
- Installing symfony/polyfill-php80 (v1.33.0): Extracting archive
- Installing symfony/polyfill-intl-normalizer (v1.33.0): Extracting archive
- Installing symfony/polyfill-intl-grapheme (v1.33.0): Extracting archive
- Installing symfony/polyfill-ctype (v1.33.0): Extracting archive
- Installing symfony/string (v8.0.4): Extracting archive
- Installing symfony/deprecation-contracts (v3.6.0): Extracting archive
- Installing psr/container (2.0.2): Extracting archive
- Installing symfony/service-contracts (v3.6.1): Extracting archive
- Installing symfony/console (v7.4.4): Extracting archive
- Installing sabre/event (5.1.7): Extracting archive
- Installing netresearch/jsonmapper (v4.5.0): Extracting archive
- Installing microsoft/tolerant-php-parser (v0.1.2): Extracting archive
- Installing webmozart/assert (2.1.5): Extracting archive
- Installing phpstan/phpdoc-parser (2.3.2): Extracting archive
- Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
- Installing doctrine/deprecations (1.1.6): Extracting archive
- Installing phpdocumentor/type-resolver (1.12.0): Extracting archive
- Installing phpdocumentor/reflection-docblock (5.6.6): Extracting archive
- Installing felixfbecker/advanced-json-rpc (v3.2.1): Extracting archive
- Installing psr/log (3.0.2): Extracting archive
- Installing composer/xdebug-handler (3.0.5): Extracting archive
- Installing phan/phan (5.5.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
0/36 [>---------------------------] 0%
29/36 [======================>-----] 80%
36/36 [============================] 100%
1 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
17 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---
PHP CodeSniffer Config installed_paths set to ../../mediawiki/mediawiki-codesniffer,../../phpcsstandards/phpcsextra,../../phpcsstandards/phpcsutils
--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
"auditReportVersion": 2,
"vulnerabilities": {
"@eslint/eslintrc": {
"name": "@eslint/eslintrc",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"eslint",
"eslint-plugin-unicorn"
],
"range": "0.0.1 || >=0.1.1",
"nodes": [
"node_modules/@eslint/eslintrc",
"node_modules/eslint-plugin-unicorn/node_modules/@eslint/eslintrc"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"@humanwhocodes/config-array": {
"name": "@humanwhocodes/config-array",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"eslint"
],
"range": "*",
"nodes": [
"node_modules/@humanwhocodes/config-array"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"@jest/core": {
"name": "@jest/core",
"severity": "high",
"isDirect": false,
"via": [
"@jest/reporters",
"@jest/transform",
"jest-config",
"jest-resolve-dependencies",
"jest-runner",
"jest-runtime",
"jest-snapshot"
],
"effects": [
"jest",
"jest-cli"
],
"range": "*",
"nodes": [
"node_modules/@jest/core"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"@jest/expect": {
"name": "@jest/expect",
"severity": "high",
"isDirect": false,
"via": [
"jest-snapshot"
],
"effects": [
"@jest/globals",
"jest-circus"
],
"range": "*",
"nodes": [
"node_modules/@jest/expect"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"@jest/globals": {
"name": "@jest/globals",
"severity": "high",
"isDirect": false,
"via": [
"@jest/expect"
],
"effects": [
"jest-runtime"
],
"range": ">=28.0.0-alpha.0",
"nodes": [
"node_modules/@jest/globals"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"@jest/reporters": {
"name": "@jest/reporters",
"severity": "high",
"isDirect": false,
"via": [
"@jest/transform",
"glob"
],
"effects": [
"@jest/core"
],
"range": "*",
"nodes": [
"node_modules/@jest/reporters"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"@jest/transform": {
"name": "@jest/transform",
"severity": "high",
"isDirect": false,
"via": [
"babel-plugin-istanbul"
],
"effects": [
"babel-jest",
"jest-runner",
"jest-runtime",
"jest-snapshot"
],
"range": "*",
"nodes": [
"node_modules/@jest/transform"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"@typescript-eslint/eslint-plugin": {
"name": "@typescript-eslint/eslint-plugin",
"severity": "high",
"isDirect": false,
"via": [
"@typescript-eslint/type-utils",
"@typescript-eslint/utils",
"eslint"
],
"effects": [],
"range": "<=8.55.1-alpha.3",
"nodes": [
"node_modules/@typescript-eslint/eslint-plugin"
],
"fixAvailable": true
},
"@typescript-eslint/parser": {
"name": "@typescript-eslint/parser",
"severity": "high",
"isDirect": false,
"via": [
"@typescript-eslint/typescript-estree",
"eslint"
],
"effects": [
"eslint-config-wikimedia"
],
"range": "1.1.1-alpha.0 - 8.56.1-alpha.2",
"nodes": [
"node_modules/@typescript-eslint/parser"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"@typescript-eslint/type-utils": {
"name": "@typescript-eslint/type-utils",
"severity": "high",
"isDirect": false,
"via": [
"@typescript-eslint/typescript-estree",
"@typescript-eslint/utils",
"eslint"
],
"effects": [
"@typescript-eslint/eslint-plugin"
],
"range": "5.9.2-alpha.0 - 8.56.1-alpha.2",
"nodes": [
"node_modules/@typescript-eslint/type-utils"
],
"fixAvailable": true
},
"@typescript-eslint/typescript-estree": {
"name": "@typescript-eslint/typescript-estree",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"@typescript-eslint/parser",
"@typescript-eslint/type-utils",
"@typescript-eslint/utils"
],
"range": "6.16.0 - 8.56.1-alpha.2",
"nodes": [
"node_modules/@typescript-eslint/typescript-estree"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"@typescript-eslint/utils": {
"name": "@typescript-eslint/utils",
"severity": "high",
"isDirect": false,
"via": [
"@typescript-eslint/typescript-estree",
"eslint"
],
"effects": [
"@typescript-eslint/eslint-plugin",
"@typescript-eslint/type-utils"
],
"range": "<=8.56.1-alpha.2",
"nodes": [
"node_modules/@typescript-eslint/utils"
],
"fixAvailable": true
},
"@vue/test-utils": {
"name": "@vue/test-utils",
"severity": "high",
"isDirect": true,
"via": [
"js-beautify"
],
"effects": [],
"range": ">=2.2.8",
"nodes": [
"node_modules/@vue/test-utils"
],
"fixAvailable": {
"name": "@vue/test-utils",
"version": "2.2.7",
"isSemVerMajor": true
}
},
"@vue/vue3-jest": {
"name": "@vue/vue3-jest",
"severity": "high",
"isDirect": true,
"via": [
"babel-jest",
"jest"
],
"effects": [],
"range": "*",
"nodes": [
"node_modules/@vue/vue3-jest"
],
"fixAvailable": false
},
"@wdio/cli": {
"name": "@wdio/cli",
"severity": "high",
"isDirect": true,
"via": [
"@wdio/config",
"@wdio/globals",
"create-wdio",
"webdriverio"
],
"effects": [],
"range": "*",
"nodes": [
"node_modules/@wdio/cli"
],
"fixAvailable": false
},
"@wdio/config": {
"name": "@wdio/config",
"severity": "high",
"isDirect": false,
"via": [
"glob"
],
"effects": [
"@wdio/cli",
"@wdio/runner",
"webdriver",
"webdriverio"
],
"range": "*",
"nodes": [
"node_modules/@wdio/config",
"node_modules/@wdio/runner/node_modules/@wdio/config"
],
"fixAvailable": false
},
"@wdio/globals": {
"name": "@wdio/globals",
"severity": "high",
"isDirect": false,
"via": [
"expect-webdriverio",
"webdriverio"
],
"effects": [
"@wdio/cli",
"@wdio/runner"
],
"range": "*",
"nodes": [
"node_modules/@wdio/cli/node_modules/@wdio/globals",
"node_modules/@wdio/globals"
],
"fixAvailable": false
},
"@wdio/local-runner": {
"name": "@wdio/local-runner",
"severity": "high",
"isDirect": true,
"via": [
"@wdio/runner",
"expect-webdriverio"
],
"effects": [],
"range": "*",
"nodes": [
"node_modules/@wdio/local-runner"
],
"fixAvailable": false
},
"@wdio/mocha-framework": {
"name": "@wdio/mocha-framework",
"severity": "high",
"isDirect": true,
"via": [
"mocha"
],
"effects": [],
"range": "*",
"nodes": [
"node_modules/@wdio/mocha-framework"
],
"fixAvailable": false
},
"@wdio/runner": {
"name": "@wdio/runner",
"severity": "high",
"isDirect": false,
"via": [
"@wdio/config",
"@wdio/globals",
"expect-webdriverio",
"webdriver",
"webdriverio"
],
"effects": [
"@wdio/local-runner"
],
"range": "*",
"nodes": [
"node_modules/@wdio/runner"
],
"fixAvailable": false
},
"@wikimedia/mw-node-qunit": {
"name": "@wikimedia/mw-node-qunit",
"severity": "high",
"isDirect": true,
"via": [
"glob"
],
"effects": [],
"range": "*",
"nodes": [
"node_modules/@wikimedia/mw-node-qunit"
],
"fixAvailable": false
},
"ajv": {
"name": "ajv",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1113398,
"name": "ajv",
"dependency": "ajv",
"title": "ajv has ReDoS when using `$data` option",
"url": "https://github.com/advisories/GHSA-2g4f-4pwh-qvx6",
"severity": "moderate",
"cwe": [
"CWE-400"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": "<6.14.0"
},
{
"source": 1113399,
"name": "ajv",
"dependency": "ajv",
"title": "ajv has ReDoS when using `$data` option",
"url": "https://github.com/advisories/GHSA-2g4f-4pwh-qvx6",
"severity": "moderate",
"cwe": [
"CWE-400"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": ">=7.0.0-alpha.0 <8.18.0"
}
],
"effects": [],
"range": "<6.14.0 || >=7.0.0-alpha.0 <8.18.0",
"nodes": [
"node_modules/ajv",
"node_modules/table/node_modules/ajv"
],
"fixAvailable": true
},
"archiver": {
"name": "archiver",
"severity": "high",
"isDirect": false,
"via": [
"archiver-utils",
"readdir-glob",
"zip-stream"
],
"effects": [
"webdriverio"
],
"range": ">=0.20.0",
"nodes": [
"node_modules/archiver"
],
"fixAvailable": false
},
"archiver-utils": {
"name": "archiver-utils",
"severity": "high",
"isDirect": false,
"via": [
"glob"
],
"effects": [
"archiver",
"zip-stream"
],
"range": ">=0.2.0",
"nodes": [
"node_modules/archiver-utils"
],
"fixAvailable": false
},
"babel-jest": {
"name": "babel-jest",
"severity": "high",
"isDirect": true,
"via": [
"@jest/transform",
"babel-plugin-istanbul"
],
"effects": [
"@vue/vue3-jest",
"jest-config"
],
"range": ">=24.0.0-alpha.0",
"nodes": [
"node_modules/babel-jest"
],
"fixAvailable": false
},
"babel-plugin-istanbul": {
"name": "babel-plugin-istanbul",
"severity": "high",
"isDirect": false,
"via": [
"test-exclude"
],
"effects": [
"@jest/transform",
"babel-jest"
],
"range": ">=5.0.1",
"nodes": [
"node_modules/babel-plugin-istanbul"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"create-jest": {
"name": "create-jest",
"severity": "high",
"isDirect": false,
"via": [
"jest-config"
],
"effects": [
"jest-cli"
],
"range": ">=29.7.0",
"nodes": [
"node_modules/create-jest"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"create-wdio": {
"name": "create-wdio",
"severity": "high",
"isDirect": false,
"via": [
"recursive-readdir"
],
"effects": [
"@wdio/cli"
],
"range": ">=9.17.0",
"nodes": [
"node_modules/create-wdio"
],
"fixAvailable": false
},
"doiuse": {
"name": "doiuse",
"severity": "high",
"isDirect": false,
"via": [
"multimatch"
],
"effects": [
"stylelint-no-unsupported-browser-features"
],
"range": ">=2.2.0",
"nodes": [
"node_modules/doiuse"
],
"fixAvailable": {
"name": "stylelint-config-wikimedia",
"version": "0.10.1",
"isSemVerMajor": true
}
},
"editorconfig": {
"name": "editorconfig",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"js-beautify"
],
"range": ">=1.0.0",
"nodes": [
"node_modules/editorconfig"
],
"fixAvailable": {
"name": "@vue/test-utils",
"version": "2.2.7",
"isSemVerMajor": true
}
},
"eslint": {
"name": "eslint",
"severity": "high",
"isDirect": false,
"via": [
"@eslint/eslintrc",
"@humanwhocodes/config-array",
"file-entry-cache",
"minimatch"
],
"effects": [
"@typescript-eslint/eslint-plugin",
"@typescript-eslint/parser",
"@typescript-eslint/type-utils",
"@typescript-eslint/utils",
"eslint-config-wikimedia",
"eslint-plugin-jest",
"eslint-plugin-jsdoc",
"eslint-plugin-vue"
],
"range": "0.7.1 - 2.0.0-rc.1 || 4.1.0 - 10.0.0-rc.2",
"nodes": [
"node_modules/eslint"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"eslint-config-wikimedia": {
"name": "eslint-config-wikimedia",
"severity": "high",
"isDirect": true,
"via": [
"@typescript-eslint/eslint-plugin",
"@typescript-eslint/parser",
"eslint",
"eslint-plugin-jest",
"eslint-plugin-jsdoc",
"eslint-plugin-unicorn",
"eslint-plugin-vue"
],
"effects": [],
"range": ">=0.9.0",
"nodes": [
"node_modules/eslint-config-wikimedia"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"eslint-plugin-jest": {
"name": "eslint-plugin-jest",
"severity": "high",
"isDirect": false,
"via": [
"eslint"
],
"effects": [
"eslint-config-wikimedia"
],
"range": "25.0.1 - 29.12.2",
"nodes": [
"node_modules/eslint-plugin-jest"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"eslint-plugin-jsdoc": {
"name": "eslint-plugin-jsdoc",
"severity": "high",
"isDirect": false,
"via": [
"eslint"
],
"effects": [
"eslint-config-wikimedia"
],
"range": "8.4.4 - 62.6.1",
"nodes": [
"node_modules/eslint-plugin-jsdoc"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"eslint-plugin-mediawiki": {
"name": "eslint-plugin-mediawiki",
"severity": "high",
"isDirect": false,
"via": [
"eslint-plugin-vue"
],
"effects": [],
"range": "0.2.3 - 0.7.0",
"nodes": [
"node_modules/eslint-plugin-mediawiki"
],
"fixAvailable": true
},
"eslint-plugin-n": {
"name": "eslint-plugin-n",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [],
"range": "<=17.21.1",
"nodes": [
"node_modules/eslint-plugin-n"
],
"fixAvailable": true
},
"eslint-plugin-unicorn": {
"name": "eslint-plugin-unicorn",
"severity": "high",
"isDirect": false,
"via": [
"@eslint/eslintrc"
],
"effects": [
"eslint-config-wikimedia"
],
"range": "50.0.0 - 54.0.0",
"nodes": [
"node_modules/eslint-plugin-unicorn"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"eslint-plugin-vue": {
"name": "eslint-plugin-vue",
"severity": "high",
"isDirect": true,
"via": [
"eslint"
],
"effects": [
"eslint-config-wikimedia",
"eslint-plugin-mediawiki"
],
"range": "5.0.0-beta.0 - 10.7.0",
"nodes": [
"node_modules/eslint-plugin-vue"
],
"fixAvailable": {
"name": "eslint-plugin-vue",
"version": "10.8.0",
"isSemVerMajor": true
}
},
"expect-webdriverio": {
"name": "expect-webdriverio",
"severity": "high",
"isDirect": false,
"via": [
"@wdio/globals",
"webdriverio"
],
"effects": [
"@wdio/globals",
"@wdio/local-runner",
"@wdio/runner"
],
"range": "4.0.0-alpha.0 - 4.0.0-alpha.6 || >=4.0.1",
"nodes": [
"node_modules/expect-webdriverio"
],
"fixAvailable": false
},
"fast-xml-parser": {
"name": "fast-xml-parser",
"severity": "critical",
"isDirect": false,
"via": [
{
"source": 1113153,
"name": "fast-xml-parser",
"dependency": "fast-xml-parser",
"title": "fast-xml-parser has RangeError DoS Numeric Entities Bug",
"url": "https://github.com/advisories/GHSA-37qj-frw5-hhjh",
"severity": "high",
"cwe": [
"CWE-20",
"CWE-248"
],
"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": ">=5.0.9 <=5.3.3"
},
{
"source": 1113331,
"name": "fast-xml-parser",
"dependency": "fast-xml-parser",
"title": "fast-xml-parser affected by DoS through entity expansion in DOCTYPE (no expansion limit)",
"url": "https://github.com/advisories/GHSA-jmr7-xgp7-cmfj",
"severity": "high",
"cwe": [
"CWE-776"
],
"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": ">=4.1.3 <5.3.6"
},
{
"source": 1113407,
"name": "fast-xml-parser",
"dependency": "fast-xml-parser",
"title": "fast-xml-parser has an entity encoding bypass via regex injection in DOCTYPE entity names",
"url": "https://github.com/advisories/GHSA-m7jm-9gc2-mpf2",
"severity": "critical",
"cwe": [
"CWE-185"
],
"cvss": {
"score": 9.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:H/A:N"
},
"range": ">=4.1.3 <5.3.5"
}
],
"effects": [],
"range": "4.1.3 - 5.3.5",
"nodes": [
"node_modules/fast-xml-parser"
],
"fixAvailable": true
},
"file-entry-cache": {
"name": "file-entry-cache",
"severity": "high",
"isDirect": false,
"via": [
"flat-cache"
],
"effects": [
"eslint"
],
"range": "4.0.0 - 7.0.2",
"nodes": [
"node_modules/file-entry-cache"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"filelist": {
"name": "filelist",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [],
"range": "0.0.2 - 1.0.4",
"nodes": [
"node_modules/filelist"
],
"fixAvailable": true
},
"flat-cache": {
"name": "flat-cache",
"severity": "high",
"isDirect": false,
"via": [
"rimraf"
],
"effects": [
"file-entry-cache"
],
"range": "1.3.4 - 4.0.0",
"nodes": [
"node_modules/flat-cache"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"form-data": {
"name": "form-data",
"severity": "critical",
"isDirect": false,
"via": [
{
"source": 1109540,
"name": "form-data",
"dependency": "form-data",
"title": "form-data uses unsafe random function in form-data for choosing boundary",
"url": "https://github.com/advisories/GHSA-fjxv-7rqg-78g4",
"severity": "critical",
"cwe": [
"CWE-330"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": "<2.5.4"
}
],
"effects": [
"request"
],
"range": "<2.5.4",
"nodes": [
"node_modules/request/node_modules/form-data"
],
"fixAvailable": {
"name": "wdio-mediawiki",
"version": "6.3.2",
"isSemVerMajor": true
}
},
"glob": {
"name": "glob",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"@jest/reporters",
"@wdio/config",
"@wikimedia/mw-node-qunit",
"archiver-utils",
"jest-config",
"jest-runtime",
"js-beautify",
"mocha",
"rimraf",
"test-exclude"
],
"range": "3.0.0 - 10.5.0",
"nodes": [
"node_modules/@wdio/config/node_modules/glob",
"node_modules/@wdio/runner/node_modules/glob",
"node_modules/@wikimedia/mw-node-qunit/node_modules/glob",
"node_modules/archiver-utils/node_modules/glob",
"node_modules/glob",
"node_modules/js-beautify/node_modules/glob",
"node_modules/mocha/node_modules/glob"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"jest": {
"name": "jest",
"severity": "high",
"isDirect": true,
"via": [
"@jest/core",
"jest-cli"
],
"effects": [],
"range": ">=19.1.0-alpha.eed82034",
"nodes": [
"node_modules/jest"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"jest-circus": {
"name": "jest-circus",
"severity": "high",
"isDirect": false,
"via": [
"@jest/expect",
"jest-runtime",
"jest-snapshot"
],
"effects": [
"jest-config"
],
"range": ">=25.2.4",
"nodes": [
"node_modules/jest-circus"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"jest-cli": {
"name": "jest-cli",
"severity": "high",
"isDirect": false,
"via": [
"@jest/core",
"create-jest",
"jest-config"
],
"effects": [
"jest"
],
"range": ">=19.1.0-alpha.eed82034",
"nodes": [
"node_modules/jest-cli"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"jest-config": {
"name": "jest-config",
"severity": "high",
"isDirect": false,
"via": [
"babel-jest",
"glob",
"jest-circus",
"jest-runner"
],
"effects": [
"create-jest",
"jest-cli"
],
"range": ">=19.1.0-alpha.eed82034",
"nodes": [
"node_modules/jest-config"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"jest-resolve-dependencies": {
"name": "jest-resolve-dependencies",
"severity": "high",
"isDirect": false,
"via": [
"jest-snapshot"
],
"effects": [],
"range": ">=27.0.0-next.0",
"nodes": [
"node_modules/jest-resolve-dependencies"
],
"fixAvailable": true
},
"jest-runner": {
"name": "jest-runner",
"severity": "high",
"isDirect": false,
"via": [
"@jest/transform",
"jest-runtime"
],
"effects": [
"jest-config"
],
"range": ">=24.0.0-alpha.0",
"nodes": [
"node_modules/jest-runner"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"jest-runtime": {
"name": "jest-runtime",
"severity": "high",
"isDirect": false,
"via": [
"@jest/globals",
"@jest/transform",
"glob",
"jest-snapshot"
],
"effects": [
"jest-circus",
"jest-runner"
],
"range": ">=24.0.0-alpha.0",
"nodes": [
"node_modules/jest-runtime"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"jest-snapshot": {
"name": "jest-snapshot",
"severity": "high",
"isDirect": false,
"via": [
"@jest/transform"
],
"effects": [
"@jest/core",
"@jest/expect",
"jest-circus",
"jest-resolve-dependencies",
"jest-runtime"
],
"range": ">=27.0.0-next.0",
"nodes": [
"node_modules/jest-snapshot"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"js-beautify": {
"name": "js-beautify",
"severity": "high",
"isDirect": false,
"via": [
"editorconfig",
"glob"
],
"effects": [
"@vue/test-utils"
],
"range": ">=1.8.9",
"nodes": [
"node_modules/js-beautify"
],
"fixAvailable": {
"name": "@vue/test-utils",
"version": "2.2.7",
"isSemVerMajor": true
}
},
"minimatch": {
"name": "minimatch",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1113371,
"name": "minimatch",
"dependency": "minimatch",
"title": "minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern",
"url": "https://github.com/advisories/GHSA-3ppc-4f35-3m26",
"severity": "high",
"cwe": [
"CWE-1333"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": "<10.2.1"
}
],
"effects": [
"@eslint/eslintrc",
"@humanwhocodes/config-array",
"@typescript-eslint/typescript-estree",
"editorconfig",
"eslint",
"eslint-plugin-n",
"filelist",
"glob",
"mocha",
"multimatch",
"readdir-glob",
"recursive-readdir",
"test-exclude"
],
"range": "<10.2.1",
"nodes": [
"node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch",
"node_modules/@wdio/config/node_modules/minimatch",
"node_modules/@wdio/runner/node_modules/minimatch",
"node_modules/archiver-utils/node_modules/minimatch",
"node_modules/editorconfig/node_modules/minimatch",
"node_modules/eslint-plugin-n/node_modules/minimatch",
"node_modules/filelist/node_modules/minimatch",
"node_modules/js-beautify/node_modules/minimatch",
"node_modules/minimatch",
"node_modules/mocha/node_modules/minimatch",
"node_modules/readdir-glob/node_modules/minimatch"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"mocha": {
"name": "mocha",
"severity": "high",
"isDirect": false,
"via": [
"glob",
"minimatch"
],
"effects": [
"@wdio/mocha-framework"
],
"range": ">=1.10.0",
"nodes": [
"node_modules/mocha"
],
"fixAvailable": false
},
"multimatch": {
"name": "multimatch",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"doiuse"
],
"range": "<=7.0.0",
"nodes": [
"node_modules/multimatch"
],
"fixAvailable": {
"name": "stylelint-config-wikimedia",
"version": "0.10.1",
"isSemVerMajor": true
}
},
"mwbot": {
"name": "mwbot",
"severity": "moderate",
"isDirect": false,
"via": [
"request"
],
"effects": [
"wdio-mediawiki"
],
"range": ">=0.1.6",
"nodes": [
"node_modules/mwbot"
],
"fixAvailable": {
"name": "wdio-mediawiki",
"version": "6.3.2",
"isSemVerMajor": true
}
},
"qs": {
"name": "qs",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1113132,
"name": "qs",
"dependency": "qs",
"title": "qs's arrayLimit bypass in its bracket notation allows DoS via memory exhaustion",
"url": "https://github.com/advisories/GHSA-6rw7-vpxm-498p",
"severity": "high",
"cwe": [
"CWE-20"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": "<6.14.1"
}
],
"effects": [
"request"
],
"range": "<6.14.1",
"nodes": [
"node_modules/qs"
],
"fixAvailable": {
"name": "wdio-mediawiki",
"version": "6.3.2",
"isSemVerMajor": true
}
},
"readdir-glob": {
"name": "readdir-glob",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"archiver"
],
"range": "<=2.0.1",
"nodes": [
"node_modules/readdir-glob"
],
"fixAvailable": false
},
"recursive-readdir": {
"name": "recursive-readdir",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"create-wdio"
],
"range": ">=1.2.0",
"nodes": [
"node_modules/recursive-readdir"
],
"fixAvailable": false
},
"request": {
"name": "request",
"severity": "critical",
"isDirect": false,
"via": [
{
"source": 1096727,
"name": "request",
"dependency": "request",
"title": "Server-Side Request Forgery in Request",
"url": "https://github.com/advisories/GHSA-p8p7-x288-28g6",
"severity": "moderate",
"cwe": [
"CWE-918"
],
"cvss": {
"score": 6.1,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
},
"range": "<=2.88.2"
},
"form-data",
"qs",
"tough-cookie"
],
"effects": [
"mwbot"
],
"range": "*",
"nodes": [
"node_modules/request"
],
"fixAvailable": {
"name": "wdio-mediawiki",
"version": "6.3.2",
"isSemVerMajor": true
}
},
"rimraf": {
"name": "rimraf",
"severity": "high",
"isDirect": false,
"via": [
"glob"
],
"effects": [
"flat-cache"
],
"range": "2.3.0 - 3.0.2 || 4.2.0 - 5.0.10",
"nodes": [
"node_modules/rimraf"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"stylelint-config-wikimedia": {
"name": "stylelint-config-wikimedia",
"severity": "high",
"isDirect": true,
"via": [
"stylelint-no-unsupported-browser-features"
],
"effects": [],
"range": ">=0.10.2",
"nodes": [
"node_modules/stylelint-config-wikimedia"
],
"fixAvailable": {
"name": "stylelint-config-wikimedia",
"version": "0.10.1",
"isSemVerMajor": true
}
},
"stylelint-no-unsupported-browser-features": {
"name": "stylelint-no-unsupported-browser-features",
"severity": "high",
"isDirect": false,
"via": [
"doiuse"
],
"effects": [
"stylelint-config-wikimedia"
],
"range": "*",
"nodes": [
"node_modules/stylelint-no-unsupported-browser-features"
],
"fixAvailable": {
"name": "stylelint-config-wikimedia",
"version": "0.10.1",
"isSemVerMajor": true
}
},
"test-exclude": {
"name": "test-exclude",
"severity": "high",
"isDirect": false,
"via": [
"glob",
"minimatch"
],
"effects": [
"babel-plugin-istanbul"
],
"range": "4.2.2 || 5.0.0 - 7.0.2",
"nodes": [
"node_modules/test-exclude"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"tough-cookie": {
"name": "tough-cookie",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1097682,
"name": "tough-cookie",
"dependency": "tough-cookie",
"title": "tough-cookie Prototype Pollution vulnerability",
"url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3",
"severity": "moderate",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 6.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"
},
"range": "<4.1.3"
}
],
"effects": [
"request"
],
"range": "<4.1.3",
"nodes": [
"node_modules/request/node_modules/tough-cookie"
],
"fixAvailable": {
"name": "wdio-mediawiki",
"version": "6.3.2",
"isSemVerMajor": true
}
},
"wdio-mediawiki": {
"name": "wdio-mediawiki",
"severity": "moderate",
"isDirect": true,
"via": [
"mwbot"
],
"effects": [],
"range": "<=5.1.0",
"nodes": [
"node_modules/wdio-mediawiki"
],
"fixAvailable": {
"name": "wdio-mediawiki",
"version": "6.3.2",
"isSemVerMajor": true
}
},
"webdriver": {
"name": "webdriver",
"severity": "high",
"isDirect": false,
"via": [
"@wdio/config"
],
"effects": [
"@wdio/runner"
],
"range": ">=5.0.0-alpha.2",
"nodes": [
"node_modules/@wdio/runner/node_modules/webdriver",
"node_modules/webdriver"
],
"fixAvailable": false
},
"webdriverio": {
"name": "webdriverio",
"severity": "high",
"isDirect": false,
"via": [
"@wdio/config",
"archiver",
"webdriver"
],
"effects": [
"@wdio/globals",
"expect-webdriverio"
],
"range": ">=5.0.0-alpha.2",
"nodes": [
"node_modules/@wdio/runner/node_modules/webdriverio",
"node_modules/webdriverio"
],
"fixAvailable": false
},
"zip-stream": {
"name": "zip-stream",
"severity": "high",
"isDirect": false,
"via": [
"archiver-utils"
],
"effects": [],
"range": "0.8.0 - 6.0.1",
"nodes": [
"node_modules/zip-stream"
],
"fixAvailable": true
}
},
"metadata": {
"vulnerabilities": {
"info": 0,
"low": 0,
"moderate": 4,
"high": 64,
"critical": 3,
"total": 71
},
"dependencies": {
"prod": 1,
"dev": 1450,
"optional": 42,
"peer": 8,
"peerOptional": 0,
"total": 1450
}
}
}
--- 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 ERESOLVE overriding peer dependency
npm WARN While resolving: @wdio/globals@9.17.0
npm WARN Found: peer @wdio/globals@"^9.0.0" from the root project
npm WARN
npm WARN Could not resolve dependency:
npm WARN peer @wdio/globals@"^9.0.0" from the root project
npm WARN ERESOLVE overriding peer dependency
npm WARN While resolving: @wdio/globals@9.17.0
npm WARN Found: peer @wdio/logger@"^9.0.0" from the root project
npm WARN
npm WARN Could not resolve dependency:
npm WARN peer @wdio/logger@"^9.0.0" from the root project
npm WARN ERESOLVE overriding peer dependency
npm WARN While resolving: @wdio/globals@9.17.0
npm WARN Found: peer webdriverio@"^9.0.0" from the root project
npm WARN
npm WARN Could not resolve dependency:
npm WARN peer webdriverio@"^9.0.0" from the root project
npm WARN ERESOLVE overriding peer dependency
npm WARN While resolving: @wdio/globals@9.17.0
npm WARN Found: webdriverio@9.18.4
npm WARN node_modules/webdriverio
npm WARN webdriverio@"9.18.4" from @wdio/cli@9.18.4
npm WARN node_modules/@wdio/cli
npm WARN dev @wdio/cli@"9.18.4" from the root project
npm WARN 3 more (@wdio/globals, @wdio/globals, expect-webdriverio)
npm WARN
npm WARN Could not resolve dependency:
npm WARN peer webdriverio@"^9.0.0" from @wdio/globals@9.17.0
npm WARN node_modules/@wdio/cli/node_modules/@wdio/globals
npm WARN @wdio/globals@"9.17.0" from @wdio/cli@9.18.4
npm WARN node_modules/@wdio/cli
npm WARN
npm WARN Conflicting peer dependency: webdriverio@9.24.0
npm WARN node_modules/webdriverio
npm WARN peer webdriverio@"^9.0.0" from the root project
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": 1457,
"removed": 0,
"changed": 0,
"audited": 1458,
"funding": 214,
"audit": {
"auditReportVersion": 2,
"vulnerabilities": {
"@eslint/eslintrc": {
"name": "@eslint/eslintrc",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"eslint",
"eslint-plugin-unicorn"
],
"range": "0.0.1 || >=0.1.1",
"nodes": [
"",
"node_modules/@eslint/eslintrc"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"@humanwhocodes/config-array": {
"name": "@humanwhocodes/config-array",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"eslint"
],
"range": "*",
"nodes": [
"node_modules/@humanwhocodes/config-array"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"@jest/core": {
"name": "@jest/core",
"severity": "high",
"isDirect": false,
"via": [
"@jest/reporters",
"@jest/transform",
"jest-config",
"jest-resolve-dependencies",
"jest-runner",
"jest-runtime",
"jest-snapshot"
],
"effects": [
"jest",
"jest-cli"
],
"range": "*",
"nodes": [
"node_modules/@jest/core"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"@jest/expect": {
"name": "@jest/expect",
"severity": "high",
"isDirect": false,
"via": [
"jest-snapshot"
],
"effects": [
"@jest/globals",
"jest-circus"
],
"range": "*",
"nodes": [
"node_modules/@jest/expect"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"@jest/globals": {
"name": "@jest/globals",
"severity": "high",
"isDirect": false,
"via": [
"@jest/expect"
],
"effects": [
"jest-runtime"
],
"range": ">=28.0.0-alpha.0",
"nodes": [
"node_modules/@jest/globals"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"@jest/reporters": {
"name": "@jest/reporters",
"severity": "high",
"isDirect": false,
"via": [
"@jest/transform",
"glob"
],
"effects": [
"@jest/core"
],
"range": "*",
"nodes": [
"node_modules/@jest/reporters"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"@jest/transform": {
"name": "@jest/transform",
"severity": "high",
"isDirect": false,
"via": [
"babel-plugin-istanbul"
],
"effects": [
"babel-jest",
"jest-runner",
"jest-runtime",
"jest-snapshot"
],
"range": "*",
"nodes": [
"node_modules/@jest/transform"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"@typescript-eslint/eslint-plugin": {
"name": "@typescript-eslint/eslint-plugin",
"severity": "high",
"isDirect": false,
"via": [
"@typescript-eslint/type-utils",
"@typescript-eslint/utils",
"eslint"
],
"effects": [],
"range": "<=8.55.1-alpha.3",
"nodes": [
"node_modules/@typescript-eslint/eslint-plugin"
],
"fixAvailable": true
},
"@typescript-eslint/parser": {
"name": "@typescript-eslint/parser",
"severity": "high",
"isDirect": false,
"via": [
"@typescript-eslint/typescript-estree",
"eslint"
],
"effects": [
"eslint-config-wikimedia"
],
"range": "1.1.1-alpha.0 - 8.56.1-alpha.2",
"nodes": [
"node_modules/@typescript-eslint/parser"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"@typescript-eslint/type-utils": {
"name": "@typescript-eslint/type-utils",
"severity": "high",
"isDirect": false,
"via": [
"@typescript-eslint/typescript-estree",
"@typescript-eslint/utils",
"eslint"
],
"effects": [
"@typescript-eslint/eslint-plugin"
],
"range": "5.9.2-alpha.0 - 8.56.1-alpha.2",
"nodes": [
"node_modules/@typescript-eslint/type-utils"
],
"fixAvailable": true
},
"@typescript-eslint/typescript-estree": {
"name": "@typescript-eslint/typescript-estree",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"@typescript-eslint/parser",
"@typescript-eslint/type-utils",
"@typescript-eslint/utils"
],
"range": "6.16.0 - 8.56.1-alpha.2",
"nodes": [
"node_modules/@typescript-eslint/typescript-estree"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"@typescript-eslint/utils": {
"name": "@typescript-eslint/utils",
"severity": "high",
"isDirect": false,
"via": [
"@typescript-eslint/typescript-estree",
"eslint"
],
"effects": [
"@typescript-eslint/eslint-plugin",
"@typescript-eslint/type-utils"
],
"range": "<=8.56.1-alpha.2",
"nodes": [
"node_modules/@typescript-eslint/utils"
],
"fixAvailable": true
},
"@vue/test-utils": {
"name": "@vue/test-utils",
"severity": "high",
"isDirect": true,
"via": [
"js-beautify"
],
"effects": [],
"range": ">=2.4.1",
"nodes": [
"node_modules/@vue/test-utils"
],
"fixAvailable": {
"name": "@vue/test-utils",
"version": "2.4.0",
"isSemVerMajor": true
}
},
"@vue/vue3-jest": {
"name": "@vue/vue3-jest",
"severity": "high",
"isDirect": true,
"via": [
"babel-jest",
"jest"
],
"effects": [],
"range": "*",
"nodes": [
"node_modules/@vue/vue3-jest"
],
"fixAvailable": false
},
"@wdio/cli": {
"name": "@wdio/cli",
"severity": "high",
"isDirect": true,
"via": [
"@wdio/config",
"@wdio/globals",
"create-wdio",
"webdriverio"
],
"effects": [],
"range": "*",
"nodes": [
"node_modules/@wdio/cli"
],
"fixAvailable": {
"name": "@wdio/cli",
"version": "9.16.2",
"isSemVerMajor": true
}
},
"@wdio/config": {
"name": "@wdio/config",
"severity": "high",
"isDirect": false,
"via": [
"glob"
],
"effects": [
"@wdio/cli",
"@wdio/runner",
"webdriver",
"webdriverio"
],
"range": "*",
"nodes": [
"node_modules/@wdio/config",
"node_modules/@wdio/runner/node_modules/@wdio/config"
],
"fixAvailable": false
},
"@wdio/globals": {
"name": "@wdio/globals",
"severity": "high",
"isDirect": false,
"via": [
"expect-webdriverio",
"webdriverio"
],
"effects": [
"@wdio/cli",
"@wdio/runner"
],
"range": "*",
"nodes": [
"node_modules/@wdio/cli/node_modules/@wdio/globals",
"node_modules/@wdio/globals"
],
"fixAvailable": false
},
"@wdio/local-runner": {
"name": "@wdio/local-runner",
"severity": "high",
"isDirect": true,
"via": [
"@wdio/runner",
"expect-webdriverio"
],
"effects": [],
"range": "*",
"nodes": [
"node_modules/@wdio/local-runner"
],
"fixAvailable": false
},
"@wdio/mocha-framework": {
"name": "@wdio/mocha-framework",
"severity": "high",
"isDirect": true,
"via": [
"mocha"
],
"effects": [],
"range": "*",
"nodes": [
"node_modules/@wdio/mocha-framework"
],
"fixAvailable": false
},
"@wdio/runner": {
"name": "@wdio/runner",
"severity": "high",
"isDirect": false,
"via": [
"@wdio/config",
"@wdio/globals",
"expect-webdriverio",
"webdriver",
"webdriverio"
],
"effects": [
"@wdio/local-runner"
],
"range": "*",
"nodes": [
"node_modules/@wdio/runner"
],
"fixAvailable": false
},
"@wikimedia/mw-node-qunit": {
"name": "@wikimedia/mw-node-qunit",
"severity": "high",
"isDirect": true,
"via": [
"glob"
],
"effects": [],
"range": "*",
"nodes": [
"node_modules/@wikimedia/mw-node-qunit"
],
"fixAvailable": false
},
"ajv": {
"name": "ajv",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1113398,
"name": "ajv",
"dependency": "ajv",
"title": "ajv has ReDoS when using `$data` option",
"url": "https://github.com/advisories/GHSA-2g4f-4pwh-qvx6",
"severity": "moderate",
"cwe": [
"CWE-400"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": "<6.14.0"
},
{
"source": 1113399,
"name": "ajv",
"dependency": "ajv",
"title": "ajv has ReDoS when using `$data` option",
"url": "https://github.com/advisories/GHSA-2g4f-4pwh-qvx6",
"severity": "moderate",
"cwe": [
"CWE-400"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": ">=7.0.0-alpha.0 <8.18.0"
}
],
"effects": [],
"range": "<6.14.0 || >=7.0.0-alpha.0 <8.18.0",
"nodes": [
"",
""
],
"fixAvailable": true
},
"archiver": {
"name": "archiver",
"severity": "high",
"isDirect": false,
"via": [
"archiver-utils",
"readdir-glob",
"zip-stream"
],
"effects": [
"webdriverio"
],
"range": ">=0.20.0",
"nodes": [
"node_modules/archiver"
],
"fixAvailable": false
},
"archiver-utils": {
"name": "archiver-utils",
"severity": "high",
"isDirect": false,
"via": [
"glob"
],
"effects": [
"archiver",
"zip-stream"
],
"range": ">=0.2.0",
"nodes": [
"node_modules/archiver-utils"
],
"fixAvailable": false
},
"babel-jest": {
"name": "babel-jest",
"severity": "high",
"isDirect": true,
"via": [
"@jest/transform",
"babel-plugin-istanbul"
],
"effects": [
"@vue/vue3-jest",
"jest-config"
],
"range": ">=24.0.0-alpha.0",
"nodes": [
"node_modules/babel-jest"
],
"fixAvailable": false
},
"babel-plugin-istanbul": {
"name": "babel-plugin-istanbul",
"severity": "high",
"isDirect": false,
"via": [
"test-exclude"
],
"effects": [
"@jest/transform",
"babel-jest"
],
"range": ">=5.0.1",
"nodes": [
"node_modules/babel-plugin-istanbul"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"create-jest": {
"name": "create-jest",
"severity": "high",
"isDirect": false,
"via": [
"jest-config"
],
"effects": [
"jest-cli"
],
"range": ">=29.7.0",
"nodes": [
"node_modules/create-jest"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"create-wdio": {
"name": "create-wdio",
"severity": "high",
"isDirect": false,
"via": [
"recursive-readdir"
],
"effects": [
"@wdio/cli"
],
"range": ">=9.17.0",
"nodes": [
"node_modules/create-wdio"
],
"fixAvailable": {
"name": "@wdio/cli",
"version": "9.16.2",
"isSemVerMajor": true
}
},
"doiuse": {
"name": "doiuse",
"severity": "high",
"isDirect": false,
"via": [
"multimatch"
],
"effects": [
"stylelint-no-unsupported-browser-features"
],
"range": ">=2.2.0",
"nodes": [
""
],
"fixAvailable": {
"name": "stylelint-config-wikimedia",
"version": "0.10.1",
"isSemVerMajor": true
}
},
"editorconfig": {
"name": "editorconfig",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"js-beautify"
],
"range": ">=1.0.0",
"nodes": [
"node_modules/editorconfig"
],
"fixAvailable": {
"name": "@vue/test-utils",
"version": "2.4.0",
"isSemVerMajor": true
}
},
"eslint": {
"name": "eslint",
"severity": "high",
"isDirect": false,
"via": [
"@eslint/eslintrc",
"@humanwhocodes/config-array",
"file-entry-cache",
"minimatch"
],
"effects": [
"@typescript-eslint/eslint-plugin",
"@typescript-eslint/parser",
"@typescript-eslint/type-utils",
"@typescript-eslint/utils",
"eslint-config-wikimedia",
"eslint-plugin-jest",
"eslint-plugin-jsdoc",
"eslint-plugin-vue"
],
"range": "0.7.1 - 2.0.0-rc.1 || 4.1.0 - 10.0.0-rc.2",
"nodes": [
"node_modules/eslint"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"eslint-config-wikimedia": {
"name": "eslint-config-wikimedia",
"severity": "high",
"isDirect": true,
"via": [
"@typescript-eslint/eslint-plugin",
"@typescript-eslint/parser",
"eslint",
"eslint-plugin-jest",
"eslint-plugin-jsdoc",
"eslint-plugin-unicorn",
"eslint-plugin-vue"
],
"effects": [],
"range": ">=0.9.0",
"nodes": [
"node_modules/eslint-config-wikimedia"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"eslint-plugin-jest": {
"name": "eslint-plugin-jest",
"severity": "high",
"isDirect": false,
"via": [
"eslint"
],
"effects": [
"eslint-config-wikimedia"
],
"range": "25.0.1 - 29.12.2",
"nodes": [
""
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"eslint-plugin-jsdoc": {
"name": "eslint-plugin-jsdoc",
"severity": "high",
"isDirect": false,
"via": [
"eslint"
],
"effects": [
"eslint-config-wikimedia"
],
"range": "8.4.4 - 62.6.1",
"nodes": [
"node_modules/eslint-plugin-jsdoc"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"eslint-plugin-mediawiki": {
"name": "eslint-plugin-mediawiki",
"severity": "high",
"isDirect": false,
"via": [
"eslint-plugin-vue"
],
"effects": [],
"range": "0.2.3 - 0.7.0",
"nodes": [
""
],
"fixAvailable": true
},
"eslint-plugin-n": {
"name": "eslint-plugin-n",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [],
"range": "<=17.21.1",
"nodes": [
""
],
"fixAvailable": true
},
"eslint-plugin-unicorn": {
"name": "eslint-plugin-unicorn",
"severity": "high",
"isDirect": false,
"via": [
"@eslint/eslintrc"
],
"effects": [
"eslint-config-wikimedia"
],
"range": "50.0.0 - 54.0.0",
"nodes": [
"node_modules/eslint-plugin-unicorn"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"eslint-plugin-vue": {
"name": "eslint-plugin-vue",
"severity": "high",
"isDirect": true,
"via": [
"eslint"
],
"effects": [
"eslint-config-wikimedia",
"eslint-plugin-mediawiki"
],
"range": "5.0.0-beta.0 - 10.7.0",
"nodes": [
"",
"node_modules/eslint-plugin-vue"
],
"fixAvailable": {
"name": "eslint-plugin-vue",
"version": "10.8.0",
"isSemVerMajor": true
}
},
"expect-webdriverio": {
"name": "expect-webdriverio",
"severity": "high",
"isDirect": false,
"via": [
"@wdio/globals",
"webdriverio"
],
"effects": [
"@wdio/globals",
"@wdio/local-runner",
"@wdio/runner"
],
"range": "4.0.0-alpha.0 - 4.0.0-alpha.6 || >=4.0.1",
"nodes": [
"",
"node_modules/expect-webdriverio"
],
"fixAvailable": false
},
"fast-xml-parser": {
"name": "fast-xml-parser",
"severity": "critical",
"isDirect": false,
"via": [
{
"source": 1113153,
"name": "fast-xml-parser",
"dependency": "fast-xml-parser",
"title": "fast-xml-parser has RangeError DoS Numeric Entities Bug",
"url": "https://github.com/advisories/GHSA-37qj-frw5-hhjh",
"severity": "high",
"cwe": [
"CWE-20",
"CWE-248"
],
"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": ">=5.0.9 <=5.3.3"
},
{
"source": 1113331,
"name": "fast-xml-parser",
"dependency": "fast-xml-parser",
"title": "fast-xml-parser affected by DoS through entity expansion in DOCTYPE (no expansion limit)",
"url": "https://github.com/advisories/GHSA-jmr7-xgp7-cmfj",
"severity": "high",
"cwe": [
"CWE-776"
],
"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": ">=4.1.3 <5.3.6"
},
{
"source": 1113407,
"name": "fast-xml-parser",
"dependency": "fast-xml-parser",
"title": "fast-xml-parser has an entity encoding bypass via regex injection in DOCTYPE entity names",
"url": "https://github.com/advisories/GHSA-m7jm-9gc2-mpf2",
"severity": "critical",
"cwe": [
"CWE-185"
],
"cvss": {
"score": 9.3,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:H/A:N"
},
"range": ">=4.1.3 <5.3.5"
}
],
"effects": [],
"range": "4.1.3 - 5.3.5",
"nodes": [
""
],
"fixAvailable": true
},
"file-entry-cache": {
"name": "file-entry-cache",
"severity": "high",
"isDirect": false,
"via": [
"flat-cache"
],
"effects": [
"eslint"
],
"range": "4.0.0 - 7.0.2",
"nodes": [
"node_modules/file-entry-cache"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"filelist": {
"name": "filelist",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [],
"range": "0.0.2 - 1.0.4",
"nodes": [
""
],
"fixAvailable": true
},
"flat-cache": {
"name": "flat-cache",
"severity": "high",
"isDirect": false,
"via": [
"rimraf"
],
"effects": [
"file-entry-cache"
],
"range": "1.3.4 - 4.0.0",
"nodes": [
"node_modules/flat-cache"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"form-data": {
"name": "form-data",
"severity": "critical",
"isDirect": false,
"via": [
{
"source": 1109540,
"name": "form-data",
"dependency": "form-data",
"title": "form-data uses unsafe random function in form-data for choosing boundary",
"url": "https://github.com/advisories/GHSA-fjxv-7rqg-78g4",
"severity": "critical",
"cwe": [
"CWE-330"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": "<2.5.4"
}
],
"effects": [
"request"
],
"range": "<2.5.4",
"nodes": [
"node_modules/request/node_modules/form-data"
],
"fixAvailable": {
"name": "wdio-mediawiki",
"version": "6.3.2",
"isSemVerMajor": true
}
},
"glob": {
"name": "glob",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"@jest/reporters",
"@wdio/config",
"@wikimedia/mw-node-qunit",
"archiver-utils",
"jest-config",
"jest-runtime",
"js-beautify",
"mocha",
"rimraf",
"test-exclude"
],
"range": "3.0.0 - 10.5.0",
"nodes": [
"node_modules/@wdio/config/node_modules/glob",
"node_modules/@wdio/runner/node_modules/glob",
"node_modules/@wikimedia/mw-node-qunit/node_modules/glob",
"node_modules/archiver-utils/node_modules/glob",
"node_modules/glob",
"node_modules/js-beautify/node_modules/glob",
"node_modules/mocha/node_modules/glob"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"jest": {
"name": "jest",
"severity": "high",
"isDirect": true,
"via": [
"@jest/core",
"jest-cli"
],
"effects": [],
"range": ">=19.1.0-alpha.eed82034",
"nodes": [
"node_modules/jest"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"jest-circus": {
"name": "jest-circus",
"severity": "high",
"isDirect": false,
"via": [
"@jest/expect",
"jest-runtime",
"jest-snapshot"
],
"effects": [
"jest-config"
],
"range": ">=25.2.4",
"nodes": [
"node_modules/jest-circus"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"jest-cli": {
"name": "jest-cli",
"severity": "high",
"isDirect": false,
"via": [
"@jest/core",
"create-jest",
"jest-config"
],
"effects": [
"jest"
],
"range": ">=19.1.0-alpha.eed82034",
"nodes": [
"node_modules/jest-cli"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"jest-config": {
"name": "jest-config",
"severity": "high",
"isDirect": false,
"via": [
"babel-jest",
"glob",
"jest-circus",
"jest-runner"
],
"effects": [
"create-jest",
"jest-cli"
],
"range": ">=19.1.0-alpha.eed82034",
"nodes": [
"node_modules/jest-config"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"jest-resolve-dependencies": {
"name": "jest-resolve-dependencies",
"severity": "high",
"isDirect": false,
"via": [
"jest-snapshot"
],
"effects": [],
"range": ">=27.0.0-next.0",
"nodes": [
"node_modules/jest-resolve-dependencies"
],
"fixAvailable": true
},
"jest-runner": {
"name": "jest-runner",
"severity": "high",
"isDirect": false,
"via": [
"@jest/transform",
"jest-runtime"
],
"effects": [
"jest-config"
],
"range": ">=24.0.0-alpha.0",
"nodes": [
"node_modules/jest-runner"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"jest-runtime": {
"name": "jest-runtime",
"severity": "high",
"isDirect": false,
"via": [
"@jest/globals",
"@jest/transform",
"glob",
"jest-snapshot"
],
"effects": [
"jest-circus",
"jest-runner"
],
"range": ">=24.0.0-alpha.0",
"nodes": [
"node_modules/jest-runtime"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"jest-snapshot": {
"name": "jest-snapshot",
"severity": "high",
"isDirect": false,
"via": [
"@jest/transform"
],
"effects": [
"@jest/core",
"@jest/expect",
"jest-circus",
"jest-resolve-dependencies",
"jest-runtime"
],
"range": ">=27.0.0-next.0",
"nodes": [
"node_modules/jest-snapshot"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"js-beautify": {
"name": "js-beautify",
"severity": "high",
"isDirect": false,
"via": [
"editorconfig",
"glob"
],
"effects": [
"@vue/test-utils"
],
"range": ">=1.8.9",
"nodes": [
""
],
"fixAvailable": {
"name": "@vue/test-utils",
"version": "2.4.0",
"isSemVerMajor": true
}
},
"minimatch": {
"name": "minimatch",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1113371,
"name": "minimatch",
"dependency": "minimatch",
"title": "minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern",
"url": "https://github.com/advisories/GHSA-3ppc-4f35-3m26",
"severity": "high",
"cwe": [
"CWE-1333"
],
"cvss": {
"score": 0,
"vectorString": null
},
"range": "<10.2.1"
}
],
"effects": [
"@eslint/eslintrc",
"@humanwhocodes/config-array",
"@typescript-eslint/typescript-estree",
"editorconfig",
"eslint",
"eslint-plugin-n",
"filelist",
"glob",
"mocha",
"multimatch",
"readdir-glob",
"recursive-readdir",
"test-exclude"
],
"range": "<10.2.1",
"nodes": [
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"node_modules/editorconfig/node_modules/minimatch",
"node_modules/minimatch",
"node_modules/mocha/node_modules/minimatch"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"mocha": {
"name": "mocha",
"severity": "high",
"isDirect": false,
"via": [
"glob",
"minimatch"
],
"effects": [
"@wdio/mocha-framework"
],
"range": ">=1.10.0",
"nodes": [
"node_modules/mocha"
],
"fixAvailable": false
},
"multimatch": {
"name": "multimatch",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"doiuse"
],
"range": "<=7.0.0",
"nodes": [
"node_modules/multimatch"
],
"fixAvailable": {
"name": "stylelint-config-wikimedia",
"version": "0.10.1",
"isSemVerMajor": true
}
},
"mwbot": {
"name": "mwbot",
"severity": "moderate",
"isDirect": false,
"via": [
"request"
],
"effects": [
"wdio-mediawiki"
],
"range": ">=0.1.6",
"nodes": [
"node_modules/mwbot"
],
"fixAvailable": {
"name": "wdio-mediawiki",
"version": "6.3.2",
"isSemVerMajor": true
}
},
"qs": {
"name": "qs",
"severity": "high",
"isDirect": false,
"via": [
{
"source": 1113132,
"name": "qs",
"dependency": "qs",
"title": "qs's arrayLimit bypass in its bracket notation allows DoS via memory exhaustion",
"url": "https://github.com/advisories/GHSA-6rw7-vpxm-498p",
"severity": "high",
"cwe": [
"CWE-20"
],
"cvss": {
"score": 7.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
},
"range": "<6.14.1"
}
],
"effects": [
"request"
],
"range": "<6.14.1",
"nodes": [
""
],
"fixAvailable": {
"name": "wdio-mediawiki",
"version": "6.3.2",
"isSemVerMajor": true
}
},
"readdir-glob": {
"name": "readdir-glob",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"archiver"
],
"range": "<=2.0.1",
"nodes": [
"node_modules/readdir-glob"
],
"fixAvailable": false
},
"recursive-readdir": {
"name": "recursive-readdir",
"severity": "high",
"isDirect": false,
"via": [
"minimatch"
],
"effects": [
"create-wdio"
],
"range": ">=1.2.0",
"nodes": [
"node_modules/recursive-readdir"
],
"fixAvailable": {
"name": "@wdio/cli",
"version": "9.16.2",
"isSemVerMajor": true
}
},
"request": {
"name": "request",
"severity": "critical",
"isDirect": false,
"via": [
{
"source": 1096727,
"name": "request",
"dependency": "request",
"title": "Server-Side Request Forgery in Request",
"url": "https://github.com/advisories/GHSA-p8p7-x288-28g6",
"severity": "moderate",
"cwe": [
"CWE-918"
],
"cvss": {
"score": 6.1,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
},
"range": "<=2.88.2"
},
"form-data",
"qs",
"tough-cookie"
],
"effects": [
"mwbot"
],
"range": "*",
"nodes": [
"node_modules/request"
],
"fixAvailable": {
"name": "wdio-mediawiki",
"version": "6.3.2",
"isSemVerMajor": true
}
},
"rimraf": {
"name": "rimraf",
"severity": "high",
"isDirect": false,
"via": [
"glob"
],
"effects": [
"flat-cache"
],
"range": "2.3.0 - 3.0.2 || 4.2.0 - 5.0.10",
"nodes": [
"node_modules/rimraf"
],
"fixAvailable": {
"name": "eslint-config-wikimedia",
"version": "0.8.1",
"isSemVerMajor": true
}
},
"stylelint-config-wikimedia": {
"name": "stylelint-config-wikimedia",
"severity": "high",
"isDirect": true,
"via": [
"stylelint-no-unsupported-browser-features"
],
"effects": [],
"range": ">=0.10.2",
"nodes": [
"node_modules/stylelint-config-wikimedia"
],
"fixAvailable": {
"name": "stylelint-config-wikimedia",
"version": "0.10.1",
"isSemVerMajor": true
}
},
"stylelint-no-unsupported-browser-features": {
"name": "stylelint-no-unsupported-browser-features",
"severity": "high",
"isDirect": false,
"via": [
"doiuse"
],
"effects": [
"stylelint-config-wikimedia"
],
"range": "*",
"nodes": [
"node_modules/stylelint-no-unsupported-browser-features"
],
"fixAvailable": {
"name": "stylelint-config-wikimedia",
"version": "0.10.1",
"isSemVerMajor": true
}
},
"test-exclude": {
"name": "test-exclude",
"severity": "high",
"isDirect": false,
"via": [
"glob",
"minimatch"
],
"effects": [
"babel-plugin-istanbul"
],
"range": "4.2.2 || 5.0.0 - 7.0.2",
"nodes": [
"node_modules/test-exclude"
],
"fixAvailable": {
"name": "jest",
"version": "25.0.0",
"isSemVerMajor": true
}
},
"tough-cookie": {
"name": "tough-cookie",
"severity": "moderate",
"isDirect": false,
"via": [
{
"source": 1097682,
"name": "tough-cookie",
"dependency": "tough-cookie",
"title": "tough-cookie Prototype Pollution vulnerability",
"url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3",
"severity": "moderate",
"cwe": [
"CWE-1321"
],
"cvss": {
"score": 6.5,
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"
},
"range": "<4.1.3"
}
],
"effects": [
"request"
],
"range": "<4.1.3",
"nodes": [
"node_modules/request/node_modules/tough-cookie"
],
"fixAvailable": {
"name": "wdio-mediawiki",
"version": "6.3.2",
"isSemVerMajor": true
}
},
"wdio-mediawiki": {
"name": "wdio-mediawiki",
"severity": "moderate",
"isDirect": true,
"via": [
"mwbot"
],
"effects": [],
"range": "<=5.1.0",
"nodes": [
"node_modules/wdio-mediawiki"
],
"fixAvailable": {
"name": "wdio-mediawiki",
"version": "6.3.2",
"isSemVerMajor": true
}
},
"webdriver": {
"name": "webdriver",
"severity": "high",
"isDirect": false,
"via": [
"@wdio/config"
],
"effects": [
"@wdio/runner"
],
"range": ">=5.0.0-alpha.2",
"nodes": [
"node_modules/@wdio/runner/node_modules/webdriver",
"node_modules/webdriver"
],
"fixAvailable": false
},
"webdriverio": {
"name": "webdriverio",
"severity": "high",
"isDirect": false,
"via": [
"@wdio/config",
"archiver",
"webdriver"
],
"effects": [
"@wdio/globals",
"expect-webdriverio"
],
"range": ">=5.0.0-alpha.2",
"nodes": [
"node_modules/@wdio/runner/node_modules/webdriverio",
"node_modules/webdriverio"
],
"fixAvailable": false
},
"zip-stream": {
"name": "zip-stream",
"severity": "high",
"isDirect": false,
"via": [
"archiver-utils"
],
"effects": [],
"range": "0.8.0 - 6.0.1",
"nodes": [
"node_modules/zip-stream"
],
"fixAvailable": true
}
},
"metadata": {
"vulnerabilities": {
"info": 0,
"low": 0,
"moderate": 4,
"high": 64,
"critical": 3,
"total": 71
},
"dependencies": {
"prod": 1,
"dev": 1457,
"optional": 42,
"peer": 8,
"peerOptional": 0,
"total": 1457
}
}
}
}
--- end ---
{"added": 1457, "removed": 0, "changed": 0, "audited": 1458, "funding": 214, "audit": {"auditReportVersion": 2, "vulnerabilities": {"@eslint/eslintrc": {"name": "@eslint/eslintrc", "severity": "high", "isDirect": false, "via": ["minimatch"], "effects": ["eslint", "eslint-plugin-unicorn"], "range": "0.0.1 || >=0.1.1", "nodes": ["", "node_modules/@eslint/eslintrc"], "fixAvailable": {"name": "eslint-config-wikimedia", "version": "0.8.1", "isSemVerMajor": true}}, "@humanwhocodes/config-array": {"name": "@humanwhocodes/config-array", "severity": "high", "isDirect": false, "via": ["minimatch"], "effects": ["eslint"], "range": "*", "nodes": ["node_modules/@humanwhocodes/config-array"], "fixAvailable": {"name": "eslint-config-wikimedia", "version": "0.8.1", "isSemVerMajor": true}}, "@jest/core": {"name": "@jest/core", "severity": "high", "isDirect": false, "via": ["@jest/reporters", "@jest/transform", "jest-config", "jest-resolve-dependencies", "jest-runner", "jest-runtime", "jest-snapshot"], "effects": ["jest", "jest-cli"], "range": "*", "nodes": ["node_modules/@jest/core"], "fixAvailable": {"name": "jest", "version": "25.0.0", "isSemVerMajor": true}}, "@jest/expect": {"name": "@jest/expect", "severity": "high", "isDirect": false, "via": ["jest-snapshot"], "effects": ["@jest/globals", "jest-circus"], "range": "*", "nodes": ["node_modules/@jest/expect"], "fixAvailable": {"name": "jest", "version": "25.0.0", "isSemVerMajor": true}}, "@jest/globals": {"name": "@jest/globals", "severity": "high", "isDirect": false, "via": ["@jest/expect"], "effects": ["jest-runtime"], "range": ">=28.0.0-alpha.0", "nodes": ["node_modules/@jest/globals"], "fixAvailable": {"name": "jest", "version": "25.0.0", "isSemVerMajor": true}}, "@jest/reporters": {"name": "@jest/reporters", "severity": "high", "isDirect": false, "via": ["@jest/transform", "glob"], "effects": ["@jest/core"], "range": "*", "nodes": ["node_modules/@jest/reporters"], "fixAvailable": {"name": "jest", "version": "25.0.0", "isSemVerMajor": true}}, "@jest/transform": {"name": "@jest/transform", "severity": "high", "isDirect": false, "via": ["babel-plugin-istanbul"], "effects": ["babel-jest", "jest-runner", "jest-runtime", "jest-snapshot"], "range": "*", "nodes": ["node_modules/@jest/transform"], "fixAvailable": {"name": "jest", "version": "25.0.0", "isSemVerMajor": true}}, "@typescript-eslint/eslint-plugin": {"name": "@typescript-eslint/eslint-plugin", "severity": "high", "isDirect": false, "via": ["@typescript-eslint/type-utils", "@typescript-eslint/utils", "eslint"], "effects": [], "range": "<=8.55.1-alpha.3", "nodes": ["node_modules/@typescript-eslint/eslint-plugin"], "fixAvailable": true}, "@typescript-eslint/parser": {"name": "@typescript-eslint/parser", "severity": "high", "isDirect": false, "via": ["@typescript-eslint/typescript-estree", "eslint"], "effects": ["eslint-config-wikimedia"], "range": "1.1.1-alpha.0 - 8.56.1-alpha.2", "nodes": ["node_modules/@typescript-eslint/parser"], "fixAvailable": {"name": "eslint-config-wikimedia", "version": "0.8.1", "isSemVerMajor": true}}, "@typescript-eslint/type-utils": {"name": "@typescript-eslint/type-utils", "severity": "high", "isDirect": false, "via": ["@typescript-eslint/typescript-estree", "@typescript-eslint/utils", "eslint"], "effects": ["@typescript-eslint/eslint-plugin"], "range": "5.9.2-alpha.0 - 8.56.1-alpha.2", "nodes": ["node_modules/@typescript-eslint/type-utils"], "fixAvailable": true}, "@typescript-eslint/typescript-estree": {"name": "@typescript-eslint/typescript-estree", "severity": "high", "isDirect": false, "via": ["minimatch"], "effects": ["@typescript-eslint/parser", "@typescript-eslint/type-utils", "@typescript-eslint/utils"], "range": "6.16.0 - 8.56.1-alpha.2", "nodes": ["node_modules/@typescript-eslint/typescript-estree"], "fixAvailable": {"name": "eslint-config-wikimedia", "version": "0.8.1", "isSemVerMajor": true}}, "@typescript-eslint/utils": {"name": "@typescript-eslint/utils", "severity": "high", "isDirect": false, "via": ["@typescript-eslint/typescript-estree", "eslint"], "effects": ["@typescript-eslint/eslint-plugin", "@typescript-eslint/type-utils"], "range": "<=8.56.1-alpha.2", "nodes": ["node_modules/@typescript-eslint/utils"], "fixAvailable": true}, "@vue/test-utils": {"name": "@vue/test-utils", "severity": "high", "isDirect": true, "via": ["js-beautify"], "effects": [], "range": ">=2.4.1", "nodes": ["node_modules/@vue/test-utils"], "fixAvailable": {"name": "@vue/test-utils", "version": "2.4.0", "isSemVerMajor": true}}, "@vue/vue3-jest": {"name": "@vue/vue3-jest", "severity": "high", "isDirect": true, "via": ["babel-jest", "jest"], "effects": [], "range": "*", "nodes": ["node_modules/@vue/vue3-jest"], "fixAvailable": false}, "@wdio/cli": {"name": "@wdio/cli", "severity": "high", "isDirect": true, "via": ["@wdio/config", "@wdio/globals", "create-wdio", "webdriverio"], "effects": [], "range": "*", "nodes": ["node_modules/@wdio/cli"], "fixAvailable": {"name": "@wdio/cli", "version": "9.16.2", "isSemVerMajor": true}}, "@wdio/config": {"name": "@wdio/config", "severity": "high", "isDirect": false, "via": ["glob"], "effects": ["@wdio/cli", "@wdio/runner", "webdriver", "webdriverio"], "range": "*", "nodes": ["node_modules/@wdio/config", "node_modules/@wdio/runner/node_modules/@wdio/config"], "fixAvailable": false}, "@wdio/globals": {"name": "@wdio/globals", "severity": "high", "isDirect": false, "via": ["expect-webdriverio", "webdriverio"], "effects": ["@wdio/cli", "@wdio/runner"], "range": "*", "nodes": ["node_modules/@wdio/cli/node_modules/@wdio/globals", "node_modules/@wdio/globals"], "fixAvailable": false}, "@wdio/local-runner": {"name": "@wdio/local-runner", "severity": "high", "isDirect": true, "via": ["@wdio/runner", "expect-webdriverio"], "effects": [], "range": "*", "nodes": ["node_modules/@wdio/local-runner"], "fixAvailable": false}, "@wdio/mocha-framework": {"name": "@wdio/mocha-framework", "severity": "high", "isDirect": true, "via": ["mocha"], "effects": [], "range": "*", "nodes": ["node_modules/@wdio/mocha-framework"], "fixAvailable": false}, "@wdio/runner": {"name": "@wdio/runner", "severity": "high", "isDirect": false, "via": ["@wdio/config", "@wdio/globals", "expect-webdriverio", "webdriver", "webdriverio"], "effects": ["@wdio/local-runner"], "range": "*", "nodes": ["node_modules/@wdio/runner"], "fixAvailable": false}, "@wikimedia/mw-node-qunit": {"name": "@wikimedia/mw-node-qunit", "severity": "high", "isDirect": true, "via": ["glob"], "effects": [], "range": "*", "nodes": ["node_modules/@wikimedia/mw-node-qunit"], "fixAvailable": false}, "ajv": {"name": "ajv", "severity": "moderate", "isDirect": false, "via": [{"source": 1113398, "name": "ajv", "dependency": "ajv", "title": "ajv has ReDoS when using `$data` option", "url": "https://github.com/advisories/GHSA-2g4f-4pwh-qvx6", "severity": "moderate", "cwe": ["CWE-400"], "cvss": {"score": 0, "vectorString": null}, "range": "<6.14.0"}, {"source": 1113399, "name": "ajv", "dependency": "ajv", "title": "ajv has ReDoS when using `$data` option", "url": "https://github.com/advisories/GHSA-2g4f-4pwh-qvx6", "severity": "moderate", "cwe": ["CWE-400"], "cvss": {"score": 0, "vectorString": null}, "range": ">=7.0.0-alpha.0 <8.18.0"}], "effects": [], "range": "<6.14.0 || >=7.0.0-alpha.0 <8.18.0", "nodes": ["", ""], "fixAvailable": true}, "archiver": {"name": "archiver", "severity": "high", "isDirect": false, "via": ["archiver-utils", "readdir-glob", "zip-stream"], "effects": ["webdriverio"], "range": ">=0.20.0", "nodes": ["node_modules/archiver"], "fixAvailable": false}, "archiver-utils": {"name": "archiver-utils", "severity": "high", "isDirect": false, "via": ["glob"], "effects": ["archiver", "zip-stream"], "range": ">=0.2.0", "nodes": ["node_modules/archiver-utils"], "fixAvailable": false}, "babel-jest": {"name": "babel-jest", "severity": "high", "isDirect": true, "via": ["@jest/transform", "babel-plugin-istanbul"], "effects": ["@vue/vue3-jest", "jest-config"], "range": ">=24.0.0-alpha.0", "nodes": ["node_modules/babel-jest"], "fixAvailable": false}, "babel-plugin-istanbul": {"name": "babel-plugin-istanbul", "severity": "high", "isDirect": false, "via": ["test-exclude"], "effects": ["@jest/transform", "babel-jest"], "range": ">=5.0.1", "nodes": ["node_modules/babel-plugin-istanbul"], "fixAvailable": {"name": "jest", "version": "25.0.0", "isSemVerMajor": true}}, "create-jest": {"name": "create-jest", "severity": "high", "isDirect": false, "via": ["jest-config"], "effects": ["jest-cli"], "range": ">=29.7.0", "nodes": ["node_modules/create-jest"], "fixAvailable": {"name": "jest", "version": "25.0.0", "isSemVerMajor": true}}, "create-wdio": {"name": "create-wdio", "severity": "high", "isDirect": false, "via": ["recursive-readdir"], "effects": ["@wdio/cli"], "range": ">=9.17.0", "nodes": ["node_modules/create-wdio"], "fixAvailable": {"name": "@wdio/cli", "version": "9.16.2", "isSemVerMajor": true}}, "doiuse": {"name": "doiuse", "severity": "high", "isDirect": false, "via": ["multimatch"], "effects": ["stylelint-no-unsupported-browser-features"], "range": ">=2.2.0", "nodes": [""], "fixAvailable": {"name": "stylelint-config-wikimedia", "version": "0.10.1", "isSemVerMajor": true}}, "editorconfig": {"name": "editorconfig", "severity": "high", "isDirect": false, "via": ["minimatch"], "effects": ["js-beautify"], "range": ">=1.0.0", "nodes": ["node_modules/editorconfig"], "fixAvailable": {"name": "@vue/test-utils", "version": "2.4.0", "isSemVerMajor": true}}, "eslint": {"name": "eslint", "severity": "high", "isDirect": false, "via": ["@eslint/eslintrc", "@humanwhocodes/config-array", "file-entry-cache", "minimatch"], "effects": ["@typescript-eslint/eslint-plugin", "@typescript-eslint/parser", "@typescript-eslint/type-utils", "@typescript-eslint/utils", "eslint-config-wikimedia", "eslint-plugin-jest", "eslint-plugin-jsdoc", "eslint-plugin-vue"], "range": "0.7.1 - 2.0.0-rc.1 || 4.1.0 - 10.0.0-rc.2", "nodes": ["node_modules/eslint"], "fixAvailable": {"name": "eslint-config-wikimedia", "version": "0.8.1", "isSemVerMajor": true}}, "eslint-config-wikimedia": {"name": "eslint-config-wikimedia", "severity": "high", "isDirect": true, "via": ["@typescript-eslint/eslint-plugin", "@typescript-eslint/parser", "eslint", "eslint-plugin-jest", "eslint-plugin-jsdoc", "eslint-plugin-unicorn", "eslint-plugin-vue"], "effects": [], "range": ">=0.9.0", "nodes": ["node_modules/eslint-config-wikimedia"], "fixAvailable": {"name": "eslint-config-wikimedia", "version": "0.8.1", "isSemVerMajor": true}}, "eslint-plugin-jest": {"name": "eslint-plugin-jest", "severity": "high", "isDirect": false, "via": ["eslint"], "effects": ["eslint-config-wikimedia"], "range": "25.0.1 - 29.12.2", "nodes": [""], "fixAvailable": {"name": "eslint-config-wikimedia", "version": "0.8.1", "isSemVerMajor": true}}, "eslint-plugin-jsdoc": {"name": "eslint-plugin-jsdoc", "severity": "high", "isDirect": false, "via": ["eslint"], "effects": ["eslint-config-wikimedia"], "range": "8.4.4 - 62.6.1", "nodes": ["node_modules/eslint-plugin-jsdoc"], "fixAvailable": {"name": "eslint-config-wikimedia", "version": "0.8.1", "isSemVerMajor": true}}, "eslint-plugin-mediawiki": {"name": "eslint-plugin-mediawiki", "severity": "high", "isDirect": false, "via": ["eslint-plugin-vue"], "effects": [], "range": "0.2.3 - 0.7.0", "nodes": [""], "fixAvailable": true}, "eslint-plugin-n": {"name": "eslint-plugin-n", "severity": "high", "isDirect": false, "via": ["minimatch"], "effects": [], "range": "<=17.21.1", "nodes": [""], "fixAvailable": true}, "eslint-plugin-unicorn": {"name": "eslint-plugin-unicorn", "severity": "high", "isDirect": false, "via": ["@eslint/eslintrc"], "effects": ["eslint-config-wikimedia"], "range": "50.0.0 - 54.0.0", "nodes": ["node_modules/eslint-plugin-unicorn"], "fixAvailable": {"name": "eslint-config-wikimedia", "version": "0.8.1", "isSemVerMajor": true}}, "eslint-plugin-vue": {"name": "eslint-plugin-vue", "severity": "high", "isDirect": true, "via": ["eslint"], "effects": ["eslint-config-wikimedia", "eslint-plugin-mediawiki"], "range": "5.0.0-beta.0 - 10.7.0", "nodes": ["", "node_modules/eslint-plugin-vue"], "fixAvailable": {"name": "eslint-plugin-vue", "version": "10.8.0", "isSemVerMajor": true}}, "expect-webdriverio": {"name": "expect-webdriverio", "severity": "high", "isDirect": false, "via": ["@wdio/globals", "webdriverio"], "effects": ["@wdio/globals", "@wdio/local-runner", "@wdio/runner"], "range": "4.0.0-alpha.0 - 4.0.0-alpha.6 || >=4.0.1", "nodes": ["", "node_modules/expect-webdriverio"], "fixAvailable": false}, "fast-xml-parser": {"name": "fast-xml-parser", "severity": "critical", "isDirect": false, "via": [{"source": 1113153, "name": "fast-xml-parser", "dependency": "fast-xml-parser", "title": "fast-xml-parser has RangeError DoS Numeric Entities Bug", "url": "https://github.com/advisories/GHSA-37qj-frw5-hhjh", "severity": "high", "cwe": ["CWE-20", "CWE-248"], "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": ">=5.0.9 <=5.3.3"}, {"source": 1113331, "name": "fast-xml-parser", "dependency": "fast-xml-parser", "title": "fast-xml-parser affected by DoS through entity expansion in DOCTYPE (no expansion limit)", "url": "https://github.com/advisories/GHSA-jmr7-xgp7-cmfj", "severity": "high", "cwe": ["CWE-776"], "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": ">=4.1.3 <5.3.6"}, {"source": 1113407, "name": "fast-xml-parser", "dependency": "fast-xml-parser", "title": "fast-xml-parser has an entity encoding bypass via regex injection in DOCTYPE entity names", "url": "https://github.com/advisories/GHSA-m7jm-9gc2-mpf2", "severity": "critical", "cwe": ["CWE-185"], "cvss": {"score": 9.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:H/A:N"}, "range": ">=4.1.3 <5.3.5"}], "effects": [], "range": "4.1.3 - 5.3.5", "nodes": [""], "fixAvailable": true}, "file-entry-cache": {"name": "file-entry-cache", "severity": "high", "isDirect": false, "via": ["flat-cache"], "effects": ["eslint"], "range": "4.0.0 - 7.0.2", "nodes": ["node_modules/file-entry-cache"], "fixAvailable": {"name": "eslint-config-wikimedia", "version": "0.8.1", "isSemVerMajor": true}}, "filelist": {"name": "filelist", "severity": "high", "isDirect": false, "via": ["minimatch"], "effects": [], "range": "0.0.2 - 1.0.4", "nodes": [""], "fixAvailable": true}, "flat-cache": {"name": "flat-cache", "severity": "high", "isDirect": false, "via": ["rimraf"], "effects": ["file-entry-cache"], "range": "1.3.4 - 4.0.0", "nodes": ["node_modules/flat-cache"], "fixAvailable": {"name": "eslint-config-wikimedia", "version": "0.8.1", "isSemVerMajor": true}}, "form-data": {"name": "form-data", "severity": "critical", "isDirect": false, "via": [{"source": 1109540, "name": "form-data", "dependency": "form-data", "title": "form-data uses unsafe random function in form-data for choosing boundary", "url": "https://github.com/advisories/GHSA-fjxv-7rqg-78g4", "severity": "critical", "cwe": ["CWE-330"], "cvss": {"score": 0, "vectorString": null}, "range": "<2.5.4"}], "effects": ["request"], "range": "<2.5.4", "nodes": ["node_modules/request/node_modules/form-data"], "fixAvailable": {"name": "wdio-mediawiki", "version": "6.3.2", "isSemVerMajor": true}}, "glob": {"name": "glob", "severity": "high", "isDirect": false, "via": ["minimatch"], "effects": ["@jest/reporters", "@wdio/config", "@wikimedia/mw-node-qunit", "archiver-utils", "jest-config", "jest-runtime", "js-beautify", "mocha", "rimraf", "test-exclude"], "range": "3.0.0 - 10.5.0", "nodes": ["node_modules/@wdio/config/node_modules/glob", "node_modules/@wdio/runner/node_modules/glob", "node_modules/@wikimedia/mw-node-qunit/node_modules/glob", "node_modules/archiver-utils/node_modules/glob", "node_modules/glob", "node_modules/js-beautify/node_modules/glob", "node_modules/mocha/node_modules/glob"], "fixAvailable": {"name": "eslint-config-wikimedia", "version": "0.8.1", "isSemVerMajor": true}}, "jest": {"name": "jest", "severity": "high", "isDirect": true, "via": ["@jest/core", "jest-cli"], "effects": [], "range": ">=19.1.0-alpha.eed82034", "nodes": ["node_modules/jest"], "fixAvailable": {"name": "jest", "version": "25.0.0", "isSemVerMajor": true}}, "jest-circus": {"name": "jest-circus", "severity": "high", "isDirect": false, "via": ["@jest/expect", "jest-runtime", "jest-snapshot"], "effects": ["jest-config"], "range": ">=25.2.4", "nodes": ["node_modules/jest-circus"], "fixAvailable": {"name": "jest", "version": "25.0.0", "isSemVerMajor": true}}, "jest-cli": {"name": "jest-cli", "severity": "high", "isDirect": false, "via": ["@jest/core", "create-jest", "jest-config"], "effects": ["jest"], "range": ">=19.1.0-alpha.eed82034", "nodes": ["node_modules/jest-cli"], "fixAvailable": {"name": "jest", "version": "25.0.0", "isSemVerMajor": true}}, "jest-config": {"name": "jest-config", "severity": "high", "isDirect": false, "via": ["babel-jest", "glob", "jest-circus", "jest-runner"], "effects": ["create-jest", "jest-cli"], "range": ">=19.1.0-alpha.eed82034", "nodes": ["node_modules/jest-config"], "fixAvailable": {"name": "jest", "version": "25.0.0", "isSemVerMajor": true}}, "jest-resolve-dependencies": {"name": "jest-resolve-dependencies", "severity": "high", "isDirect": false, "via": ["jest-snapshot"], "effects": [], "range": ">=27.0.0-next.0", "nodes": ["node_modules/jest-resolve-dependencies"], "fixAvailable": true}, "jest-runner": {"name": "jest-runner", "severity": "high", "isDirect": false, "via": ["@jest/transform", "jest-runtime"], "effects": ["jest-config"], "range": ">=24.0.0-alpha.0", "nodes": ["node_modules/jest-runner"], "fixAvailable": {"name": "jest", "version": "25.0.0", "isSemVerMajor": true}}, "jest-runtime": {"name": "jest-runtime", "severity": "high", "isDirect": false, "via": ["@jest/globals", "@jest/transform", "glob", "jest-snapshot"], "effects": ["jest-circus", "jest-runner"], "range": ">=24.0.0-alpha.0", "nodes": ["node_modules/jest-runtime"], "fixAvailable": {"name": "jest", "version": "25.0.0", "isSemVerMajor": true}}, "jest-snapshot": {"name": "jest-snapshot", "severity": "high", "isDirect": false, "via": ["@jest/transform"], "effects": ["@jest/core", "@jest/expect", "jest-circus", "jest-resolve-dependencies", "jest-runtime"], "range": ">=27.0.0-next.0", "nodes": ["node_modules/jest-snapshot"], "fixAvailable": {"name": "jest", "version": "25.0.0", "isSemVerMajor": true}}, "js-beautify": {"name": "js-beautify", "severity": "high", "isDirect": false, "via": ["editorconfig", "glob"], "effects": ["@vue/test-utils"], "range": ">=1.8.9", "nodes": [""], "fixAvailable": {"name": "@vue/test-utils", "version": "2.4.0", "isSemVerMajor": true}}, "minimatch": {"name": "minimatch", "severity": "high", "isDirect": false, "via": [{"source": 1113371, "name": "minimatch", "dependency": "minimatch", "title": "minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern", "url": "https://github.com/advisories/GHSA-3ppc-4f35-3m26", "severity": "high", "cwe": ["CWE-1333"], "cvss": {"score": 0, "vectorString": null}, "range": "<10.2.1"}], "effects": ["@eslint/eslintrc", "@humanwhocodes/config-array", "@typescript-eslint/typescript-estree", "editorconfig", "eslint", "eslint-plugin-n", "filelist", "glob", "mocha", "multimatch", "readdir-glob", "recursive-readdir", "test-exclude"], "range": "<10.2.1", "nodes": ["", "", "", "", "", "", "", "", "", "", "node_modules/editorconfig/node_modules/minimatch", "node_modules/minimatch", "node_modules/mocha/node_modules/minimatch"], "fixAvailable": {"name": "eslint-config-wikimedia", "version": "0.8.1", "isSemVerMajor": true}}, "mocha": {"name": "mocha", "severity": "high", "isDirect": false, "via": ["glob", "minimatch"], "effects": ["@wdio/mocha-framework"], "range": ">=1.10.0", "nodes": ["node_modules/mocha"], "fixAvailable": false}, "multimatch": {"name": "multimatch", "severity": "high", "isDirect": false, "via": ["minimatch"], "effects": ["doiuse"], "range": "<=7.0.0", "nodes": ["node_modules/multimatch"], "fixAvailable": {"name": "stylelint-config-wikimedia", "version": "0.10.1", "isSemVerMajor": true}}, "mwbot": {"name": "mwbot", "severity": "moderate", "isDirect": false, "via": ["request"], "effects": ["wdio-mediawiki"], "range": ">=0.1.6", "nodes": ["node_modules/mwbot"], "fixAvailable": {"name": "wdio-mediawiki", "version": "6.3.2", "isSemVerMajor": true}}, "qs": {"name": "qs", "severity": "high", "isDirect": false, "via": [{"source": 1113132, "name": "qs", "dependency": "qs", "title": "qs's arrayLimit bypass in its bracket notation allows DoS via memory exhaustion", "url": "https://github.com/advisories/GHSA-6rw7-vpxm-498p", "severity": "high", "cwe": ["CWE-20"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": "<6.14.1"}], "effects": ["request"], "range": "<6.14.1", "nodes": [""], "fixAvailable": {"name": "wdio-mediawiki", "version": "6.3.2", "isSemVerMajor": true}}, "readdir-glob": {"name": "readdir-glob", "severity": "high", "isDirect": false, "via": ["minimatch"], "effects": ["archiver"], "range": "<=2.0.1", "nodes": ["node_modules/readdir-glob"], "fixAvailable": false}, "recursive-readdir": {"name": "recursive-readdir", "severity": "high", "isDirect": false, "via": ["minimatch"], "effects": ["create-wdio"], "range": ">=1.2.0", "nodes": ["node_modules/recursive-readdir"], "fixAvailable": {"name": "@wdio/cli", "version": "9.16.2", "isSemVerMajor": true}}, "request": {"name": "request", "severity": "critical", "isDirect": false, "via": [{"source": 1096727, "name": "request", "dependency": "request", "title": "Server-Side Request Forgery in Request", "url": "https://github.com/advisories/GHSA-p8p7-x288-28g6", "severity": "moderate", "cwe": ["CWE-918"], "cvss": {"score": 6.1, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"}, "range": "<=2.88.2"}, "form-data", "qs", "tough-cookie"], "effects": ["mwbot"], "range": "*", "nodes": ["node_modules/request"], "fixAvailable": {"name": "wdio-mediawiki", "version": "6.3.2", "isSemVerMajor": true}}, "rimraf": {"name": "rimraf", "severity": "high", "isDirect": false, "via": ["glob"], "effects": ["flat-cache"], "range": "2.3.0 - 3.0.2 || 4.2.0 - 5.0.10", "nodes": ["node_modules/rimraf"], "fixAvailable": {"name": "eslint-config-wikimedia", "version": "0.8.1", "isSemVerMajor": true}}, "stylelint-config-wikimedia": {"name": "stylelint-config-wikimedia", "severity": "high", "isDirect": true, "via": ["stylelint-no-unsupported-browser-features"], "effects": [], "range": ">=0.10.2", "nodes": ["node_modules/stylelint-config-wikimedia"], "fixAvailable": {"name": "stylelint-config-wikimedia", "version": "0.10.1", "isSemVerMajor": true}}, "stylelint-no-unsupported-browser-features": {"name": "stylelint-no-unsupported-browser-features", "severity": "high", "isDirect": false, "via": ["doiuse"], "effects": ["stylelint-config-wikimedia"], "range": "*", "nodes": ["node_modules/stylelint-no-unsupported-browser-features"], "fixAvailable": {"name": "stylelint-config-wikimedia", "version": "0.10.1", "isSemVerMajor": true}}, "test-exclude": {"name": "test-exclude", "severity": "high", "isDirect": false, "via": ["glob", "minimatch"], "effects": ["babel-plugin-istanbul"], "range": "4.2.2 || 5.0.0 - 7.0.2", "nodes": ["node_modules/test-exclude"], "fixAvailable": {"name": "jest", "version": "25.0.0", "isSemVerMajor": true}}, "tough-cookie": {"name": "tough-cookie", "severity": "moderate", "isDirect": false, "via": [{"source": 1097682, "name": "tough-cookie", "dependency": "tough-cookie", "title": "tough-cookie Prototype Pollution vulnerability", "url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3", "severity": "moderate", "cwe": ["CWE-1321"], "cvss": {"score": 6.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"}, "range": "<4.1.3"}], "effects": ["request"], "range": "<4.1.3", "nodes": ["node_modules/request/node_modules/tough-cookie"], "fixAvailable": {"name": "wdio-mediawiki", "version": "6.3.2", "isSemVerMajor": true}}, "wdio-mediawiki": {"name": "wdio-mediawiki", "severity": "moderate", "isDirect": true, "via": ["mwbot"], "effects": [], "range": "<=5.1.0", "nodes": ["node_modules/wdio-mediawiki"], "fixAvailable": {"name": "wdio-mediawiki", "version": "6.3.2", "isSemVerMajor": true}}, "webdriver": {"name": "webdriver", "severity": "high", "isDirect": false, "via": ["@wdio/config"], "effects": ["@wdio/runner"], "range": ">=5.0.0-alpha.2", "nodes": ["node_modules/@wdio/runner/node_modules/webdriver", "node_modules/webdriver"], "fixAvailable": false}, "webdriverio": {"name": "webdriverio", "severity": "high", "isDirect": false, "via": ["@wdio/config", "archiver", "webdriver"], "effects": ["@wdio/globals", "expect-webdriverio"], "range": ">=5.0.0-alpha.2", "nodes": ["node_modules/@wdio/runner/node_modules/webdriverio", "node_modules/webdriverio"], "fixAvailable": false}, "zip-stream": {"name": "zip-stream", "severity": "high", "isDirect": false, "via": ["archiver-utils"], "effects": [], "range": "0.8.0 - 6.0.1", "nodes": ["node_modules/zip-stream"], "fixAvailable": true}}, "metadata": {"vulnerabilities": {"info": 0, "low": 0, "moderate": 4, "high": 64, "critical": 3, "total": 71}, "dependencies": {"prod": 1, "dev": 1457, "optional": 42, "peer": 8, "peerOptional": 0, "total": 1457}}}}
$ /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 ERESOLVE overriding peer dependency
npm WARN While resolving: @wdio/globals@9.17.0
npm WARN Found: peer @wdio/globals@"^9.0.0" from the root project
npm WARN
npm WARN Could not resolve dependency:
npm WARN peer @wdio/globals@"^9.0.0" from the root project
npm WARN ERESOLVE overriding peer dependency
npm WARN While resolving: @wdio/globals@9.17.0
npm WARN Found: peer @wdio/logger@"^9.0.0" from the root project
npm WARN
npm WARN Could not resolve dependency:
npm WARN peer @wdio/logger@"^9.0.0" from the root project
npm WARN ERESOLVE overriding peer dependency
npm WARN While resolving: @wdio/globals@9.17.0
npm WARN Found: peer webdriverio@"^9.0.0" from the root project
npm WARN
npm WARN Could not resolve dependency:
npm WARN peer webdriverio@"^9.0.0" from the root project
npm WARN ERESOLVE overriding peer dependency
npm WARN While resolving: @wdio/globals@9.17.0
npm WARN Found: webdriverio@9.18.4
npm WARN node_modules/webdriverio
npm WARN webdriverio@"9.18.4" from @wdio/cli@9.18.4
npm WARN node_modules/@wdio/cli
npm WARN dev @wdio/cli@"9.18.4" from the root project
npm WARN 3 more (@wdio/globals, @wdio/globals, expect-webdriverio)
npm WARN
npm WARN Could not resolve dependency:
npm WARN peer webdriverio@"^9.0.0" from @wdio/globals@9.17.0
npm WARN node_modules/@wdio/cli/node_modules/@wdio/globals
npm WARN @wdio/globals@"9.17.0" from @wdio/cli@9.18.4
npm WARN node_modules/@wdio/cli
npm WARN
npm WARN Conflicting peer dependency: webdriverio@9.24.0
npm WARN node_modules/webdriverio
npm WARN peer webdriverio@"^9.0.0" from the root project
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 inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm WARN deprecated lodash.get@4.4.2: This package is deprecated. Use the optional chaining (?.) operator instead.
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
npm WARN deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
npm WARN deprecated abab@2.0.6: Use your platform's native atob() and btoa() methods instead
npm WARN deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm WARN deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm WARN deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.2.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated domexception@4.0.0: Use your platform's native DOMException instead
npm WARN deprecated uuid@3.3.2: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated node-domexception@1.0.0: Use your platform's native DOMException instead
npm WARN deprecated sinon@12.0.1: 16.1.1
npm WARN deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.
--- stdout ---
added 1432 packages, and audited 1433 packages in 42s
214 packages are looking for funding
run `npm fund` for details
# npm audit report
form-data <2.5.4
Severity: critical
form-data uses unsafe random function in form-data for choosing boundary - https://github.com/advisories/GHSA-fjxv-7rqg-78g4
fix available via `npm audit fix --force`
Will install wdio-mediawiki@6.3.2, which is a breaking change
node_modules/request/node_modules/form-data
request *
Depends on vulnerable versions of form-data
Depends on vulnerable versions of qs
Depends on vulnerable versions of tough-cookie
node_modules/request
mwbot >=0.1.6
Depends on vulnerable versions of request
node_modules/mwbot
wdio-mediawiki <=5.1.0
Depends on vulnerable versions of mwbot
node_modules/wdio-mediawiki
minimatch <10.2.1
Severity: high
minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern - https://github.com/advisories/GHSA-3ppc-4f35-3m26
fix available via `npm audit fix --force`
Will install eslint-config-wikimedia@0.8.1, which is a breaking change
node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch
node_modules/@wdio/config/node_modules/minimatch
node_modules/@wdio/runner/node_modules/minimatch
node_modules/archiver-utils/node_modules/minimatch
node_modules/editorconfig/node_modules/minimatch
node_modules/js-beautify/node_modules/minimatch
node_modules/minimatch
node_modules/mocha/node_modules/minimatch
node_modules/readdir-glob/node_modules/minimatch
@eslint/eslintrc 0.0.1 || >=0.1.1
Depends on vulnerable versions of minimatch
node_modules/@eslint/eslintrc
node_modules/eslint-plugin-unicorn/node_modules/@eslint/eslintrc
eslint 0.7.1 - 2.0.0-rc.1 || 4.1.0 - 10.0.0-rc.2
Depends on vulnerable versions of @eslint/eslintrc
Depends on vulnerable versions of @humanwhocodes/config-array
Depends on vulnerable versions of file-entry-cache
Depends on vulnerable versions of minimatch
node_modules/eslint
@typescript-eslint/eslint-plugin <=8.55.1-alpha.3
Depends on vulnerable versions of @typescript-eslint/type-utils
Depends on vulnerable versions of @typescript-eslint/utils
Depends on vulnerable versions of eslint
node_modules/@typescript-eslint/eslint-plugin
eslint-config-wikimedia >=0.9.0
Depends on vulnerable versions of @typescript-eslint/eslint-plugin
Depends on vulnerable versions of @typescript-eslint/parser
Depends on vulnerable versions of eslint
Depends on vulnerable versions of eslint-plugin-jest
Depends on vulnerable versions of eslint-plugin-jsdoc
Depends on vulnerable versions of eslint-plugin-unicorn
Depends on vulnerable versions of eslint-plugin-vue
node_modules/eslint-config-wikimedia
@typescript-eslint/parser 1.1.1-alpha.0 - 8.56.1-alpha.2
Depends on vulnerable versions of @typescript-eslint/typescript-estree
Depends on vulnerable versions of eslint
node_modules/@typescript-eslint/parser
@typescript-eslint/type-utils 5.9.2-alpha.0 - 8.56.1-alpha.2
Depends on vulnerable versions of @typescript-eslint/typescript-estree
Depends on vulnerable versions of @typescript-eslint/utils
Depends on vulnerable versions of eslint
node_modules/@typescript-eslint/type-utils
@typescript-eslint/utils <=8.56.1-alpha.2
Depends on vulnerable versions of @typescript-eslint/typescript-estree
Depends on vulnerable versions of eslint
node_modules/@typescript-eslint/utils
eslint-plugin-jest 25.0.1 - 29.12.2
Depends on vulnerable versions of eslint
node_modules/eslint-plugin-jest
eslint-plugin-jsdoc 8.4.4 - 62.6.1
Depends on vulnerable versions of eslint
node_modules/eslint-plugin-jsdoc
eslint-plugin-vue 5.0.0-beta.0 - 10.7.0
Depends on vulnerable versions of eslint
node_modules/eslint-plugin-vue
eslint-plugin-unicorn 50.0.0 - 54.0.0
Depends on vulnerable versions of @eslint/eslintrc
node_modules/eslint-plugin-unicorn
@humanwhocodes/config-array *
Depends on vulnerable versions of minimatch
node_modules/@humanwhocodes/config-array
@typescript-eslint/typescript-estree 6.16.0 - 8.56.1-alpha.2
Depends on vulnerable versions of minimatch
node_modules/@typescript-eslint/typescript-estree
editorconfig >=1.0.0
Depends on vulnerable versions of minimatch
node_modules/editorconfig
js-beautify >=1.8.9
Depends on vulnerable versions of editorconfig
Depends on vulnerable versions of glob
node_modules/js-beautify
@vue/test-utils >=2.4.1
Depends on vulnerable versions of js-beautify
node_modules/@vue/test-utils
glob 3.0.0 - 10.5.0
Depends on vulnerable versions of minimatch
node_modules/@wdio/config/node_modules/glob
node_modules/@wdio/runner/node_modules/glob
node_modules/@wikimedia/mw-node-qunit/node_modules/glob
node_modules/archiver-utils/node_modules/glob
node_modules/glob
node_modules/js-beautify/node_modules/glob
node_modules/mocha/node_modules/glob
@jest/reporters *
Depends on vulnerable versions of @jest/transform
Depends on vulnerable versions of glob
node_modules/@jest/reporters
@jest/core *
Depends on vulnerable versions of @jest/reporters
Depends on vulnerable versions of @jest/transform
Depends on vulnerable versions of jest-config
Depends on vulnerable versions of jest-resolve-dependencies
Depends on vulnerable versions of jest-runner
Depends on vulnerable versions of jest-runtime
Depends on vulnerable versions of jest-snapshot
node_modules/@jest/core
jest >=19.1.0-alpha.eed82034
Depends on vulnerable versions of @jest/core
Depends on vulnerable versions of jest-cli
node_modules/jest
jest-cli >=19.1.0-alpha.eed82034
Depends on vulnerable versions of @jest/core
Depends on vulnerable versions of create-jest
Depends on vulnerable versions of jest-config
node_modules/jest-cli
@wdio/config *
Depends on vulnerable versions of glob
node_modules/@wdio/config
node_modules/@wdio/runner/node_modules/@wdio/config
@wdio/cli *
Depends on vulnerable versions of @wdio/config
Depends on vulnerable versions of @wdio/globals
Depends on vulnerable versions of create-wdio
Depends on vulnerable versions of webdriverio
node_modules/@wdio/cli
@wdio/runner *
Depends on vulnerable versions of @wdio/config
Depends on vulnerable versions of @wdio/globals
Depends on vulnerable versions of expect-webdriverio
Depends on vulnerable versions of webdriver
Depends on vulnerable versions of webdriverio
node_modules/@wdio/runner
@wdio/local-runner *
Depends on vulnerable versions of @wdio/runner
Depends on vulnerable versions of expect-webdriverio
node_modules/@wdio/local-runner
webdriver >=5.0.0-alpha.2
Depends on vulnerable versions of @wdio/config
node_modules/@wdio/runner/node_modules/webdriver
node_modules/webdriver
webdriverio >=5.0.0-alpha.2
Depends on vulnerable versions of @wdio/config
Depends on vulnerable versions of archiver
Depends on vulnerable versions of webdriver
node_modules/@wdio/runner/node_modules/webdriverio
node_modules/webdriverio
@wdio/globals *
Depends on vulnerable versions of expect-webdriverio
Depends on vulnerable versions of webdriverio
node_modules/@wdio/cli/node_modules/@wdio/globals
node_modules/@wdio/globals
expect-webdriverio 4.0.0-alpha.0 - 4.0.0-alpha.6 || >=4.0.1
Depends on vulnerable versions of @wdio/globals
Depends on vulnerable versions of webdriverio
node_modules/expect-webdriverio
@wikimedia/mw-node-qunit *
Depends on vulnerable versions of glob
node_modules/@wikimedia/mw-node-qunit
archiver-utils >=0.2.0
Depends on vulnerable versions of glob
node_modules/archiver-utils
archiver >=0.20.0
Depends on vulnerable versions of archiver-utils
Depends on vulnerable versions of readdir-glob
Depends on vulnerable versions of zip-stream
node_modules/archiver
zip-stream 0.8.0 - 6.0.1
Depends on vulnerable versions of archiver-utils
node_modules/zip-stream
jest-config >=19.1.0-alpha.eed82034
Depends on vulnerable versions of babel-jest
Depends on vulnerable versions of glob
Depends on vulnerable versions of jest-circus
Depends on vulnerable versions of jest-runner
node_modules/jest-config
create-jest >=29.7.0
Depends on vulnerable versions of jest-config
node_modules/create-jest
jest-runtime >=24.0.0-alpha.0
Depends on vulnerable versions of @jest/globals
Depends on vulnerable versions of @jest/transform
Depends on vulnerable versions of glob
Depends on vulnerable versions of jest-snapshot
node_modules/jest-runtime
jest-circus >=25.2.4
Depends on vulnerable versions of @jest/expect
Depends on vulnerable versions of jest-runtime
Depends on vulnerable versions of jest-snapshot
node_modules/jest-circus
jest-runner >=24.0.0-alpha.0
Depends on vulnerable versions of @jest/transform
Depends on vulnerable versions of jest-runtime
node_modules/jest-runner
mocha >=1.10.0
Depends on vulnerable versions of glob
Depends on vulnerable versions of minimatch
node_modules/mocha
@wdio/mocha-framework *
Depends on vulnerable versions of mocha
node_modules/@wdio/mocha-framework
rimraf 2.3.0 - 3.0.2 || 4.2.0 - 5.0.10
Depends on vulnerable versions of glob
node_modules/rimraf
flat-cache 1.3.4 - 4.0.0
Depends on vulnerable versions of rimraf
node_modules/flat-cache
file-entry-cache 4.0.0 - 7.0.2
Depends on vulnerable versions of flat-cache
node_modules/file-entry-cache
test-exclude 4.2.2 || 5.0.0 - 7.0.2
Depends on vulnerable versions of glob
Depends on vulnerable versions of minimatch
node_modules/test-exclude
babel-plugin-istanbul >=5.0.1
Depends on vulnerable versions of test-exclude
node_modules/babel-plugin-istanbul
@jest/transform *
Depends on vulnerable versions of babel-plugin-istanbul
node_modules/@jest/transform
babel-jest >=24.0.0-alpha.0
Depends on vulnerable versions of @jest/transform
Depends on vulnerable versions of babel-plugin-istanbul
node_modules/babel-jest
@vue/vue3-jest *
Depends on vulnerable versions of babel-jest
Depends on vulnerable versions of jest
node_modules/@vue/vue3-jest
jest-snapshot >=27.0.0-next.0
Depends on vulnerable versions of @jest/transform
node_modules/jest-snapshot
@jest/expect *
Depends on vulnerable versions of jest-snapshot
node_modules/@jest/expect
@jest/globals >=28.0.0-alpha.0
Depends on vulnerable versions of @jest/expect
node_modules/@jest/globals
jest-resolve-dependencies >=27.0.0-next.0
Depends on vulnerable versions of jest-snapshot
node_modules/jest-resolve-dependencies
multimatch <=7.0.0
Depends on vulnerable versions of minimatch
node_modules/multimatch
doiuse >=2.2.0
Depends on vulnerable versions of multimatch
node_modules/doiuse
stylelint-no-unsupported-browser-features *
Depends on vulnerable versions of doiuse
node_modules/stylelint-no-unsupported-browser-features
stylelint-config-wikimedia >=0.10.2
Depends on vulnerable versions of stylelint-no-unsupported-browser-features
node_modules/stylelint-config-wikimedia
readdir-glob <=2.0.1
Depends on vulnerable versions of minimatch
node_modules/readdir-glob
recursive-readdir >=1.2.0
Depends on vulnerable versions of minimatch
node_modules/recursive-readdir
create-wdio >=9.17.0
Depends on vulnerable versions of recursive-readdir
node_modules/create-wdio
qs <6.14.1
Severity: high
qs's arrayLimit bypass in its bracket notation allows DoS via memory exhaustion - https://github.com/advisories/GHSA-6rw7-vpxm-498p
fix available via `npm audit fix --force`
Will install wdio-mediawiki@6.3.2, which is a breaking change
node_modules/qs
tough-cookie <4.1.3
Severity: moderate
tough-cookie Prototype Pollution vulnerability - https://github.com/advisories/GHSA-72xf-g2v4-qvf3
fix available via `npm audit fix --force`
Will install wdio-mediawiki@6.3.2, which is a breaking change
node_modules/request/node_modules/tough-cookie
66 vulnerabilities (3 moderate, 61 high, 2 critical)
To address issues that do not require attention, run:
npm audit fix
To address all issues possible (including breaking changes), run:
npm audit fix --force
Some issues need review, and may require choosing
a different dependency.
--- end ---
Verifying that tests still pass
$ /usr/bin/npm ci
--- stderr ---
npm WARN 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 inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm WARN deprecated lodash.get@4.4.2: This package is deprecated. Use the optional chaining (?.) operator instead.
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
npm WARN deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
npm WARN deprecated abab@2.0.6: Use your platform's native atob() and btoa() methods instead
npm WARN deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm WARN deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm WARN deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated glob@7.2.0: Glob versions prior to v9 are no longer supported
npm WARN deprecated domexception@4.0.0: Use your platform's native DOMException instead
npm WARN deprecated uuid@3.3.2: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated node-domexception@1.0.0: Use your platform's native DOMException instead
npm WARN deprecated sinon@12.0.1: 16.1.1
npm WARN deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.
--- stdout ---
added 1432 packages, and audited 1433 packages in 39s
214 packages are looking for funding
run `npm fund` for details
66 vulnerabilities (3 moderate, 61 high, 2 critical)
To address issues that do not require attention, run:
npm audit fix
To address all issues possible (including breaking changes), run:
npm audit fix --force
Some issues need review, and may require choosing
a different dependency.
Run `npm audit` for details.
--- end ---
$ /usr/bin/npm test
--- stderr ---
Oops! Something went wrong! :(
ESLint: 8.57.1
TypeError: Cannot read properties of undefined (reading 'type')
Occurred while linting /src/repo/modules/ext.pageTriage.newPagesFeed/components/ListItem.vue:379
Rule: "mediawiki/no-unlabeled-buttonwidget"
at NewExpression (/src/repo/node_modules/eslint-plugin-mediawiki/src/rules/no-unlabeled-buttonwidget.js:20:27)
at ruleErrorHandler (/src/repo/node_modules/eslint/lib/linter/linter.js:1076:28)
at /src/repo/node_modules/eslint/lib/linter/safe-emitter.js:45:58
at Array.forEach (<anonymous>)
at Object.emit (/src/repo/node_modules/eslint/lib/linter/safe-emitter.js:45:38)
at NodeEventGenerator.applySelector (/src/repo/node_modules/eslint/lib/linter/node-event-generator.js:297:26)
at NodeEventGenerator.applySelectors (/src/repo/node_modules/eslint/lib/linter/node-event-generator.js:326:22)
at NodeEventGenerator.enterNode (/src/repo/node_modules/eslint/lib/linter/node-event-generator.js:340:14)
at CodePathAnalyzer.enterNode (/src/repo/node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js:803:23)
at /src/repo/node_modules/eslint/lib/linter/linter.js:1111:32
--- stdout ---
> test
> npm run lint && npm run -s test:unit
> lint
> npm -s run lint:js && npm -s run lint:styles && npm -s run lint:i18n
--- end ---
$ node_modules/.bin/jest -u
--- stderr ---
PASS tests/jest/ext.pageTriage.showIp/showIp.test.js
PASS tests/jest/ext.pageTriage.toolbar/tags.test.js
PASS tests/jest/ext.pageTriage.toolbar/vue/ToolWikiLove.test.js
PASS tests/jest/ext.pageTriage.newPagesFeed/components/CreatorByline.test.js
● Console
console.warn
[Vue warn]: Missing required prop: "creatorName"
at <CreatorByline ref="VTU_COMPONENT" >
at <VTUROOT>
4 | describe( 'CreatorByline.vue', () => {
5 | it( 'mounts', () => {
> 6 | wrapper = utils.mount( CreatorByLine );
| ^
7 | expect( wrapper.exists() ).toBe( true );
8 | } );
9 |
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at validateProp (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4347:5)
at validateProps (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4335:5)
at initProps (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4036:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7807:3)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at Object.mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/CreatorByline.test.js:6:19)
console.warn
[Vue warn]: Missing required prop: "creatorUserId"
at <CreatorByline ref="VTU_COMPONENT" >
at <VTUROOT>
4 | describe( 'CreatorByline.vue', () => {
5 | it( 'mounts', () => {
> 6 | wrapper = utils.mount( CreatorByLine );
| ^
7 | expect( wrapper.exists() ).toBe( true );
8 | } );
9 |
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at validateProp (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4347:5)
at validateProps (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4335:5)
at initProps (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4036:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7807:3)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at Object.mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/CreatorByline.test.js:6:19)
console.warn
[Vue warn]: Missing required prop: "creatorAutoConfirmed"
at <CreatorByline ref="VTU_COMPONENT" >
at <VTUROOT>
4 | describe( 'CreatorByline.vue', () => {
5 | it( 'mounts', () => {
> 6 | wrapper = utils.mount( CreatorByLine );
| ^
7 | expect( wrapper.exists() ).toBe( true );
8 | } );
9 |
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at validateProp (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4347:5)
at validateProps (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4335:5)
at initProps (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4036:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7807:3)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at Object.mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/CreatorByline.test.js:6:19)
console.warn
[Vue warn]: Missing required prop: "creatorUserPageExists"
at <CreatorByline ref="VTU_COMPONENT" >
at <VTUROOT>
4 | describe( 'CreatorByline.vue', () => {
5 | it( 'mounts', () => {
> 6 | wrapper = utils.mount( CreatorByLine );
| ^
7 | expect( wrapper.exists() ).toBe( true );
8 | } );
9 |
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at validateProp (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4347:5)
at validateProps (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4335:5)
at initProps (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4036:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7807:3)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at Object.mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/CreatorByline.test.js:6:19)
console.warn
[Vue warn]: Missing required prop: "creatorTalkPageExists"
at <CreatorByline ref="VTU_COMPONENT" >
at <VTUROOT>
4 | describe( 'CreatorByline.vue', () => {
5 | it( 'mounts', () => {
> 6 | wrapper = utils.mount( CreatorByLine );
| ^
7 | expect( wrapper.exists() ).toBe( true );
8 | } );
9 |
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at validateProp (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4347:5)
at validateProps (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4335:5)
at initProps (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4036:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7807:3)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at Object.mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/CreatorByline.test.js:6:19)
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'CreatorByline',
directives: {
tooltip: {
mounted: [Function: mounted],
updated: [Function: updated],
beforeUnmount: [Function: beforeUnmount]
}
},
props: {
creatorName: { type: [Function: String], required: true },
creatorUserId: { type: [Function: Number], required: true },
creatorAutoConfirmed: { type: [Function: Boolean], required: true },
creatorUserPageExists: { type: [Function: Boolean], required: true },
creatorTalkPageExists: { type: [Function: Boolean], required: true },
creatorIsTempAccount: { type: [Function: Boolean], required: false },
creatorIsExpiredTempAccount: { type: [Function: Boolean], required: false }
},
computed: {
userPageClass: [Function: userPageClass],
userPageTooltip: [Function: userPageTooltip],
userPageUrl: [Function: userPageUrl],
talkPageClass: [Function: talkPageClass],
talkPageUrl: [Function: talkPageUrl],
contribsUrl: [Function: contribsUrl]
},
components: {}
}
at <CreatorByline ref="VTU_COMPONENT" >
at <VTUROOT>
4 | describe( 'CreatorByline.vue', () => {
5 | it( 'mounts', () => {
> 6 | wrapper = utils.mount( CreatorByLine );
| ^
7 | expect( wrapper.exists() ).toBe( true );
8 | } );
9 |
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7884:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at Object.mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/CreatorByline.test.js:6:19)
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'CreatorByline',
directives: {
tooltip: {
mounted: [Function: mounted],
updated: [Function: updated],
beforeUnmount: [Function: beforeUnmount]
}
},
props: {
creatorName: { type: [Function: String], required: true },
creatorUserId: { type: [Function: Number], required: true },
creatorAutoConfirmed: { type: [Function: Boolean], required: true },
creatorUserPageExists: { type: [Function: Boolean], required: true },
creatorTalkPageExists: { type: [Function: Boolean], required: true },
creatorIsTempAccount: { type: [Function: Boolean], required: false },
creatorIsExpiredTempAccount: { type: [Function: Boolean], required: false }
},
computed: {
userPageClass: [Function: userPageClass],
userPageTooltip: [Function: userPageTooltip],
userPageUrl: [Function: userPageUrl],
talkPageClass: [Function: talkPageClass],
talkPageUrl: [Function: talkPageUrl],
contribsUrl: [Function: contribsUrl]
},
clone: false,
propsData: {
creatorUserId: 1,
creatorName: 'name',
creatorAutoConfirmed: true,
creatorUserPageExists: false,
creatorTalkPageExists: false,
creatorIsTempAccount: true
},
components: {}
}
at <CreatorByline creatorUserId=1 creatorName="name" creatorAutoConfirmed=true ... >
at <VTUROOT>
9 |
10 | it( 'mounts and adds mw-tempuserlink class when temp user true', () => {
> 11 | wrapper = utils.mount( CreatorByLine, {
| ^
12 | clone: false,
13 | propsData: {
14 | creatorUserId: 1,
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7884:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at Object.mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/CreatorByline.test.js:11:19)
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'CreatorByline',
directives: {
tooltip: {
mounted: [Function: mounted],
updated: [Function: updated],
beforeUnmount: [Function: beforeUnmount]
}
},
props: {
creatorName: { type: [Function: String], required: true },
creatorUserId: { type: [Function: Number], required: true },
creatorAutoConfirmed: { type: [Function: Boolean], required: true },
creatorUserPageExists: { type: [Function: Boolean], required: true },
creatorTalkPageExists: { type: [Function: Boolean], required: true },
creatorIsTempAccount: { type: [Function: Boolean], required: false },
creatorIsExpiredTempAccount: { type: [Function: Boolean], required: false }
},
computed: {
userPageClass: [Function: userPageClass],
userPageTooltip: [Function: userPageTooltip],
userPageUrl: [Function: userPageUrl],
talkPageClass: [Function: talkPageClass],
talkPageUrl: [Function: talkPageUrl],
contribsUrl: [Function: contribsUrl]
},
clone: false,
propsData: {
creatorUserId: 1,
creatorName: 'name',
creatorAutoConfirmed: true,
creatorUserPageExists: false,
creatorTalkPageExists: false,
creatorIsTempAccount: true,
creatorIsExpiredTempAccount: true
},
components: {}
}
at <CreatorByline creatorUserId=1 creatorName="name" creatorAutoConfirmed=true ... >
at <VTUROOT>
26 |
27 | it( 'mounts and adds mw-tempuserlink class for expired temp account', () => {
> 28 | wrapper = utils.mount( CreatorByLine, {
| ^
29 | clone: false,
30 | propsData: {
31 | creatorUserId: 1,
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7884:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at Object.mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/CreatorByline.test.js:28:19)
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'CreatorByline',
directives: {
tooltip: {
mounted: [Function: mounted],
updated: [Function: updated],
beforeUnmount: [Function: beforeUnmount]
}
},
props: {
creatorName: { type: [Function: String], required: true },
creatorUserId: { type: [Function: Number], required: true },
creatorAutoConfirmed: { type: [Function: Boolean], required: true },
creatorUserPageExists: { type: [Function: Boolean], required: true },
creatorTalkPageExists: { type: [Function: Boolean], required: true },
creatorIsTempAccount: { type: [Function: Boolean], required: false },
creatorIsExpiredTempAccount: { type: [Function: Boolean], required: false }
},
computed: {
userPageClass: [Function: userPageClass],
userPageTooltip: [Function: userPageTooltip],
userPageUrl: [Function: userPageUrl],
talkPageClass: [Function: talkPageClass],
talkPageUrl: [Function: talkPageUrl],
contribsUrl: [Function: contribsUrl]
},
propsData: {
creatorUserId: 1,
creatorName: 'name',
creatorAutoConfirmed: true,
creatorUserPageExists: true,
creatorTalkPageExists: true,
creatorIsTempAccount: false
},
components: {}
}
at <CreatorByline creatorUserId=1 creatorName="name" creatorAutoConfirmed=true ... >
at <VTUROOT>
44 |
45 | it( 'mounts and does not add mw-tempuserlink class when temp user false', () => {
> 46 | wrapper = utils.mount( CreatorByLine, { propsData: {
| ^
47 | creatorUserId: 1,
48 | creatorName: 'name',
49 | creatorAutoConfirmed: true,
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7884:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at Object.mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/CreatorByline.test.js:46:19)
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'CreatorByline',
directives: {
tooltip: {
mounted: [Function: mounted],
updated: [Function: updated],
beforeUnmount: [Function: beforeUnmount]
}
},
props: {
creatorName: { type: [Function: String], required: true },
creatorUserId: { type: [Function: Number], required: true },
creatorAutoConfirmed: { type: [Function: Boolean], required: true },
creatorUserPageExists: { type: [Function: Boolean], required: true },
creatorTalkPageExists: { type: [Function: Boolean], required: true },
creatorIsTempAccount: { type: [Function: Boolean], required: false },
creatorIsExpiredTempAccount: { type: [Function: Boolean], required: false }
},
computed: {
userPageClass: [Function: userPageClass],
userPageTooltip: [Function: userPageTooltip],
userPageUrl: [Function: userPageUrl],
talkPageClass: [Function: talkPageClass],
talkPageUrl: [Function: talkPageUrl],
contribsUrl: [Function: contribsUrl]
},
propsData: {
creatorUserId: 1,
creatorName: 'name',
creatorAutoConfirmed: true,
creatorUserPageExists: false,
creatorTalkPageExists: true,
creatorIsTempAccount: false
},
components: {}
}
at <CreatorByline creatorUserId=1 creatorName="name" creatorAutoConfirmed=true ... >
at <VTUROOT>
57 |
58 | it( 'mounts and adds is-red-link class when user page does not exist', () => {
> 59 | wrapper = utils.mount( CreatorByLine, { propsData: {
| ^
60 | creatorUserId: 1,
61 | creatorName: 'name',
62 | creatorAutoConfirmed: true,
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7884:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at Object.mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/CreatorByline.test.js:59:19)
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'CreatorByline',
directives: {
tooltip: {
mounted: [Function: mounted],
updated: [Function: updated],
beforeUnmount: [Function: beforeUnmount]
}
},
props: {
creatorName: { type: [Function: String], required: true },
creatorUserId: { type: [Function: Number], required: true },
creatorAutoConfirmed: { type: [Function: Boolean], required: true },
creatorUserPageExists: { type: [Function: Boolean], required: true },
creatorTalkPageExists: { type: [Function: Boolean], required: true },
creatorIsTempAccount: { type: [Function: Boolean], required: false },
creatorIsExpiredTempAccount: { type: [Function: Boolean], required: false }
},
computed: {
userPageClass: [Function: userPageClass],
userPageTooltip: [Function: userPageTooltip],
userPageUrl: [Function: userPageUrl],
talkPageClass: [Function: talkPageClass],
talkPageUrl: [Function: talkPageUrl],
contribsUrl: [Function: contribsUrl]
},
propsData: {
creatorUserId: 1,
creatorName: 'name',
creatorAutoConfirmed: true,
creatorUserPageExists: true,
creatorTalkPageExists: true,
creatorIsTempAccount: false
},
components: {}
}
at <CreatorByline creatorUserId=1 creatorName="name" creatorAutoConfirmed=true ... >
at <VTUROOT>
70 |
71 | it( 'mounts and does not add is-red-link class when user page does exist', () => {
> 72 | wrapper = utils.mount( CreatorByLine, { propsData: {
| ^
73 | creatorUserId: 1,
74 | creatorName: 'name',
75 | creatorAutoConfirmed: true,
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7884:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at Object.mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/CreatorByline.test.js:72:19)
PASS tests/jest/ext.pageTriage.toolbar/delete.test.js
PASS tests/jest/ext.pageTriage.toolbar/articleInfo.test.js
PASS tests/jest/ext.pageTriage.newPagesFeed/components/QueueModeTab.test.js
● Console
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'QueueModeTab',
components: {
CdxToggleButtonGroup: {
name: 'CdxToggleButtonGroup',
components: [Object],
props: [Object],
emits: [Array],
setup: [Function: setup],
render: [Function: Wr]
}
},
data: [Function: data]
}
at <QueueModeTab ref="VTU_COMPONENT" >
at <VTUROOT>
17 | const { useSettingsStore } = require( '../../../../modules/ext.pageTriage.newPagesFeed/stores/settings.js' );
18 | QueueModeTab = require( '../../../../modules/ext.pageTriage.newPagesFeed/components/QueueModeTab.vue' );
> 19 | wrapper = mount( QueueModeTab, {
| ^
20 | global: {
21 | mixins: [ mixins ],
22 | plugins: [ createTestingPinia( {
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7884:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/QueueModeTab.test.js:19:13)
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'QueueModeTab',
components: {
CdxToggleButtonGroup: {
name: 'CdxToggleButtonGroup',
components: [Object],
props: [Object],
emits: [Array],
setup: [Function: setup],
render: [Function: Wr]
}
},
data: [Function: data]
}
at <QueueModeTab ref="VTU_COMPONENT" >
at <VTUROOT>
17 | const { useSettingsStore } = require( '../../../../modules/ext.pageTriage.newPagesFeed/stores/settings.js' );
18 | QueueModeTab = require( '../../../../modules/ext.pageTriage.newPagesFeed/components/QueueModeTab.vue' );
> 19 | wrapper = mount( QueueModeTab, {
| ^
20 | global: {
21 | mixins: [ mixins ],
22 | plugins: [ createTestingPinia( {
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7884:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/QueueModeTab.test.js:19:13)
PASS tests/jest/ext.pageTriage.toolbarStartup/ext.pageTriage.actionQueue.test.js
PASS tests/jest/ext.pageTriage.util/models/ext.pageTriage.article.test.js
PASS tests/jest/ext.pageTriage.newPagesFeed/components/ListFilterMenu.test.js
● Console
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'ListFilterMenu',
components: {
ControlSection: {
name: 'ControlSection',
components: [Object],
props: [Object],
computed: [Object]
},
DateControlSection: {
name: 'DateControlSection',
components: [Object],
props: [Object],
emits: [Array]
},
LabeledCheckbox: {
name: 'LabeledCheckbox',
components: [Object],
props: [Object],
emits: [Array],
setup: [Function: setup],
computed: [Object]
},
QueueModeTab: {
name: 'QueueModeTab',
components: [Object],
data: [Function: data]
},
NppSortDirRadio: {
name: 'NppSortDirRadio',
components: [Object],
data: [Function: data]
},
FilterRadios: {
name: 'FilterRadios',
components: [Object],
props: [Object],
emits: [Array],
setup: [Function: setup],
data: [Function: data],
methods: [Object],
watch: [Object]
},
AfcSortSelect: {
name: 'AfcSortSelect',
components: [Object],
setup: [Function: setup],
data: [Function: data],
computed: [Object]
},
AfcStateRadio: {
name: 'AfcStateRadio',
components: [Object],
props: [Object],
emits: [Array],
setup: [Function: setup],
data: [Function: data]
},
ShowingText: {
name: 'ShowingText',
components: [Object],
setup: [Function: setup],
data: [Function: data],
computed: [Object],
methods: [Object]
},
CdxButton: {
name: 'CdxButton',
props: [Object],
emits: [Array],
setup: [Function: setup],
render: [Function: ll]
}
},
setup: [Function: setup],
data: [Function: data]
}
at <ListFilterMenu ref="VTU_COMPONENT" >
at <VTUROOT>
28 | const { useSettingsStore } = require( '../../../../modules/ext.pageTriage.newPagesFeed/stores/settings.js' );
29 | ListFilterMenu = require( '../../../../modules/ext.pageTriage.newPagesFeed/components/ListFilterMenu.vue' );
> 30 | wrapper = mount( ListFilterMenu, {
| ^
31 | global: {
32 | plugins: [ createTestingPinia( {
33 | stubActions: false
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at handleSetupResult (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7912:3)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7881:7)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/ListFilterMenu.test.js:30:13)
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'ListFilterMenu',
components: {
ControlSection: {
name: 'ControlSection',
components: [Object],
props: [Object],
computed: [Object]
},
DateControlSection: {
name: 'DateControlSection',
components: [Object],
props: [Object],
emits: [Array]
},
LabeledCheckbox: {
name: 'LabeledCheckbox',
components: [Object],
props: [Object],
emits: [Array],
setup: [Function: setup],
computed: [Object]
},
QueueModeTab: {
name: 'QueueModeTab',
components: [Object],
data: [Function: data]
},
NppSortDirRadio: {
name: 'NppSortDirRadio',
components: [Object],
data: [Function: data]
},
FilterRadios: {
name: 'FilterRadios',
components: [Object],
props: [Object],
emits: [Array],
setup: [Function: setup],
data: [Function: data],
methods: [Object],
watch: [Object]
},
AfcSortSelect: {
name: 'AfcSortSelect',
components: [Object],
setup: [Function: setup],
data: [Function: data],
computed: [Object]
},
AfcStateRadio: {
name: 'AfcStateRadio',
components: [Object],
props: [Object],
emits: [Array],
setup: [Function: setup],
data: [Function: data]
},
ShowingText: {
name: 'ShowingText',
components: [Object],
setup: [Function: setup],
data: [Function: data],
computed: [Object],
methods: [Object]
},
CdxButton: {
name: 'CdxButton',
props: [Object],
emits: [Array],
setup: [Function: setup],
render: [Function: ll]
}
},
setup: [Function: setup],
data: [Function: data]
}
at <ListFilterMenu ref="VTU_COMPONENT" >
at <VTUROOT>
28 | const { useSettingsStore } = require( '../../../../modules/ext.pageTriage.newPagesFeed/stores/settings.js' );
29 | ListFilterMenu = require( '../../../../modules/ext.pageTriage.newPagesFeed/components/ListFilterMenu.vue' );
> 30 | wrapper = mount( ListFilterMenu, {
| ^
31 | global: {
32 | plugins: [ createTestingPinia( {
33 | stubActions: false
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at handleSetupResult (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7912:3)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7881:7)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/ListFilterMenu.test.js:30:13)
PASS tests/jest/ext.pageTriage.newPagesFeed/components/NppSortDirRadio.test.js
● Console
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'NppSortDirRadio',
components: {
CdxToggleButtonGroup: {
name: 'CdxToggleButtonGroup',
components: [Object],
props: [Object],
emits: [Array],
setup: [Function: setup],
render: [Function: Wr]
},
CdxField: {
name: 'CdxField',
components: [Object],
props: [Object],
setup: [Function: setup],
render: [Function: js]
}
},
data: [Function: data]
}
at <NppSortDirRadio ref="VTU_COMPONENT" >
at <VTUROOT>
15 | } );
16 | NppSortDirRadio = require( '../../../../modules/ext.pageTriage.newPagesFeed/components/NppSortDirRadio.vue' );
> 17 | wrapper = mount( NppSortDirRadio, {
| ^
18 | global: {
19 | mixins: [ mixins ],
20 | plugins: [ createTestingPinia() ]
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7884:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/NppSortDirRadio.test.js:17:13)
PASS tests/jest/ext.pageTriage.newPagesFeed/components/ShowingText.test.js
● Console
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'ShowingText',
components: {
CdxInfoChip: {
name: 'CdxInfoChip',
components: [Object],
directives: [Object],
props: [Object],
setup: [Function: setup],
render: [Function: Zs]
}
},
setup: [Function: setup],
data: [Function: data],
computed: { showingObj: [Function: showingObj] },
methods: {
reset: [Function: reset],
addNamespace: [Function: addNamespace],
addTop: [Function: addTop],
addIf: [Function: addIf],
addPredictedClass: [Function: addPredictedClass],
addPredictedIssues: [Function: addPredictedIssues],
addDate: [Function: addDate],
addState: [Function: addState]
}
}
at <ShowingText ref="VTU_COMPONENT" >
at <VTUROOT>
25 | } );
26 | ShowingText = require( '../../../../modules/ext.pageTriage.newPagesFeed/components/ShowingText.vue' );
> 27 | wrapper = mount( ShowingText, {
| ^
28 | global: {
29 | mixins: [ mixins ],
30 | plugins: [ createTestingPinia() ]
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at handleSetupResult (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7912:3)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7881:7)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/ShowingText.test.js:27:13)
PASS tests/jest/ext.pageTriage.tagData/main.test.js
PASS tests/jest/ext.pageTriage.newPagesFeed/App.test.js
● Console
console.warn
[Vue warn]: Component is missing template or render function: {
components: {
ListFilterMenu: {
name: 'ListFilterMenu',
components: [Object],
setup: [Function: setup],
data: [Function: data]
},
ListContent: {
name: 'ListContent',
components: [Object],
props: [Object],
setup: [Function: setup]
}
},
props: { pageTriageUi: { type: [Function: String], default: null } },
mounted: [Function: mounted]
}
at <Anonymous ref="VTU_COMPONENT" >
at <VTUROOT>
23 | it( 'exists', () => {
24 | const App = require( '../../../modules/ext.pageTriage.newPagesFeed/App.vue' );
> 25 | const wrapper = mount( App );
| ^
26 | expect( wrapper.exists() ).toBe( true );
27 | } );
28 | } );
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7884:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/App.test.js:25:19)
PASS tests/jest/ext.pageTriage.newPagesFeed/components/ListContent.test.js
● Console
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'ListContent',
components: {
ListItem: {
name: 'ListItem',
components: [Object],
props: [Object],
data: [Function: data],
computed: [Object],
methods: [Object],
mounted: [Function: mounted]
},
LoadMoreBar: {
components: [Object],
props: [Object],
emits: [Array],
setup: [Function: setup]
},
StatsBar: {
name: 'ListStatsNav',
components: [Object],
props: [Object],
emits: [Array],
setup: [Function: setup],
computed: [Object],
methods: [Object]
},
CdxMessage: {
name: 'CdxMessage',
components: [Object],
props: [Object],
emits: [Array],
setup: [Function: setup],
render: [Function: Ps]
}
},
props: { pageTriageUi: { type: [Function: String], default: null } },
setup: [Function: setup]
}
at <ListContent ref="VTU_COMPONENT" >
at <VTUROOT>
16 | const { useSettingsStore } = require( '../../../../modules/ext.pageTriage.newPagesFeed/stores/settings.js' );
17 | ListContent = require( '../../../../modules/ext.pageTriage.newPagesFeed/components/ListContent.vue' );
> 18 | wrapper = mount( ListContent, {
| ^
19 | global: {
20 | plugins: [ createTestingPinia( {
21 | stubActions: false
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at handleSetupResult (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7912:3)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7881:7)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/ListContent.test.js:18:13)
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'ListContent',
components: {
ListItem: {
name: 'ListItem',
components: [Object],
props: [Object],
data: [Function: data],
computed: [Object],
methods: [Object],
mounted: [Function: mounted]
},
LoadMoreBar: {
components: [Object],
props: [Object],
emits: [Array],
setup: [Function: setup]
},
StatsBar: {
name: 'ListStatsNav',
components: [Object],
props: [Object],
emits: [Array],
setup: [Function: setup],
computed: [Object],
methods: [Object]
},
CdxMessage: {
name: 'CdxMessage',
components: [Object],
props: [Object],
emits: [Array],
setup: [Function: setup],
render: [Function: Ps]
}
},
props: { pageTriageUi: { type: [Function: String], default: null } },
setup: [Function: setup]
}
at <ListContent ref="VTU_COMPONENT" >
at <VTUROOT>
16 | const { useSettingsStore } = require( '../../../../modules/ext.pageTriage.newPagesFeed/stores/settings.js' );
17 | ListContent = require( '../../../../modules/ext.pageTriage.newPagesFeed/components/ListContent.vue' );
> 18 | wrapper = mount( ListContent, {
| ^
19 | global: {
20 | plugins: [ createTestingPinia( {
21 | stubActions: false
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at handleSetupResult (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7912:3)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7881:7)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/ListContent.test.js:18:13)
PASS tests/jest/ext.pageTriage.newPagesFeed/components/UsernameLookup.test.js
● Console
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'UsernameLookup',
components: {
CdxLookup: {
name: 'CdxLookup',
components: [Object],
inheritAttrs: false,
props: [Object],
emits: [Array],
setup: [Function: setup],
render: [Function: oi]
}
},
props: { username: { type: [Function: String], default: '' } },
emits: [ 'update:username', 'focus' ],
setup: [Function: setup]
}
at <UsernameLookup ref="VTU_COMPONENT" >
at <VTUROOT>
4 | describe( 'UsernameLookup.vue', () => {
5 | it( 'mounts', () => {
> 6 | wrapper = utils.mount( UsernameLookup );
| ^
7 | expect( wrapper.exists() ).toBe( true );
8 | } );
9 |
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at handleSetupResult (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7912:3)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7881:7)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at Object.mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/UsernameLookup.test.js:6:19)
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'UsernameLookup',
components: {
CdxLookup: {
name: 'CdxLookup',
components: [Object],
inheritAttrs: false,
props: [Object],
emits: [Array],
setup: [Function: setup],
render: [Function: oi]
}
},
props: { username: { type: [Function: String], default: '' } },
emits: [ 'update:username', 'focus' ],
setup: [Function: setup],
clone: false,
propsData: { username: 'test-user' }
}
at <UsernameLookup username="test-user" ref="VTU_COMPONENT" >
at <VTUROOT>
9 |
10 | it( 'mounts and sets username if prop set', () => {
> 11 | wrapper = utils.mount( UsernameLookup, {
| ^
12 | clone: false,
13 | propsData: {
14 | username: 'test-user'
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at handleSetupResult (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7912:3)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7881:7)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at Object.mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/UsernameLookup.test.js:11:19)
PASS tests/jest/ext.pageTriage.newPagesFeed/components/LoadMoreBar.test.js
● Console
console.warn
[Vue warn]: Missing required prop: "haveMore"
at <Anonymous ref="VTU_COMPONENT" >
at <VTUROOT>
12 | window.IntersectionObserver = mockIntersectionObserver;
13 | LoadMoreBar = require( '../../../../modules/ext.pageTriage.newPagesFeed/components/LoadMoreBar.vue' );
> 14 | wrapper = mount( LoadMoreBar );
| ^
15 | } );
16 | it( 'mounts', () => {
17 | expect( wrapper.exists() ).toBe( true );
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at validateProp (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4347:5)
at validateProps (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4335:5)
at initProps (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4036:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7807:3)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/LoadMoreBar.test.js:14:13)
console.warn
[Vue warn]: Component is missing template or render function: {
components: {
CdxProgressBar: {
name: 'CdxProgressBar',
props: [Object],
setup: [Function: setup],
render: [Function: ts]
}
},
props: { haveMore: { type: [Function: Boolean], required: true } },
emits: [ 'trigger-load' ],
setup: [Function: setup]
}
at <Anonymous ref="VTU_COMPONENT" >
at <VTUROOT>
12 | window.IntersectionObserver = mockIntersectionObserver;
13 | LoadMoreBar = require( '../../../../modules/ext.pageTriage.newPagesFeed/components/LoadMoreBar.vue' );
> 14 | wrapper = mount( LoadMoreBar );
| ^
15 | } );
16 | it( 'mounts', () => {
17 | expect( wrapper.exists() ).toBe( true );
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at handleSetupResult (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7912:3)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7881:7)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/LoadMoreBar.test.js:14:13)
PASS tests/jest/ext.pageTriage.newPagesFeed/components/FilterRadios.test.js
● Console
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'FilterRadios',
components: {
CdxRadio: {
name: 'CdxRadio',
components: [Object],
props: [Object],
emits: [Array],
setup: [Function: setup],
render: [Function: Mi]
},
UsernameLookup: {
name: 'UsernameLookup',
components: [Object],
props: [Object],
emits: [Array],
setup: [Function: setup]
},
KeywordSearch: {
name: 'KeywordSearch',
components: [Object],
props: [Object],
emits: [Array]
}
},
props: {
filter: { type: [Function: String], default: '' },
user: { type: [Function: String], default: '' },
type: { type: [Function: String], default: 'npp' },
keyword: { type: [Function: String], default: '' }
},
emits: [ 'update:filter', 'update:user', 'update:keyword' ],
setup: [Function: setup],
data: [Function: data],
methods: { checkRadioButton: [Function: checkRadioButton] },
watch: { keyword: [Function: keyword] },
mixins: [ { methods: [Object] } ]
}
at <FilterRadios ref="VTU_COMPONENT" >
at <VTUROOT>
6 | beforeEach( () => {
7 | FilterRadios = require( '../../../../modules/ext.pageTriage.newPagesFeed/components/FilterRadios.vue' );
> 8 | wrapper = mount( FilterRadios, {
| ^
9 | mixins: [ mixins ]
10 | } );
11 | } );
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at handleSetupResult (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7912:3)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7881:7)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/FilterRadios.test.js:8:13)
PASS tests/jest/ext.pageTriage.newPagesFeed/components/ListStatsNav.test.js
● Console
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'ListStatsNav',
components: {
CdxButton: {
name: 'CdxButton',
props: [Object],
emits: [Array],
setup: [Function: setup],
render: [Function: ll]
},
CdxToggleButton: {
name: 'CdxToggleButton',
props: [Object],
emits: [Array],
setup: [Function: setup],
render: [Function: ii]
},
CdxIcon: {
name: 'CdxIcon',
props: [Object],
setup: [Function: setup],
render: [Function: Jo]
}
},
props: {
queueMode: { type: [Function: String], default: 'npp' },
apiResult: { type: [Function: Object], default: [Function: default] }
},
emits: [ 'refresh-feed' ],
setup: [Function: setup],
computed: {
unreviewedArticleCount: [Function: unreviewedArticleCount],
unreviewedRedirectCount: [Function: unreviewedRedirectCount],
unreviewedDraftCount: [Function: unreviewedDraftCount],
unreviewedOldest: [Function: unreviewedOldest],
unreviewedOldestDraft: [Function: unreviewedOldestDraft],
reviewedArticleCount: [Function: reviewedArticleCount],
reviewedRedirectCount: [Function: reviewedRedirectCount],
showStats: [Function: showStats],
showDraftStats: [Function: showDraftStats]
},
methods: { calculateDiff: [Function: calculateDiff] }
}
at <ListStatsNav ref="VTU_COMPONENT" >
at <VTUROOT>
5 | beforeEach( () => {
6 | ListStatsNav = require( '../../../../modules/ext.pageTriage.newPagesFeed/components/ListStatsNav.vue' );
> 7 | wrapper = mount( ListStatsNav );
| ^
8 | wrapper.vm.calculateDiff = jest.fn().mockReturnValue( 42 );
9 | } );
10 | it( 'mounts', () => {
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at handleSetupResult (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7912:3)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7881:7)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/ListStatsNav.test.js:7:13)
PASS tests/jest/ext.pageTriage.toolbar/vue/App.test.js
● Console
console.warn
[Vue warn]: Component is missing template or render function: {
components: {
ToolMinimize: { name: 'ToolMinimize', components: [Object], emits: [Array] },
ToolNext: {
name: 'ToolNext',
components: [Object],
props: [Object],
data: [Function: data],
methods: [Object],
mounted: [Function: mounted]
},
ToolWikiLove: {
name: 'ToolWikiLove',
components: [Object],
props: [Object],
setup: [Function: setup],
methods: [Object],
render: [Function: render],
default: [Object]
}
},
props: { pageTriageUi: { type: [Function: String], default: null } },
setup: [Function: setup],
data: [Function: data],
computed: { displayClass: [Function: displayClass] },
methods: {
setToolbarDisplay: [Function: setToolbarDisplay],
dragEnable: [Function: dragEnable],
dragDisable: [Function: dragDisable],
doDrag: [Function: doDrag],
resize: [Function: resize],
updatePosition: [Function: updatePosition],
close: [Function: close],
maximize: [Function: maximize],
minimize: [Function: minimize],
insertLink: [Function: insertLink],
isVueComponent: [Function: isVueComponent],
getToolComponents: [Function: getToolComponents],
refreshFlyout: [Function: refreshFlyout]
},
mounted: [Function: mounted]
}
at <Anonymous ref="VTU_COMPONENT" >
at <VTUROOT>
15 | $.pageTriageTagsOptions = { all: {} };
16 | const App = require( '../../../../modules/ext.pageTriage.toolbar/vue/App.vue' );
> 17 | wrapper = mount( App );
| ^
18 | } );
19 | it( 'mounts', () => {
20 | expect( wrapper.exists() ).toBe( true );
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at handleSetupResult (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7912:3)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7881:7)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.toolbar/vue/App.test.js:17:13)
PASS tests/jest/ext.pageTriage.newPagesFeed/components/LabeledCheckbox.test.js
● Console
console.warn
[Vue warn]: Missing required prop: "labelMsg"
at <LabeledCheckbox ref="VTU_COMPONENT" >
at <VTUROOT>
5 | beforeEach( () => {
6 | LabeledCheckbox = require( '../../../../modules/ext.pageTriage.newPagesFeed/components/LabeledCheckbox.vue' );
> 7 | wrapper = mount( LabeledCheckbox );
| ^
8 | } );
9 | it( 'mounts', () => {
10 | expect( wrapper.exists() ).toBe( true );
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at validateProp (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4347:5)
at validateProps (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4335:5)
at initProps (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4036:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7807:3)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/LabeledCheckbox.test.js:7:13)
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'LabeledCheckbox',
components: {
CdxCheckbox: {
name: 'CdxCheckbox',
components: [Object],
props: [Object],
emits: [Array],
setup: [Function: setup],
render: [Function: zl]
}
},
props: {
inputId: { type: [Function: String], default: [Function: default] },
labelMsg: {
type: [Function: String],
required: true,
validator: [Function: validator]
},
checked: { type: [Function: Boolean], default: false },
noBreak: { type: [Function: Boolean], default: false }
},
emits: [ 'update:checked' ],
setup: [Function: setup],
computed: { labelText: [Function: labelText] }
}
at <LabeledCheckbox ref="VTU_COMPONENT" >
at <VTUROOT>
5 | beforeEach( () => {
6 | LabeledCheckbox = require( '../../../../modules/ext.pageTriage.newPagesFeed/components/LabeledCheckbox.vue' );
> 7 | wrapper = mount( LabeledCheckbox );
| ^
8 | } );
9 | it( 'mounts', () => {
10 | expect( wrapper.exists() ).toBe( true );
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at handleSetupResult (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7912:3)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7881:7)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/LabeledCheckbox.test.js:7:13)
PASS tests/jest/ext.pageTriage.newPagesFeed/components/DateControlSection.test.js
● Console
console.warn
[Vue warn]: Missing required prop: "type"
at <DateControlSection ref="VTU_COMPONENT" >
at <VTUROOT>
5 | beforeEach( () => {
6 | DateControlSection = require( '../../../../modules/ext.pageTriage.newPagesFeed/components/DateControlSection.vue' );
> 7 | wrapper = mount( DateControlSection );
| ^
8 | } );
9 | it( 'mounts', () => {
10 | expect( wrapper.exists() ).toBe( true );
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at validateProp (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4347:5)
at validateProps (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4335:5)
at initProps (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4036:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7807:3)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/DateControlSection.test.js:7:13)
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'DateControlSection',
components: {
ControlSection: {
name: 'ControlSection',
components: [Object],
props: [Object],
computed: [Object]
},
CdxTextInput: {
name: 'CdxTextInput',
components: [Object],
inheritAttrs: false,
props: [Object],
emits: [Array],
setup: [Function: setup],
methods: [Object],
render: [Function: vs]
}
},
props: {
type: { type: [Function: String], required: true },
from: { type: [Function: String], default: '' },
to: { type: [Function: String], default: '' }
},
emits: [ 'update:from', 'update:to' ]
}
at <DateControlSection ref="VTU_COMPONENT" >
at <VTUROOT>
5 | beforeEach( () => {
6 | DateControlSection = require( '../../../../modules/ext.pageTriage.newPagesFeed/components/DateControlSection.vue' );
> 7 | wrapper = mount( DateControlSection );
| ^
8 | } );
9 | it( 'mounts', () => {
10 | expect( wrapper.exists() ).toBe( true );
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7884:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/DateControlSection.test.js:7:13)
PASS tests/jest/ext.pageTriage.newPagesFeed/components/KeywordSearch.test.js
● Console
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'KeywordSearch',
components: {
CdxField: {
name: 'CdxField',
components: [Object],
props: [Object],
setup: [Function: setup],
render: [Function: js]
},
CdxTextInput: {
name: 'CdxTextInput',
components: [Object],
inheritAttrs: false,
props: [Object],
emits: [Array],
setup: [Function: setup],
methods: [Object],
render: [Function: vs]
}
},
props: { keyword: { type: [Function: String], default: '' } },
emits: [ 'update:keyword', 'focus' ]
}
at <KeywordSearch ref="VTU_COMPONENT" >
at <VTUROOT>
5 | beforeEach( () => {
6 | KeywordSearch = require( '../../../../modules/ext.pageTriage.newPagesFeed/components/KeywordSearch.vue' );
> 7 | wrapper = mount( KeywordSearch );
| ^
8 | } );
9 | it( 'mounts', () => {
10 | expect( wrapper.exists() ).toBe( true );
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7884:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/KeywordSearch.test.js:7:13)
PASS tests/jest/ext.pageTriage.newPagesFeed/components/ControlSection.test.js
● Console
console.warn
[Vue warn]: Missing required prop: "labelMsg"
at <ControlSection ref="VTU_COMPONENT" >
at <VTUROOT>
5 | beforeEach( () => {
6 | ControlSection = require( '../../../../modules/ext.pageTriage.newPagesFeed/components/ControlSection.vue' );
> 7 | wrapper = mount( ControlSection );
| ^
8 | } );
9 | it( 'mounts', () => {
10 | expect( wrapper.exists() ).toBe( true );
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at validateProp (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4347:5)
at validateProps (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4335:5)
at initProps (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4036:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7807:3)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/ControlSection.test.js:7:13)
console.warn
[Vue warn]: Component is missing template or render function: {
name: 'ControlSection',
components: {
CdxField: {
name: 'CdxField',
components: [Object],
props: [Object],
setup: [Function: setup],
render: [Function: js]
}
},
props: {
labelMsg: {
type: [Function: String],
required: true,
validator: [Function: validator]
}
},
computed: { labelText: [Function: labelText] }
}
at <ControlSection ref="VTU_COMPONENT" >
at <VTUROOT>
5 | beforeEach( () => {
6 | ControlSection = require( '../../../../modules/ext.pageTriage.newPagesFeed/components/ControlSection.vue' );
> 7 | wrapper = mount( ControlSection );
| ^
8 | } );
9 | it( 'mounts', () => {
10 | expect( wrapper.exists() ).toBe( true );
at warn$1 (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:53:13)
at finishComponentSetup (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7973:7)
at setupStatefulComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7884:5)
at setupComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7809:36)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5159:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at ReactiveEffect.componentUpdateFn [as fn] (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5269:11)
at ReactiveEffect.run (node_modules/@vue/reactivity/dist/reactivity.cjs.js:229:19)
at setupRenderEffect (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5397:5)
at mountComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5172:7)
at processComponent (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5125:9)
at patch (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:4654:11)
at render (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:5922:7)
at mount (node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:3922:13)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1703:19)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:8415:18)
at Object.mount (tests/jest/ext.pageTriage.newPagesFeed/components/ControlSection.test.js:7:13)
Test Suites: 24 passed, 24 total
Tests: 53 passed, 53 total
Snapshots: 1 passed, 1 total
Time: 5.389 s
Ran all test suites.
--- stdout ---
--- end ---
$ /usr/bin/npm test
--- stderr ---
Oops! Something went wrong! :(
ESLint: 8.57.1
TypeError: Cannot read properties of undefined (reading 'type')
Occurred while linting /src/repo/modules/ext.pageTriage.newPagesFeed/components/ListItem.vue:379
Rule: "mediawiki/no-unlabeled-buttonwidget"
at NewExpression (/src/repo/node_modules/eslint-plugin-mediawiki/src/rules/no-unlabeled-buttonwidget.js:20:27)
at ruleErrorHandler (/src/repo/node_modules/eslint/lib/linter/linter.js:1076:28)
at /src/repo/node_modules/eslint/lib/linter/safe-emitter.js:45:58
at Array.forEach (<anonymous>)
at Object.emit (/src/repo/node_modules/eslint/lib/linter/safe-emitter.js:45:38)
at NodeEventGenerator.applySelector (/src/repo/node_modules/eslint/lib/linter/node-event-generator.js:297:26)
at NodeEventGenerator.applySelectors (/src/repo/node_modules/eslint/lib/linter/node-event-generator.js:326:22)
at NodeEventGenerator.enterNode (/src/repo/node_modules/eslint/lib/linter/node-event-generator.js:340:14)
at CodePathAnalyzer.enterNode (/src/repo/node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js:803:23)
at /src/repo/node_modules/eslint/lib/linter/linter.js:1111:32
--- stdout ---
> test
> npm run lint && npm run -s test:unit
> lint
> npm -s run lint:js && npm -s run lint:styles && npm -s run lint:i18n
--- end ---
Traceback (most recent call last):
File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 289, in npm_test
self.check_call(["npm", "test"])
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.13/site-packages/runner/shell2.py", line 66, 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 2.
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 1268, in main
libup.run()
~~~~~~~~~^^
File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 1208, in run
self.npm_audit_fix(new_npm_audit)
~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 239, in npm_audit_fix
self.npm_test()
~~~~~~~~~~~~~^^
File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 303, in npm_test
self.check_call(["npm", "test"])
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.13/site-packages/runner/shell2.py", line 66, 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 2.