Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
alibaba avatar

Test Driven Dev

  • 1 installs
  • 87 repo stars
  • Updated July 22, 2026
  • alibaba/opc-starter

test-driven-dev is a Claude Code skill that manages test-driven development for the OPC-Starter project across unit, Playwright E2E, and demo-mode tests.

About

This skill defines the test-driven-development conventions for the OPC-Starter project. It covers running unit tests, Playwright E2E tests, and demo-mode tests with typewriter effects, plus maintaining a TEST_PLAN document. A developer uses it when adding a feature to write priority-tagged test cases and keep authentication, registration, and demo suites current.

  • Test-driven-development workflow for the OPC-Starter project
  • Runs unit, Playwright E2E, and demo-mode tests
  • Provides a priority-tagged test checklist for new pages and forms

Test Driven Dev by the numbers

  • 1 all-time installs (skills.sh)
  • Ranked #1,750 of 2,153 Testing & QA skills by installs in the Skillselion catalog
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
At a glance

test-driven-dev capabilities & compatibility

Capabilities
e2e testing · unit testing · test planning · demo recording
Works with
playwright
Use cases
testing
From the docs

What test-driven-dev says it does

login.spec.ts # 登录测试 (14 个)
SKILL.md
**新功能 → 先写测试** 或功能完成后立即补充
SKILL.md
npx skills add https://github.com/alibaba/opc-starter --skill test-driven-dev

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs1
repo stars87
Last updatedJuly 22, 2026
Repositoryalibaba/opc-starter

What it does

Write and run unit, Playwright E2E, and demo-mode tests for the OPC-Starter project.

Who is it for?

Writing and organizing Playwright E2E and demo tests when adding features to OPC-Starter

Skip if: Projects other than OPC-Starter, since paths and npm scripts are project-specific

When should I use this skill?

You are adding a feature and need to write or run tests for OPC-Starter

What you get

Priority-tagged unit and E2E tests plus updated demo cases and TEST_PLAN.md for the new feature.

  • Priority-tagged test cases
  • Updated demo-mode tests
  • Updated TEST_PLAN.md

By the numbers

  • Existing suites: login 14 tests, register 17 tests, demo-auth 5 tests
  • 4 priority tiers P0-P3 for grouping tests

Files

SKILL.mdMarkdownGitHub ↗

OPC-Starter 测试驱动开发规范

快速命令

# 单元测试
cd app && npm run test

# E2E 全量
cd app && npm run test:e2e

# 认证专项(有浏览器窗口)
cd app && npm run test:e2e:auth

# 演示模式(打字机效果)
cd app && npm run test:e2e:demo

# UI 调试模式
cd app && npm run test:e2e:ui

# 查看报告
cd app && npm run test:e2e:report

---

核心原则

1. 新功能 → 先写测试 或功能完成后立即补充 2. 演示测试独立维护tests/e2e/demo/ 目录,带打字机效果 3. 可重复执行 → 注册测试用 Date.now() 生成唯一邮箱,beforeEach 清理状态 4. 测试状态更新 → 完成用例后更新 tests/TEST_PLAN.md

---

目录结构

app/tests/
├── e2e/
│   ├── auth/
│   │   ├── login.spec.ts       # 登录测试 (14 个)
│   │   └── register.spec.ts    # 注册测试 (17 个)
│   ├── demo/
│   │   └── demo-auth.spec.ts   # 演示测试 (5 个)
│   ├── dashboard.spec.ts       # fixme
│   ├── profile.spec.ts         # fixme
│   ├── persons.spec.ts         # fixme
│   └── settings.spec.ts        # fixme
└── support/
    ├── fixtures/auth.fixture.ts
    └── helpers/
        ├── test-helpers.ts
        └── demo-helpers.ts     # 打字机/高亮效果

---

新增功能测试 Checklist

新增页面

test('[P1] 应该能够访问页面', ...)        // 必须
test('[P1] 应该显示主要内容', ...)        // 必须
test('[P1] 核心交互测试', ...)            // 建议
test('[P2] 导航到其他页面', ...)          // 建议

新增表单

test('[P0] 成功提交', ...)                // 必须
test('[P1] 空字段被阻止', ...)            // 必须
test('[P1] 无效格式被阻止', ...)          // 必须
test('[P1] 显示错误提示', ...)            // 建议
// 同步在 demo/ 目录添加演示用例

新增演示用例模板

import { test, expect } from '@playwright/test';
import { fillFormWithEffect, clickWithEffect, highlightElement } from '../../support/helpers/demo-helpers';

test.use({ launchOptions: { slowMo: 50 }, video: 'on' });

test.describe('🎬 演示模式 - [功能名]', () => {
  test.beforeEach(async ({ page }) => {
    await page.context().clearCookies();
    await page.evaluate(() => { try { localStorage.clear(); } catch {} });
  });

  test('🎬 演示:[场景名]', async ({ page }) => {
    await page.goto('/path');
    await page.waitForLoadState('networkidle');
    
    await fillFormWithEffect(page, [
      { selector: '#field1', value: '值1' },
      { selector: '#field2', value: '值2' },
    ]);
    
    await highlightElement(page, 'button[type="submit"]', 500);
    await clickWithEffect(page, 'button[type="submit"]', { pause: 1000 });
  });
});

---

演示辅助函数速查

函数用途关键参数
typeWithEffect(page, selector, text)打字机效果输入delay: 40
highlightElement(page, selector, duration)红色边框高亮duration: 500
clickWithEffect(page, selector)高亮后点击pause: 300
fillFormWithEffect(page, fields[])表单批量填充fields 数组

演示速度配置在 tests/support/helpers/demo-helpers.tsDEMO_CONFIG

---

测试用例文件结构

// 1. 引入
import { test, expect } from '@playwright/test';

// 2. 测试数据
const TEST_USER = { email: 'test@example.com', password: '888888' };

// 3. 辅助函数
async function clearAuthState(page) { ... }

// 4. 测试套件 - 按优先级分组
test.describe('[P0] 核心流程', () => { ... });
test.describe('[P1] 验证逻辑', () => { ... });
test.describe('[P2] 用户体验', () => { ... });
test.describe('[P3] 边界情况', () => { ... });

---

运行器配置

Playwright 配置:app/playwright.config.ts 演示速度参数:tests/support/helpers/demo-helpers.ts 测试规划文档:tests/TEST_PLAN.md

详细说明见 references/testing-patterns.md

Related skills

Testing & QAtestingfrontend

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.