e2e-browser-test

e2e-browser-test is a skill for Claude Code, Codex from tmj-90/gaffer. It costs 87 tokens per session (1,291 once invoked), scanned A, original, Apache-2.0.

A method for writing end-to-end browser tests, which check a complete user journey through the real interface and its backend or a faithful test version of it.

In plain words
What is it for?
Use it for sign-up, checkout, forms, dashboards, and other journeys tested with tools such as Playwright or Cypress.
Why use it?
It helps verify what users actually see and do, while avoiding tests that depend on timing, shared leftover data, or another test's order. It uses the repository's existing browser test setup.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit Use it for sign-up, checkout, forms, dashboards, and other journeys tested with tools such as Playwright or Cypress.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/tmj-90/gaffer/e2e-browser-test
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add tmj-90/gaffer --skill e2e-browser-test
Clone the repo
git clone --depth 1 https://github.com/tmj-90/gaffer

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for e2e-browser-test

README.md
[![agentmods](https://agentmods.dev/badge/skills/tmj-90/gaffer/e2e-browser-test/github.svg)](https://agentmods.dev/skills/tmj-90/gaffer/e2e-browser-test)
Your own site
<a href="https://agentmods.dev/skills/tmj-90/gaffer/e2e-browser-test"><img src="https://agentmods.dev/badge/skills/tmj-90/gaffer/e2e-browser-test/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for e2e-browser-test

Your own site · 80×15
<a href="https://agentmods.dev/skills/tmj-90/gaffer/e2e-browser-test"><img src="https://agentmods.dev/badge/skills/tmj-90/gaffer/e2e-browser-test.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 87 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,291 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00087 $0.01291
Opus 5.5 $0.00035 $0.00516
Sonnet 5.5 $0.00017 $0.00258
Haiku 4.5 $0.00009 $0.00129

Measured 16d ago against content hash 0012eb8f24a9, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

e2e-browser-test scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 16d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

runner/skills/e2e-browser-test/SKILL.md · 82 lines

How it starts

The opening of the file, as written. The whole thing — 82 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Write an end-to-end browser test

An end-to-end test proves a user journey works through the real UI against a real (or faithfully stubbed) backend. It is the slowest and most flake-prone test in the suite — Google's data shows flakiness grows with test size and with WebDriver-style tooling — so it earns its place by covering a journey no cheaper test can, and by being deterministic: no sleeps, no order dependence, no data another test created.

Procedure

  1. Find the harness. Locate the repo's browser setup (playwright.config.*, cypress/, a test:e2e script). Use it exactly — its browsers, base URL, webServer block and CI command. Do not add a second framework. If none exists and the ticket does not ask for one, raise request_decision with the smallest viable setup. (Independent tester: never raise request_decision; follow black-box-test — scaffold a disposable rig in a test directory only with what the repo already has installed, run the spec once, and record manual_note rows.)
  2. Push coverage down first. For each acceptance criterion ask whether a component or integration test proves it (the frontend-testing and add-integration-test skills). Only journeys that need the real browser, routing, cookies or the full stack belong here.
  3. Write the journey in plain words: start state → user actions → what the user must observe. Map each AC to one observable outcome on screen or one persisted result. Name the test after the journey and cite the AC.
  4. Own your data. Create what the test needs through an API call, seed script or factory inside the test (or a fixture), with unique values, and clean up. Never depend on another test's leftovers or a shared account; each test gets a fresh browser context. Save authenticated state once (storageState) rather than logging in through the UI in every test.
  5. Locate like a user. getByRole with the accessible name, then getByLabel, getByText; chain and filter({ hasText }) to scope. getByTestId only when no accessible handle exists, with a comment why. No XPath or styling-class CSS selectors.
  6. Use web-first assertions; never wait for time. await expect(locator).toBeVisible(), toHaveText, toHaveURL, page.waitForResponse. Never waitForTimeout/cy.wait(ms), and never expect(await locator.isVisible()).toBe(true) — it does not retry. Every Playwright call is awaited (@typescript-eslint/no-floating-promises catches misses).
  7. Assert the outcome, not the DOM. What the user sees, and what the system persisted: reload the page or query the API to prove a save survived, check the stub outbox for the email. A toast saying "Saved" is not proof the data was saved.
  8. Stub only what you do not control. Third-party services go through page.route(...)/cy.intercept with recorded responses; your own backend stays real.
  9. When an AC concerns concurrent users or failure, drive it for real: two browser contexts editing the same record (assert the documented conflict behaviour, no silent overwrite); the backend returning an error or going offline via page.route → abort(); the user sees the documented error and can retry.
  10. Keep failures diagnosable. Traces on first retry (trace: 'on-first-retry'), screenshots on failure. Retries may be on in CI to collect traces, but a test that passes only on retry is flaky and not done.
  11. Run it until stable: the spec three times in a row headless, e.g. npx --no -- playwright test <spec> --repeat-each=3, then the repo's CI command. Record the command and result with the record-evidence skill (test_output) per AC.

Read the full file on GitHub · 82 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 16d ago Changed · +21 lines 0012eb8f24a9
  2. 19d ago First seen · 61 lines · 87 tokens per session scan A b574fc6d8036

Subscribe to this mod's changes

e2e-browser-test is a skill published in the GitHub repository tmj-90/gaffer (2 stars, last pushed 17d ago), licensed Apache-2.0. It adds 87 tokens to every session and 1,291 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-28.

Related

Other skills, from other repositories

test-fixture-creation

Guidelines for creating unbiased test fixtures that integrate with project infrastructure. Use when creating fixtures for manual testing, setting up E2E test scenarios, or building code samples with deliberate issues for LLM review. Ensures fixtures work with hook automation and pass Phase 1 checks.

QBall-Inc/the-bulwark · 61 tokens

agent-browser

Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, test web applications, or extract information from web pages.

nek1987/auto-agent-harness · 51 tokens

browser-testing-with-screenshots

Use when testing web applications with visual verification - automates Chrome browser interactions, element selection, and screenshot capture for confirming UI functionality.

nek1987/auto-agent-harness · 32 tokens

e2e-testing

Playwright E2E testing patterns, Page Object Model, configuration, CI/CD integration, artifact management, and flaky test strategies. Use when writing Playwright tests, structuring page objects, or fixing flaky E2E runs in CI.

affaan-m/ECC · 53 tokens

dogfood

Exploratory QA of web apps: find bugs, evidence, reports.

NousResearch/hermes-agent · 18 tokens

e2e-testing-patterns

Master end-to-end testing with Playwright and Cypress to build reliable test suites that catch bugs, improve confidence, and enable fast deployment. Use when implementing E2E tests, debugging flaky tests, or establishing testing standards.

wshobson/agents · 51 tokens