The Two-Column-Edit-Conflict-Merge selenium tests can be run in parallel, as the setup was adjusted to avoid conflicts between the specs when run concurrently. This works fine, when I test it locally with my docker environment.
On the CI the current setup triggers DB errors though. See for example in here
Error: internal_api_error_DBQueryError: [a855e8f84ae77e552fdcff6b] Exception caught: A database query error has occurred. This may indicate a bug in the software. 09:20:28 at /workspace/src/extensions/TwoColConflict/node_modules/mwbot/src/index.js:262:31 09:20:28 at tryCatcher (/workspace/src/extensions/TwoColConflict/node_modules/bluebird/js/release/util.js:16:23) 09:20:28 at Promise._settlePromiseFromHandler (/workspace/src/extensions/TwoColConflict/node_modules/bluebird/js/release/promise.js:547:31) 09:20:28 at Promise._settlePromise (/workspace/src/extensions/TwoColConflict/node_modules/bluebird/js/release/promise.js:604:18) 09:20:28 at Promise._settlePromise0 (/workspace/src/extensions/TwoColConflict/node_modules/bluebird/js/release/promise.js:649:10) 09:20:28 at Promise._settlePromises (/workspace/src/extensions/TwoColConflict/node_modules/bluebird/js/release/promise.js:729:18) 09:20:28 at _drainQueueStep (/workspace/src/extensions/TwoColConflict/node_modules/bluebird/js/release/async.js:93:12) 09:20:28 at _drainQueue (/workspace/src/extensions/TwoColConflict/node_modules/bluebird/js/release/async.js:86:9) 09:20:28 at Async._drainQueues (/workspace/src/extensions/TwoColConflict/node_modules/bluebird/js/release/async.js:102:5) 09:20:28 at Immediate.Async.drainQueues [as _onImmediate] (/workspace/src/extensions/TwoColConflict/node_modules/bluebird/js/release/async.js:15:14) 09:20:28 at processImmediate (internal/timers.js:464:21)
including the following DB error log
09:22:26 mw-dberror.log:Mon Jul 3 7:20:27 UTC 2023 10f8e54cc31d wikidb Error 1213 from User::addToDatabase, Deadlock found when trying to get lock; try restarting transaction INSERT IGNORE INTO `user` (user_name,user_password,user_newpassword,user_email,user_email_authenticated,user_real_name,user_token,user_registration,user_editcount,user_touched) VALUES ('User-0.9376071091678215-Iñtërnâtiônàlizætiøn','','','',NULL,'','abd32aac229246c70e706a2b599f5f87','20230703072027',0,'20230703072027') localhost:/workspace/db/quibble-mysql-jh9lekb4/socket 09:22:26 mw-dberror.log:#0 /workspace/src/includes/libs/rdbms/database/Database.php(1258): Wikimedia\Rdbms\Database->getQueryExceptionAndLog(string, integer, string, string) 09:22:26 mw-dberror.log:#1 /workspace/src/includes/libs/rdbms/database/Database.php(743): Wikimedia\Rdbms\Database->reportQueryError(string, integer, string, string, boolean) 09:22:26 mw-dberror.log:#2 /workspace/src/includes/libs/rdbms/database/Database.php(1564): Wikimedia\Rdbms\Database->query(Wikimedia\Rdbms\Query, string) 09:22:26 mw-dberror.log:#3 /workspace/src/includes/user/User.php(2769): Wikimedia\Rdbms\Database->insert(string, array, string, array) 09:22:26 mw-dberror.log:#4 /workspace/src/includes/libs/rdbms/database/Database.php(2444): User->{closure}(Wikimedia\Rdbms\DatabaseMysqli, string) 09:22:26 mw-dberror.log:#5 /workspace/src/includes/libs/rdbms/database/DBConnRef.php(119): Wikimedia\Rdbms\Database->doAtomicSection(string, Closure) 09:22:26 mw-dberror.log:#6 /workspace/src/includes/libs/rdbms/database/DBConnRef.php(658): Wikimedia\Rdbms\DBConnRef->__call(string, array) 09:22:26 mw-dberror.log:#7 /workspace/src/includes/user/User.php(2798): Wikimedia\Rdbms\DBConnRef->doAtomicSection(string, Closure) 09:22:26 mw-dberror.log:#8 /workspace/src/includes/auth/AuthManager.php(1567): User->addToDatabase() 09:22:26 mw-dberror.log:#9 /workspace/src/includes/auth/AuthManager.php(1290): MediaWiki\Auth\AuthManager->continueAccountCreation(array) 09:22:26 mw-dberror.log:#10 /workspace/src/includes/api/ApiAMCreateAccount.php(108): MediaWiki\Auth\AuthManager->beginAccountCreation(User, array, string) 09:22:26 mw-dberror.log:#11 /workspace/src/includes/api/ApiMain.php(1915): ApiAMCreateAccount->execute() 09:22:26 mw-dberror.log:#12 /workspace/src/includes/api/ApiMain.php(892): ApiMain->executeAction() 09:22:26 mw-dberror.log:#13 /workspace/src/includes/api/ApiMain.php(863): ApiMain->executeActionWithErrorHandling() 09:22:26 mw-dberror.log:#14 /workspace/src/api.php(95): ApiMain->execute() 09:22:26 mw-dberror.log:#15 /workspace/src/api.php(48): wfApiMain() 09:22:26 mw-dberror.log:#16 {main}
Each spec starts with a couple of API calls to create user accounts and prepare and edit test pages. So when run in parallel these obviously add up. Still, I'm curious what could be done to avoid these errors, since it's just fine on my local setup. Might also be relevant for other tests that need a lot of setup at spec start.