Install this version:
emerge -a =dev-util/playwright-1.62.1
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =dev-util/playwright-1.62.1
Or alternatively:
emerge --autounmask-write -a =dev-util/playwright-1.62.1
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DESCRIPTION="Automate Chromium, Firefox and WebKit browsers with a single API"
HOMEPAGE="https://playwright.dev/
https://github.com/microsoft/playwright/
https://registry.npmjs.org/playwright/"
# playwright depends on playwright-core (same version, no deps of its own) and
# does not bundle it, so both npm tarballs have to be fetched up front: the
# merge itself runs with network-sandbox and npm cannot reach the registry.
SRC_URI="
https://registry.npmjs.org/${PN}/-/${P}.tgz
-> ${P}.npm.tgz
https://registry.npmjs.org/${PN}-core/-/${PN}-core-${PV}.tgz
-> ${PN}-core-${PV}.npm.tgz
"
S="${WORKDIR}/package"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64 ~arm64"
# Pure JavaScript plus a WASM codec and data files, no ELF objects: nothing
# arch-specific is installed. The browser binaries are downloaded at runtime by
# "playwright install", exactly as with the upstream npm package.
RESTRICT="test"
RDEPEND="
>=net-libs/nodejs-20
!dev-python/playwright-bin
"
BDEPEND="
net-libs/nodejs[npm]
"
DOCS=( NOTICE README.md )
src_unpack() {
# Both tarballs extract into "package/", so unpacking them together would
# let playwright-core silently overwrite playwright's own README/NOTICE.
# Only the main package is unpacked (for DOCS); npm installs straight from
# ${DISTDIR}.
unpack "${P}.npm.tgz"
}
src_compile() {
# Skip, nothing to compile here.
:
}
src_install() {
# Never let npm touch the invoking user's ${HOME}/.npm during a merge.
local -x HOME="${T}"
local -x npm_config_cache="${T}/npm-cache"
local -a my_npm_opts=(
--prefix="${ED}/usr"
--audit=false
--color=false
--progress=false
--foreground-scripts
--fund=false
--global
--offline
--omit=dev
--omit=optional
--update-notifier=false
--verbose
)
# playwright-core is passed alongside playwright so npm resolves the
# dependency from the local tarball instead of the registry; both end up as
# siblings in the global node_modules, where Node's resolution algorithm
# finds playwright-core when playwright requires it. --omit=optional drops
# the darwin-only fsevents optional dependency, whose metadata is not
# available offline either.
npm "${my_npm_opts[@]}" install \
"${DISTDIR}/${PN}-core-${PV}.npm.tgz" \
"${DISTDIR}/${P}.npm.tgz" || die "npm install failed"
einstalldocs
}
| Type | File | Size | Source URLs |
|---|---|---|---|
| DIST | playwright-1.62.1.npm.tgz | 895775 bytes | https://registry.npmjs.org/playwright/-/playwright-1.62.1.tgz |
| DIST | playwright-core-1.62.1.npm.tgz | 3070300 bytes | https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.1.tgz |