Token导航 LogoToken导航

Agent Skill · 前端设计

testing(测试)

用于辅助测试设计、自动化测试、用例整理和回归验证。它适合让 Agent 编写单元测试、端到端测试、测试计划或根据失败日志定位问题。使用时需要确认项目测试框架、运行命令和夹具数据,避免为了通过测试而改坏真实逻辑;涉及浏览器或外部服务时,应区分本地模拟、测试环境和生产环境。

testing 是前端设计类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为操作浏览器;许可证信息还不明确,第三方扫描已通过,按安装量在前端设计类的 10,216 个 Skill 里排第 9,472。

总安装 214周安装 9GitHub Stars 3下载 75核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:testing(测试)
来源仓库:https://github.com/iuliandita/skills
仓库路径:skills/testing
安装命令:
npx skills add https://github.com/iuliandita/skills --skill testing
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/iuliandita/skills --skill testing

这个 Skill 是做什么的

前端设计类 Skill 关注页面结构、视觉规范和组件写法,输出通常是可运行的界面代码。

testing 用于辅助测试设计、用例整理和回归验证。适合让 Agent 编写单元测试、端到端测试或根据日志定位问题。使用时需确认项目测试框架、运行命令和夹具数据,避免改坏真实逻辑。涉及浏览器或外部服务时,应区分本地模拟、测试环境与生产环境。建议结合原始 README 核验具体用法,并关注维护状态与联网行为。

来源仓库内路径:skills/testing

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/iuliandita/skills --skill testing;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要操作浏览器,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

testing 怎么安装?

在终端执行 npx skills add https://github.com/iuliandita/skills --skill testing。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

testing 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

testing 需要什么权限?

权限级别是操作浏览器。该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

testing 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

testing 用的人多吗?

公开数据是累计安装 214 次,近一周安装 9 次,下载 75 次,GitHub 3 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

testing 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理前端设计类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

前端设计类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
frontend-design

前端设计 · Codex、Claude

8,823,360126,072只读MIT通过
vercel-composition-patterns

Vercel 组合模式 · Codex、Claude

3,858,81625,893需要联网MIT通过
vercel-react-native-skills

Vercel React native skills 前端 · Codex、Claude

2,468,66425,878只读MIT通过
adapt

adapt 搜索 · Codex、Claude

2,027,04023,125操作浏览器未明确通过
bolder

bolder 分析 · Codex、Claude

2,004,28823,130只读未明确通过
testing

测试 · 本页

2143操作浏览器未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Testing: Write Tests That Catch Real Bugs

Write, structure, and maintain tests across unit, integration, E2E, accessibility, and performance layers. The goal is tests that catch regressions, document behavior, and run fast in CI - not tests that exist to inflate coverage numbers.

Target versions (April 2026):

  • Vitest 4.1.2, Jest 30.3.0
  • Playwright 1.59.0, Cypress 15.13.0
  • pytest 9.0.2, pytest-cov 7.1.0
  • Go 1.26.1 (testing stdlib, testing/synctest GA)
  • Rust 1.94.1 (cargo test, cargo-nextest 0.9.132)
  • Testing Library 16.3.2 (@testing-library/react)
  • axe-core 4.11.2 (@axe-core/playwright)
  • Grafana k6 1.7.1 (load testing)

When to use

  • Writing new tests (unit, integration, E2E, accessibility, performance)
  • Debugging flaky or failing tests
  • Designing test architecture for a project (fixture strategies, factory patterns, test data)
  • Setting up test infrastructure in CI (parallelization, sharding, coverage gates)
  • Choosing testing tools or migrating between test frameworks
  • Implementing TDD workflow
  • Adding accessibility or visual regression tests to an existing suite

When NOT to use

  • Reviewing existing test quality or correctness as part of a code review - use code-review
  • Security-specific testing (penetration testing, OWASP checks) - use security-audit
  • Cleaning up verbose/sloppy test code - use anti-slop
  • Ad-hoc web browsing, scraping, or page interaction outside of tests - use browse
  • CI/CD pipeline architecture (test jobs run inside pipelines, but pipeline design is ci-cd's domain) - use ci-cd
  • Database testing patterns at the engine level - use databases
  • Writing or refining LLM prompts (use prompt-generator)
  • Infrastructure or configuration validation outside tests (use terraform, ansible, or kubernetes)

AI Self-Check

AI tools consistently produce the same testing mistakes. Before returning any generated test code, verify against this list:

  • Tests assert behavior, not implementation - no testing private methods or internal state
  • Each test has exactly one reason to fail (single assertion concept, not single assert call)
  • Test names describe the scenario and expected outcome, not the method name
  • Mocks/stubs are scoped to the test - no shared mutable mock state across tests
  • No hardcoded ports, paths, or timestamps that break on other machines or in CI
  • Async tests properly await all promises/futures - no fire-and-forget assertions
  • Test data is isolated - each test creates its own state, no dependency on test execution order
  • Cleanup happens even when assertions fail (use afterEach/teardown/t.Cleanup/Drop)
  • No sleep() or fixed delays for async waits - use polling, retries, or event-based waits
  • Coverage threshold is realistic (80% line coverage is a good default; 100% is a lie)
  • Snapshot tests have been reviewed manually before committing (blind --update is a bug factory)
  • E2E selectors use data-testid, role, or accessible names - not CSS classes or DOM structure

Workflow

Step 1: Determine scope

Based on context:

  • New feature -> write tests alongside or before the code (TDD when appropriate)
  • Bug fix -> write a failing test first that reproduces the bug, then fix
  • Existing untested code -> prioritize critical paths, not 100% coverage
  • Test infrastructure -> set up runners, CI config, coverage gates

Identify the project's existing test framework from config files (vitest.config.ts, jest.config.*, pyproject.toml, Cargo.toml, *_test.go, playwright.config.ts). Match it. Don't introduce a second test runner without a reason.

Step 2: Choose the test layer

LayerTests whatSpeedWhen to use
UnitSingle function/module in isolationmsPure logic, utilities, data transforms, state machines
IntegrationMultiple modules, real dependenciessecondsAPI handlers, database queries, service boundaries
E2EFull user flows through the UIseconds-minutesCritical paths, checkout flows, auth, onboarding
AccessibilityWCAG compliance, screen reader compatsecondsEvery user-facing component/page
VisualScreenshot comparisonsecondsUI components after style changes
PerformanceLoad, latency, throughputminutesBefore releases, after arch changes

The testing pyramid still holds: many unit tests, fewer integration tests, fewest E2E tests. Invert it and your CI takes 45 minutes and everyone ignores test failures.

Step 3: Write the test

Follow the language-specific patterns below. Universal principles:

Arrange-Act-Assert (or Given-When-Then):

// Arrange: set up test data and dependencies
// Act: call the thing being tested
// Assert: verify the outcome

Test naming: describe the scenario, not the function.

# Bad:  test_calculate_total
# Good: test_calculate_total_applies_discount_when_cart_exceeds_100
# Good: it("returns 401 when token is expired")

Step 4: Validate

  • Run the full test suite: failures in other tests may indicate your change broke something
  • Check coverage delta: new code should be covered, but don't chase vanity numbers
  • Run in CI if possible - tests that pass locally but fail in CI are the worst kind

TDD Workflow

Use TDD when the behavior is well-defined upfront. Skip it when exploring or prototyping.

  1. Red: write a test that fails (confirm it fails for the right reason)
  2. Green: write the minimum code to make the test pass (ugly is fine)
  3. Refactor: clean up without changing behavior (tests still pass)

TDD works best for: pure functions, data transformations, state machines, API contracts, bug reproduction.

TDD works poorly for: UI layout, exploratory prototyping, integration with undocumented APIs.


Mocking Strategy

Mock at boundaries, not everywhere. Over-mocking produces tests that pass while the real code is broken.

What to mockWhat NOT to mock
External APIs (HTTP, gRPC)Your own pure functions
Database (when unit testing)Data transformations
Time/dates, random valuesSimple utility code
File system (when impractical)The module under test
Third-party SDKsStandard library functions

Prefer fakes over mocks when possible. An in-memory database implementation tests more real behavior than a mock that returns canned responses.

Injectable clock for TTL/time-dependent tests - pass a clock dependency rather than calling Date.now() or time.Now() directly:

// Production: clock = () => Date.now()
// Test: clock = () => FIXED_TS + offset
function isExpired(createdAt: number, ttlMs: number, clock = Date.now): boolean {
  return clock() - createdAt > ttlMs;
}
// In test: advance virtual time without sleeping
const fakeNow = vi.fn().mockReturnValue(START);
expect(isExpired(START, 1000, fakeNow)).toBe(false);
fakeNow.mockReturnValue(START + 1001);
expect(isExpired(START, 1000, fakeNow)).toBe(true);

Read references/language-patterns.md for language-specific mocking idioms (Vitest vi.mock, Jest jest.mock, pytest monkeypatch, Go interfaces, Rust trait objects).


Test Data and Fixtures

Factory pattern (preferred)

Build test data with sensible defaults and per-test overrides:

// TypeScript - factory function
function buildUser(overrides: Partial<User> = {}): User {
  return { id: randomUUID(), name: "Test User", email: "test@example.com", ...overrides };
}

// Python - factory function
def build_user(**overrides) -> User:
    defaults = {"id": uuid4(), "name": "Test User", "email": "test@example.com"}
    return User(**(defaults | overrides))

Fixture rules

  • Isolate per test. Shared mutable fixtures cause order-dependent failures.
  • Use builders/factories over raw object literals - defaults prevent test brittleness.
  • Database fixtures: use transactions that roll back after each test (pytest db fixture, Jest beforeEach with rollback). Seeded test databases beat shared staging data.
  • File fixtures: use temp directories (tmp_path in pytest, os.MkdirTemp in Go, tempfile in Rust). Clean up in teardown.

Accessibility Testing

Catch WCAG violations automatically. Not a replacement for manual testing, but catches the mechanical stuff (missing alt text, broken ARIA, contrast ratios, keyboard traps).

Use @axe-core/playwright - run new AxeBuilder({page}).withTags(["wcag2a", "wcag2aa"]).analyze() and assert zero violations. Run axe scans on every page/component. Exclude known issues with .exclude() and track them as tech debt, not permanent exceptions.

Read references/e2e-accessibility.md for Playwright E2E patterns, visual regression setup, and CI accessibility gates.


Performance Testing

Two categories: micro-benchmarks (is this function fast enough?) and load tests (does the system handle traffic?).

Micro-benchmarks

  • Go: func BenchmarkX(b *testing.B) - built into the stdlib
  • Rust: cargo bench with criterion (criterion = "0.6")
  • JS/TS: vitest bench or tinybench
  • Python: pytest-benchmark or timeit

Load testing (k6)

// k6 load test
import http from "k6/http";
import { check, sleep } from "k6";

export const options = {
  stages: [
    { duration: "30s", target: 50 },   // ramp up
    { duration: "1m",  target: 50 },   // sustain
    { duration: "10s", target: 0 },    // ramp down
  ],
  thresholds: {
    http_req_duration: ["p(95)<500"],   // 95th percentile under 500ms
  },
};

export default function () {
  const res = http.get("http://localhost:3000/api/health");
  check(res, { "status 200": (r) => r.status === 200 });
  sleep(1);
}

Don't run load tests against production without explicit approval. Don't run them in CI unless you have dedicated infrastructure for it.


CI Integration

Test parallelization

  • Vitest/Jest: built-in worker parallelism. Vitest uses Vite's module graph for smart test file distribution.
  • Playwright: --shard=1/4 for splitting across CI runners. --workers=4 for parallel within a runner.
  • pytest: pytest-xdist with -n auto for CPU-based parallelism.
  • Go: go test -parallel N per package, -p N for package-level parallelism.
  • Rust: cargo nextest run for per-test process isolation and parallelism.

Flaky test management

Flaky tests erode trust. Fix or quarantine immediately.

  1. Identify: track test stability over time (most CI systems have flaky test dashboards)
  2. Quarantine: move to a separate job that doesn't block merges. Tag with @flaky or skip.
  3. Fix root causes - common culprits by framework:

- Playwright/Cypress: race conditions on navigation or animation. Use waitForLoadState, waitForSelector, or Playwright's auto-waiting. Avoid page.waitForTimeout. Stub network requests to eliminate backend variability. Headless mode (CI) has different rendering timing than headed - animations may be skipped or font metrics differ; use --headed locally to reproduce CI-only failures. - Vitest/Jest: shared module state between test files. Use --pool forks (Vitest) or --runInBand to isolate. Check for leaked timers (vi.useFakeTimers not restored). - pytest: database state leaking between tests. Use @pytest.mark.usefixtures("db") with transactional rollback. Check for global state mutation in fixtures. - Go: t.Parallel() tests sharing package-level state. Use t.Cleanup for teardown. Check for goroutine leaks with goleak.

  1. Retry with caution: --retries 2 (Playwright) or --reruns 2 (pytest-rerunfailures) is a bandaid, not a fix

Coverage thresholds

Set coverage gates in CI. Reasonable defaults:

MetricThresholdWhy
Line coverage80%Catches obvious gaps
Branch coverage70%Catches untested conditions
New code coverage90%Prevents coverage erosion

Enforce via vitest --coverage --coverage.thresholds.lines=80, pytest --cov --cov-fail-under=80, or go test -coverprofile + threshold script.

Minimal CI example (pytest + GitHub Actions):

- run: pip install pytest pytest-xdist pytest-cov
- run: pytest -n auto --cov=src --cov-fail-under=80 --tb=short

Reference Files

  • references/language-patterns.md - language-specific test patterns for JS/TS (Vitest, Jest), Python (pytest), Go (testing stdlib), and Rust (cargo test). Covers mocking, table-driven tests, async testing, snapshot testing, and framework-specific idioms.
  • references/e2e-accessibility.md - E2E testing with Playwright, visual regression (screenshot comparison, component snapshots), accessibility testing patterns, and CI integration for browser tests.

Related Skills

  • code-review - reviews test quality and correctness as part of code reviews. This skill writes the tests; code-review evaluates whether they actually test the right things.
  • security-audit - handles security-specific testing (OWASP, penetration testing, credential scanning). This skill handles functional testing.
  • anti-slop - cleans up verbose, over-abstracted, or AI-generated test code. If the test works but reads like a novel, route to anti-slop.
  • ci-cd - designs the pipeline that runs tests. This skill writes the tests and configures test runners; ci-cd handles the pipeline structure around them.
  • databases - covers database engine testing and configuration. This skill handles application-level database test patterns (transactions, fixtures, test data).

Rules

  1. Test behavior, not implementation. Tests coupled to internal structure break on every refactor and catch zero bugs. If a test mocks 8 things and asserts a method was called with specific args, it's testing the mock, not the code.
  2. No sleep() in tests. Use waitFor, Eventually, poll, retry loops, or event-based synchronization. Fixed delays are flaky by definition.
  3. Isolate test state. Each test creates its own data, runs independently, and cleans up after itself. Shared mutable state between tests is the #1 cause of order-dependent failures.
  4. Fix or quarantine flaky tests immediately. A test suite people ignore is worse than no test suite. Track flaky tests, fix root causes, don't just retry.
  5. Don't test the framework. Testing that React renders a div, or that Express routes to a handler, is testing someone else's code. Test YOUR logic.
  6. Run the AI self-check. Every generated test gets verified against the checklist before returning. AI-generated tests love to test implementation details, use sleep(), and share state.
  7. Match the existing framework. Don't introduce Vitest into a Jest project or pytest into a unittest project without the user explicitly asking for a migration.
  8. Snapshot tests require manual review. Never auto-update snapshots (-u / --update) without reviewing the diff. Blind snapshot updates are equivalent to deleting the test.

平台分布

Codex

39.11%
按下载量换算29

Claude

27.18%
按下载量换算20

Cursor

18.09%
按下载量换算14

Gemini CLI

9.57%
按下载量换算7

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills