Page MenuHomePhabricator

wdio-wikibase depends on wdio-mediawiki v2
Closed, ResolvedPublic

Description

While working on T405566: Upgrade WebdriverIO to v9 in Wikibase I have noticed that wdio-wikibase depends on wdio-mediawiki v2.

See Changelog.

Event Timeline

I wonder which version is actually used at runtime, and whether this could be related to the issues in T388228

I wonder which version is actually used at runtime, and whether this could be related to the issues in T388228

Welp, looks like it’s actually using the outdated version. During this selenium build:

lucaswerkmeister-wmde@integration-agent-docker-1060:~$ grep version /srv/jenkins/workspace/quibble-vendor-mysql-php81-selenium/src/extensions/Wikibase/node_modules/wdio-mediawiki/package.json
	"version": "2.7.1",

Wowee, Wikidata-Bridge even pulls in version 1:

lucaswerkmeister-wmde@integration-agent-docker-1060:~$ find /srv/jenkins/workspace/quibble-vendor-mysql-php81-selenium/ -name wdio-mediawiki -exec grep -H version {}/package.json \;
/srv/jenkins/workspace/quibble-vendor-mysql-php81-selenium/src/node_modules/wdio-mediawiki/package.json:	"version": "5.1.0",
/srv/jenkins/workspace/quibble-vendor-mysql-php81-selenium/src/tests/selenium/wdio-mediawiki/package.json:	"version": "5.1.0",
/srv/jenkins/workspace/quibble-vendor-mysql-php81-selenium/src/extensions/Wikibase/node_modules/wdio-mediawiki/package.json:	"version": "2.7.1",
/srv/jenkins/workspace/quibble-vendor-mysql-php81-selenium/src/extensions/Wikibase/client/data-bridge/node_modules/wdio-mediawiki/package.json:	"version": "1.2.0",
/srv/jenkins/workspace/quibble-vendor-mysql-php81-selenium/src/extensions/AbuseFilter/node_modules/wdio-mediawiki/package.json:	"version": "2.7.1",

(In hindsight, this should’ve been clear from the error message in T388228 alone – “Failed to wait for $moduleName to be ready after $timeout ms” is the wdio-mediawiki v2 message, in wdio-mediawiki v5 it’s different.)

Change #1196491 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] Update wdio-mediawiki (5.1) and wdio-wikibase (6.1)

https://gerrit.wikimedia.org/r/1196491

Hm, not looking good so far:

> wikibase@0.1.0 selenium-test:repo
> wdio repo/tests/selenium/wdio.conf.js

2025-10-15T16:51:52.513Z ERROR @wdio/config:ConfigParser: Failed loading configuration file: /workspace/src/extensions/Wikibase/repo/tests/selenium/wdio.conf.js: Class extends value #<Object> is not a constructor or null
Options:
  --help     Show help                                                 [boolean]
  --version  Show version number                                       [boolean]

TypeError: Class extends value #<Object> is not a constructor or null
    at file:///workspace/src/extensions/Wikibase/node_modules/wdio-mediawiki/PrometheusFileReporter.js:59:38
    at ModuleJobSync.runSync (node:internal/modules/esm/module_job:437:37)
    at ModuleLoader.importSyncForRequire (node:internal/modules/esm/loader:389:47)
    at loadESMFromCJS (node:internal/modules/cjs/loader:1363:24)
    at Module._compile (node:internal/modules/cjs/loader:1503:5)
    at Module._extensions..js (node:internal/modules/cjs/loader:1623:10)
    at Module.load (node:internal/modules/cjs/loader:1266:32)
    at Module._load (node:internal/modules/cjs/loader:1091:12)
    at Module.require (node:internal/modules/cjs/loader:1289:19)
    at require (node:internal/modules/helpers:182:18)

The line in question is class PrometheusFileReporter extends WDIOReporter { (where WDIOReporter is imported from @wdio/reporter). I don’t know why it would be broken, or what #<Object> means.

Weird, I get a very different error locally:

> wikibase@0.1.0 selenium-test:repo
> wdio repo/tests/selenium/wdio.conf.js

2025-10-17T09:03:43.480Z ERROR @wdio/config:ConfigParser: Failed loading configuration file: /Wikibase/repo/tests/selenium/wdio.conf.js: require() of ES Module /Wikibase/node_modules/wdio-mediawiki/wdio-defaults.conf.js from /Wikibase/repo/tests/selenium/wdio.conf.js not supported.
Instead change the require of wdio-defaults.conf.js in /Wikibase/repo/tests/selenium/wdio.conf.js to a dynamic import() which is available in all CommonJS modules.
Options:
  --help     Show help                                                 [boolean]
  --version  Show version number                                       [boolean]

Error [ERR_REQUIRE_ESM]: require() of ES Module /Wikibase/node_modules/wdio-mediawiki/wdio-defaults.conf.js from /Wikibase/repo/tests/selenium/wdio.conf.js not supported.
Instead change the require of wdio-defaults.conf.js in /Wikibase/repo/tests/selenium/wdio.conf.js to a dynamic import() which is available in all CommonJS modules.
    at Object.<anonymous> (/Wikibase/repo/tests/selenium/wdio.conf.js:7:20)

(And if yes, does that mean we need a new release of wdio-wikibase to port it to ESM?)

@LucasWerkmeister The way we were releasing wdio-mediawiki assumed repositories will go webdriverio v7 to v8 to v9, then to ESM.

So, to use:

  • wdio-mediawiki v3, the repo needs to be on webdriverio v8
  • wdio-mediawiki v4, the repo needs to be on webdriverio v9
  • wdio-mediawiki v5, the repo needs to be using ESM

I see, thanks. So unless we want to try doing everything at once (probably a bad idea), I guess we need:

  • wdio-wikibase v6.3.0 importing wdio-mediawiki v3; use that in Wikibase and update to WebdriverIO v8
  • wdio-wikibase v6.4.0 importing wdio-mediawiki v4; use that in Wikibase and update to WebdriverIO v9
  • wdio-wikibase v6.5.0 importing wdio-mediawiki v5 (like v6.1.0) and also updated to ESM; use that in Wikibase and update to ESM

Does that sound like a plan?

Does that sound like a plan?

Sounds good to me!

Change #1196931 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] WIP: Update wdio-mediawiki (v3) and wdio-wikibase (v6.3)

https://gerrit.wikimedia.org/r/1196931

Alright, thanks! Let’s see how it works in CI (using git dependencies in package.json so we can test it without wdio-wikibase releases).

Change #1197643 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] DNM: Fail linkitem.js with debug output

https://gerrit.wikimedia.org/r/1197643

Change #1197666 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] WIP: set window size in linkitem.js

https://gerrit.wikimedia.org/r/1197666

Change #1197643 abandoned by Lucas Werkmeister (WMDE):

[mediawiki/extensions/Wikibase@master] DNM: Fail linkitem.js with debug output

Reason:

no longer needed

https://gerrit.wikimedia.org/r/1197643

Change #1197666 abandoned by Lucas Werkmeister (WMDE):

[mediawiki/extensions/Wikibase@master] WIP: set window size in linkitem.js

Reason:

squashed into Ief5eeb2380

https://gerrit.wikimedia.org/r/1197666

Change #1196491 abandoned by Lucas Werkmeister (WMDE):

[mediawiki/extensions/Wikibase@master] Update wdio-mediawiki (5.1) and wdio-wikibase (6.1)

Reason:

it’s not that easy; see T406844 for details, and Ief5eeb2380 for the first next step

https://gerrit.wikimedia.org/r/1196491

Change #1196931 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Update wdio (v8), wdio-mediawiki (v3), wdio-wikibase (v6.3)

https://gerrit.wikimedia.org/r/1196931

Change #1198096 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] WIP: Update wdio (v9), wdio-mediawiki (v4), wdio-wikibase (v6.4)

https://gerrit.wikimedia.org/r/1198096

Testing the next round (wdio-mediawiki v4, wdio v9) in the above Gerrit change; see also wdio-wikibase pull requests #85 and #86.

That patch ran into T407831, which in an amazing coincidence was filed yesterday even though I’m guessing we could’ve encountered it at any time after the release of wdio-mediawiki v4 some four or five months ago ^^

The two wdio-wikibase pull requests mentioned above should be ready to review.

One more pull request to review, after the other two: #87

Change #1198096 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Update wdio (v9), wdio-mediawiki (v4), wdio-wikibase (v6.4)

https://gerrit.wikimedia.org/r/1198096

Change #1204580 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/EntitySchema@master] WatchListUpdaterTest: Update deprecated method call

https://gerrit.wikimedia.org/r/1204580

Change #1204580 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/EntitySchema@master] WatchListUpdaterTest: Update deprecated method call

https://gerrit.wikimedia.org/r/1204580

Oops, wrong task.

Change #1205185 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/Wikibase@master] WIP: Update wdio-mediawiki (v5), wdio-wikibase (TBD)

https://gerrit.wikimedia.org/r/1205185

Change #1206204 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[wikibase/termbox@master] WIP: Prepare for wdio-mediawiki v5

https://gerrit.wikimedia.org/r/1206204

@zeljkofilipin in your opinion, is upgrading to wdio-mediawiki v6 (which was released after the task was created, and therefore isn’t included in the task description yet) in scope for this task or not? Because that looks like it would be a not insignificant amount of extra work due to the removal of mwbot. (Not necessarily worse than the v3/v4/v5 upgrades, just not trivial.)

Change #1206204 merged by jenkins-bot:

[wikibase/termbox@master] Prepare for wdio-mediawiki v5

https://gerrit.wikimedia.org/r/1206204

@Lucas_Werkmeister_WMDE I think wdio-mediawiki v6 is a separate upgrade, not related to webdriverio upgrades.

Alright, thanks – then this task should be done once someone™ reviews the final Wikibase change.

Change #1205185 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Update wdio-mediawiki (v5), wdio-wikibase (v7)

https://gerrit.wikimedia.org/r/1205185