Steps to replicate the issue (include links if applicable):
- Submit a patch for an extension that requires Selenium extensions/Popups (such as Math)
- Investigate failing tests
What happens?:
- see for example
https://integration.wikimedia.org/ci/job/quibble-vendor-mysql-php74-selenium/60205/console
INFO:quibble.commands:Running webdriver test in /workspace/src/extensions/Popups 13:33:02 npm warn EBADENGINE Unsupported engine { 13:33:02 npm warn EBADENGINE package: undefined, 13:33:02 npm warn EBADENGINE required: { node: '18.20.2' }, 13:33:02 npm warn EBADENGINE current: { node: 'v20.16.0', npm: '10.8.1' } 13:33:02 npm warn EBADENGINE } 13:33:02 npm warn EBADENGINE Unsupported engine { 13:33:02 npm warn EBADENGINE package: 'eslint-plugin-jsdoc@42.0.0', 13:33:02 npm warn EBADENGINE required: { node: '^14 || ^16 || ^17 || ^18 || ^19' }, 13:33:02 npm warn EBADENGINE current: { node: 'v20.16.0', npm: '10.8.1' } 13:33:02 npm warn EBADENGINE } 13:33:06 npm warn deprecated @types/easy-table@1.2.0: This is a stub types definition. easy-table provides its own type definitions, so you do not need this installed. 13:33:06 npm warn deprecated har-validator@5.1.5: this library is no longer supported 13:33:06 npm warn deprecated uuid@3.4.0: 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. 13:33:07 npm warn deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 13:33:08 npm warn deprecated iltorb@2.4.5: The zlib module provides APIs for brotli compression/decompression starting with Node.js v10.16.0, please use it over iltorb 13:33:10 npm warn deprecated core-js@2.6.12: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js. 13:33:32 npm error code 1 13:33:32 npm error path /workspace/src/extensions/Popups/node_modules/iltorb 13:33:32 npm error command failed 13:33:32 npm error command sh -c node ./scripts/install.js || node-gyp rebuild 13:33:32 npm error make: Entering directory '/workspace/src/extensions/Popups/node_modules/iltorb/build' 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/common/dictionary.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/common/transform.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/dec/bit_reader.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/dec/decode.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/dec/huffman.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/dec/state.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/enc/backward_references.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/enc/backward_references_hq.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/enc/bit_cost.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/enc/block_splitter.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/enc/brotli_bit_stream.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/enc/cluster.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/enc/compress_fragment.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/enc/compress_fragment_two_pass.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/enc/dictionary_hash.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/enc/encode.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/enc/encoder_dict.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/enc/entropy_encode.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/enc/histogram.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/enc/literal_cost.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/enc/memory.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/enc/metablock.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/enc/static_dict.o 13:33:32 npm error CC(target) Release/obj.target/iltorb/brotli/c/enc/utf8_util.o 13:33:32 npm error CXX(target) Release/obj.target/iltorb/src/common/allocator.o 13:33:32 npm error make: Leaving directory '/workspace/src/extensions/Popups/node_modules/iltorb/build' 13:33:32 npm error info install installing standalone, skipping download. 13:33:32 npm error gyp info it worked if it ends with ok 13:33:32 npm error gyp info using node-gyp@10.1.0 13:33:32 npm error gyp info using node@20.16.0 | linux | x64 13:33:32 npm error gyp info find Python using Python version 3.7.3 found at "/usr/bin/python3" 13:33:32 npm error gyp http GET https://nodejs.org/download/release/v20.16.0/node-v20.16.0-headers.tar.gz 13:33:32 npm error gyp http 200 https://nodejs.org/download/release/v20.16.0/node-v20.16.0-headers.tar.gz 13:33:32 npm error gyp http GET https://nodejs.org/download/release/v20.16.0/SHASUMS256.txt 13:33:32 npm error gyp http 200 https://nodejs.org/download/release/v20.16.0/SHASUMS256.txt 13:33:32 npm error gyp info spawn /usr/bin/python3 13:33:32 npm error gyp info spawn args [ 13:33:32 npm error gyp info spawn args '/usr/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py', 13:33:32 npm error gyp info spawn args 'binding.gyp', 13:33:32 npm error gyp info spawn args '-f', 13:33:32 npm error gyp info spawn args 'make', 13:33:32 npm error gyp info spawn args '-I', 13:33:32 npm error gyp info spawn args '/workspace/src/extensions/Popups/node_modules/iltorb/build/config.gypi', 13:33:32 npm error gyp info spawn args '-I', 13:33:32 npm error gyp info spawn args '/usr/lib/node_modules/npm/node_modules/node-gyp/addon.gypi', 13:33:32 npm error gyp info spawn args '-I', 13:33:32 npm error gyp info spawn args '/cache/node-gyp/20.16.0/include/node/common.gypi', 13:33:32 npm error gyp info spawn args '-Dlibrary=shared_library', 13:33:32 npm error gyp info spawn args '-Dvisibility=default', 13:33:32 npm error gyp info spawn args '-Dnode_root_dir=/cache/node-gyp/20.16.0', 13:33:32 npm error gyp info spawn args '-Dnode_gyp_dir=/usr/lib/node_modules/npm/node_modules/node-gyp', 13:33:32 npm error gyp info spawn args '-Dnode_lib_file=/cache/node-gyp/20.16.0/<(target_arch)/node.lib', 13:33:32 npm error gyp info spawn args '-Dmodule_root_dir=/workspace/src/extensions/Popups/node_modules/iltorb', 13:33:32 npm error gyp info spawn args '-Dnode_engine=v8', 13:33:32 npm error gyp info spawn args '--depth=.', 13:33:32 npm error gyp info spawn args '--no-parallel', 13:33:32 npm error gyp info spawn args '--generator-output', 13:33:32 npm error gyp info spawn args 'build', 13:33:32 npm error gyp info spawn args '-Goutput_dir=.' 13:33:32 npm error gyp info spawn args ] 13:33:32 npm error gyp info spawn make 13:33:32 npm error gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ] 13:33:32 npm error In file included from ../../nan/nan.h:178, 13:33:32 npm error from ../src/common/allocator.cc:1: 13:33:32 npm error ../../nan/nan_callbacks.h:55:23: error: ‘AccessorSignature’ is not a member of ‘v8’ 13:33:32 npm error typedef v8::Local<v8::AccessorSignature> Sig; 13:33:32 npm error ^~~~~~~~~~~~~~~~~ 13:33:32 npm error ../../nan/nan_callbacks.h:55:23: note: suggested alternative: ‘Signature’ 13:33:32 npm error typedef v8::Local<v8::AccessorSignature> Sig; 13:33:32 npm error ^~~~~~~~~~~~~~~~~ 13:33:32 npm error Signature 13:33:32 npm error ../../nan/nan_callbacks.h:55:40: error: template argument 1 is invalid 13:33:32 npm error typedef v8::Local<v8::AccessorSignature> Sig; 13:33:32 npm error ^ 13:33:32 npm error In file included from ../src/common/allocator.cc:1: 13:33:32 npm error ../../nan/nan.h: In function ‘void Nan::SetAccessor(v8::Local<v8::ObjectTemplate>, v8::Local<v8::String>, Nan::GetterCallback, Nan::SetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, Nan::imp::Sig)’: 13:33:32 npm error ../../nan/nan.h:2551:16: error: no matching function for call to ‘v8::ObjectTemplate::SetAccessor(v8::Local<v8::String>&, void (*&)(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>&), void (*&)(v8::Local<v8::Name>, v8::Local<v8::Value>, const v8::PropertyCallbackInfo<void>&), v8::Local<v8::Object>&, v8::AccessControl&, v8::PropertyAttribute&, Nan::imp::Sig&)’ 13:33:32 npm error , signature); 13:33:32 npm error ^ 13:33:32 npm error In file included from /cache/node-gyp/20.16.0/include/node/v8-function.h:15, 13:33:32 npm error from /cache/node-gyp/20.16.0/include/node/v8.h:33, 13:33:32 npm error from /cache/node-gyp/20.16.0/include/node/node.h:73, 13:33:32 npm error from ../../nan/nan.h:58, 13:33:32 npm error from ../src/common/allocator.cc:1: 13:33:32 npm error /cache/node-gyp/20.16.0/include/node/v8-template.h:809:8: note: candidate: ‘void v8::ObjectTemplate::SetAccessor(v8::Local<v8::String>, v8::AccessorGetterCallback, v8::AccessorSetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, v8::SideEffectType, v8::SideEffectType)’ 13:33:32 npm error void SetAccessor( 13:33:32 npm error ^~~~~~~~~~~ 13:33:32 npm error /cache/node-gyp/20.16.0/include/node/v8-template.h:809:8: note: no known conversion for argument 7 from ‘Nan::imp::Sig’ {aka ‘int’} to ‘v8::SideEffectType’ 13:33:32 npm error /cache/node-gyp/20.16.0/include/node/v8-template.h:816:8: note: candidate: ‘void v8::ObjectTemplate::SetAccessor(v8::Local<v8::Name>, v8::AccessorNameGetterCallback, v8::AccessorNameSetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, v8::SideEffectType, v8::SideEffectType)’ 13:33:32 npm error void SetAccessor( 13:33:32 npm error ^~~~~~~~~~~ 13:33:32 npm error /cache/node-gyp/20.16.0/include/node/v8-template.h:816:8: note: no known conversion for argument 7 from ‘Nan::imp::Sig’ {aka ‘int’} to ‘v8::SideEffectType’ 13:33:32 npm error make: *** [iltorb.target.mk:144: Release/obj.target/iltorb/src/common/allocator.o] Error 1 13:33:32 npm error gyp ERR! build error 13:33:32 npm error gyp ERR! stack Error: `make` failed with exit code: 2 13:33:32 npm error gyp ERR! stack at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:209:23) 13:33:32 npm error gyp ERR! System Linux 6.1.0-0.deb11.7-cloud-amd64 13:33:32 npm error gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" 13:33:32 npm error gyp ERR! cwd /workspace/src/extensions/Popups/node_modules/iltorb 13:33:32 npm error gyp ERR! node -v v20.16.0 13:33:32 npm error gyp ERR! node-gyp -v v10.1.0 13:33:32 npm error gyp ERR! not ok 13:33:32 npm error A complete log of this run can be found in: /cache/npm/_logs/2024-12-15T12_33_01_526Z-debug-0.log 13:33:32 INFO:quibble.commands:<<< Finish: Browser tests: mediawiki/extensions/Math, mediawiki/core, mediawiki/extensions/AbuseFilter, mediawiki/extensions/AntiSpoof, mediawiki/extensions/ArticlePlaceholder, mediawiki/extensions/BetaFeatures, mediawiki/extensions/CentralAuth, mediawiki/extensions/CheckUser, mediawiki/extensions/CirrusSearch, mediawiki/extensions/Cite, mediawiki/extensions/CodeEditor, mediawiki/extensions/CommunityConfiguration, mediawiki/extensions/CommunityConfigurationExample, mediawiki/extensions/ConfirmEdit, mediawiki/extensions/DiscussionTools, mediawiki/extensions/Echo, mediawiki/extensions/Elastica, mediawiki/extensions/EventBus, mediawiki/extensions/EventLogging, mediawiki/extensions/EventStreamConfig, mediawiki/extensions/FlaggedRevs, mediawiki/extensions/Flow, mediawiki/extensions/Gadgets, mediawiki/extensions/GeoData, mediawiki/extensions/GlobalBlocking, mediawiki/extensions/GlobalPreferences, mediawiki/extensions/GuidedTour, mediawiki/extensions/Linter, mediawiki/extensions/MobileApp, mediawiki/extensions/MobileFrontend, mediawiki/extensions/PageImages, mediawiki/extensions/ParserFunctions, mediawiki/extensions/PdfHandler, mediawiki/extensions/Popups, mediawiki/extensions/PropertySuggester, mediawiki/extensions/Renameuser, mediawiki/extensions/Scribunto, mediawiki/extensions/SecurePoll, mediawiki/extensions/SiteMatrix, mediawiki/extensions/SpamBlacklist, mediawiki/extensions/SyntaxHighlight_GeSHi, mediawiki/extensions/TemplateData, mediawiki/extensions/TextExtracts, mediawiki/extensions/Thanks, mediawiki/extensions/TimedMediaHandler, mediawiki/extensions/TorBlock, mediawiki/extensions/UniversalLanguageSelector, mediawiki/extensions/VisualEditor, mediawiki/extensions/WikiEditor, mediawiki/extensions/Wikibase, mediawiki/extensions/WikibaseCirrusSearch, mediawiki/extensions/WikibaseLexeme, mediawiki/extensions/WikibaseLexemeCirrusSearch, mediawiki/extensions/WikibaseMediaInfo, mediawiki/extensions/WikibaseQualityConstraints, mediawiki/extensions/WikimediaBadges, mediawiki/extensions/WikimediaEvents, mediawiki/extensions/cldr, mediawiki/skins/MinervaNeue, mediawiki/skins/Vector, mediawiki/vendor, in 380.138 s 13:33:32 DEBUG:quibble.cmd:No quibble.yaml in /workspace/src/extensions/Math 13:33:32 INFO:backend.ChromeWebDriver:Terminating ChromeWebDriver 13:33:32 INFO:backend.Xvfb:Terminating Xvfb 13:33:32 INFO:backend.MySQL:Terminating MySQL 13:33:34 Traceback (most recent call last): 13:33:34 File "/usr/local/bin/quibble", line 8, in <module> 13:33:34 sys.exit(main()) 13:33:34 File "/usr/local/lib/python3.7/dist-packages/quibble/cmd.py", line 960, in main 13:33:34 dry_run=args.dry_run, 13:33:34 File "/usr/local/lib/python3.7/dist-packages/quibble/cmd.py", line 620, in execute 13:33:34 raise called_process_error 13:33:34 File "/usr/local/lib/python3.7/dist-packages/quibble/cmd.py", line 611, in execute 13:33:34 quibble.commands.execute_command(command) 13:33:34 File "/usr/local/lib/python3.7/dist-packages/quibble/commands.py", line 47, in execute_command 13:33:34 command.execute() 13:33:34 File "/usr/local/lib/python3.7/dist-packages/quibble/commands.py", line 1352, in execute 13:33:34 self._run_webdriver(project_dir) 13:33:34 File "/usr/local/lib/python3.7/dist-packages/quibble/commands.py", line 1372, in _run_webdriver 13:33:34 _npm_install(project_dir) 13:33:34 File "/usr/local/lib/python3.7/dist-packages/quibble/commands.py", line 103, in _npm_install 13:33:34 run([quibble.get_npm_command(), cmd], cwd=project_dir) 13:33:34 File "/usr/local/lib/python3.7/dist-packages/quibble/commands.py", line 94, in run 13:33:34 output=collected_output.decode('utf-8', errors='backslashreplace'), 13:33:34 subprocess.CalledProcessError: Command '['npm', 'ci']' returned non-zero exit status 1. 13:33:35 Build step 'Execute shell' marked build as failure 13:33:35 [PostBuildScript] - [INFO] Executing post build scripts. 13:33:35 [quibble-vendor-mysql-php74-selenium] $ /bin/bash /tmp/jenkins13592668565038471503.sh 13:33:35 + set -o pipefail 13:33:35 ++ pwd 13:33:35 + '[' '!' -d /srv/jenkins/workspace/quibble-vendor-mysql-php74-selenium/log ']' 13:33:35 ++ pwd 13:33:35 + exec docker run --entrypoint=/bin/rm --volume /srv/jenkins/workspace/quibble-vendor-mysql-php74-selenium/log:/log --security-opt seccomp=unconfined --init --rm --label jenkins.job=quibble-vendor-mysql-php74-selenium --label jenkins.build=60205 --env-file /dev/fd/63 docker-registry.wikimedia.org/buster:latest -fR /log/rawSeleniumVideoGrabs 13:33:35 ++ /usr/bin/env 13:33:35 ++ egrep -v '^(HOME|SHELL|PATH|LOGNAME|MAIL)=' 13:33:36 [PostBuildScript] - [INFO] Executing post build scripts. 13:33:36 [quibble-vendor-mysql-php74-selenium] $ /bin/bash -xe /tmp/jenkins10414650140683431194.sh 13:33:36 + find log/ -name 'mw-debug-*.log' -exec gzip '{}' +
What should have happened instead?:
- Test should pass
Software version (on Special:Version page; skip for WMF-hosted wikis like Wikipedia):
Other information (browser name/version, screenshots, etc.):
I tried to update to the lastet version from within the math extension, but this is not picked up by ci, see https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Math/+/1104480