本文へ移動
cccskills
無料GitHub で公開

e2e

Agentic end-to-end tests with e2e, the e2e runner. Covers scaffolding e2e.config.ts, picking the Playwright browser engine or the agent-device mobile engine, starting the app under test from the config, driving flows with agent.act, judging with agent.assert, agent.waitFor, and agent.extract, pinning values with screen, app, browser, and expect, shaping the agent (context, system prompt, tools, personas), the replay cache, the e2e CLI, reading .e2e/report.json, and bug bashes (parallel explore runs proven with repro tests). Use when a project depends on e2e, when asked for end-to-end, browser, mobile, or agentic UI tests, to bug bash or hunt for bugs, or when an e2e run fails.

インストール方法を見る

含まれるファイル(9)

  • SKILL.md9.0 KB
  • references/agent.md14.6 KB
  • references/bug-bash.md13.9 KB
  • references/debugging.md10.6 KB
  • references/explore.md7.2 KB
  • references/mcp.md8.8 KB
  • references/running.md11.5 KB
  • references/setup.md18.3 KB
  • references/writing-tests.md22.2 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

e2e: agentic end-to-end tests in TypeScript

Kortix repository integration

Use pnpm test -- --agentic-only [files...] for this opt-in pilot. The wrapper checks local listener ownership and rejects skipped or flaky selected tests. MCP is for inspecting the app and finding locators; run tests through the root wrapper. The config also checks listener ownership before MCP can start the app. The MCP server allows one session. Keep the existing testing and release gates. Do not add a pull-request CI workflow or a second root test script. Use synthetic local data only. Keep reports, traces, videos, and caches gitignored.

e2e runs UI tests with agent goals and exact assertions. agent.act drives one goal; agent.assert, agent.waitFor, and agent.extract judge the screen. screen, app, browser, and expect make exact interactions and checks. The replay cache reruns verified actions and checks their recorded end state without a model call; agent judgments still run live. UI targets use @e2e-dev/web for browsers or @e2e-dev/mobile for iOS simulators and Android emulators. A test that takes only app can check an API with fetch and expect (topic writing-tests). Model sign-in commands are in setup.

// e2e.config.ts
import type { E2EConfig } from 'e2e';
import { web } from '@e2e-dev/web';
import { gateway } from 'ai';

export default {
  targets: [
    {
      engine: web(),
      app: {
        url: 'http://127.0.0.1:3000',
        command: { executable: 'pnpm', args: ['dev'], log: '.e2e/logs/app.log' },
      },
    },
  ],
  // The model behind every agent.* step: an AI SDK instance; gateway() from 'ai' reads AI_GATEWAY_API_KEY or a Vercel OIDC token.
  agents: {
    default: {
      model: gateway('openai/gpt-6-luna-fast'),
      system: 'You are a thorough QA agent. Verify every outcome on screen.',
    },
  },
} satisfies E2EConfig;
// tests/billing.e2e.ts
import { test } from '@e2e-dev/web';
import { expect } from 'e2e';

test('a member upgrades to Pro', async ({ app, agent, screen, browser }) => {
  await app.open('/settings/billing');
  await agent.act('upgrade the workspace to the Pro plan');
  await expect(screen.getByRole('status')).toContainText('Pro');
  await expect(browser).toHaveURL('/settings/billing');
});

Topics

Read the topic for the job before writing code. The files sit next to this one; the installed CLI prints the same text with npx e2e guide <topic> (e2e guide alone prints this page). For anything the topics do not cover, the full documentation ships in the docs/ directory of the installed e2e package (node_modules/e2e/docs in a single-package project); a link such as /reference/cli is docs/reference/cli.mdx.

TopicFileRead it when
setupreferences/setup.mdAdding e2e to a project, writing e2e.config.ts, starting the app from the config, mobile targets
writing-testsreferences/writing-tests.mdWriting or fixing tests: fixtures, locators, actions, matchers, sign-in sessions, the browser fixture
agentreferences/agent.mdAdding agent.* steps, picking a model, cost and budgets, the replay cache
runningreferences/running.mdCLI flags, reporters, .e2e/report.json, exit codes, CI
explorereferences/explore.mdExploring an app toward a goal without a test file: e2e explore, its budgets, verdict, and run.explore
debuggingreferences/debugging.mdA run failed: error codes and their fixes, --headed, --debug, --ai-trace
mcpreferences/mcp.mdDriving the live app from a coding agent over MCP: e2e mcp, its tools, and the explore-then-write loop
bug-bashreferences/bug-bash.mdAsked to bug bash, QA, or hunt for bugs across an app or a branch: parallel e2e explore charters, merging findings, proving each with a repro test

Workflow

  1. Look at what exists: e2e.config.ts or e2e.config.mts, the tests glob (default tests/**/*.e2e.ts), e2e in package.json. Nothing there: follow setup.
  2. Learn the screens before writing a test: routes, labels, roles, button text. Semantic locators need the accessible names the app renders, so read the components, open the page with --headed, or drive the live app over the registered e2e mcp server (topic mcp): open_session, observe, and locate show exact names and check a locator before you write it.
  3. Write tests/<feature>.e2e.ts. Drive the flow with agent.act, one goal per call, and pin each outcome right after with expect or agent.assert. Exact values go through screen: a sign-in form in a setup test, a field that must receive one specific string, a count that must be one number.
  4. Run one file: npx e2e run tests/<feature>.e2e.ts. Agent steps need a model in the config and that provider's authentication (a saved subscription login, an API key); a local endpoint may need none. Tests without agent steps need no model.
  5. Read the failure: the reporter prints the error code, message, and a code frame; .e2e/report.json has every step and artifact path. Fix the locator, the expectation, or the app. Never add a sleep.

Rules

  • Run the CLI as npx e2e ... (or pnpm exec e2e ...).
  • The config is export default { ... } satisfies E2EConfig with import type { E2EConfig } from 'e2e'. targets is required; a UI target names an engine and declares the app beside it: { engine: web(), app: { url, command } }. A tools-only target can omit the engine and set platform.
  • Import test, describe, the hooks, expect, credentials, and secrets from e2e. A test that uses the browser fixture imports test, describe, and the hooks from @e2e-dev/web: the same runtime functions, typed with browser.
  • Config and tests are ES modules whatever package.json sets as type.
  • Locators resolve when used. Actions wait for readiness and expect retries assertions. Reads such as textContent() fail at once on zero matches and count() answers from the current screen; nothing waits for a value to change, so use a matcher when a value has to settle.
  • A locator that matches two nodes fails with LOCATOR_AMBIGUOUS; narrow it (topic writing-tests).
  • Secrets never appear in test code. Declare accounts under credentials and every other sensitive value under secrets in the config; resolve with credentials.user(name).password or secrets.get(name) (separate namespaces: secrets.get never returns a password), and hand the opaque Secret only to fill() or agent.act params.
  • Agent instructions: one goal per act, the wording on screen, real values in params. Judge meaning, not phrasing: toContain('Pro'), not an exact sentence a model produced.
  • Check each agent goal's outcome. A passing act with a recorded check can be cached and replayed without model calls (topic agent).
  • Shape the agent for this app: context for vocabulary the screens use, system for how it works, tools for a test API, named personas under agents. When a step fails, tighten the goal first, then the context, then the agent.
  • .e2e/ is output (report.json, artifacts/, cache/, logs/; the config's output moves the report and artifacts, never cache/ or the app's log). Read it, never edit it.

Feedback

When e2e itself gets in your way, tell the e2e team: a command or API that broke (bug), docs or this skill that misled you (docs), or a capability you needed and did not find (feature). Send it once per problem, after you worked around it or gave up, never for failures of the app under test.

npx e2e feedback --type bug -m "<one or two sentences>" \
  --task "<what you were doing>" --expected "<...>" --actual "<error code and message>" \
  --approach "<what you tried>" --command "<e2e command>" --agent "<agent / model>"

Describe e2e's behavior only: never paste app content, page text, test files, URLs of private apps, or credentials. Secret-named environment variables and common token shapes are redacted, but do not rely on it. --dry-run prints what would be sent. Tell the user you sent it and give them the reference id it prints.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Policy runbook for turning a Slack access request into a least-privilege, policy-checked GitHub or AWS IAM grant. Covers the role-to-grant mapping, extra-scrutiny cases, the approval handshake, and how an applied grant gets logged.

日本語の概要は準備中です。原文の説明を表示しています。

kortix-ai/suna2万2026年10月11日 更新

Get a complete picture of any company or person before outreach. This skill always works with web search, and gets significantly better with enrichment and CRM data.

日本語の概要は準備中です。原文の説明を表示しています。

kortix-ai/suna2万2026年10月11日 更新

Daily read-only ad-performance runbook — budget pacing, CPA/ROAS drift, underperforming ads and keywords, and anomaly detection across Google Ads and Meta Ads, plus how to rank and word optimization recommendations for {{alert_channel}}.

日本語の概要は準備中です。原文の説明を表示しています。

kortix-ai/suna2万2026年10月11日 更新

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.

日本語の概要は準備中です。原文の説明を表示しています。

kortix-ai/suna2万2026年10月11日 更新

Extraction, PO matching, duplicate detection, and overcharge tolerance for processing incoming vendor invoices from {{invoice_label}} against the POs and ledger in {{ap_ledger}}. Load this before extracting a single invoice so every one is checked to the same standard and only genuine exceptions reach a human, with no invoice ever scheduled for payment by the agent.

日本語の概要は準備中です。原文の説明を表示しています。

kortix-ai/suna2万2026年10月11日 更新

Daily brand-mention monitoring loop for {{brand_terms}}. Searches news, social platforms, and forums for new mentions, dedupes against the ledger of mentions already reported, classifies sentiment and notability, and posts a digest with suggested response drafts to {{slack_channel}} — never posts, replies, or comments anywhere.

日本語の概要は準備中です。原文の説明を表示しています。

kortix-ai/suna2万2026年10月11日 更新

kortix-ai のスキルをすべて見る

このスキルの問題を報告する