Files
nixpkgs/pkgs/development/python-modules/playwright/default.nix
Matthieu Coudron 6d9b879602 playwright-driver: init at 1.30.1 (#223382)
it was actually moved from
pkgs/development/python-modules/playwright/default.nix to its own
pkgs/development/web/playwright/driver.nix .

I am trying to package the typescript version of playwright and the
browsers are needed there, it's more convenient to split them away from the python module.

Careful playwright.browsers is not accessible anymore.

Apply suggestions from code review

Co-authored-by: Yannik Rödel <hey@yannik.info>
2023-04-18 23:18:03 +02:00

100 lines
2.6 KiB
Nix

{ lib
, buildPythonPackage
, git
, greenlet
, fetchFromGitHub
, pyee
, python
, pythonOlder
, setuptools-scm
, playwright-driver
}:
let
driver = playwright-driver;
in
buildPythonPackage rec {
pname = "playwright";
version = "1.31.1";
format = "setuptools";
disabled = pythonOlder "3.7";
src = fetchFromGitHub {
owner = "microsoft";
repo = "playwright-python";
rev = "v${version}";
hash = "sha256-zVJiRIJDWmFdMCGK9siewiYgjeeTuOPY1wWxArcZDJg";
};
patches = [
# This patches two things:
# - The driver location, which is now a static package in the Nix store.
# - The setup script, which would try to download the driver package from
# a CDN and patch wheels so that they include it. We don't want this
# we have our own driver build.
./driver-location.patch
];
postPatch = ''
# if setuptools_scm is not listing files via git almost all python files are excluded
export HOME=$(mktemp -d)
git init .
git add -A .
git config --global user.email "nixpkgs"
git config --global user.name "nixpkgs"
git commit -m "workaround setuptools-scm"
substituteInPlace setup.py \
--replace "greenlet==2.0.1" "greenlet>=2.0.1" \
--replace "pyee==8.1.0" "pyee>=8.1.0" \
--replace "setuptools-scm==7.0.5" "setuptools-scm>=7.0.5" \
--replace "wheel==0.38.1" "wheel>=0.37.1"
# Skip trying to download and extract the driver.
# This is done manually in postInstall instead.
substituteInPlace setup.py \
--replace "self._download_and_extract_local_driver(base_wheel_bundles)" ""
# Set the correct driver path with the help of a patch in patches
substituteInPlace playwright/_impl/_driver.py \
--replace "@driver@" "${driver}/bin/playwright"
'';
nativeBuildInputs = [ git setuptools-scm ];
propagatedBuildInputs = [
greenlet
pyee
];
postInstall = ''
ln -s ${driver} $out/${python.sitePackages}/playwright/driver
'';
SETUPTOOLS_SCM_PRETEND_VERSION = version;
# Skip tests because they require network access.
doCheck = false;
pythonImportsCheck = [
"playwright"
];
passthru = {
inherit driver;
tests = {
driver = playwright-driver;
browsers = playwright-driver.browsers;
};
};
meta = with lib; {
description = "Python version of the Playwright testing and automation library";
homepage = "https://github.com/microsoft/playwright-python";
license = licenses.asl20;
maintainers = with maintainers; [ techknowlogick yrd SuperSandro2000 ];
platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
};
}