Playwright: Difference between revisions
Break out visual studio code part into its own section |
Add devenv config |
||
| Line 31: | Line 31: | ||
{{Note|Keep in mind that you need to use the same version of playwright in your node playwright project as in your nixpkgs, or else playwright will try to use browsers versions that aren't installed!}} | {{Note|Keep in mind that you need to use the same version of playwright in your node playwright project as in your nixpkgs, or else playwright will try to use browsers versions that aren't installed!}} | ||
== Playwright with Devenv == | |||
With [https://devenv.sh/ Devenv] you can also set certain environment variables and pin packages to make playwright work. | |||
Again, make sure to pin to the same version of playwright in <code>devenv.yaml</code> and <code>package.json</code>! | |||
=== devenv.nix === | |||
<syntaxHighlight lang=nix> | |||
{ pkgs, lib, config, inputs, ... }: | |||
let | |||
pkgs-playwright = import inputs.nixpkgs-playwright { system = pkgs.stdenv.system; }; | |||
browsers = (builtins.fromJSON (builtins.readFile "${pkgs-playwright.playwright-driver}/browsers.json")).browsers; | |||
chromium-rev = (builtins.head (builtins.filter (x: x.name == "chromium") browsers)).revision; | |||
in | |||
{ | |||
# https://devenv.sh/basics/ | |||
env = { | |||
PLAYWRIGHT_BROWSERS_PATH = "${pkgs-playwright.playwright.browsers}"; | |||
PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS = true; | |||
PLAYWRIGHT_NODEJS_PATH = "${pkgs.nodejs}/bin/node"; | |||
PLAYWRIGHT_LAUNCH_OPTIONS_EXECUTABLE_PATH = "${pkgs-playwright.playwright.browsers}/chromium-${chromium-rev}/chrome-linux/chrome"; | |||
}; | |||
# https://devenv.sh/packages/ | |||
packages = with pkgs; [ | |||
just | |||
nodejs | |||
]; | |||
# https://devenv.sh/languages/ | |||
languages.javascript.enable = true; | |||
dotenv.disableHint = true; | |||
cachix.enable = false; | |||
# https://devenv.sh/scripts/ | |||
scripts.intro.exec = '' | |||
playwrightNpmVersion="$(npm show @playwright/test version)" | |||
echo "❄️ Playwright nix version: ${pkgs-playwright.playwright.version}" | |||
echo "📦 Playwright npm version: $playwrightNpmVersion" | |||
if [ "${pkgs-playwright.playwright.version}" != "$playwrightNpmVersion" ]; then | |||
echo "❌ Playwright versions in nix (in devenv.yaml) and npm (in package.json) are not the same! Please adapt the configuration." | |||
else | |||
echo "✅ Playwright versions in nix and npm are the same" | |||
fi | |||
echo | |||
env | grep ^PLAYWRIGHT | |||
''; | |||
enterShell = '' | |||
intro | |||
''; | |||
# See full reference at https://devenv.sh/reference/options/ | |||
} | |||
</syntaxHighlight> | |||
=== devenv.yaml === | |||
<syntaxHighlight lang=yaml> | |||
# yaml-language-server: $schema=https://devenv.sh/devenv.schema.json | |||
inputs: | |||
nixpkgs: | |||
url: github:NixOS/nixpkgs/nixos-unstable | |||
# Currently pinned to: playwright@1.52.0 | |||
# See https://search.nixos.org/packages?channel=unstable&from=0&size=50&sort=relevance&type=packages&query=playwright | |||
nixpkgs-playwright: | |||
url: github:NixOS/nixpkgs/979daf34c8cacebcd917d540070b52a3c2b9b16e | |||
</syntaxHighlight> | |||
=== package.json === | |||
<syntaxHighlight lang=json> | |||
{ | |||
"name": "e2e-tests-ng", | |||
"version": "1.0.0", | |||
"main": "index.js", | |||
"license": "MIT", | |||
"devDependencies": { | |||
"@playwright/test": "1.52.0", | |||
"eslint": "^8.41.0" | |||
}, | |||
"engines": { | |||
"node": ">=18.0.0" | |||
}, | |||
"scripts": { | |||
"playwright:test": "playwright test", | |||
"playwright:test:ui": "playwright test --ui", | |||
"playwright:install": "playwright install", | |||
"lint": "eslint ." | |||
}, | |||
"dependencies": { | |||
"dotenv": "^16.0.3", | |||
"jsrsasign": "^11.0.0" | |||
} | |||
} | |||
</syntaxHighlight> | |||