Skip to content
Agentmart
Submit a tool

e2e-testing

Applies only to work in the quantum-box/tachyon-apps repository.

Skill by quantum-box

IndexedMIT
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/quantum-box-e2e-testing

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Applies only to work in the quantum-box/tachyon-apps repository. Create, update, or run Playwright E2E tests when E2E work is requested or needed as part of a user-flow change. Use browser-test for ad hoc browser evidence.

Use cases: testing, marketing

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/e2e-testing

What's inside

Skill name
e2e-testing
Description
Applies only to work in the quantum-box/tachyon-apps repository. Create, update, or run Playwright E2E tests when E2E work is requested or needed as part of a user-flow change. Use browser-test for ad hoc browser evidence.
License
MIT
Instructions
160 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# E2E Testing Skill

## 開発フロー

1. **Playwright MCP で動作確認** — テストコードを書く前に `browser-test` スキルで実際のブラウザ操作を確認する
2. **操作手順をテストコードに変換** — MCP で確認したセレクタ・操作手順を `*.spec.ts` に記述する
3. **ローカルで全テスト通過を確認** — `mise run e2e` で実行する
4. **CI で通過を確認** — push 後に `tachyon_ci.yaml` の e2e ジョブで検証される

## ディレクトリ構成

```
apps/tachyon/
├── playwright.config.ts          # Playwright 設定
└── src/e2e-tests/
    ├── .auth/user.json           # 認証セッション(自動生成、gitignored)
    ├── auth.setup.ts             # NextAuth ログインセットアップ
    ├── smoke.spec.ts             # スモークテスト(ページ表示確認)
    ├── iam-users.spec.ts         # IAM ユーザー管理
    ├── feature-flags.spec.ts     # フィーチャーフラグ
    ├── agent-chat.spec.ts        # エージェントチャット
    └── settings.spec.ts          # 設定ページ
```

## テスト実行コマンド

前提: `mise run up-tachyon` でバックエンド(DB + API + フロントエンド)が起動済みであること。

```bash
# Playwright ブラウザインストール(初回のみ)
npx playwright install --with-deps chromium

# 全テスト実行
mise run e2e

# スモークテストのみ
mise run e2e-smoke

# ブラウザ表示ありで実行(デバッグ用)
mise run e2e-headed

# 特定ファイルのみ
mise run e2e -- src/e2e-tests/iam-users.spec.ts

# Playwright UI モード(インタラクティブデバッグ)
NO_WEB_SERVER=1 pnpm --dir apps/tachyon run e2e:ui
```

### 環境変数

| 変数 | デフォルト | 説明 |
|------|-----------|------|
| `TACHYON_HOST_PORT` | 16000 | フロントエンドのポート(worktree1 は 16100) |
| `NO_WEB_SERVER` | - | `1` で webServer 起動をスキップ(Docker 起動済み時) |
| `CI` | - | CI 環境フラグ(リトライ 2 回、ワーカー 1) |

## テスト作成パターン

### 基本テンプレート

```typescript
import { expect, test } from '@playwright/test'

const TENANT_ID = process.env.TACHYON_TEST_TENANT_ID
if (!TENANT_ID) throw new Error('Set TACHYON_TEST_TENANT_ID from the local dev seed')
const BASE_PATH = `/v1beta/${TENANT_ID}`

test.describe('Feature Name', () => {
  test.beforeEach(async ({ page }) => {
    await page.goto(`${BASE_PATH}/your-page`)
    await expect(page.getByText('Page Title')).toBeVisible()
  })

  test('should display main content', async ({ page }) => {
    await expect(page.getByRole('heading', { name: 'Title' })).toBeVisible()
  })

  test('should handle mobile viewport', async ({ page, isMobile }) => {
    if (isMobile) {
      // Mobile-specific assertions
    } else {
      // Desktop-specific assertions
    }
  })
})
```

### セレクタの優先順位

1. **`getByRole`** — `getByRole('button', { name: 'Submit' })` — 最優先。アクセシビリティに基づく
2. **`getByText`** — `getByText('ユーザー管理')` — UIが日本語の場合は日本語テキストで指定
3. **`getByPlaceholder`** — `getByPlaceholder('Filter emails...')` — 入力フィールド用
4. **`getByLabel`** — `getByLabel('breadcrumb')` — aria-label で絞り込み
5. **`getByTestId`** — `getByTestId('user-table')` — 上記で一意に特定できない場合のフォールバック

CSS セレクタや XPath は使わない。

### 待機の書き方

```typescript
// Good: アサーションベースの待機
await expect(page.getByText('Loaded')).toBeVisible()
await expect(page.getByText('Loaded')).toBeVisible({ timeout: 15000 })

// Bad: 固定待機
await page.waitForTimeout(3000)  // 使わない
```

`waitForTimeout` は `fill` 後のデバウンス待ち(300ms 程度)にのみ限定的に使用可。

## 認証セットアップ

`auth.setup.ts` が NextAuth の Credentials ログインを実行し、セッションを `.auth/user.json` に保存する。
chromium / Mobile Chrome プロジェクトは `storageState` でこのセッションを共有するため、各テストでログイン操作は不要。

**認証フロー:**
1. `/api/auth/csrf` で CSRF トークン取得
2. `/sign_in` でログインフォーム表示
3. Username: `test`, Password: `${TACHYON_TEST_PASSWORD}` をignored local configから読み込んで入力

From quantum-box/tachyon-skills, MIT.

More from quantum-box/tachyon-skills

Signals

Stars
0
Forks
0
Open issues
0
Last commit (this folder)
Sep 29, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from quantum-box

Cite this page

e2e-testing skill. Agent Mart. https://agentmart.dev/skills/quantum-box-e2e-testing (last updated 2026-10-24)