Skip to content
Back to skills

[SPEC-E2E-001] Feature: /e2e 斜線命令 — 從 BDD 場景生成 E2E 測試骨架

ASecurity

- **Status**: Archived - **Approved**: 2026-04-02 - **Implemented**: 2026-04-02 - **Archived**: 2026-04-02 - **Commits**: fe69335, 5e9918b - **Created**: 2026-04-02 - **Priority**: Medium - **Scope**: partial (概念 universal,Skill 實作為 UDS 工具) - **Depends-on**: `/derive e2e`(骨架生成引擎) - **Issue**: #66

  • 75 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 4, 2026
developmentbashdockerapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 9 files and shows the line behind each finding

Scanned September 4, 2026

npx -y skills add AsiaOstrich/universal-dev-standards --skill skills --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of [SPEC-E2E-001] Feature: /e2e 斜線命令 — 從 BDD 場景生成 E2E 測試骨架?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for [SPEC-E2E-001] Feature: /e2e 斜線命令 — 從 BDD 場景生成 E2E 測試骨架
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/asiaostrich-spec-e2e-001-feature-e2e-bdd-e2e/badge)](https://www.skillsdirectory.com/skills/asiaostrich-spec-e2e-001-feature-e2e-bdd-e2e)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
# [SPEC-E2E-001] Feature: `/e2e` 斜線命令 — 從 BDD 場景生成 E2E 測試骨架

- **Status**: Archived
- **Approved**: 2026-04-02
- **Implemented**: 2026-04-02
- **Archived**: 2026-04-02
- **Commits**: fe69335, 5e9918b
- **Created**: 2026-04-02
- **Priority**: Medium
- **Scope**: partial (概念 universal,Skill 實作為 UDS 工具)
- **Depends-on**: `/derive e2e`(骨架生成引擎)
- **Issue**: #66

## Overview

新增 `/e2e` 斜線命令,補完 UDS 測試金字塔的 E2E 層引導。此命令從 BDD `.feature` 場景或 SDD 規格出發,偵測專案的 E2E 框架、分析既有測試模式,並生成框架適配的 E2E 測試骨架。

## Motivation

UDS 測試金字塔各層級都有對應指令,唯獨缺少 E2E 層:

| 測試層級 | UDS 指令 | 狀態 |
|---------|---------|:----:|
| 單元測試 | `/tdd` | ✔ |
| BDD 場景 | `/bdd`, `/derive bdd` | ✔ |
| ATDD 表格 | `/atdd`, `/derive atdd` | ✔ |
| **E2E 測試** | **無** | ❌ |

E2E 違反 TDD 的 FIRST 原則(慢、有依賴、需基礎設施),因此不適合整合到 `/tdd`,應作為獨立命令。

### 與 `/derive e2e` 的差異

| 工具 | 職責 | 輸入 | 輸出 |
|------|------|------|------|
| `/derive e2e` | 機械式 1:1 AC→骨架生成 | `SPEC-XXX.md` | `.e2e.test.*` 骨架 |
| `/e2e`(本 spec) | 智慧化 E2E 工程引導 | `.feature` 或 SPEC | 框架適配測試 + 分析報告 |

`/e2e` 在內部可委派 `/derive e2e` 做骨架生成,自身負責框架偵測、模式分析、AC 篩選和測試數據引導。

## Requirements

### REQ-1: AC 適用性分析

系統 SHALL 分析 BDD 場景或 SDD 規格中的 AC,判斷哪些適合 E2E 測試。

#### Scenario: 篩選適合 E2E 的 AC

- **GIVEN** 一個 `.feature` 檔案包含 10 個 Scenario
- **WHEN** 執行 `/e2e --analyze <feature-file>`
- **THEN** 系統依照篩選規則將每個 Scenario 分類為 `e2e-suitable`、`unit-suitable` 或 `integration-suitable`,並輸出分類結果

#### Scenario: 排除純邏輯型 AC

- **GIVEN** 一個 Scenario 描述純計算邏輯(如排序演算法、數學公式)
- **WHEN** 系統進行 E2E 適用性分析
- **THEN** 該 Scenario 被標記為 `unit-suitable` 並附帶原因說明

#### Scenario: 識別使用者流程型 AC

- **GIVEN** 一個 Scenario 描述跨多步驟的使用者操作流程(如「使用者登入 → 建立訂單 → 付款」)
- **WHEN** 系統進行 E2E 適用性分析
- **THEN** 該 Scenario 被標記為 `e2e-suitable`

#### Scenario: 空 feature 檔案

- **GIVEN** 一個 `.feature` 檔案不包含任何 Scenario
- **WHEN** 執行 `/e2e --analyze <feature-file>`
- **THEN** 系統輸出提示「此 feature 檔案不包含可分析的 Scenario」,不產生分類結果

#### Scenario: feature 檔案不存在

- **GIVEN** 指定的 `.feature` 檔案路徑不存在
- **WHEN** 執行 `/e2e <non-existent-file>`
- **THEN** 系統輸出錯誤訊息「找不到檔案:<path>」並列出 `tests/features/` 下可用的 feature 檔案

### REQ-2: E2E 框架偵測

系統 SHALL 自動偵測專案使用的 E2E 測試框架。

#### Scenario: 偵測 Playwright

- **GIVEN** 專案的 `package.json` 包含 `@playwright/test` 依賴
- **WHEN** 執行 `/e2e` 命令
- **THEN** 系統偵測到 Playwright 並使用 Playwright 模板生成測試

#### Scenario: 偵測 Cypress

- **GIVEN** 專案的 `package.json` 包含 `cypress` 依賴且存在 `cypress.config.*`
- **WHEN** 執行 `/e2e` 命令
- **THEN** 系統偵測到 Cypress 並使用 Cypress 模板生成測試

#### Scenario: 偵測 Vitest(CLI E2E 模式)

- **GIVEN** 專案使用 Vitest 且有 `tests/e2e/` 目錄
- **WHEN** 執行 `/e2e` 命令
- **THEN** 系統偵測到 Vitest E2E 模式並使用 Vitest 模板生成測試

#### Scenario: 無法偵測框架

- **GIVEN** 專案沒有已知的 E2E 測試框架
- **WHEN** 執行 `/e2e` 命令
- **THEN** 系統提示使用者選擇框架,列出支援的選項(Playwright、Cypress、Vitest)

#### Scenario: 多框架並存

- **GIVEN** 專案的 `package.json` 同時包含 `@playwright/test` 和 `cypress` 依賴
- **WHEN** 執行 `/e2e` 命令
- **THEN** 系統列出偵測到的所有框架,提示使用者選擇要使用哪一個

### REQ-3: 既有模式分析

系統 SHALL 分析專案中既有的 E2E 測試,學習其編碼模式。

#### Scenario: 學習既有測試模式

- **GIVEN** 專案有 3 個以上既有的 E2E 測試檔案,使用 `import { runNonInteractive } from '../utils/cli-runner.js'` 風格
- **WHEN** 執行 `/e2e` 命令
- **THEN** 系統生成的測試使用相同的 import 來源和 helper 函式,且輸出模式摘要供使用者確認

#### Scenario: 無既有測試

- **GIVEN** 專案的 E2E 測試目錄為空
- **WHEN** 執行 `/e2e` 命令
- **THEN** 系統使用框架的預設最佳實踐模板生成測試

### REQ-4: E2E 測試骨架生成

系統 SHALL 生成框架適配的 E2E 測試骨架。

#### Scenario: 從 feature 檔案生成 E2E 骨架

- **GIVEN** 一個 `.feature` 檔案且已完成 AC 篩選和框架偵測
- **WHEN** 執行 `/e2e <feature-file>`
- **THEN** 系統生成對應的 E2E 測試檔案,其中:
  - 每個 `e2e-suitable` 的 Scenario 對應一個 test case
  - test case 包含 `[TODO]` 標記指示需手動實作的部分
  - 追蹤標籤引用原始 Scenario(`@SPEC-XXX @AC-N`)

#### Scenario: 從 SDD 規格生成 E2E 骨架

- **GIVEN** 一個 `SPEC-XXX.md` 規格檔案
- **WHEN** 執行 `/e2e <spec-file>`
- **THEN** 系統委派 `/derive e2e` 生成基礎骨架,再套用框架模板和既有模式進行後處理

#### Scenario: 生成包含 fixture 引導

- **GIVEN** E2E 測試需要測試數據(如 DB seed、API mock)
- **WHEN** 系統生成測試骨架
- **THEN** 測試檔案包含 `beforeAll`/`beforeEach` 區塊,附帶 `[TODO]` 標記提示需要準備的 fixture

### REQ-5: 覆蓋差距分析

系統 SHALL 提供分析模式,報告 BDD 場景與 E2E 測試之間的覆蓋差距。

#### Scenario: 掃描覆蓋差距

- **GIVEN** 專案有 34 個 `.feature` 檔案和 6 個 `.e2e.test.*` 檔案
- **WHEN** 執行 `/e2e --analyze`
- **THEN** 系統輸出覆蓋報告,包含:
  - 有 E2E 覆蓋的 feature 數量
  - 缺少 E2E 覆蓋的 feature 清單
  - 建議的優先順序(依風險/複雜度)

#### Scenario: 與 ac-coverage-assistant 整合

- **GIVEN** 執行 `/e2e --analyze` 產生覆蓋報告
- **WHEN** 使用者希望更詳細的 AC 層級追蹤
- **THEN** 系統建議執行 `/ac-coverage-assistant` 並傳遞分析結果

## Acceptance Criteria

- **AC-1**: `/e2e --analyze <feature-file>` 正確分類 AC 為 e2e-suitable / unit-suitable / integration-suitable(REQ-1)
- **AC-2**: 純邏輯型 AC 被排除在 E2E 之外(REQ-1)
- **AC-3**: 使用者流程型 AC 被識別為 e2e-suitable(REQ-1)
- **AC-4**: 空 feature 檔案輸出提示訊息,不產生分類結果(REQ-1)
- **AC-5**: 不存在的 feature 路徑輸出錯誤並列出可用檔案(REQ-1)
- **AC-6**: 自動偵測 Playwright 框架(REQ-2)
- **AC-7**: 自動偵測 Cypress 框架(REQ-2)
- **AC-8**: 自動偵測 Vitest E2E 模式(REQ-2)
- **AC-9**: 無框架時提示使用者選擇(REQ-2)
- **AC-10**: 多框架並存時提示使用者選擇(REQ-2)
- **AC-11**: 分析既有 E2E 測試的編碼模式並輸出模式摘要(REQ-3)
- **AC-12**: 無既有測試時使用預設模板(REQ-3)
- **AC-13**: 從 `.feature` 生成框架適配的 E2E 骨架(REQ-4)
- **AC-14**: 從 `SPEC-XXX.md` 生成時委派 `/derive e2e`(REQ-4)
- **AC-15**: 生成的骨架包含 fixture/seed 引導(REQ-4)
- **AC-16**: `/e2e --analyze` 輸出覆蓋差距報告(REQ-5)
- **AC-17**: 建議與 `/ac-coverage-assistant` 整合(REQ-5)

## Technical Design

### 架構

```
/e2e (Skill)
  ├─ 模式 1: 生成模式 (預設)
  │   ├─ analyzeAcSuitability()    ← REQ-1
  │   ├─ detectFramework()         ← REQ-2
  │   ├─ analyzeExistingPatterns() ← REQ-3
  │   ├─ generateSkeleton()        ← REQ-4 (可委派 /derive e2e)
  │   └─ applyFrameworkTemplate()  ← REQ-4
  │
  ├─ 模式 2: 分析模式 (--analyze)
  │   ├─ scanFeatureFiles()        ← REQ-5
  │   ├─ scanE2eTests()            ← REQ-5
  │   └─ generateCoverageReport()  ← REQ-5
  │
  └─ 整合
      ├─ /ac-coverage-assistant (覆蓋率追蹤)
      └─ /derive e2e (骨架生成引擎)
```

### Skill 檔案結構

```
skills/e2e-assistant/
├── SKILL.md           # Skill 定義(frontmatter + 工作流程)
├── guide.md           # 詳細使用指南
└── templates/         # 框架模板
    ├── playwright.md   # Playwright 骨架模板
    ├── cypress.md      # Cypress 骨架模板
    └── vitest.md       # Vitest 骨架模板
```

### CLI 命令

```bash
/e2e <feature-file>           # 從 BDD 場景生成 E2E 骨架(預設模式)
/e2e <spec-file>              # 從 SDD 規格生成 E2E 骨架
/e2e --analyze                # 掃描所有 feature 的 E2E 覆蓋差距
/e2e --analyze <feature-file> # 分析特定 feature 的 AC 適用性
```

### AC 篩選規則

| 分類 | 條件 | 範例 |
|------|------|------|
| `e2e-suitable` | 跨多元件/多步驟的使用者流程 | 登入→操作→驗證 |
| `e2e-suitable` | 涉及 UI 互動 | 表單提交、頁面導航 |
| `e2e-suitable` | 涉及 CLI 完整流程 | `uds init` → 驗證輸出檔案 |
| `integration-suitable` | 跨兩個元件但無 UI | API 呼叫 → DB 寫入 |
| `unit-suitable` | 純邏輯/計算 | 排序、驗證、格式化 |

## Test Plan

- [ ] 單元測試:AC 分類邏輯(`analyzeAcSuitability` 各分類路徑)
- [ ] 單元測試:框架偵測邏輯(Playwright/Cypress/Vitest/無框架)
- [ ] 單元測試:模式分析(有/無既有測試)
- [ ] 整合測試:從 `.feature` 到 E2E 骨架的完整流程
- [ ] 整合測試:從 `SPEC-XXX.md` 委派 `/derive e2e` 的流程
- [ ] 整合測試:`--analyze` 覆蓋差距報告
- [ ] E2E 測試:CLI 命令 `/e2e` 端到端流程

## Out of Scope

- 自動生成 `docker-compose.test.yml`(可作為 v2 考慮)
- E2E 測試的自動執行(使用者手動執行)
- 瀏覽器驅動程式安裝引導
- 反向追蹤(從 E2E 反推缺少的 BDD 場景,可作為 v2 考慮)

Files in this skill

  • SPEC-AC-COVERAGE.md3.9 KB
  • SPEC-DEV-WORKFLOW-UPDATE.md4.1 KB
  • SPEC-DOCS-01-doc-lifecycle.md8.3 KB
  • SPEC-E2E-001-atdd-traceability.md2.8 KB
  • SPEC-E2E-001-e2e-skill.md10.1 KB
  • SPEC-NEW-SKILLS-BATCH-01.md6 KB
  • SPEC-SDD-ALIGN-openspec-speckit.md7.8 KB
  • vibe-coding-skill.md5.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…