跳到正文
cccskills
免费在 GitHub 公开

nix-playwright

Use this when adding Nix-based local runs for an existing Playwright e2e suite. Provides a self-contained `tests/shell.nix` that uses `nixpkgs-latest` for `playwright-driver.browsers`, plus a justfile entry — works on NixOS where `npx playwright install --with-deps` cannot.

中文简介正在准备中。当前显示原文说明。

集成工具Playwright
查看安装方法

包含的文件(1)

  • SKILL.md2.2 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Playwright e2e under Nix

For projects that already have a Playwright e2e suite (typically under tests/) and need it to run locally on NixOS / pure-Nix hosts, where Playwright's bundled Chromium download depends on apt-get + sudo.

GitHub Actions CI is left untouched — apt-provided Chromium on Ubuntu runners is cheaper than spinning up a Nix devshell. This skill is for local runs (and Nix-based CI like Vira); GHA continues to use its own apt path.

Add a nixpkgs-latest flake input

In top-level flake.nix, add an independent pin so the Playwright rev moves on its own cadence (decoupled from the main nixpkgs your build uses):

inputs.nixpkgs-latest.url = "github:nixos/nixpkgs/nixpkgs-unstable";

tests/shell.nix

Self-contained. Reads the parent flake's lock to resolve nixpkgs-latest without needing a flake context:

let
  lock = builtins.fromJSON (builtins.readFile ../flake.lock);
  nixpkgsLocked = lock.nodes.nixpkgs-latest.locked;
  pkgs = import (builtins.fetchTree {
    type = "github";
    inherit (nixpkgsLocked) owner repo rev narHash;
  }) { };
in
pkgs.mkShell {
  packages = [ pkgs.nodejs ];
  PLAYWRIGHT_BROWSERS_PATH = "${pkgs.playwright-driver.browsers}";
  PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = "1";
}

Justfile recipe

e2e:
    nix-shell tests/shell.nix --run "cd tests && { [ -d node_modules ] || npm ci; } && npm test"

Critical version constraint

pkgs.playwright-driver version must match the playwright version in tests/package.json. Drift raises "browser revision X not found at <PLAYWRIGHT_BROWSERS_PATH>" at launch.

Bump both together:

  1. nix flake update nixpkgs-latest
  2. Match playwright in tests/package.json to the new driver version
  3. npm install in tests/ to regenerate the lockfile

Reference

Pattern extracted from emanote#660.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

be

免费

Modern, interactive alternative to `/do` — clarify intent up front, then take a task end-to-end with a serial AI review gauntlet (lens debate (lowy ⇄ hickey) → codex debate → simplify → code-police, each editing the branch in turn) → CI → evidence. ONLY invoke when the user explicitly types `/be` or `$be`; never auto-select from a natural-language request.

中文简介正在准备中。当前显示原文说明。

srid/emanote9662026年7月26日 更新

be-review

免费

Run /be's review gauntlet SERIALLY — /lens-debate (lowy ⇄ hickey), then /codex-debate, then /simplify, then code-police, each editing and committing on the live branch in turn. Use from /be §4, or when the user asks to "run the review gauntlet". Requires Claude Code's Skill tool.

中文简介正在准备中。当前显示原文说明。

srid/emanote9662026年7月26日 更新

ci

免费

Reference for the `odu` runner — how to invoke a full pipeline, a single recipe, or a platform-pinned node, and how to attach to a live run, from a project whose CI odu runs. Trigger when the user asks to "run CI", "run the pipeline", "re-run a check", to run named lanes or recipes (e.g. "run fmt and nix", "just the e2e lane", bare selectors like `fmt`/`nix`/`e2e`), or names a recipe by `<recipe>@<platform>`. This skill — not a repo's local `just ci` / `just <recipe>` — is how an odu-run request is served.

中文简介正在准备中。当前显示原文说明。

srid/emanote9662026年7月26日 更新

Review code for quality, simplicity, and common mistakes before declaring work complete.

中文简介正在准备中。当前显示原文说明。

srid/emanote9662026年7月26日 更新

Run an automated codex⇄Claude debate to consensus — no round cap, no deadlock exit. Two explicit subcommands. `review` (also the bare/back-compat default) — codex (reviewer) critiques the current diff and a Claude subagent (author) fixes/disputes, looping until they agree. `answer` — Claude and codex each answer a freeform prompt in parallel, then cross-check until they agree, and a unified answer is returned. Use when the user types `/codex-debate`, asks to "have codex review this", "run the codex debate", "review this PR with codex", "argue this with codex until you agree", or passes a question to "have Claude and codex debate/answer until they agree".

中文简介正在准备中。当前显示原文说明。

srid/emanote9662026年7月26日 更新

do

免费

Do a task end-to-end — implement, PR, CI loop, ship. ONLY invoke when the user explicitly types `/do` or `$do`; never auto-select from a natural-language request, even one that sounds like an end-to-end task.

中文简介正在准备中。当前显示原文说明。

srid/emanote9662026年7月26日 更新

查看 srid 的全部技能

报告此技能的问题