Repository navigation
fix: require Node.js 22.23.4, 24.22.1 or 26.12.1 for the eMudhra intermediate CA compromise - #451
Conversation
…rmediate CA compromise Older releases trust the compromised eMudhra intermediates. The Python adapter checks the same per-line floors, so it refuses a Node the backend rejects.
[Medium impact] The PR appears safe to merge, with the previous release-note issue fixed. SummaryRaises the supported Node.js versions across four npm packages and the Python adapter.
Reviews (4) · Last reviewed commit: "docs(selenium-devtools-py): install-back..." · Reviewed by Greptile |
|
@vishnuv688, any concerns about merging this PR? Thanks! |
Thanks @plum117, looks good. One thing: Python users on a Node release below the new floors (e.g. 22.22) will now hit a RuntimeError at enable() instead of a warning. Could the changes/ fragment say that plainly? Right now only the odd-line refusal is spelled out. Also, does the Node requirement on the webdriverio docs site need updating too? Happy to approve after that. |
…ow the floor of its line
|
Thanks @vishnuv688, both done:
|
…ure below the Node floor enable() catches the RuntimeError of the Node check, logs a warning and returns None; only install-backend exits with an error.
…elenium adapter The next selenium-devtools release requires the Node releases with the CA store fix for the eMudhra intermediate CA compromise (webdriverio/devtools#451).
…s 22.23.4, 24.22.1 or 26.12.1 in engines and docs (#16257) * docs(devtools): require Node.js 22.23.4, 24.22.1 or 26.12.1 for the Selenium adapter The next selenium-devtools release requires the Node releases with the CA store fix for the eMudhra intermediate CA compromise (webdriverio/devtools#451). * docs(devtools): state the Node.js floor for the Node adapters and the service * fix(@wdio/vitest-framework, @wdio/lighthouse-service): align with the v10 Node.js floor The Vitest framework declared >=22.19.0, and the Lighthouse README said the rest of WebdriverIO supports older Node.js than the service. * docs: import the mock fixture with import attributes Node.js 22 removed import assertions (assert { type: 'json' }), so the example threw a SyntaxError on every Node.js version v10 supports. * docs(visual): require Node.js 22.23.4, 24.22.1 or 26.12.1 for visual-service 11
What & why
Fixes #450
Require the Node.js releases with the updated CA store for the eMudhra intermediate CA compromise ("ca-cert (eMudhra Intermediate CA Compromise) on 26.x, 24.x, 22.x" in the October 2026 security releases). Same range as webdriverio/webdriverio#16211:
engines.nodeinbackend,service,selenium-devtools,nightwatch-devtools>=22.19.0→ the range above;minorchangesetselenium-devtools-pyrequire_node()NODE_LINE_FLOORS) instead of one minimum: refuses a release below its line's floor and the odd lines 23 and 25, accepts a line newer than 26.minorfragment inchanges/ci.yml(3 jobs),release.ymlcheck-latest: trueon the.nvmrcsetup: a bare24took the runner cache (24.21.0) in webdriverio/webdriverio#16211selenium-devtools-pyREADME, CONTRIBUTING (said ≥ 20)require_node()before and after (probe with a mockednode --version):How I tested
pnpm install --frozen-lockfile(pnpm 10.26.1)pnpm buildpnpm testpnpm lintPython 3.14 (CI uses 3.10 and 3.13):
PYTHONPATH=src python -m unittest discover -s tests→ 765 tests;test_node_runtime16 passed. One failure,test_screencast … test_finalize_encodes_and_delivers_frame, fails the same way with themainsource on this Mac, so it is not from this change.scripts/changes.py check --base origin/main→ "src/ changed and a change fragment is present".pnpm changeset status→ minor for the 4 packages.Type of change
Packages touched
shared(types and contracts)core(framework-agnostic capture/reporting)elements(published element/snapshot API —@wdio/elements)service(WebdriverIO adapter)nightwatch-devtools(Nightwatch adapter)selenium-devtools(Selenium adapter)selenium-devtools-py(Selenium Python adapter)backend(server)app(UI)script(page-injected runtime)trace(Trace mode)Notes for reviewers
core: onlypackage.jsonmetadata changes in the adapters; the one runtime check is the Python adapter's, because a Python user has noenginesto read.BACKEND_NPM_VERSION = "2.0.0",engines >=22.19.0) until the next backend release and its pin bump.@wdio/devtools-app,@wdio/elementsand@wdio/devtools-scripthave noengines; adding one is a new constraint, so it is not part of this PR.enginesonly warns, except with Yarn 1 ornpm --engine-strict. WebdriverIO shipped the same range as a minor version.Screenshots / recordings
Not a UI change.