{ lib, buildNpmPackage, fetchFromGitHub, makeBinaryWrapper, playwright-driver, versionCheckHook, writeShellScript, }: buildNpmPackage (finalAttrs: { pname = "playwright-cli"; version = "0.1.1"; src = fetchFromGitHub { owner = "microsoft"; repo = "playwright-cli"; tag = "v${finalAttrs.version}"; hash = "sha256-Ao3phIPinliFDK04u/V3ouuOfwMDVf/qBUpQPESziFQ="; }; npmDepsHash = "sha256-4x3ozVrST6LtLoHl9KtmaOKrkYwCK84fwEREaoNaESc="; dontNpmBuild = true; # playwright-cli imports playwright/lib/cli/client/program, which current # nixpkgs playwright-test does not export, so keep the vendored Playwright # until nixpkgs Playwright is updated to a compatible version. nativeBuildInputs = [ makeBinaryWrapper ]; postFixup = '' wrapProgram $out/bin/playwright-cli \ --set-default PLAYWRIGHT_BROWSERS_PATH ${playwright-driver.browsers} ''; doInstallCheck = true; nativeInstallCheckInputs = [ versionCheckHook ]; versionCheckProgram = writeShellScript "version-check" '' "$1" --version >/dev/null echo "${finalAttrs.version}" ''; versionCheckProgramArg = "${placeholder "out"}/bin/playwright-cli"; meta = { description = "Playwright CLI for browser automation"; homepage = "https://github.com/microsoft/playwright-cli"; changelog = "https://github.com/microsoft/playwright-cli/releases/tag/v${finalAttrs.version}"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ imalison ]; mainProgram = "playwright-cli"; }; })