Repository navigation
fix: CDN URLs with credentials; complete the v8 upgrade docs - #35
Merged
plum117 merged 8 commits intoOct 9, 2026
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eep them out of the log Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ials and spawnOpts Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
plum117
marked this pull request as ready for review
October 9, 2026 19:28
|
A password like `p%ss` made decodeURIComponent throw, so the helper returned the URL with the credentials, and the download log showed them. Keep a value that is not percent-encoding as text, as 7.x did. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
.npmignore excluded only tsconfig.json, so the 8.0.0 / 3.0.0 tarballs would ship tsconfig.test.json. check-pack now also fails on any file that is not expected in the tarball. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d %25 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why CDN credentials exist
edgedriver_cdnurl=https://$USERNAME:$PASSWORD@mirror…in.npmrc), added in feat: support custom CDN URL with Basic Auth credentials (#282) webdriverio-community/node-edgedriver#534.GECKODRIVER_CDNURLthroughgot), lost unnoticed when the 2023 rewrite moved tonode-fetchv3, which rejects credentials in URLs.https://the header is encrypted, and undici dropsAuthorizationon a cross-origin redirect (checked: a mirror redirecting to another origin; only the mirror got the header). The docs now say to keep credentials onhttps://URLs.Summary
fetchrejects a URL withuser:pass@("Request cannot be constructed from a URL that includes credentials"). edgedriver stripped them only for the zip download, so every version lookup (LATEST_RELEASE_*,LATEST_STABLE, …) with an authenticatedEDGEDRIVER_CDNURLfailed, including the fallback after a 404. geckodriver never stripped them, so an authenticatedGECKODRIVER_CDNURLfailed on its first request. Both now send them as a BasicAuthorizationheader on every CDN request. Not a regression: Node's built-infetchrejected these URLs too.p%40ssis sent asp@ss; a bare%, as inp%ss, stays as text instead of leaving the credentials in the URL), and theFetching latest version from …/Downloading Geckodriver from …log lines, which end up in WebdriverIO's log files, no longer show them.safaridriverstart()/stop()no longer return a Promise (written for docs: map driver majors to WebdriverIO majors and note the v8 upgrade #25 but pushed after it merged), the proxy variables now apply (6.x / 7.x ignored them: add the CDN host toNO_PROXYif needed),safaridriverpipes its output, the CLIs exit 1 when a signal kills the driver, andfindEdgePath()on Windows returnsundefinedinstead of throwing.spawnOptsrows for edgedriver and safaridriver,NO_PROXYand the lower-case proxy variables, CDN credentials. The package READMEs document the credentials too;edgeDriverVersionno longer links to the retiredmsedgedriver.azureedge.net..npmignoreexcluded onlytsconfig.json, so the 8.0.0 / 3.0.0 tarballs would shiptsconfig.test.json.scripts/check-pack.mjsnow also fails on any file outside an allow-list (LICENSE,README.md,AUTHORS,package.json,bin/*.js,dist/**).EDGE_BINARY_PATHin the root README, thegeckodriver_cdnurl.npmrckey in the geckodriver README, and%is%25in the credential notes.Test plan
http://user:p%40ss@127.0.0.1:…: edgedriver (404 on .91 →LATEST_RELEASE_120_*→ .92 zip) and geckodriver (real.tar.gz). Red onmainwith thefetchcredentials error; green with the fix: every request carriesBasic base64(user:p@ss)and no log call contains the credentialsextractBasicAuthFromUrlunit tests for geckodriver (run on every OS, so Windows keeps its branch coverage above the threshold)extractBasicAuthFromUrlwithus%er:p%ssin both packages: red before the fix (the URL came back with the credentials), green aftercheck-pack.mjsred on the 3 packages withtsconfig.test.json, green after the.npmignorechangecheck:pack, full e2e (12); credential tests on Node 22.19.0🤖 Generated with Claude Code