Repository navigation
feat(build): publish a source distribution without Node.js - #3295
Merged
Merged
Conversation
Pavel Feldman (pavelfeldman)
approved these changes
Oct 28, 2026
The release publishes a sdist next to the platform wheels. The sdist carries the "any" driver bundle, built from .upstream/ like the others but without the Node.js binary. A wheel built from it is py3-none-any and runs with the Node.js of PLAYWRIGHT_NODEJS_PATH. The client says so when the bundled Node.js is missing, and names the executable when the driver does not launch.
- The wheel jobs run test_install only; the sdist job runs test_install_sdist. Each job builds the one artifact its test installs. - The sdist job builds the wheel first, so that the checkout has a driver with Node.js for install-deps. - The client subprocesses of the tests run from tmp_path, so that they import the installed package and not the checkout. - The sdist test installs with --no-binary :all:, the pip form of poetry's installer.no-binary policy of the report. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Dmitry Gozman (dgozman)
force-pushed
the
fix-3036
branch
from
October 29, 2026 11:21
a38aa0d to
ab5bcf4
Compare
Dmitry Gozman (dgozman)
merged commit Oct 29, 2026
6f6823d
into
microsoft:main
30 of 36 checks passed
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.
Playwright for Python publishes only platform wheels, one per OS and CPU, because each wheel bundles the Node.js binary that runs the driver. There is no source distribution (sdist). Poetry's
installer.no-binary = :all:(and pip's--no-binary :all:) rejects every wheel and looks for an sdist, sopoetry add playwrightfails with "Unable to find installation candidates". The same happens on platforms we have no wheel for.playwright-corepackage) without the Node.js binary; the bundle is built from.upstream/like the platform ones, withscripts/build_driver.py any. Everything else in it is the same.py3-none-any, so it installs anywhere. pip and poetry still prefer the platform wheel when one is allowed, so nothing changes for the installs of today.PLAYWRIGHT_NODEJS_PATHto its executable, as the docs describe. Without it, the client says "This installation of Playwright does not include Node.js. Set PLAYWRIGHT_NODEJS_PATH pointing to Node.js executable." When the executable does not launch, the client says "Cannot launch Node.js executable at : ", for both the CLI and the API.tests/test_installation.pygetstest_install_sdist: a clean venv,pip installof the sdist, the two error messages, then a Chromium launch with the system Node.js. A newsdistjob of CI runs it.Fixes microsoft/playwright#43599
See also #3036