mediawiki/extensions/ReaderExperiments: main (log #2507476)

sourcepatches

This run took 81 seconds.

$ date
--- stdout ---
Mon Jun 15 06:53:16 UTC 2026

--- end ---
$ git clone file:///srv/git/mediawiki-extensions-ReaderExperiments.git /src/repo --depth=1 -b master
--- stderr ---
Cloning into '/src/repo'...
--- stdout ---

--- end ---
$ git config user.name libraryupgrader
--- stdout ---

--- end ---
$ git config user.email tools.libraryupgrader@tools.wmflabs.org
--- stdout ---

--- end ---
$ git submodule update --init
--- stdout ---

--- end ---
$ grr init
--- stdout ---
Installed commit-msg hook.

--- end ---
$ git show-ref refs/heads/master
--- stdout ---
e719caae44af6fb20235484fc6ccf6962f4a8bd6 refs/heads/master

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {},
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 0,
      "moderate": 0,
      "high": 0,
      "critical": 0,
      "total": 0
    },
    "dependencies": {
      "prod": 1,
      "dev": 838,
      "optional": 3,
      "peer": 1,
      "peerOptional": 0,
      "total": 838
    }
  }
}

--- 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: 37 installs, 0 updates, 0 removals
  - Locking composer/pcre (3.4.0)
  - Locking composer/semver (3.4.4)
  - Locking composer/spdx-licenses (1.6.0)
  - Locking composer/xdebug-handler (3.0.5)
  - Locking danog/advanced-json-rpc (v3.2.3)
  - Locking dealerdirect/phpcodesniffer-composer-installer (v1.2.1)
  - Locking doctrine/deprecations (1.1.6)
  - Locking mediawiki/mediawiki-codesniffer (v51.0.0)
  - Locking mediawiki/mediawiki-phan-config (0.20.0)
  - Locking mediawiki/phan-taint-check-plugin (9.1.0)
  - Locking netresearch/jsonmapper (v5.0.1)
  - Locking phan/phan (6.0.2)
  - Locking phan/tolerant-php-parser (v0.2.0)
  - Locking phan/var_representation_polyfill (0.1.4)
  - 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.5.0)
  - Locking phpcsstandards/phpcsutils (1.2.2)
  - Locking phpdocumentor/reflection-common (2.2.0)
  - Locking phpdocumentor/reflection-docblock (6.0.3)
  - Locking phpdocumentor/type-resolver (2.0.0)
  - Locking phpstan/phpdoc-parser (2.3.2)
  - Locking psr/container (2.0.2)
  - Locking psr/log (3.0.2)
  - Locking sabre/event (6.1.0)
  - Locking squizlabs/php_codesniffer (3.13.5)
  - Locking symfony/console (v8.1.0)
  - Locking symfony/deprecation-contracts (v3.7.0)
  - Locking symfony/polyfill-ctype (v1.37.0)
  - Locking symfony/polyfill-intl-grapheme (v1.38.1)
  - Locking symfony/polyfill-intl-normalizer (v1.38.0)
  - Locking symfony/polyfill-mbstring (v1.38.2)
  - Locking symfony/polyfill-php85 (v1.38.1)
  - Locking symfony/service-contracts (v3.7.0)
  - Locking symfony/string (v8.1.0)
  - Locking webmozart/assert (2.4.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 37 installs, 0 updates, 0 removals
    0 [>---------------------------]    0 [->--------------------------]
  - Installing squizlabs/php_codesniffer (3.13.5): Extracting archive
  - Installing dealerdirect/phpcodesniffer-composer-installer (v1.2.1): Extracting archive
  - Installing composer/pcre (3.4.0): Extracting archive
  - Installing phpcsstandards/phpcsutils (1.2.2): Extracting archive
  - Installing phpcsstandards/phpcsextra (1.5.0): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.38.2): Extracting archive
  - Installing composer/spdx-licenses (1.6.0): Extracting archive
  - Installing composer/semver (3.4.4): Extracting archive
  - Installing mediawiki/mediawiki-codesniffer (v51.0.0): Extracting archive
  - Installing symfony/polyfill-intl-normalizer (v1.38.0): Extracting archive
  - Installing symfony/polyfill-intl-grapheme (v1.38.1): Extracting archive
  - Installing symfony/polyfill-ctype (v1.37.0): Extracting archive
  - Installing symfony/string (v8.1.0): Extracting archive
  - Installing symfony/deprecation-contracts (v3.7.0): Extracting archive
  - Installing psr/container (2.0.2): Extracting archive
  - Installing symfony/service-contracts (v3.7.0): Extracting archive
  - Installing symfony/polyfill-php85 (v1.38.1): Extracting archive
  - Installing symfony/console (v8.1.0): Extracting archive
  - Installing sabre/event (6.1.0): Extracting archive
  - Installing phan/var_representation_polyfill (0.1.4): Extracting archive
  - Installing phan/tolerant-php-parser (v0.2.0): Extracting archive
  - Installing netresearch/jsonmapper (v5.0.1): Extracting archive
  - Installing webmozart/assert (2.4.0): 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 (2.0.0): Extracting archive
  - Installing phpdocumentor/reflection-docblock (6.0.3): Extracting archive
  - Installing danog/advanced-json-rpc (v3.2.3): Extracting archive
  - Installing psr/log (3.0.2): Extracting archive
  - Installing composer/xdebug-handler (3.0.5): Extracting archive
  - Installing phan/phan (6.0.2): Extracting archive
  - Installing mediawiki/phan-taint-check-plugin (9.1.0): Extracting archive
  - Installing mediawiki/mediawiki-phan-config (0.20.0): 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/35 [>---------------------------]   0%
 29/35 [=======================>----]  82%
 34/35 [===========================>]  97%
 35/35 [============================] 100%
1 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
17 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---
PHP CodeSniffer Config installed_paths set to ../../mediawiki/mediawiki-codesniffer,../../phpcsstandards/phpcsextra,../../phpcsstandards/phpcsutils

--- end ---
Upgrading n:grunt-stylelint from 0.20.1 -> 0.21.0
Upgrading n:stylelint-config-wikimedia from 0.18.0 -> 0.19.2
Upgrading n:@wikimedia/codex from 2.4.0 -> 2.6.0
Upgrading n:@wikimedia/codex-design-tokens from 2.4.0 -> 2.6.0
Upgrading n:@wikimedia/codex-icons from 2.4.0 -> 2.6.0
$ /usr/bin/npm install
--- stderr ---
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wikimedia/codex@2.6.0',
npm WARN EBADENGINE   required: { npm: '>=10.8.2', node: '>=20.20.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-design-tokens@2.6.0',
npm WARN EBADENGINE   required: { npm: '>=10.8.1', node: '>=20.20.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.6.0',
npm WARN EBADENGINE   required: { npm: '>=10.8.2', node: '>=20.20.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: 'grunt-stylelint@0.21.0',
npm WARN EBADENGINE   required: { node: '>=20.19.5' },
npm WARN EBADENGINE   current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
npm WARN deprecated abab@2.0.6: Use your platform's native atob() and btoa() methods instead
npm WARN deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm WARN deprecated domexception@4.0.0: Use your platform's native DOMException instead
npm WARN deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.
--- stdout ---

added 867 packages, and audited 868 packages in 12s

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

found 0 vulnerabilities

--- end ---
$ package-lock-lint /src/repo/package-lock.json
--- stdout ---
Checking /src/repo/package-lock.json

--- end ---
$ ./node_modules/.bin/grunt stylelint
--- stdout ---
Running "stylelint:all" (stylelint) task

resources/experiments/shareHighlight/components/ShareQuoteDialog.vue
  645:3  ⚠  Unexpected browser feature "viewport-unit-variants" is not supported by Edge 79-81,83-107, Firefox 49-100, Chrome 49-81,83-107, Safari 10-15,10.1,11.1,12.1,13.1,14.1,15.1,15.2-15.3, Safari on iOS 10.0-10.2,10.3,11.0-11.2,11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3  plugin/no-unsupported-browser-features

resources/experiments/shareHighlight/components/QuoteCard.vue
  410:2  ✖  Needless disable for "no-descending-specificity"  --report-needless-disables

resources/experiments/mobilePagePreviews/components/PagePreviewCard.vue
  136:4   ✖  Expected ".mf-font-size-clientpref-small" to match pattern "^ext-readerExperiments-|^cdx-|^ib-"    selector-class-pattern
  136:35  ✖  Expected ".content" to match pattern "^ext-readerExperiments-|^cdx-|^ib-"                          selector-class-pattern
  142:4   ✖  Expected ".mf-font-size-clientpref-regular" to match pattern "^ext-readerExperiments-|^cdx-|^ib-"  selector-class-pattern
  142:37  ✖  Expected ".content" to match pattern "^ext-readerExperiments-|^cdx-|^ib-"                          selector-class-pattern
  148:4   ✖  Expected ".mf-font-size-clientpref-large" to match pattern "^ext-readerExperiments-|^cdx-|^ib-"    selector-class-pattern
  148:35  ✖  Expected ".content" to match pattern "^ext-readerExperiments-|^cdx-|^ib-"                          selector-class-pattern

resources/experiments/minervaToc/components/StickyHeader.vue
  168:16  ✖  Deprecated keyword "break-word" for property "word-break"  declaration-property-value-keyword-no-deprecated

resources/experiments/imageBrowsing/components/DetailViewCaption.vue
  238:3  ✖  Needless disable for "property-no-unknown"  --report-needless-disables
  276:3  ✖  Needless disable for "function-no-unknown"  --report-needless-disables
  306:3  ✖  Needless disable for "function-no-unknown"  --report-needless-disables

✖ 12 problems (11 errors, 1 warning)
  1 error potentially fixable with the "--fix" option.


⚠ 12 warnings

Warning: Task "stylelint:all" failed. Use --force to continue.

Aborted due to warnings.

--- end ---
$ ./node_modules/.bin/stylelint resources/experiments/imageBrowsing/components/CroppedImage.vue resources/experiments/imageBrowsing/components/DetailViewControls.vue resources/experiments/imageBrowsing/styles/app.less resources/experiments/shareHighlight/components/InlineSvg.vue resources/experiments/imageBrowsing/components/VisualTableOfContentsOtherWikis.vue resources/experiments/minervaToc/FloatingButtonApp.vue resources/experiments/minervaToc/mixins/minerva-toc.less resources/experiments/shareHighlight/styles/app.less resources/experiments/minervaToc/StickyHeaderApp.vue resources/experiments/minervaToc/components/Scrollable.vue resources/experiments/imageBrowsing/components/VisualTableOfContentsItem.vue resources/experiments/imageBrowsing/components/Overlay.vue resources/experiments/imageBrowsing/components/DetailView.vue resources/experiments/shareHighlight/components/ShareQuoteDialog.vue resources/experiments/minervaToc/components/TableOfContents.vue resources/experiments/imageBrowsing/components/Carousel.vue resources/experiments/imageBrowsing/components/VisualTableOfContentsOtherWikisItem.vue resources/experiments/shareHighlight/components/QuoteCard.vue resources/experiments/minervaToc/components/StickyHeader.vue resources/experiments/mobilePagePreviews/components/BottomSheet.vue resources/experiments/shareHighlight/components/ShareQuoteButton.vue resources/experiments/imageBrowsing/components/VisualTableOfContents.vue resources/experiments/shareHighlight/App.vue resources/experiments/stickyHeaders/legacy/styles/overrides.less resources/experiments/stickyHeaders/styles/stickyHeaders.less resources/experiments/imageBrowsing/components/DetailViewCaption.vue resources/experiments/mobilePagePreviews/components/PagePreviewCard.vue resources/experiments/imageBrowsing/components/CarouselItem.vue resources/experiments/mobilePagePreviews/components/FocusTrap.vue resources/experiments/mobilePagePreviews/App.vue resources/experiments/imageBrowsing/App.vue resources/experiments/shareHighlight/components/PopoverDialog.vue --fix
--- stderr ---
resources/experiments/imageBrowsing/components/DetailViewCaption.vue
  238:3  ✖  Needless disable for "property-no-unknown"  --report-needless-disables
  276:3  ✖  Needless disable for "function-no-unknown"  --report-needless-disables
  306:3  ✖  Needless disable for "function-no-unknown"  --report-needless-disables

resources/experiments/shareHighlight/components/ShareQuoteDialog.vue
  645:3  ⚠  Unexpected browser feature "viewport-unit-variants" is not supported by Edge 79-81,83-107, Firefox 49-100, Chrome 49-81,83-107, Safari 10-15,10.1,11.1,12.1,13.1,14.1,15.1,15.2-15.3, Safari on iOS 10.0-10.2,10.3,11.0-11.2,11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3  plugin/no-unsupported-browser-features

resources/experiments/shareHighlight/components/QuoteCard.vue
  410:2  ✖  Needless disable for "no-descending-specificity"  --report-needless-disables

resources/experiments/minervaToc/components/StickyHeader.vue
  168:16  ✖  Deprecated keyword "break-word" for property "word-break"  declaration-property-value-keyword-no-deprecated

resources/experiments/mobilePagePreviews/components/PagePreviewCard.vue
  136:4   ✖  Expected ".mf-font-size-clientpref-small" to match pattern "^ext-readerExperiments-|^cdx-|^ib-"    selector-class-pattern
  136:35  ✖  Expected ".content" to match pattern "^ext-readerExperiments-|^cdx-|^ib-"                          selector-class-pattern
  142:4   ✖  Expected ".mf-font-size-clientpref-regular" to match pattern "^ext-readerExperiments-|^cdx-|^ib-"  selector-class-pattern
  142:37  ✖  Expected ".content" to match pattern "^ext-readerExperiments-|^cdx-|^ib-"                          selector-class-pattern
  148:4   ✖  Expected ".mf-font-size-clientpref-large" to match pattern "^ext-readerExperiments-|^cdx-|^ib-"    selector-class-pattern
  148:35  ✖  Expected ".content" to match pattern "^ext-readerExperiments-|^cdx-|^ib-"                          selector-class-pattern

✖ 12 problems (11 errors, 1 warning)
  1 error potentially fixable with the "--fix" option.
--- stdout ---

--- end ---
$ ./node_modules/.bin/stylelint resources/experiments/imageBrowsing/components/CroppedImage.vue resources/experiments/imageBrowsing/components/DetailViewControls.vue resources/experiments/imageBrowsing/styles/app.less resources/experiments/shareHighlight/components/InlineSvg.vue resources/experiments/imageBrowsing/components/VisualTableOfContentsOtherWikis.vue resources/experiments/minervaToc/FloatingButtonApp.vue resources/experiments/minervaToc/mixins/minerva-toc.less resources/experiments/shareHighlight/styles/app.less resources/experiments/minervaToc/StickyHeaderApp.vue resources/experiments/minervaToc/components/Scrollable.vue resources/experiments/imageBrowsing/components/VisualTableOfContentsItem.vue resources/experiments/imageBrowsing/components/Overlay.vue resources/experiments/imageBrowsing/components/DetailView.vue resources/experiments/shareHighlight/components/ShareQuoteDialog.vue resources/experiments/minervaToc/components/TableOfContents.vue resources/experiments/imageBrowsing/components/Carousel.vue resources/experiments/imageBrowsing/components/VisualTableOfContentsOtherWikisItem.vue resources/experiments/shareHighlight/components/QuoteCard.vue resources/experiments/minervaToc/components/StickyHeader.vue resources/experiments/mobilePagePreviews/components/BottomSheet.vue resources/experiments/shareHighlight/components/ShareQuoteButton.vue resources/experiments/imageBrowsing/components/VisualTableOfContents.vue resources/experiments/shareHighlight/App.vue resources/experiments/stickyHeaders/legacy/styles/overrides.less resources/experiments/stickyHeaders/styles/stickyHeaders.less resources/experiments/imageBrowsing/components/DetailViewCaption.vue resources/experiments/mobilePagePreviews/components/PagePreviewCard.vue resources/experiments/imageBrowsing/components/CarouselItem.vue resources/experiments/mobilePagePreviews/components/FocusTrap.vue resources/experiments/mobilePagePreviews/App.vue resources/experiments/imageBrowsing/App.vue resources/experiments/shareHighlight/components/PopoverDialog.vue -f json
--- stdout ---
[{"source":"/src/repo/resources/experiments/imageBrowsing/components/CroppedImage.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/imageBrowsing/components/DetailViewControls.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/imageBrowsing/components/VisualTableOfContentsOtherWikis.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/imageBrowsing/components/VisualTableOfContentsItem.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/imageBrowsing/components/Overlay.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/imageBrowsing/components/DetailView.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/imageBrowsing/components/Carousel.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/imageBrowsing/components/VisualTableOfContentsOtherWikisItem.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/imageBrowsing/components/VisualTableOfContents.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/imageBrowsing/components/DetailViewCaption.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":238,"column":3,"endLine":238,"endColumn":34,"rule":"--report-needless-disables","severity":"error","text":"Needless disable for \"property-no-unknown\""},{"line":276,"column":3,"endLine":276,"endColumn":34,"rule":"--report-needless-disables","severity":"error","text":"Needless disable for \"function-no-unknown\""},{"line":306,"column":3,"endLine":306,"endColumn":34,"rule":"--report-needless-disables","severity":"error","text":"Needless disable for \"function-no-unknown\""}]},{"source":"/src/repo/resources/experiments/imageBrowsing/components/CarouselItem.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/imageBrowsing/styles/app.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/shareHighlight/components/InlineSvg.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/shareHighlight/components/ShareQuoteDialog.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[{"line":645,"column":3,"endLine":645,"endColumn":37,"rule":"plugin/no-unsupported-browser-features","severity":"warning","text":"Unexpected browser feature \"viewport-unit-variants\" is not supported by Edge 79-81,83-107, Firefox 49-100, Chrome 49-81,83-107, Safari 10-15,10.1,11.1,12.1,13.1,14.1,15.1,15.2-15.3, Safari on iOS 10.0-10.2,10.3,11.0-11.2,11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3 (plugin/no-unsupported-browser-features)"}]},{"source":"/src/repo/resources/experiments/shareHighlight/components/QuoteCard.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":410,"column":2,"endLine":410,"endColumn":60,"rule":"--report-needless-disables","severity":"error","text":"Needless disable for \"no-descending-specificity\""}]},{"source":"/src/repo/resources/experiments/shareHighlight/components/ShareQuoteButton.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/shareHighlight/components/PopoverDialog.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/minervaToc/FloatingButtonApp.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/minervaToc/StickyHeaderApp.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/minervaToc/mixins/minerva-toc.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/shareHighlight/styles/app.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/minervaToc/components/Scrollable.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/minervaToc/components/TableOfContents.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/minervaToc/components/StickyHeader.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":168,"column":16,"endLine":168,"endColumn":26,"rule":"declaration-property-value-keyword-no-deprecated","severity":"error","text":"Deprecated keyword \"break-word\" for property \"word-break\" (declaration-property-value-keyword-no-deprecated)"}]},{"source":"/src/repo/resources/experiments/mobilePagePreviews/components/BottomSheet.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/mobilePagePreviews/components/PagePreviewCard.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":true,"warnings":[{"line":136,"column":4,"endLine":136,"endColumn":34,"rule":"selector-class-pattern","severity":"error","text":"Expected \".mf-font-size-clientpref-small\" to match pattern \"^ext-readerExperiments-|^cdx-|^ib-\" (selector-class-pattern)"},{"line":136,"column":35,"endLine":136,"endColumn":43,"rule":"selector-class-pattern","severity":"error","text":"Expected \".content\" to match pattern \"^ext-readerExperiments-|^cdx-|^ib-\" (selector-class-pattern)"},{"line":142,"column":4,"endLine":142,"endColumn":36,"rule":"selector-class-pattern","severity":"error","text":"Expected \".mf-font-size-clientpref-regular\" to match pattern \"^ext-readerExperiments-|^cdx-|^ib-\" (selector-class-pattern)"},{"line":142,"column":37,"endLine":142,"endColumn":45,"rule":"selector-class-pattern","severity":"error","text":"Expected \".content\" to match pattern \"^ext-readerExperiments-|^cdx-|^ib-\" (selector-class-pattern)"},{"line":148,"column":4,"endLine":148,"endColumn":34,"rule":"selector-class-pattern","severity":"error","text":"Expected \".mf-font-size-clientpref-large\" to match pattern \"^ext-readerExperiments-|^cdx-|^ib-\" (selector-class-pattern)"},{"line":148,"column":35,"endLine":148,"endColumn":43,"rule":"selector-class-pattern","severity":"error","text":"Expected \".content\" to match pattern \"^ext-readerExperiments-|^cdx-|^ib-\" (selector-class-pattern)"}]},{"source":"/src/repo/resources/experiments/mobilePagePreviews/components/FocusTrap.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/shareHighlight/App.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/stickyHeaders/legacy/styles/overrides.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/stickyHeaders/styles/stickyHeaders.less","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/mobilePagePreviews/App.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]},{"source":"/src/repo/resources/experiments/imageBrowsing/App.vue","deprecations":[],"invalidOptionWarnings":[],"parseErrors":[],"errored":false,"warnings":[]}]
--- end ---
Removing stylelint-disable (x3) from /src/repo/resources/experiments/imageBrowsing/components/DetailViewCaption.vue
Removing stylelint-disable (x1) from /src/repo/resources/experiments/shareHighlight/components/QuoteCard.vue
$ /usr/bin/npm ci
--- stderr ---
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wikimedia/codex@2.6.0',
npm WARN EBADENGINE   required: { node: '>=20.20.2', 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-design-tokens@2.6.0',
npm WARN EBADENGINE   required: { node: '>=20.20.2', npm: '>=10.8.1' },
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.6.0',
npm WARN EBADENGINE   required: { node: '>=20.20.2', 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: 'grunt-stylelint@0.21.0',
npm WARN EBADENGINE   required: { node: '>=20.19.5' },
npm WARN EBADENGINE   current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
npm WARN deprecated abab@2.0.6: Use your platform's native atob() and btoa() methods instead
npm WARN deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm WARN deprecated domexception@4.0.0: Use your platform's native DOMException instead
npm WARN deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.
--- stdout ---

added 867 packages, and audited 868 packages in 10s

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

found 0 vulnerabilities

--- end ---
$ /usr/bin/npm test
--- stdout ---

> test
> grunt lint && npm run jest

Running "eslint:all" (eslint) task

/src/repo/resources/common/composables/useContentImages.js
  17:1  warning  This line has a length of 116. Maximum allowed is 100  max-len

/src/repo/resources/common/thumbExtractor.js
  169:1  warning  This line has a length of 102. Maximum allowed is 100  max-len

/src/repo/resources/experiments/imageBrowsing/components/CarouselItem.vue
  61:1  warning  This line has a length of 106. Maximum allowed is 100  max-len

/src/repo/resources/experiments/imageBrowsing/components/CroppedImage.vue
  226:1  warning  This line has a length of 101. Maximum allowed is 100  max-len

/src/repo/resources/experiments/imageBrowsing/components/DetailViewCaption.vue
  198:1  warning  This line has a length of 107. Maximum allowed is 100  max-len

/src/repo/resources/experiments/imageBrowsing/composables/useMediaSearchResults.js
    8:1  warning  This line has a length of 105. Maximum allowed is 100  max-len
    9:1  warning  This line has a length of 105. Maximum allowed is 100  max-len
  166:1  warning  This line has a length of 135. Maximum allowed is 100  max-len
  172:1  warning  This line has a length of 102. Maximum allowed is 100  max-len

/src/repo/resources/experiments/minervaToc/FloatingButtonApp.vue
  69:1  warning  This line has a length of 164. Maximum allowed is 100  max-len

/src/repo/resources/experiments/minervaToc/StickyHeaderApp.vue
  101:1  warning  This line has a length of 164. Maximum allowed is 100  max-len
  244:1  warning  This line has a length of 103. Maximum allowed is 100  max-len

/src/repo/resources/experiments/minervaToc/components/Scrollable.vue
  31:1  warning  This line has a length of 138. Maximum allowed is 100  max-len

/src/repo/resources/experiments/minervaToc/components/TableOfContents.vue
  16:1  warning  This line has a length of 131. Maximum allowed is 100  max-len

/src/repo/resources/experiments/minervaToc/composables/useActiveHeading.js
  68:1  warning  This line has a length of 108. Maximum allowed is 100  max-len

/src/repo/resources/experiments/mobilePagePreviews/components/BottomSheet.vue
  48:1  warning  This line has a length of 116. Maximum allowed is 100  max-len

/src/repo/resources/experiments/mobilePagePreviews/components/PagePreviewCard.vue
  70:1  warning  This line has a length of 110. Maximum allowed is 100  max-len

/src/repo/resources/experiments/shareHighlight/App.vue
  48:1  warning  This line has a length of 108. Maximum allowed is 100  max-len

/src/repo/resources/experiments/shareHighlight/components/InlineSvg.vue
  26:3  warning  Unused eslint-disable directive (no problems were reported from 'vue/no-unused-properties')

/src/repo/resources/experiments/shareHighlight/components/QuoteCard.vue
   26:1  warning  This line has a length of 103. Maximum allowed is 100  max-len
   39:1  warning  This line has a length of 117. Maximum allowed is 100  max-len
   40:1  warning  This line has a length of 113. Maximum allowed is 100  max-len
   55:1  warning  This line has a length of 157. Maximum allowed is 100  max-len
   73:1  warning  This line has a length of 112. Maximum allowed is 100  max-len
   79:1  warning  This line has a length of 112. Maximum allowed is 100  max-len
   99:1  warning  This line has a length of 112. Maximum allowed is 100  max-len
  104:1  warning  This line has a length of 112. Maximum allowed is 100  max-len
  109:1  warning  This line has a length of 112. Maximum allowed is 100  max-len
  124:1  warning  This line has a length of 139. Maximum allowed is 100  max-len

/src/repo/resources/experiments/shareHighlight/components/ShareQuoteDialog.vue
   22:1  warning  This line has a length of 128. Maximum allowed is 100  max-len
   22:5  warning  Attribute ":style" should go before "@img-error"       vue/attributes-order
   52:1  warning  This line has a length of 123. Maximum allowed is 100  max-len
   75:1  warning  This line has a length of 109. Maximum allowed is 100  max-len
   76:1  warning  This line has a length of 115. Maximum allowed is 100  max-len
  204:1  warning  This line has a length of 105. Maximum allowed is 100  max-len
  519:1  warning  This line has a length of 101. Maximum allowed is 100  max-len

/src/repo/resources/experiments/shareHighlight/toolbarBlueDot.js
  43:2  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc

/src/repo/resources/experiments/shareHighlight/utils/textFragment.js
  7:1  warning  This line has a length of 103. Maximum allowed is 100  max-len

/src/repo/resources/lib/foreign-resources.yaml
  8:1  warning  This line has a length of 108. Maximum allowed is 100  max-len

✖ 39 problems (0 errors, 39 warnings)
  0 errors and 2 warnings potentially fixable with the `--fix` option.


Running "stylelint:all" (stylelint) task

resources/experiments/stickyHeaders/styles/stickyHeaders.less
   4:1  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  30:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

resources/experiments/stickyHeaders/legacy/styles/overrides.less
  6:1  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

resources/experiments/shareHighlight/styles/app.less
  12:1  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

resources/experiments/shareHighlight/components/ShareQuoteDialog.vue
  645:3  ⚠  Unexpected browser feature "viewport-unit-variants" is not supported by Edge 79-81,83-107, Firefox 49-100, Chrome 49-81,83-107, Safari 10-15,10.1,11.1,12.1,13.1,14.1,15.1,15.2-15.3, Safari on iOS 10.0-10.2,10.3,11.0-11.2,11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3  plugin/no-unsupported-browser-features

resources/experiments/mobilePagePreviews/components/PagePreviewCard.vue
  134:4  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  140:4  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  146:4  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

resources/experiments/mobilePagePreviews/components/BottomSheet.vue
  244:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

resources/experiments/minervaToc/StickyHeaderApp.vue
  208:1  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

resources/experiments/minervaToc/FloatingButtonApp.vue
  153:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  165:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

resources/experiments/minervaToc/components/TableOfContents.vue
  188:1  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

resources/experiments/imageBrowsing/styles/app.less
  3:1  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

resources/experiments/imageBrowsing/components/DetailViewCaption.vue
  270:1  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  272:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  278:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  284:1  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  286:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  292:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  298:1  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  301:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  307:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

✖ 23 problems (22 errors, 1 warning)


⚠ 23 warnings

Warning: Task "stylelint:all" failed. Use --force to continue.

Aborted due to warnings.

--- end ---
$ node_modules/.bin/jest --config /src/repo/tests/jest/jest.config.js -u
--- stderr ---
PASS tests/jest/textFragment.test.js
PASS tests/jest/VisualTableOfContentsItem.test.js
PASS tests/jest/DetailViewCaption.test.js
PASS tests/jest/Carousel.test.js
PASS tests/jest/App.test.js
PASS tests/jest/Overlay.test.js
PASS tests/jest/useMediaSearchResults.test.js
PASS tests/jest/ShareQuoteDialog.test.js
PASS tests/jest/thumbExtractor.test.js
PASS tests/jest/VisualTableOfContents.test.js
PASS tests/jest/DetailView.test.js
PASS tests/jest/CarouselItem.test.js

Test Suites: 12 passed, 12 total
Tests:       58 passed, 58 total
Snapshots:   0 total
Time:        5.279 s
Ran all test suites.
--- stdout ---
------------------------------------------|---------|----------|---------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
File                                      | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s                                                                                                                                                                                                                   
------------------------------------------|---------|----------|---------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
All files                                 |   66.03 |    69.67 |   49.31 |   66.03 |                                                                                                                                                                                                                                     
 common                                   |   55.11 |    72.72 |   53.84 |   55.11 |                                                                                                                                                                                                                                     
  excludedImageSelectors.js               |     100 |      100 |     100 |     100 |                                                                                                                                                                                                                                     
  index.js                                |     100 |      100 |     100 |     100 |                                                                                                                                                                                                                                     
  thumbExtractor.js                       |   47.12 |    66.66 |   45.45 |   47.12 | 68-195,235-248,259-261,269-271,280-289,298-299,306-307,324-325,330-348,357-375                                                                                                                                                      
 common/composables                       |   54.83 |       76 |   66.66 |   54.83 |                                                                                                                                                                                                                                     
  useAverageColor.js                      |   67.69 |    70.58 |      75 |   67.69 | 30-60,98-120,152-153,169-171,179-180,190-191                                                                                                                                                                                        
  useContentImages.js                     |    82.6 |       75 |     100 |    82.6 | 11-12,17-18                                                                                                                                                                                                                         
  useImageModel.js                        |   30.55 |      100 |      50 |   30.55 | 22-71                                                                                                                                                                                                                               
  useSummary.js                           |    37.8 |      100 |   33.33 |    37.8 | 13-22,39-79                                                                                                                                                                                                                         
 experiments/imageBrowsing                |   76.28 |    57.14 |   85.71 |   76.28 |                                                                                                                                                                                                                                     
  App.vue                                 |   76.28 |    57.14 |   85.71 |   76.28 | 67-108,111-116,133-137,164-165,190-194                                                                                                                                                                                              
 experiments/imageBrowsing/components     |   74.05 |    77.04 |   58.13 |   74.05 |                                                                                                                                                                                                                                     
  Carousel.vue                            |   76.11 |      100 |      30 |   76.11 | 122-129,137-152,160-175,183-186,194-198,206-208,215-221                                                                                                                                                                             
  CarouselItem.vue                        |     100 |      100 |     100 |     100 |                                                                                                                                                                                                                                     
  CroppedImage.vue                        |   60.85 |    58.82 |      60 |   60.85 | 102-104,106-117,128-142,175-181,189-288                                                                                                                                                                                             
  DetailView.vue                          |   84.82 |      100 |   66.66 |   84.82 | 64-80                                                                                                                                                                                                                               
  DetailViewCaption.vue                   |   92.97 |    88.88 |   66.66 |   92.97 | 78-79,107-112,117-119,133-141,158-159                                                                                                                                                                                               
  DetailViewControls.vue                  |   43.07 |      100 |       0 |   43.07 | 148-369                                                                                                                                                                                                                             
  Overlay.vue                             |   95.08 |       75 |   71.42 |   95.08 | 140-141,144-152,167-168,172,176                                                                                                                                                                                                     
  VisualTableOfContents.vue               |     100 |       75 |     100 |     100 | 56                                                                                                                                                                                                                                  
  VisualTableOfContentsItem.vue           |   92.54 |    72.72 |      75 |   92.54 | 94-96,113-114,143-145,154-162                                                                                                                                                                                                       
  VisualTableOfContentsOtherWikis.vue     |   67.97 |      100 |       0 |   67.97 | 68-116                                                                                                                                                                                                                              
  VisualTableOfContentsOtherWikisItem.vue |   47.03 |      100 |       0 |   47.03 | 63-187                                                                                                                                                                                                                              
 experiments/imageBrowsing/composables    |   71.88 |    76.92 |   68.42 |   71.88 |                                                                                                                                                                                                                                     
  useAltText.js                           |   72.72 |       60 |     100 |   72.72 | 12-16,19                                                                                                                                                                                                                            
  useEntityId.js                          |   38.18 |      100 |      50 |   38.18 | 21-54                                                                                                                                                                                                                               
  useExternalImages.js                    |   21.25 |      100 |   33.33 |   21.25 | 10-34,42-79                                                                                                                                                                                                                         
  useImageLabel.js                        |      95 |       75 |     100 |      95 | 17                                                                                                                                                                                                                                  
  useMediaSearchResults.js                |   90.54 |     72.5 |     100 |   90.54 | 16-17,226-232,244-252,266-271,273-274                                                                                                                                                                                               
  useMwApi.js                             |   73.33 |      100 |      50 |   73.33 | 11-14                                                                                                                                                                                                                               
  useSmartCrop.js                         |   55.88 |    66.66 |   33.33 |   55.88 | 9-18,29-33                                                                                                                                                                                                                          
  useUniqueExternalGlobalUsageWikis.js    |     100 |      100 |     100 |     100 |                                                                                                                                                                                                                                     
 experiments/shareHighlight/components    |   71.42 |    43.58 |      30 |   71.42 |                                                                                                                                                                                                                                     
  InlineSvg.vue                           |   38.65 |      100 |       0 |   38.65 | 44-116                                                                                                                                                                                                                              
  PopoverDialog.vue                       |   95.16 |      100 |       0 |   95.16 | 184-193                                                                                                                                                                                                                             
  QuoteCard.vue                           |   72.92 |      100 |       0 |   72.92 | 199-200,215-365                                                                                                                                                                                                                     
  ShareQuoteDialog.vue                    |   68.56 |    43.58 |      40 |   68.56 | 172-174,181,183-188,193-198,218,220-223,232-233,241-254,259-273,281-282,286-293,298-299,301-302,308-309,311-312,324-326,337-338,344,349-350,363-376,403-407,411-415,419-431,437-443,451-454,460-489,495-510,516-534,537-542,549-555 
 experiments/shareHighlight/utils         |   66.89 |     90.9 |   66.66 |   66.89 |                                                                                                                                                                                                                                     
  rawParamsMessage.js                     |      32 |      100 |      50 |      32 | 16-49                                                                                                                                                                                                                               
  textFragment.js                         |   84.69 |    88.88 |      75 |   84.69 | 54-55,79-91                                                                                                                                                                                                                         
 lib/smartcrop                            |   23.06 |    42.85 |    4.34 |   23.06 |                                                                                                                                                                                                                                     
  smartcrop.js                            |   23.06 |    42.85 |    4.34 |   23.06 | 33-34,75-155,161-172,176-200,203-226,229-253,256-264,267-280,283-304,307-344,347-368,372-378,381-414,417-424,428-469,473-477,480-532,542-551,556-558,561-562,564-565,567-578,583-584,587-589                                        
------------------------------------------|---------|----------|---------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

--- end ---
$ /usr/bin/npm test
--- stdout ---

> test
> grunt lint && npm run jest

Running "eslint:all" (eslint) task

/src/repo/resources/common/composables/useContentImages.js
  17:1  warning  This line has a length of 116. Maximum allowed is 100  max-len

/src/repo/resources/common/thumbExtractor.js
  169:1  warning  This line has a length of 102. Maximum allowed is 100  max-len

/src/repo/resources/experiments/imageBrowsing/components/CarouselItem.vue
  61:1  warning  This line has a length of 106. Maximum allowed is 100  max-len

/src/repo/resources/experiments/imageBrowsing/components/CroppedImage.vue
  226:1  warning  This line has a length of 101. Maximum allowed is 100  max-len

/src/repo/resources/experiments/imageBrowsing/components/DetailViewCaption.vue
  198:1  warning  This line has a length of 107. Maximum allowed is 100  max-len

/src/repo/resources/experiments/imageBrowsing/composables/useMediaSearchResults.js
    8:1  warning  This line has a length of 105. Maximum allowed is 100  max-len
    9:1  warning  This line has a length of 105. Maximum allowed is 100  max-len
  166:1  warning  This line has a length of 135. Maximum allowed is 100  max-len
  172:1  warning  This line has a length of 102. Maximum allowed is 100  max-len

/src/repo/resources/experiments/minervaToc/FloatingButtonApp.vue
  69:1  warning  This line has a length of 164. Maximum allowed is 100  max-len

/src/repo/resources/experiments/minervaToc/StickyHeaderApp.vue
  101:1  warning  This line has a length of 164. Maximum allowed is 100  max-len
  244:1  warning  This line has a length of 103. Maximum allowed is 100  max-len

/src/repo/resources/experiments/minervaToc/components/Scrollable.vue
  31:1  warning  This line has a length of 138. Maximum allowed is 100  max-len

/src/repo/resources/experiments/minervaToc/components/TableOfContents.vue
  16:1  warning  This line has a length of 131. Maximum allowed is 100  max-len

/src/repo/resources/experiments/minervaToc/composables/useActiveHeading.js
  68:1  warning  This line has a length of 108. Maximum allowed is 100  max-len

/src/repo/resources/experiments/mobilePagePreviews/components/BottomSheet.vue
  48:1  warning  This line has a length of 116. Maximum allowed is 100  max-len

/src/repo/resources/experiments/mobilePagePreviews/components/PagePreviewCard.vue
  70:1  warning  This line has a length of 110. Maximum allowed is 100  max-len

/src/repo/resources/experiments/shareHighlight/App.vue
  48:1  warning  This line has a length of 108. Maximum allowed is 100  max-len

/src/repo/resources/experiments/shareHighlight/components/InlineSvg.vue
  26:3  warning  Unused eslint-disable directive (no problems were reported from 'vue/no-unused-properties')

/src/repo/resources/experiments/shareHighlight/components/QuoteCard.vue
   26:1  warning  This line has a length of 103. Maximum allowed is 100  max-len
   39:1  warning  This line has a length of 117. Maximum allowed is 100  max-len
   40:1  warning  This line has a length of 113. Maximum allowed is 100  max-len
   55:1  warning  This line has a length of 157. Maximum allowed is 100  max-len
   73:1  warning  This line has a length of 112. Maximum allowed is 100  max-len
   79:1  warning  This line has a length of 112. Maximum allowed is 100  max-len
   99:1  warning  This line has a length of 112. Maximum allowed is 100  max-len
  104:1  warning  This line has a length of 112. Maximum allowed is 100  max-len
  109:1  warning  This line has a length of 112. Maximum allowed is 100  max-len
  124:1  warning  This line has a length of 139. Maximum allowed is 100  max-len

/src/repo/resources/experiments/shareHighlight/components/ShareQuoteDialog.vue
   22:1  warning  This line has a length of 128. Maximum allowed is 100  max-len
   22:5  warning  Attribute ":style" should go before "@img-error"       vue/attributes-order
   52:1  warning  This line has a length of 123. Maximum allowed is 100  max-len
   75:1  warning  This line has a length of 109. Maximum allowed is 100  max-len
   76:1  warning  This line has a length of 115. Maximum allowed is 100  max-len
  204:1  warning  This line has a length of 105. Maximum allowed is 100  max-len
  519:1  warning  This line has a length of 101. Maximum allowed is 100  max-len

/src/repo/resources/experiments/shareHighlight/toolbarBlueDot.js
  43:2  warning  All possible CSS classes should be documented. See https://w.wiki/PS2 for details  mediawiki/class-doc

/src/repo/resources/experiments/shareHighlight/utils/textFragment.js
  7:1  warning  This line has a length of 103. Maximum allowed is 100  max-len

/src/repo/resources/lib/foreign-resources.yaml
  8:1  warning  This line has a length of 108. Maximum allowed is 100  max-len

✖ 39 problems (0 errors, 39 warnings)
  0 errors and 2 warnings potentially fixable with the `--fix` option.


Running "stylelint:all" (stylelint) task

resources/experiments/stickyHeaders/styles/stickyHeaders.less
   4:1  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  30:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

resources/experiments/stickyHeaders/legacy/styles/overrides.less
  6:1  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

resources/experiments/shareHighlight/styles/app.less
  12:1  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

resources/experiments/shareHighlight/components/ShareQuoteDialog.vue
  645:3  ⚠  Unexpected browser feature "viewport-unit-variants" is not supported by Edge 79-81,83-107, Firefox 49-100, Chrome 49-81,83-107, Safari 10-15,10.1,11.1,12.1,13.1,14.1,15.1,15.2-15.3, Safari on iOS 10.0-10.2,10.3,11.0-11.2,11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4,14.5-14.8,15.0-15.1,15.2-15.3  plugin/no-unsupported-browser-features

resources/experiments/mobilePagePreviews/components/PagePreviewCard.vue
  134:4  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  140:4  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  146:4  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

resources/experiments/mobilePagePreviews/components/BottomSheet.vue
  244:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

resources/experiments/minervaToc/StickyHeaderApp.vue
  208:1  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

resources/experiments/minervaToc/FloatingButtonApp.vue
  153:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  165:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

resources/experiments/minervaToc/components/TableOfContents.vue
  188:1  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

resources/experiments/imageBrowsing/styles/app.less
  3:1  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

resources/experiments/imageBrowsing/components/DetailViewCaption.vue
  270:1  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  272:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  278:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  284:1  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  286:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  292:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  298:1  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  301:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables
  307:2  ✖  Needless disable for "selector-class-pattern"  --report-needless-disables

✖ 23 problems (22 errors, 1 warning)


⚠ 23 warnings

Warning: Task "stylelint:all" failed. Use --force to continue.

Aborted due to warnings.

--- 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 3.

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 1202, in run
    self.npm_upgrade(plan)
    ~~~~~~~~~~~~~~~~^^^^^^
  File "/venv/lib/python3.13/site-packages/runner/__init__.py", line 1064, in npm_upgrade
    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 3.
Source code is licensed under the AGPL.