create-qa-test

Create a new QA test procedure for a feature

9 stars

Best use case

create-qa-test is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Create a new QA test procedure for a feature

Teams using create-qa-test should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/create-qa-test/SKILL.md --create-dirs "https://raw.githubusercontent.com/jpoutrin/product-forge/main/plugins/product-design/skills/create-qa-test/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/create-qa-test/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How create-qa-test Compares

Feature / Agentcreate-qa-testStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Create a new QA test procedure for a feature

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# create-qa-test

**Category**: Quality Assurance

## Usage

```bash
create-qa-test <feature-name> [--url <url>] [--priority <priority>] [--explore]
```

## Arguments

- `<feature-name>`: Required - Name of the feature to test (kebab-case)
- `--url`: Optional - Test environment URL for the feature
- `--priority`: Optional - Test priority (critical, high, medium, low). Default: medium
- `--explore`: Optional - Launch qa-tester agent to explore the feature via Playwright

## Execution Instructions for Claude Code

When this command is run, Claude Code should:

1. **Generate Test ID**
   - Format: `QA-YYYYMMDD-###-feature-name.md`
   - Use today's date
   - Find next sequential number for today

2. **Create Directory Structure** (if not exists)
   ```
   qa-tests/
   ├── draft/
   ├── active/
   ├── executed/
   ├── archived/
   └── screenshots/
   ```

3. **Prompt for Details** (if not provided)
   - Feature description
   - Test URL (if --url not specified)
   - Acceptance criteria
   - Prerequisites
   - Test data requirements

4. **Create QA Test File**
   - Place in `qa-tests/draft/` with status DRAFT
   - Include all required metadata
   - Generate test case placeholders based on feature

5. **Optional: Invoke qa-tester Agent**
   - If `--explore` flag is set, launch the qa-tester agent
   - Agent will navigate to URL and document test steps
   - Agent will take screenshots of key states

## File Template

```markdown
# QA Test Procedure: [Feature Name]

## Metadata
- **Test ID**: QA-YYYYMMDD-###
- **Feature**: [Feature name]
- **Application**: [App name]
- **URL**: [Test environment URL]
- **Created**: [YYYY-MM-DD]
- **Author**: [Name]
- **Status**: DRAFT
- **Priority**: [Critical|High|Medium|Low]
- **Estimated Time**: [X minutes]
- **PRD Reference**: [Link if applicable]

## Prerequisites
- [ ] [Required setup step 1]
- [ ] [Test account with appropriate permissions]
- [ ] [Test data prepared]

## Test Environment
- **URL**: [Test environment URL]
- **Browser**: Chrome (latest)
- **Credentials**: See password manager

---

## Test Cases

### TC-001: [Happy Path - Main Success Scenario]

**Objective**: Verify the main success flow for [feature]

**Preconditions**:
- User is logged in
- [Feature-specific preconditions]

#### Steps

| Step | Action | Expected Result | Pass/Fail | Notes |
|------|--------|-----------------|-----------|-------|
| 1 | Navigate to [URL] | [Page loads correctly] | ☐ | |
| 2 | [Action] | [Expected outcome] | ☐ | |
| 3 | [Action] | [Expected outcome] | ☐ | |

**Postconditions**: [Expected state after test]

---

### TC-002: [Validation Test]

**Objective**: Verify input validation for [feature]

| Step | Action | Expected Result | Pass/Fail | Notes |
|------|--------|-----------------|-----------|-------|
| 1 | [Submit with empty required field] | [Error message appears] | ☐ | |
| 2 | [Enter invalid format] | [Validation error shown] | ☐ | |

---

## Edge Cases & Error Scenarios

### EC-001: [Edge Case Description]

| Step | Action | Expected Result | Pass/Fail | Notes |
|------|--------|-----------------|-----------|-------|
| 1 | [Edge case action] | [Expected behavior] | ☐ | |

---

## Summary Checklist

### Critical Path
- [ ] TC-001: [Title]

### Validation
- [ ] TC-002: [Title]

### Edge Cases
- [ ] EC-001: [Title]

---

## Test Execution Log

| Date | Tester | Environment | Build | Result | Issues |
|------|--------|-------------|-------|--------|--------|
| | | | | | |

## Notes
- [Additional observations]
- [Known limitations]
```

## Example

```bash
# Create a basic QA test for login
create-qa-test user-login --url https://staging.example.com/login --priority critical

# Create a test and explore with Playwright
create-qa-test checkout-flow --url https://staging.example.com/checkout --explore

# Create a simple test, will prompt for URL
create-qa-test password-reset
```

## Output

```
Created: qa-tests/draft/QA-20250105-001-user-login.md

📋 QA Test Procedure: user-login
   Status: DRAFT
   Priority: Critical
   Location: qa-tests/draft/

Next steps:
1. Review and complete test cases
2. Add specific test data
3. Move to qa-tests/active/ when ready
```

## Integration with qa-tester Agent

When `--explore` flag is used:

1. Command creates the initial QA test file
2. Launches qa-tester agent with:
   - Feature name
   - URL to test
   - Path to QA test file
3. Agent navigates and documents steps
4. Agent takes screenshots to `qa-tests/screenshots/{test-id}/`
5. Agent extracts element screenshots to `qa-tests/screenshots/{test-id}/elements/`
6. Agent updates the QA test file with discovered steps
7. **Agent validates and embeds all screenshots** (see Final Review below)

## Final Review: Screenshot Integration (REQUIRED)

**Before marking the QA test as complete, the agent MUST verify all screenshots are properly referenced in the final markdown file.**

### Verification Checklist

1. **Check screenshot directory exists**
   ```
   qa-tests/screenshots/{test-id}/
   ├── 01-initial-state.png
   ├── 02-form-filled.png
   ├── 03-success-state.png
   └── elements/
       ├── login-button.png
       ├── email-field.png
       └── password-field.png
   ```

2. **Verify all screenshots are referenced in the markdown**
   - Each test case should have a "Screenshots" subsection
   - Element references should use relative paths
   - No orphaned screenshots (captured but not referenced)

3. **Add missing references**
   If screenshots exist but aren't in the document, add them:

### Required Sections in Final Document

#### Screenshots Reference (per test case)

```markdown
### TC-001: User Login

#### Steps
| Step | Action | Expected Result | Pass/Fail | Notes |
|------|--------|-----------------|-----------|-------|
| 1 | Navigate to login page | Login form displays | ☐ | |
| 2 | Enter email in **Email field** | Email accepted | ☐ | |
| 3 | Click **Login button** | Dashboard loads | ☐ | |

#### Screenshots
| Step | Screenshot | Description |
|------|------------|-------------|
| 1 | ![Initial state](./screenshots/{test-id}/01-initial-state.png) | Login page before input |
| 3 | ![Success](./screenshots/{test-id}/03-success-state.png) | Dashboard after login |
```

#### Element Visual Reference (document level)

```markdown
## Element Visual Reference

| Element | Screenshot | Selector | Test Case |
|---------|------------|----------|-----------|
| Email field | ![](./screenshots/{test-id}/elements/email-field.png) | `input#email` | TC-001 |
| Login button | ![](./screenshots/{test-id}/elements/login-button.png) | `button[type=submit]` | TC-001 |
```

### Validation Steps

The agent should run these checks before completing:

```
1. LIST all files in qa-tests/screenshots/{test-id}/
2. SCAN the QA test markdown for image references
3. COMPARE: Are all screenshots referenced?
4. IF missing references:
   - Add Screenshots section to each test case
   - Add Element Visual Reference section
   - Use relative paths: ./screenshots/{test-id}/filename.png
5. VERIFY: All image paths are valid (files exist)
6. REPORT: "✅ All X screenshots properly referenced" or "⚠️ Added Y missing references"
```

### Auto-Fix Missing References

If the agent finds screenshots that aren't referenced:

```markdown
## Auto-Generated Screenshot References

The following screenshots were captured but not initially referenced.
They have been added to the document:

| Screenshot | Added To | Path |
|------------|----------|------|
| 02-form-filled.png | TC-001 Screenshots | ./screenshots/QA-20250105-001/02-form-filled.png |
| submit-button.png | Element Reference | ./screenshots/QA-20250105-001/elements/submit-button.png |
```

## Related Commands

- `list-qa-tests` - List and filter existing QA tests
- `enrich-qa-test` - Add element screenshots to existing test
- `/prd-progress` - Check linked PRD implementation status

## Related Skills

- `qa-screenshot-management` - Screenshot naming and organization
- `qa-element-extraction` - Extract element screenshots from test steps
- `qa-screenshot-validation` - Validate screenshots for layout issues

Related Skills

qa-testing-methodology

9
from jpoutrin/product-forge

QA test design patterns (equivalence partitioning, boundary analysis, accessibility). Auto-loads when designing test cases, planning test coverage, or writing test procedures.

qa-test-management

9
from jpoutrin/product-forge

Automatic QA test lifecycle management, naming conventions, and directory structure. Use when creating, organizing, or tracking QA tests to ensure proper naming, directory structure, and status transitions.

list-qa-tests

9
from jpoutrin/product-forge

List QA test procedures with status and priority

enrich-qa-test

9
from jpoutrin/product-forge

Review QA test and capture element screenshots to enrich documentation

create-prd

9
from jpoutrin/product-forge

Interactive PRD creation wizard with comprehensive question flow

create-prd-feature

9
from jpoutrin/product-forge

Create a feature-specific PRD (FRD) for individual features

create-persona

9
from jpoutrin/product-forge

Create detailed user persona with guided questions

create-tech-spec

9
from jpoutrin/product-forge

Create a new Technical Specification for implementation details

create-rfc

9
from jpoutrin/product-forge

Create a new RFC (Request for Comments) technical specification

create-skill

9
from jpoutrin/product-forge

Create a new Claude Code agent skill with proper folder structure and SKILL.md format. Use when the user wants to add a model-invoked skill that Claude uses autonomously based on context. Handles skill folder creation with SKILL.md and optional reference files.

create-plugin

9
from jpoutrin/product-forge

Create a new Claude Code plugin with proper directory structure and manifest. Use when the user wants to create a new plugin from scratch. Sets up plugin.json, directory structure, and optional components.

create-command

9
from jpoutrin/product-forge

Create a new Claude Code slash command with proper YAML frontmatter structure. Use when the user wants to add a custom slash command to a plugin. Handles command file creation with description, argument hints, allowed tools, and all advanced features.