diff --git a/pkgs/development/python-modules/playwright/default.nix b/pkgs/development/python-modules/playwright/default.nix index 610e9c58b5ce..aea64bd48a2e 100644 --- a/pkgs/development/python-modules/playwright/default.nix +++ b/pkgs/development/python-modules/playwright/default.nix @@ -13,6 +13,9 @@ setuptools-scm, playwright-driver, nixosTests, + writeText, + runCommand, + pythonPackages, nodejs, }: @@ -81,6 +84,16 @@ buildPythonPackage rec { pyee ]; + setupHook = writeText "setupHook.sh" '' + addBrowsersPath () { + if [[ ! -v PLAYWRIGHT_BROWSERS_PATH ]] ; then + export PLAYWRIGHT_BROWSERS_PATH="${playwright-driver.browsers}" + fi + } + + addEnvHooks "$targetOffset" addBrowsersPath + ''; + postInstall = '' ln -s ${driver} $out/${python.sitePackages}/playwright/driver ''; @@ -96,6 +109,9 @@ buildPythonPackage rec { { driver = playwright-driver; browsers = playwright-driver.browsers; + env = runCommand "playwright-env-test" { + buildInputs = [ pythonPackages.playwright ]; + } "python ${./test.py}"; } // lib.optionalAttrs stdenv.hostPlatform.isLinux { inherit (nixosTests) playwright-python; diff --git a/pkgs/development/python-modules/playwright/test.py b/pkgs/development/python-modules/playwright/test.py new file mode 100644 index 000000000000..3ef73acfdd41 --- /dev/null +++ b/pkgs/development/python-modules/playwright/test.py @@ -0,0 +1,10 @@ +import os +import sys + +from playwright.sync_api import sync_playwright + +with sync_playwright() as p: + browser = p.chromium.launch() + context = browser.new_context() +with open(os.environ["out"], "w") as f: + f.write("OK") diff --git a/pkgs/development/web/playwright/driver.nix b/pkgs/development/web/playwright/driver.nix index ab0638768a08..3cbb71599b01 100644 --- a/pkgs/development/web/playwright/driver.nix +++ b/pkgs/development/web/playwright/driver.nix @@ -12,6 +12,7 @@ makeFontsConf, makeWrapper, runCommand, + writeText, cacert, }: let @@ -188,9 +189,27 @@ let runHook postInstall ''; + setupHook = writeText "setupHook.sh" '' + addBrowsersPath () { + if [[ ! -v PLAYWRIGHT_BROWSERS_PATH ]] ; then + export PLAYWRIGHT_BROWSERS_PATH="${playwright-core.passthru.browsers}" + fi + } + + addEnvHooks "$targetOffset" addBrowsersPath + ''; + meta = playwright.meta // { mainProgram = "playwright"; }; + + passthru.tests.env = runCommand "playwright-core-env-test" { + buildInputs = [ + nodejs + playwright-core + playwright-test + ]; + } "node ${./test.js}"; }); browsers = lib.makeOverridable ( diff --git a/pkgs/development/web/playwright/test.js b/pkgs/development/web/playwright/test.js new file mode 100644 index 000000000000..2390bfe513b1 --- /dev/null +++ b/pkgs/development/web/playwright/test.js @@ -0,0 +1,8 @@ +const playwright = require('playwright'); +const fs = require('fs'); +playwright.chromium.launch() + .then((browser) => { + console.log('OK'); + fs.writeFileSync(process.env.out, ''); + process.exit(0); + });