| Subject | Repo | Branch | Lines +/- | |
|---|---|---|---|---|
| Revert "Zuul: Temporarily make wikilambda-catalyst-end-to-end non-voting" | integration/config | master | +1 -6 |
Details
| Title | Reference | Author | Source Branch | Dest Branch | |
|---|---|---|---|---|---|
| Allow running composer update as root, it tries to stop us now for security | repos/abstract-wiki/aw-ci-chart!46 | jforrester | composer-not-root | main |
| Status | Subtype | Assigned | Task | ||
|---|---|---|---|---|---|
| Open | None | T376276 PHP 8.4: Implicitly nullable parameter declarations deprecated | |||
| Open | None | T379587 PHP 8.4: Implicitly nullable parameter declarations deprecated in 3rd party vendor libs | |||
| Resolved | Reedy | T378424 PHP 8.4: Implicitly nullable parameter declarations deprecated in qrcode vendor libs | |||
| Open | None | T366644 Raise MediaWiki's MariaDB requirement to 10.6 | |||
| Open | None | T366646 Raise Quibble jobs' tested version of MariaDB to 10.6 | |||
| Open | None | T405346 Remove okvpn/clock-lts post WMF PHP 8.3 upgrade | |||
| Open | None | T405344 Upgrade web-auth/webauthn-lib to >= 5.2.2 | |||
| Open | None | T358666 Drop PHP 8.1 support from MediaWiki | |||
| Resolved | jnuche | T411277 Patchdemo wiki creation fails due to PHP 8.1 not supported by MW | |||
| Resolved | Jdforrester-WMF | T411372 wikilambda-catalyst-end-to-end broken due to new version of composer after PHP 8.1 -> 8.3 migration |
Event Timeline
https://integration.wikimedia.org/ci/job/wikilambda-catalyst-end-to-end/1542/console
Execution of 5 workers started at 2025-12-01T14:29:01.148Z
Run test targeting https://mw-ext-wl-ci-1212610-75389.catalyst.wmcloud.org/w
[0-0] RUNNING in chrome - file:///tests/selenium/specs/basic.js
[0-0] PASSED in chrome - file:///tests/selenium/specs/basic.js
[0-1] RUNNING in chrome - file:///tests/selenium/specs/connect.js
[0-1] Error in "Dynamic Test for Implementation and Test Case Connection.Admin user.should dynamically connect or disconnect the implementation based on its initial state"
Error: element ("button[data-testid="connect"]") still existing after 10000ms
at async FunctionPage.checkImplementationsTableRow (/src/tests/selenium/pageobjects/function/Function.page.js:295:3)
at async Context.<anonymous> (/src/tests/selenium/specs/connect.js:72:5)
[0-1] Error in "Dynamic Test for Implementation and Test Case Connection.Admin user.should dynamically connect or disconnect the test case based on its initial state"
Error: element ("button[data-testid="connect"]") still existing after 10000ms
at async FunctionPage.checkTestCasesTableRow (/src/tests/selenium/pageobjects/function/Function.page.js:394:3)
at async Context.<anonymous> (/src/tests/selenium/specs/connect.js:103:5)
[0-1] RETRYING in chrome - file:///tests/selenium/specs/connect.js
[0-1] RUNNING in chrome - file:///tests/selenium/specs/connect.js
[0-1] Error in "Dynamic Test for Implementation and Test Case Connection.Admin user.should dynamically connect or disconnect the implementation based on its initial state"
Error: element ("button[data-testid="connect"]") still existing after 10000ms
at async FunctionPage.checkImplementationsTableRow (/src/tests/selenium/pageobjects/function/Function.page.js:295:3)
at async Context.<anonymous> (/src/tests/selenium/specs/connect.js:72:5)
[0-1] Error in "Dynamic Test for Implementation and Test Case Connection.Admin user.should dynamically connect or disconnect the test case based on its initial state"
Error: element ("button[data-testid="connect"]") still existing after 10000ms
at async FunctionPage.checkTestCasesTableRow (/src/tests/selenium/pageobjects/function/Function.page.js:394:3)
at async Context.<anonymous> (/src/tests/selenium/specs/connect.js:103:5)
[0-1] FAILED in chrome - file:///tests/selenium/specs/connect.js (1 retries)
[0-2] RUNNING in chrome - file:///tests/selenium/specs/function.js
[0-2] PASSED in chrome - file:///tests/selenium/specs/function.js
[0-3] RUNNING in chrome - file:///tests/selenium/specs/implementation.js
[0-3] PASSED in chrome - file:///tests/selenium/specs/implementation.js
[0-4] RUNNING in chrome - file:///tests/selenium/specs/tester.js
[0-4] Error in "Tester.Edit the test.should edit the about block test"
Error: element ("[data-testid="about-description"]") still not existing after 5000ms
at async Context.<anonymous> (/src/tests/selenium/specs/tester.js:179:4)
[0-4] RETRYING in chrome - file:///tests/selenium/specs/tester.js
[0-4] RUNNING in chrome - file:///tests/selenium/specs/tester.js
[0-4] Error in "Tester.Edit the test.should edit the about block test"
Error: element ("[data-testid="about-description"]") still not existing after 5000ms
at async Context.<anonymous> (/src/tests/selenium/specs/tester.js:179:4)
[0-4] FAILED in chrome - file:///tests/selenium/specs/tester.js (1 retries)
"spec" Reporter:
------------------------------------------------------------------
[chrome 140.0.7339.80 linux #0-0] Running: chrome (v140.0.7339.80) on linux
[chrome 140.0.7339.80 linux #0-0] Session ID: f9570a0e29a18328b4a20b9bbcb69d0f
[chrome 140.0.7339.80 linux #0-0]
[chrome 140.0.7339.80 linux #0-0] » tests/selenium/specs/basic.js
[chrome 140.0.7339.80 linux #0-0] Installation checks
[chrome 140.0.7339.80 linux #0-0] CreateObject
[chrome 140.0.7339.80 linux #0-0] ✓ page should exist on installation but deny to logged-out user
[chrome 140.0.7339.80 linux #0-0] ✓ page should exist on installation and work when logged in
[chrome 140.0.7339.80 linux #0-0]
[chrome 140.0.7339.80 linux #0-0] RunFunction
[chrome 140.0.7339.80 linux #0-0] ✓ page should exist on installation
[chrome 140.0.7339.80 linux #0-0]
[chrome 140.0.7339.80 linux #0-0] ListObjectsByType
[chrome 140.0.7339.80 linux #0-0] ✓ page should exist on installation
[chrome 140.0.7339.80 linux #0-0]
[chrome 140.0.7339.80 linux #0-0] 4 passing (22.8s)
------------------------------------------------------------------
[chrome 140.0.7339.80 linux #0-1] Running: chrome (v140.0.7339.80) on linux
[chrome 140.0.7339.80 linux #0-1] Session ID: 6d2be4b7de363559f879fc4dcf9863d7
[chrome 140.0.7339.80 linux #0-1]
[chrome 140.0.7339.80 linux #0-1] » tests/selenium/specs/connect.js
[chrome 140.0.7339.80 linux #0-1] Dynamic Test for Implementation and Test Case Connection
[chrome 140.0.7339.80 linux #0-1] Admin user
[chrome 140.0.7339.80 linux #0-1] ✖ should dynamically connect or disconnect the implementation based on its initial state
[chrome 140.0.7339.80 linux #0-1] ✖ should dynamically connect or disconnect the test case based on its initial state
[chrome 140.0.7339.80 linux #0-1]
[chrome 140.0.7339.80 linux #0-1] 2 failing (33.8s)
[chrome 140.0.7339.80 linux #0-1]
[chrome 140.0.7339.80 linux #0-1] 1) Admin user should dynamically connect or disconnect the implementation based on its initial state
[chrome 140.0.7339.80 linux #0-1] element ("button[data-testid="connect"]") still existing after 10000ms
[chrome 140.0.7339.80 linux #0-1] Error: element ("button[data-testid="connect"]") still existing after 10000ms
[chrome 140.0.7339.80 linux #0-1] at async FunctionPage.checkImplementationsTableRow (/src/tests/selenium/pageobjects/function/Function.page.js:295:3)
[chrome 140.0.7339.80 linux #0-1] at async Context.<anonymous> (/src/tests/selenium/specs/connect.js:72:5)
[chrome 140.0.7339.80 linux #0-1]
[chrome 140.0.7339.80 linux #0-1] 2) Admin user should dynamically connect or disconnect the test case based on its initial state
[chrome 140.0.7339.80 linux #0-1] element ("button[data-testid="connect"]") still existing after 10000ms
[chrome 140.0.7339.80 linux #0-1] Error: element ("button[data-testid="connect"]") still existing after 10000ms
[chrome 140.0.7339.80 linux #0-1] at async FunctionPage.checkTestCasesTableRow (/src/tests/selenium/pageobjects/function/Function.page.js:394:3)
[chrome 140.0.7339.80 linux #0-1] at async Context.<anonymous> (/src/tests/selenium/specs/connect.js:103:5)
------------------------------------------------------------------
[chrome 140.0.7339.80 linux #0-1] Running: chrome (v140.0.7339.80) on linux
[chrome 140.0.7339.80 linux #0-1] Session ID: e1f127f7e254d7117120f0beca941f0a
[chrome 140.0.7339.80 linux #0-1]
[chrome 140.0.7339.80 linux #0-1] » tests/selenium/specs/connect.js
[chrome 140.0.7339.80 linux #0-1] Dynamic Test for Implementation and Test Case Connection
[chrome 140.0.7339.80 linux #0-1] Admin user
[chrome 140.0.7339.80 linux #0-1] ✖ should dynamically connect or disconnect the implementation based on its initial state
[chrome 140.0.7339.80 linux #0-1] ✖ should dynamically connect or disconnect the test case based on its initial state
[chrome 140.0.7339.80 linux #0-1]
[chrome 140.0.7339.80 linux #0-1] 2 failing (34.3s)
[chrome 140.0.7339.80 linux #0-1]
[chrome 140.0.7339.80 linux #0-1] 1) Admin user should dynamically connect or disconnect the implementation based on its initial state
[chrome 140.0.7339.80 linux #0-1] element ("button[data-testid="connect"]") still existing after 10000ms
[chrome 140.0.7339.80 linux #0-1] Error: element ("button[data-testid="connect"]") still existing after 10000ms
[chrome 140.0.7339.80 linux #0-1] at async FunctionPage.checkImplementationsTableRow (/src/tests/selenium/pageobjects/function/Function.page.js:295:3)
[chrome 140.0.7339.80 linux #0-1] at async Context.<anonymous> (/src/tests/selenium/specs/connect.js:72:5)
[chrome 140.0.7339.80 linux #0-1]
[chrome 140.0.7339.80 linux #0-1] 2) Admin user should dynamically connect or disconnect the test case based on its initial state
[chrome 140.0.7339.80 linux #0-1] element ("button[data-testid="connect"]") still existing after 10000ms
[chrome 140.0.7339.80 linux #0-1] Error: element ("button[data-testid="connect"]") still existing after 10000ms
[chrome 140.0.7339.80 linux #0-1] at async FunctionPage.checkTestCasesTableRow (/src/tests/selenium/pageobjects/function/Function.page.js:394:3)
[chrome 140.0.7339.80 linux #0-1] at async Context.<anonymous> (/src/tests/selenium/specs/connect.js:103:5)
------------------------------------------------------------------
[chrome 140.0.7339.80 linux #0-2] Running: chrome (v140.0.7339.80) on linux
[chrome 140.0.7339.80 linux #0-2] Session ID: 4d8d37b183226171d06076fd0e9fc754
[chrome 140.0.7339.80 linux #0-2]
[chrome 140.0.7339.80 linux #0-2] » tests/selenium/specs/function.js
[chrome 140.0.7339.80 linux #0-2] Function
[chrome 140.0.7339.80 linux #0-2] Function viewer (CUJ1)
[chrome 140.0.7339.80 linux #0-2] ✓ should allow to evaluate a function
[chrome 140.0.7339.80 linux #0-2]
[chrome 140.0.7339.80 linux #0-2] Function editor (CUJ2)
[chrome 140.0.7339.80 linux #0-2] ✓ should create a new function and display the function name
[chrome 140.0.7339.80 linux #0-2] ✓ should create a new function and display function aliases
[chrome 140.0.7339.80 linux #0-2] ✓ should create a new function and display function input labels and types
[chrome 140.0.7339.80 linux #0-2] ✓ should create a new function and display function output type
[chrome 140.0.7339.80 linux #0-2]
[chrome 140.0.7339.80 linux #0-2] 5 passing (30.2s)
------------------------------------------------------------------
[chrome 140.0.7339.80 linux #0-3] Running: chrome (v140.0.7339.80) on linux
[chrome 140.0.7339.80 linux #0-3] Session ID: 74d451c5cd9b4b87c0cbc07a0d7029e7
[chrome 140.0.7339.80 linux #0-3]
[chrome 140.0.7339.80 linux #0-3] » tests/selenium/specs/implementation.js
[chrome 140.0.7339.80 linux #0-3] Implementation (CUJ 5)
[chrome 140.0.7339.80 linux #0-3] Implementation via code
[chrome 140.0.7339.80 linux #0-3] ✓ should create and publish a new implementation
[chrome 140.0.7339.80 linux #0-3]
[chrome 140.0.7339.80 linux #0-3] Implementation via composition
[chrome 140.0.7339.80 linux #0-3] ✓ should create and publish a new implementation
[chrome 140.0.7339.80 linux #0-3]
[chrome 140.0.7339.80 linux #0-3] 2 passing (1m 2.8s)
------------------------------------------------------------------
[chrome 140.0.7339.80 linux #0-4] Running: chrome (v140.0.7339.80) on linux
[chrome 140.0.7339.80 linux #0-4] Session ID: 7a85c19d8f50136543cd3d43dd3dac60
[chrome 140.0.7339.80 linux #0-4]
[chrome 140.0.7339.80 linux #0-4] » tests/selenium/specs/tester.js
[chrome 140.0.7339.80 linux #0-4] Tester
[chrome 140.0.7339.80 linux #0-4] Create a new test (CUJ 4)
[chrome 140.0.7339.80 linux #0-4] ✓ should fill and submit the tester form
[chrome 140.0.7339.80 linux #0-4]
[chrome 140.0.7339.80 linux #0-4] Edit the test
[chrome 140.0.7339.80 linux #0-4] ✖ should edit the about block test
[chrome 140.0.7339.80 linux #0-4]
[chrome 140.0.7339.80 linux #0-4] 1 passing (48.9s)
[chrome 140.0.7339.80 linux #0-4] 1 failing
[chrome 140.0.7339.80 linux #0-4]
[chrome 140.0.7339.80 linux #0-4] 1) Edit the test should edit the about block test
[chrome 140.0.7339.80 linux #0-4] element ("[data-testid="about-description"]") still not existing after 5000ms
[chrome 140.0.7339.80 linux #0-4] Error: element ("[data-testid="about-description"]") still not existing after 5000ms
[chrome 140.0.7339.80 linux #0-4] at async Context.<anonymous> (/src/tests/selenium/specs/tester.js:179:4)
------------------------------------------------------------------
[chrome 140.0.7339.80 linux #0-4] Running: chrome (v140.0.7339.80) on linux
[chrome 140.0.7339.80 linux #0-4] Session ID: 20be5a4df71aced901e8e10808846b13
[chrome 140.0.7339.80 linux #0-4]
[chrome 140.0.7339.80 linux #0-4] » tests/selenium/specs/tester.js
[chrome 140.0.7339.80 linux #0-4] Tester
[chrome 140.0.7339.80 linux #0-4] Create a new test (CUJ 4)
[chrome 140.0.7339.80 linux #0-4] ✓ should fill and submit the tester form
[chrome 140.0.7339.80 linux #0-4]
[chrome 140.0.7339.80 linux #0-4] Edit the test
[chrome 140.0.7339.80 linux #0-4] ✖ should edit the about block test
[chrome 140.0.7339.80 linux #0-4]
[chrome 140.0.7339.80 linux #0-4] 1 passing (47s)
[chrome 140.0.7339.80 linux #0-4] 1 failing
[chrome 140.0.7339.80 linux #0-4]
[chrome 140.0.7339.80 linux #0-4] 1) Edit the test should edit the about block test
[chrome 140.0.7339.80 linux #0-4] element ("[data-testid="about-description"]") still not existing after 5000ms
[chrome 140.0.7339.80 linux #0-4] Error: element ("[data-testid="about-description"]") still not existing after 5000ms
[chrome 140.0.7339.80 linux #0-4] at async Context.<anonymous> (/src/tests/selenium/specs/tester.js:179:4)Mentioned in SAL (#wikimedia-releng) [2025-12-01T14:38:11Z] <James_F> Zuul: Temporarily make wikilambda-catalyst-end-to-end non-voting, for T411372
Errors from connect.js point at a missing Diff\Comparer\StrictComparer
{
"error": {
"code": "internal_api_error_Error",
"info": "[1154817524a993c26712257e] Exception caught: Class \"Diff\\Comparer\\StrictComparer\" not found",
"errorclass": "Error",
"trace": "Error at /var/www/html/w/extensions/WikiLambda/includes/Diff/ZObjectDiffer.php(33)\nfrom /var/www/html/w/extensions/WikiLambda/includes/Diff/ZObjectDiffer.php(33)\n#0 /var/www/html/w/extensions/WikiLambda/includes/Authorization/ZObjectAuthorization.php(290): MediaWiki\\Extension\\WikiLambda\\Diff\\ZObjectDiffer->__construct()\n#1 /var/www/html/w/extensions/WikiLambda/includes/Authorization/ZObjectAuthorization.php(178): MediaWiki\\Extension\\WikiLambda\\Authorization\\ZObjectAuthorization->getDiffOps()\n#2 /var/www/html/w/extensions/WikiLambda/includes/Authorization/ZObjectAuthorization.php(55): MediaWiki\\Extension\\WikiLambda\\Authorization\\ZObjectAuthorization->getRequiredEditRights()\n#3 /var/www/html/w/extensions/WikiLambda/includes/ZObjectStore.php(456): MediaWiki\\Extension\\WikiLambda\\Authorization\\ZObjectAuthorization->authorize()\n#4 /var/www/html/w/extensions/WikiLambda/includes/ActionAPI/ApiZObjectEditor.php(73): MediaWiki\\Extension\\WikiLambda\\ZObjectStore->updateZObject()\n#5 /var/www/html/w/extensions/WikiLambda/includes/ActionAPI/WikiLambdaApiBase.php(103): MediaWiki\\Extension\\WikiLambda\\ActionAPI\\ApiZObjectEditor->run()\n#6 /var/www/html/w/includes/Api/ApiMain.php(2053): MediaWiki\\Extension\\WikiLambda\\ActionAPI\\WikiLambdaApiBase->execute()\n#7 /var/www/html/w/includes/Api/ApiMain.php(956): MediaWiki\\Api\\ApiMain->executeAction()\n#8 /var/www/html/w/includes/Api/ApiMain.php(927): MediaWiki\\Api\\ApiMain->executeActionWithErrorHandling()\n#9 /var/www/html/w/includes/Api/ApiEntryPoint.php(138): MediaWiki\\Api\\ApiMain->execute()\n#10 /var/www/html/w/includes/MediaWikiEntryPoint.php(184): MediaWiki\\Api\\ApiEntryPoint->execute()\n#11 /var/www/html/w/api.php(30): MediaWiki\\MediaWikiEntryPoint->run()\n#12 {main}"
},
"servedby": "test-120125-3098-mediawiki-66746f69d7-fqxwb"
}From wikilambda/composer.json
{
"require": {
"diff/diff": "^3.2.0",Looking in the output of the job, I see:
INFO: 2025-12-01T14:23:19.893797547Z: - Installing wikimedia/composer-merge-plugin (v2.1.0): Extracting archive INFO: 2025-12-01T14:23:19.926198786Z: The "wikimedia/composer-merge-plugin" plugin was not loaded as plugins are disabled.
… which would explain why our composer directives are being ignored. This is a security check by composer, as the command is being run as root(!). But we've not changed anything recently except the PHP binary. Why is Catalyst now doing this? Maybe in bumping PHP we also updated composer to bring in this new feature?
jforrester opened https://gitlab.wikimedia.org/repos/abstract-wiki/aw-ci-chart/-/merge_requests/46
Don't try to run composer update as root, it now ignores things for security
jnuche merged https://gitlab.wikimedia.org/repos/abstract-wiki/aw-ci-chart/-/merge_requests/46
Allow running composer update as root, it tries to stop us now for security
Change #1213541 had a related patch set uploaded (by Jforrester; author: Jforrester):
[integration/config@master] Revert "Zuul: Temporarily make wikilambda-catalyst-end-to-end non-voting"
Change #1213541 merged by jenkins-bot:
[integration/config@master] Revert "Zuul: Temporarily make wikilambda-catalyst-end-to-end non-voting"
Mentioned in SAL (#wikimedia-releng) [2025-12-01T18:15:43Z] <James_F> Revert "Zuul: Temporarily make wikilambda-catalyst-end-to-end non-voting", for T411372