tests/playwright-python: init

For some reason, chromium, which is still the nixpkgs version hangs
 inside the normal test vm, while working fine in .driverInteractive.

I suspect that might have to do with the existence of a display in
.driverInteractive. Neither vm does run X11 or wayland.
This commit is contained in:
phaer 2024-09-13 11:20:01 +02:00
parent 67b5c21b58
commit 01fd62f37a
3 changed files with 68 additions and 4 deletions

View File

@ -785,6 +785,7 @@ in {
plasma6 = handleTest ./plasma6.nix {}; plasma6 = handleTest ./plasma6.nix {};
plasma5-systemd-start = handleTest ./plasma5-systemd-start.nix {}; plasma5-systemd-start = handleTest ./plasma5-systemd-start.nix {};
plausible = handleTest ./plausible.nix {}; plausible = handleTest ./plausible.nix {};
playwright-python = handleTest ./playwright-python.nix {};
please = handleTest ./please.nix {}; please = handleTest ./please.nix {};
pleroma = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./pleroma.nix {}; pleroma = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./pleroma.nix {};
plikd = handleTest ./plikd.nix {}; plikd = handleTest ./plikd.nix {};

View File

@ -0,0 +1,58 @@
import ./make-test-python.nix (
{ pkgs, ... }:
{
name = "playwright-python";
meta = with pkgs.lib.maintainers; {
maintainers = [ phaer ];
};
nodes.machine =
{ pkgs, ... }:
{
environment.variables = {
NIX_MANUAL_DOCROOT = "file://${pkgs.nix.doc}/share/doc/nix/manual/index.html";
PLAYWRIGHT_BROWSERS_PATH = pkgs.playwright-driver.browsers;
};
environment.systemPackages = [
(pkgs.writers.writePython3Bin "test_playwright"
{
libraries = [ pkgs.python3Packages.playwright ];
}
''
import sys
from playwright.sync_api import sync_playwright
from playwright.sync_api import expect
browsers = {
"chromium": ["--headless", "--disable-gpu"],
"firefox": [],
"webkit": []
}
if len(sys.argv) != 3 or sys.argv[1] not in browsers.keys():
print(f"usage: {sys.argv[0]} [{'|'.join(browsers.keys())}] <url>")
sys.exit(1)
browser_name = sys.argv[1]
url = sys.argv[2]
browser_args = browsers.get(browser_name)
print(f"Running test on {browser_name} {' '.join(browser_args)}")
with sync_playwright() as p:
browser = getattr(p, browser_name).launch(args=browser_args)
context = browser.new_context()
page = context.new_page()
page.goto(url)
expect(page.get_by_text("Nix Reference Manual")).to_be_visible()
''
)
];
};
testScript = ''
# FIXME: Webkit segfaults
for browser in ["firefox", "chromium"]:
with subtest(f"Render Nix Manual in {browser}"):
machine.succeed(f"test_playwright {browser} $NIX_MANUAL_DOCROOT")
'';
}
)

View File

@ -12,6 +12,7 @@
setuptools, setuptools,
setuptools-scm, setuptools-scm,
playwright-driver, playwright-driver,
nixosTests,
nodejs, nodejs,
}: }:
@ -93,9 +94,13 @@ buildPythonPackage rec {
passthru = { passthru = {
inherit driver; inherit driver;
tests = { tests =
{
driver = playwright-driver; driver = playwright-driver;
browsers = playwright-driver.browsers; browsers = playwright-driver.browsers;
}
// lib.optionalAttrs stdenv.isLinux {
inherit (nixosTests) playwright-python;
}; };
updateScript = ./update.sh; updateScript = ./update.sh;
}; };