You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
PyPI release readiness for selenium-devtools-py #294
Nothing has been published under any of the names tried. The pending
trusted publisher must be registered against the final name, and the first
successful publish is what claims it. The README carries the setup steps.
Acceptance criteria
Pending trusted publisher registered for selenium-devtools-py with the pypi environment. TestPyPI dry run passes. First
publish claims the name.
Release decisions from the maintainer review — settle before publishing
Raised with @christian-bromann ahead of the first publish. One is agreed, three are open.
1. Name — agreed ✅
selenium-devtools-py, free on PyPI, no objections. Nothing to do beyond claiming it with the first publish.
2. Node as a hard requirement — open ⚠️
The wheel does not bundle the backend; it fetches @wdio/devtools-backend via npx, so Python users need Node 18+ (node_runtime.require_node checks and fails with a clear message).
Feedback: "Seems awkward to make Python user require Node.js — if it is only the backend service we could bundle it into a binary? I guess a disadvantage then is that it makes the package 30+mb big."
It is not only the dashboard. Python's trace export also routes through the backend, because #298 decided against re-implementing the ~3,100 lines of trace transforms per language. The JS adapters skip the backend in trace mode only because they already run on Node. So today a Python user without Node can produce neither a dashboard nor a trace — the requirement is broader than the question assumed.
Measured, so the size trade-off is not a guess:
size
packages/backend/dist
168 KB
packages/app/dist (UI)
1.1 MB
Node runtime (what a single-executable build embeds)
~90–115 MB uncompressed, by major version
Our own payload is ~1.3 MB. The weight is entirely the runtime.
Options:
(a) Status quo. Node 18+ required, checked up front with a clear error. Zero build machinery. Rejected by the maintainer as awkward, and it is the status quo only by default.
(b) Bundle a single executable. Removes the requirement. ~30–50 MB per compressed wheel — the 30+ MB estimate is right per wheel — but PyPI wheels are per-platform, so ~5 per release (macOS arm64/x64, Linux x64/arm64, Windows x64), plus a build matrix and a pure-Python sdist fallback. Ongoing maintenance surface, and worth checking against the PyPI project size quota.
(c) Node as an extra.pip install selenium-devtools-py stays ~100 KB and uses whatever Node is on PATH; pip install selenium-devtools-py[node] pulls a prebuilt Node wheel for users without one. Same end-user outcome as (b) with no binary matrix of ours to maintain. Needs verification — platform coverage and maintenance health of the available Node-binary wheels have not been checked.
Recommendation: spike (c), fall back to (b). Not blocking until the decision is made, but it must be made before the first publish: moving from "needs Node" to "bundles Node" is additive, but the reverse is not.
3. Secrets — none required ✅ (clarification)
None are needed. .github/workflows/python-release.yml already uses PyPI trusted publishing — permissions: id-token: write, no token anywhere. What it does need, from someone with owner rights on the PyPI project:
A pending publisher registered for selenium-devtools-py, pointing at this repo, workflow filename python-release.yml, environment pypi
The same for testpypi, for the dry run
GitHub environments pypi and testpypi to exist (repo side — can be done here)
4. Automated publish workflow — open ⚠️
python-release.yml is workflow_dispatch today, deliberately mirroring release.yml for npm — which is also manual. Automating Python alone diverges the two.
Decide: automate both (fire on a published GitHub Release), or keep Python matching npm until both change together
Activity
vishnuv688 commentedon Sep 1, 2026
Release decisions from the maintainer review — settle before publishing
Raised with @christian-bromann ahead of the first publish. One is agreed, three are open.
1. Name — agreed ✅
selenium-devtools-py, free on PyPI, no objections. Nothing to do beyond claiming it with the first publish.2. Node as a hard requirement — open⚠️
The wheel does not bundle the backend; it fetches
@wdio/devtools-backendvianpx, so Python users need Node 18+ (node_runtime.require_nodechecks and fails with a clear message).Feedback: "Seems awkward to make Python user require Node.js — if it is only the backend service we could bundle it into a binary? I guess a disadvantage then is that it makes the package 30+mb big."
It is not only the dashboard. Python's trace export also routes through the backend, because #298 decided against re-implementing the ~3,100 lines of trace transforms per language. The JS adapters skip the backend in trace mode only because they already run on Node. So today a Python user without Node can produce neither a dashboard nor a trace — the requirement is broader than the question assumed.
Measured, so the size trade-off is not a guess:
packages/backend/distpackages/app/dist(UI)Our own payload is ~1.3 MB. The weight is entirely the runtime.
Options:
pip install selenium-devtools-pystays ~100 KB and uses whatever Node is onPATH;pip install selenium-devtools-py[node]pulls a prebuilt Node wheel for users without one. Same end-user outcome as (b) with no binary matrix of ours to maintain. Needs verification — platform coverage and maintenance health of the available Node-binary wheels have not been checked.Recommendation: spike (c), fall back to (b). Not blocking until the decision is made, but it must be made before the first publish: moving from "needs Node" to "bundles Node" is additive, but the reverse is not.
3. Secrets — none required ✅ (clarification)
None are needed.
.github/workflows/python-release.ymlalready uses PyPI trusted publishing —permissions: id-token: write, no token anywhere. What it does need, from someone with owner rights on the PyPI project:selenium-devtools-py, pointing at this repo, workflow filenamepython-release.yml, environmentpypitestpypi, for the dry runpypiandtestpypito exist (repo side — can be done here)4. Automated publish workflow — open⚠️
python-release.ymlisworkflow_dispatchtoday, deliberately mirroringrelease.ymlfor npm — which is also manual. Automating Python alone diverges the two.Before the first publish