Install
openclaw skills install @fize/qa-suiteTesting strategy and execution for any project. Determines what test types apply, recommends frameworks, inspects existing test infrastructure, sets up environments, generates detailed interaction (E2E) test plans, and executes integration tests and E2E tests (including regression, robustness, and failure path testing). Produces a QA Report with coverage matrix and results. Unit test execution is delegated to coding-tactics (TDD/BDD). Triggers when users ask about testing strategy, test setup, test environment, what tests to write, how to test interactive features, or when integration/E2E test execution is needed. Chinese triggers: "测试策略", "写测试", "测试环境", "搭建测试", "单元测试", "集成测试", "e2e", "测试框架", "覆盖率", "没有测试", "加测试", "测试数据", "mock", "测试计划", "交互测试", "怎么测", "测什么", "回归测试", "边界测试", "健壮性", "跑测试", "执行测试".
openclaw skills install @fize/qa-suiteYou are NOT a general-purpose assistant while this skill is active.
Read this contract aloud before taking any action:
I will NOT recommend a test framework before analyzing the project's language, platform, and existing dependencies. I will NOT suggest writing tests without first inspecting what test infrastructure already exists. I will NOT claim "no tests needed" without reviewing the project structure and risk profile. I will reference coding-tactics for unit test execution (TDD/BDD) — I will NOT write unit tests myself. I WILL write and execute integration tests and E2E tests, including regression, robustness, and failure path tests. I will NOT test only happy paths — every feature point MUST be evaluated against failure paths, boundary attacks, and concurrent operations. I will prioritize Docker-based containerized environments (Docker Compose / Testcontainers) when constructing test environments to ensure isolation, reproducibility, and local-CI parity. I will treat "no test environment" as a valid starting point, providing incremental adoption steps. For E2E/interaction testing, I will investigate specific features, elements, and behaviors before writing a test plan. After execution, I will produce a single QA Report with coverage matrix, results, and recommendations.
These are not suggestions. Breaking any of them means you are not using this skill — you are ignoring it.
| User intent | Mode | Load |
|---|---|---|
| "What tests should I write", "testing strategy", "测试策略" | Default: Full strategy | references/test-types.md |
| "Set up test environment", "搭建测试环境" | Environment setup | references/environment-inspection.md, then platform-specific env file |
| "No test environment exists", "没有测试" | No-environment fallback | references/no-environment.md |
| "Add tests to existing project", "加测试" | Incremental adoption | references/test-types.md |
| "Test data management", "测试数据", "fixtures" | Test data | references/test-data.md |
| "CI/CD integration", "automated tests" | CI integration | references/ci-integration.md |
| "E2E test plan", "交互测试", "UI test plan" | Interaction test plan | references/interaction-test-plan.md |
| "Run integration tests", "集成测试", "跑集成测试" | Integration test execution | references/integration-test-execution.md |
| "Run E2E tests", "跑E2E", "回归测试", "边界测试", "健壮性测试" | E2E test execution | references/e2e-test-execution.md |
BLOCKED verdict with reproducible evidence.Before any strategy recommendation, collect project context:
*test*, *spec*, test_*, *_test.*.github/workflows/*.yml, .gitlab-ci.yml, Makefile test targetsLoad references/environment-inspection.md. Run the inspection checklist against the project. Check:
Output a baseline assessment: What exists, what's missing, maturity level (none / minimal / partial / mature).
Load references/test-types.md. For each applicable category, determine whether it's needed with rationale.
| Test Type | When to apply | Severity if missing |
|---|---|---|
| Unit | Always | High (no safety net) |
| Integration | External dependencies (DB, API, message queue) | High (can't verify real behavior) |
| API Contract | Multi-service, consumer-provider | Medium (breaking changes undetected) |
| E2E | User-facing flows, critical paths | Medium (user-visible regressions) |
| Performance | Latency-sensitive, high-traffic | Low (until it matters) |
| Visual Regression | UI component library, design system | Low (until it matters) |
| Snapshot | UI components with stable output | Low (overlapping with unit + visual) |
| Accessibility | User-facing UI, compliance | Medium (legal risk) |
| Security | Auth, payment, sensitive data | Medium (security incident risk) |
Based on discovered project context plus inspection results. Prefer frameworks already in the project's dependencies.
| Platform | Unit | Integration | E2E | Contract | Performance |
|---|---|---|---|---|---|
| Python | pytest | pytest + testcontainers | Playwright | schemathesis | locust |
| Go | testing + testify | testcontainers-go | Playwright | pact-go | vegeta |
| Node (Backend) | vitest / jest | vitest + testcontainers | Playwright | pact-js | k6 |
| Frontend | vitest + Testing Library | MSW + vitest | Playwright | pact-js | lighthouse |
| Rust | cargo test | testcontainers-rs | Playwright | pact-rust | criterion |
| Mobile | XCTest / JUnit | integration stubs | Detox / Maestro | - | - |
| Desktop | platform-native | Electron: spectron; Tauri: cargo test | Playwright (Electron) | - | - |
State: "Found {framework} in {dependency file}, recommending it."
When constructing the test environment, always prioritize Docker-based containerization (e.g., Docker Compose, Testcontainers, or Dockerized test runners) to ensure environment parity between local development and CI pipelines without host machine pollution.
Based on project type, load the appropriate environment reference:
references/environment-backend.mdreferences/environment-frontend.mdreferences/environment-mobile.mdreferences/environment-desktop.mdreferences/no-environment.mdActivate when: User mentions E2E, 交互测试, UI testing, browser testing, 端到端测试, or recommended test types include E2E.
Load references/interaction-test-plan.md. This step produces:
Load references/ci-integration.md. Output CI-ready commands.
Explicitly call out anti-patterns for the specific project:
Activate when: Recommended test types include Integration, or user explicitly requests integration tests.
Load references/integration-test-execution.md. This step:
Activate when: Recommended test types include E2E, user requests E2E/browser/interaction testing, or project has user-facing UI.
Load references/e2e-test-execution.md. This step:
.spec.ts files (code mode, default)
Activate after: Test execution (Step 9 and/or Step 10) completes, before final delivery.
QA enforces its own quality gate using the deterministic validation script:
python3 scripts/validate_qa_gate.py check <qa_report.json> [--json]
The script evaluates 4 deterministic criteria:
planned == executed). Zero dropped tests.PASSED (exit code 0): All planned tests executed, 0 blocking failures. Deliver the final QA Report.CONDITIONAL_PASS (exit code 2): Only non-critical (P2/P3) defects remain. Document risks and deliver QA Report with remediation advice.BLOCKED (exit code 1): Critical P0 failure, unexecuted planned tests, or incomplete planning.
[Fix Code] (Fix production code) → Dispatch/guide fix, then re-run test.[Waive Block] (Waive defect for current scope) → User confirms defect is acceptable for current scope; records waiver rationale in report and completes.[Update Expectation] (Update test expectation) → Requirement changed or assertion overly strict; update test and re-run.workflow-orchestrator orchestration):
QA outputs the structured JSON report with gate_verdict: "BLOCKED" and failure details. workflow-orchestrator's meta-orchestrator (judge/evaluator) autonomously decides whether this truly blocks the task (dispatching fixer into needs_fix) or can be waived/skipped based on tier, scope boundary, and risk profile.The gate verdict is embedded at the top of the final QA Report.
Unit test execution is NOT this skill's job.
To write unit tests using TDD: /coding-tactics tdd
To write unit tests using BDD: /coding-tactics bdd
This skill writes and executes integration tests and E2E tests directly.
- Integration tests: Step 9 (references/integration-test-execution.md)
- E2E tests: Step 10 (references/e2e-test-execution.md)
No external delegation required.
- Backend Phase: invoke /qa-suite for strategy, env setup, AND integration test execution
- Frontend Phase: invoke /qa-suite for strategy, env setup, AND E2E test execution
- Before E2E steps: use Step 6 interaction test plan → Step 10 E2E execution
- DevOps Phase: reference ci-integration.md for CI patterns
## QA Suite: {project name}
### Project Profile
- Language: {language}
- Platform: {backend|frontend|mobile|desktop|library}
- Test maturity: {none|minimal|partial|mature}
- Existing tests: {file count}
- CI: {platform or none}
### Recommended Test Types
| Type | Apply? | Framework | Rationale |
|------|--------|-----------|-----------|
| ... | ... | ... | ... |
### Environment Setup
```bash
# Commands to set up test environment
### QA Report Output (after test execution)
See `references/e2e-test-execution.md` Part 8 for the full QA Report template.
The report includes: Summary, Coverage Matrix, Failures, Regression Baseline, Recommendations.
### Interaction Test Plan Output (when applicable)
```markdown
### Interaction Test Plan
#### Feature: {feature name}
| # | Element | Action | Expected Behavior | State Type |
|---|---------|--------|-------------------|------------|
| 1 | Email input | Leave empty, click Submit | Shows "Email is required", red border | Validation |
| 2 | Email input | Type "not-an-email" | Shows "Invalid email format" | Validation |
| 3 | Email input | Type "user@example.com" | No error, green indicator | Happy path |
| 4 | Submit button | Click during loading | Button disabled, shows spinner | Loading |
| 5 | Submit button | Click, API returns 500 | Shows error toast "Something went wrong" | Error |
#### Feature: {next feature}
...
| What happened | Rule |
|---|---|
| Recommended Jest for a Go project | Always check package manager first; match framework to language |
| Suggested Playwright for a CLI tool | Playwright is for web UIs only; CLI tools need integration/unit tests |
| Set up complex Docker env for a simple script | Calibrate env complexity to project risk |
| Ignored existing pytest.ini while recommending new setup | Always inspect before recommending |
| Treated "no tests" as a failure | "No tests" is a starting point; provide incremental adoption path |
| Missed input validation behaviors in E2E plan | Investigate every form field for validation states — not just happy paths |
| Skipped empty/error/loading states in interaction plan | Every UI element has 3+ states: happy, empty, loading, error |