So, what follows is entirely speculative and purely anecdotal, but I believe still worth looking into. In the last few days, I've seen CI fail due to various timeouts at a rate way higher than normal. I'm wondering if there's something going on in the CI config/infra that needs to be looked into. Here are the examples I saw in my gerrit bubble. They're not necessarily all related, but to me it does look like we're timing out a lot.
Issues seen thus far:
- T389536: Selenium timeouts can cause the job to remain stuck until the build times out
- T380061: Flaky selenium test "Failed to wait for mediawiki.base to be ready" (tests/selenium/specs/page.js)
- T389863: api-testing CI failure: Timeout of 5000ms exceeded in "before all" hook in "POST /campaignevents/v0/event_registration"
- 2s timeout in QUnit (task TBC)
Some examples (more in comments)
- 2025-03-06 23:25:04Z: r1124889 (CampaignEvents), build timeout (1h) while running selenium:
23:23:36 [0-0] RUNNING in chrome - /tests/selenium/specs/editEventRegistration.js 23:25:04 [0-0] Error in "Edit Event Registration.can allow organizer to add an additional organizer" 23:25:04 Error: Timeout of 60000ms exceeded. The execution in the test "Edit Event Registration can allow organizer to add an additional organizer" took too long. Try to reduce the run time or increase your timeout for test specs (https://webdriver.io/docs/timeouts). (/workspace/src/extensions/CampaignEvents/tests/selenium/specs/editEventRegistration.js) 23:25:04 at createTimeoutError (/workspace/src/extensions/CampaignEvents/node_modules/mocha/lib/errors.js:498:15) 23:25:04 at Runnable._timeoutError (/workspace/src/extensions/CampaignEvents/node_modules/mocha/lib/runnable.js:429:10) 23:25:04 at Timeout.<anonymous> (/workspace/src/extensions/CampaignEvents/node_modules/mocha/lib/runnable.js:244:24) 23:25:04 at listOnTimeout (node:internal/timers:581:17) 23:25:04 at process.processTimers (node:internal/timers:519:7) 00:22:13 Build timed out (after 60 minutes). Marking the build as failed.
- 2025-03-07 18:52:31Z: r1125402 (AbuseFilter), quibble-vendor-mysql-php82-noselenium, QUnit failure:
18:52:31 07 03 2025 18:52:31.432:DEBUG [Firefox 128.0 (Linux x86_64)]: Disconnected during run, waiting 2000ms for reconnecting. 18:52:31 07 03 2025 18:52:31.433:DEBUG [Firefox 128.0 (Linux x86_64)]: EXECUTING -> EXECUTING_DISCONNECTED 18:52:33 07 03 2025 18:52:33.433:WARN [Firefox 128.0 (Linux x86_64)]: Disconnected (0 times) reconnect failed before timeout of 2000ms (ping timeout)
- 2025-03-07 19:24:10Z & 19:25:42Z: r1124522 (CampaignEvents), wmf-quibble-selenium-php81, multiple selenium timeouts:
19:24:10 [0-6] Error in "Page.should be protectable" 19:24:10 Error: Failed to wait for mediawiki.base to be ready after 5000 ms. 19:24:10 at async Object.waitForModuleState (/workspace/src/tests/selenium/wdio-mediawiki/Util.js:50:3) 19:24:10 at async EditPage.openForEditing (/workspace/src/tests/selenium/pageobjects/edit.page.js:38:3) 19:24:10 at async Context.<anonymous> (/workspace/src/tests/selenium/specs/page.js:142:3) 19:24:16 [0-6] RETRYING in chrome - /tests/selenium/specs/page.js 19:24:17 [0-6] RUNNING in chrome - /tests/selenium/specs/page.js 19:25:42 [0-6] Error in "Page.should be protectable" 19:25:42 Error: Failed to wait for mediawiki.base to be ready after 5000 ms. 19:25:42 at async Object.waitForModuleState (/workspace/src/tests/selenium/wdio-mediawiki/Util.js:50:3) 19:25:42 at async EditPage.openForEditing (/workspace/src/tests/selenium/pageobjects/edit.page.js:38:3) 19:25:42 at async Context.<anonymous> (/workspace/src/tests/selenium/specs/page.js:142:3) 19:25:48 [0-6] FAILED in chrome - /tests/selenium/specs/page.js (1 retries)
- 2025-03-10 09:46:03Z: r1125402 (AbuseFilter), quibble-vendor-mysql-php74-noselenium, QUnit failure:
09:46:03 10 03 2025 09:46:03.147:DEBUG [Firefox 115.0 (Linux x86_64)]: Disconnected during run, waiting 2000ms for reconnecting. 09:46:03 10 03 2025 09:46:03.147:DEBUG [Firefox 115.0 (Linux x86_64)]: EXECUTING -> EXECUTING_DISCONNECTED 09:46:04 10 03 2025 09:46:04.129:DEBUG [middleware:source-files]: Requesting /null 09:46:04 10 03 2025 09:46:04.130:DEBUG [middleware:source-files]: Fetching /null 09:46:04 10 03 2025 09:46:04.130:DEBUG [proxy]: proxying request - /null to 127.0.0.1:9413 09:46:05 10 03 2025 09:46:05.148:WARN [Firefox 115.0 (Linux x86_64)]: Disconnected (0 times) reconnect failed before timeout of 2000ms (ping timeout)
- 2025-03-10 10:50:03Z: r1124864 (CampaignEvents), mediawiki-quibble-apitests-vendor-php74, timeout while testing REST APIs:
10:50:03 POST /campaignevents/v0/event_registration 10:50:08 1) "before all" hook in "POST /campaignevents/v0/event_registration" [...] 10:50:11 1) POST /campaignevents/v0/event_registration 10:50:11 "before all" hook in "POST /campaignevents/v0/event_registration": 10:50:11 Error: Timeout of 5000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/workspace/src/extensions/CampaignEvents/tests/api-testing/EnableRegistration.js) 10:50:11 at listOnTimeout (node:internal/timers:581:17) 10:50:11 at process.processTimers (node:internal/timers:519:7)