|
2 | 2 | pkgs = import ./nix/pinned.nix { |
3 | 3 | overlays = [(import ./nix/overlays.nix)]; |
4 | 4 | }; |
| 5 | + inherit (pkgs.stdenv.hostPlatform) system; |
| 6 | + throwSystem = throw "Unsupported system: ${system}"; |
| 7 | + suffix = |
| 8 | + { |
| 9 | + x86_64-linux = "linux64"; |
| 10 | + aarch64-linux = "linux-arm64"; |
| 11 | + x86_64-darwin = "mac64"; |
| 12 | + aarch64-darwin = "mac-arm64"; |
| 13 | + }.${system} or throwSystem; |
5 | 14 | in |
6 | 15 | with pkgs; |
7 | 16 | mkShell { |
| 17 | + nativeBuildInputs = [ |
| 18 | + playwright-driver.browsers |
| 19 | + ]; |
8 | 20 | buildInputs = [ |
9 | 21 | babashka |
10 | 22 | clojure |
11 | 23 | cljfmt |
12 | 24 | clj-kondo |
13 | 25 | neil |
14 | | - |
15 | | - # Needed for Playwright (wally) e2e tests on NixOS. |
16 | | - # Playwright Java ships its own node binary, which is dynamically linked |
17 | | - # and won't run on NixOS by default; we point Playwright at Nix's node and |
18 | | - # use Nix's Chromium binary. |
19 | | - nodejs |
20 | | - chromium |
21 | 26 | ]; |
22 | | - |
23 | | - shellHook = '' |
24 | | - # Playwright Java (via wally) runs on NixOS when we: |
25 | | - # - prevent Playwright from downloading its own browsers (they're not Nix-patched) |
26 | | - # - provide a "fake" Playwright browser installation that delegates to Nix's Chromium |
27 | | - # - ensure a working Node is available |
28 | | -
|
29 | | - export PLAYWRIGHT_NODEJS_PATH="${nodejs}/bin/node" |
30 | | - export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 |
31 | | -
|
32 | | - # Playwright 1.31.0 expects Chromium revision 1048 at this path. |
33 | | - export PLAYWRIGHT_BROWSERS_PATH="$HOME/.cache/ms-playwright" |
34 | | - chromium_dir="$PLAYWRIGHT_BROWSERS_PATH/chromium-1048/chrome-linux" |
35 | | - mkdir -p "$chromium_dir" |
36 | | -
|
37 | | - chromium_wrapper="$chromium_dir/chrome" |
38 | | - if [ ! -e "$chromium_wrapper" ]; then |
39 | | - cat > "$chromium_wrapper" <<'EOF' |
40 | | -#!/usr/bin/env bash |
41 | | -exec "${chromium}/bin/chromium" "$@" |
42 | | -EOF |
43 | | - chmod +x "$chromium_wrapper" |
44 | | - fi |
45 | | - ''; |
| 27 | + PLAYWRIGHT_BROWSERS_PATH = "${pkgs.playwright-driver.browsers}"; |
| 28 | + PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH = "${pkgs.playwright-driver.browsers}/chromium_headless_shell-${pkgs.playwright-driver.browsersJSON.chromium-headless-shell.revision}/chrome-headless-shell-${suffix}/chrome-headless-shell"; |
| 29 | + PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS = true; |
| 30 | + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = 1; |
| 31 | + PLAYWRIGHT_HOST_PLATFORM_OVERRIDE = "ubuntu-24.04"; |
| 32 | + PLAYWRIGHT_NODEJS_PATH="${pkgs.nodejs}/bin/node"; |
46 | 33 | } |
0 commit comments