Compare commits

..

No commits in common. "6faa25843fe05cdc77082755b8adfcbb0a417e4a" and "5d1b58b238fdb1374357af6fa2605fcd982085e6" have entirely different histories.

10 changed files with 234 additions and 53 deletions

View File

@ -79,14 +79,15 @@ BMad Method extends with official modules for specialized domains. Modules are a
BMad provides two testing options to fit your needs:
### Quinn (QA) - Built-in
### Quinn (SDET) - Built-in
**Quick test automation for rapid coverage**
- ✅ **Always available** in BMM module (no separate install)
- ✅ **Simple**: One workflow (`QA` - Automate)
- ✅ **Beginner-friendly**: Standard test framework patterns
- ✅ **Simple**: One workflow (`QA` - Quick Automate)
- ✅ **Beginner-friendly**: Standard Playwright patterns
- ✅ **Fast**: Generate tests and ship
- 📖 [Quinn Documentation](http://docs.bmad-method.org/reference/quinn-sdet)
**Use Quinn for:** Small projects, quick coverage, standard patterns

View File

@ -0,0 +1,150 @@
---
title: Quinn - SDET Agent
description: Quick test automation with standard Playwright patterns
---
# Quinn - Software Development Engineer in Test (SDET)
Quinn is a beginner-friendly SDET agent built into BMad Method for quick test automation.
## Quick Start
```bash
# Load Quinn
quinn
# Or trigger directly
QA
# Or use full command
/bmad:bmm:quick-automate
```
## What Quinn Does
Generates tests quickly for existing features using **standard Playwright patterns**.
**Focus:**
- Fast coverage over perfect architecture
- Happy path + critical edge cases
- Standard Playwright APIs (no advanced utilities)
- Beginner-friendly approach
## Example Workflow
**1. Trigger Quinn:**
```
QA
```
**2. Specify what to test:**
```
Generate tests for the user login feature
```
**3. Quinn generates:**
- API tests (if applicable)
- E2E tests (if UI exists)
- Test summary with coverage metrics
**4. Verify tests pass:**
```bash
npx playwright test
```
**Done!** Tests are ready to run in CI.
## Quinn vs Test Architect (TEA)
| Feature | Quinn (SDET) | Test Architect (TEA) |
| ---------------------- | ------------------------- | ------------------------------------------------- |
| **Availability** | Built-in BMM | Optional module (install separately) |
| **Workflows** | 1 (Quick Automate) | 8 (Framework, CI, Design, ATDD, Automate, Review, Trace, NFR) |
| **Complexity** | Beginner-friendly | Enterprise-grade |
| **Test Patterns** | Standard Playwright | Playwright Utils + Knowledge Base (34 fragments) |
| **Features** | Basic coverage | Risk-based planning, quality gates, NFR assessment |
| **Trigger** | `QA` | `TF`, `CI`, `TD`, `AT`, `TA`, `RV`, `TR`, `NR` |
| **Use Case** | Small projects, quick tests | Enterprise, compliance, comprehensive strategy |
| **Learning Curve** | Easy | Moderate |
## When to Use Quinn
✅ **Use Quinn for:**
- Small to medium projects
- Quick test coverage
- Standard Playwright patterns
- Beginner teams
- Rapid iteration
## When to Use Test Architect
🚀 **Upgrade to TEA for:**
- Enterprise projects
- Risk-based test strategy
- Comprehensive test planning (ATDD)
- Quality gates and release decisions
- NFR assessment (security, performance, reliability)
- Requirements traceability
- Advanced patterns (Playwright Utils, MCP)
**Install TEA:**
```bash
npx bmad-method install
# Select: Test Architect (TEA)
```
**Documentation:** [https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/)
## Generated Test Pattern
**API Test Example:**
```typescript
import { test, expect } from '@playwright/test';
test('API returns user data', async ({ request }) => {
const response = await request.get('/api/users/1');
expect(response.status()).toBe(200);
const data = await response.json();
expect(data).toHaveProperty('id');
expect(data).toHaveProperty('name');
});
```
**E2E Test Example:**
```typescript
import { test, expect } from '@playwright/test';
test('user can login successfully', async ({ page }) => {
await page.goto('/login');
await page.getByLabel('Email').fill('user@example.com');
await page.getByLabel('Password').fill('password');
await page.getByRole('button', { name: 'Login' }).click();
await expect(page.getByText('Welcome')).toBeVisible();
});
```
## Validation
Quinn includes a simple checklist to verify:
- ✅ All tests run successfully
- ✅ Tests use proper locators
- ✅ Tests cover happy path + errors
- ✅ No hardcoded waits
- ✅ Tests are independent
---
**Keep it simple, ship it, iterate!** 🚀
For advanced testing needs, see [Test Architect (TEA)](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/).

View File

@ -53,13 +53,10 @@ Build it, one story at a time.
| `sprint-planning` | Initialize tracking (once per project) | `sprint-status.yaml` |
| `create-story` | Prepare next story for implementation | `story-[slug].md` |
| `dev-story` | Implement the story | Working code + tests |
| `automate` (QA) | Generate tests for existing features | Test suite |
| `code-review` | Validate implementation quality | Approved or changes requested |
| `correct-course` | Handle significant mid-sprint changes | Updated plan or re-routing |
| `retrospective` | Review after epic completion | Lessons learned |
**Quinn (QA Agent):** Built-in QA agent for test automation. Trigger with `QA` or `bmad-bmm-automate`. Generates standard API and E2E tests using your project's test framework. Beginner-friendly, no configuration needed. For advanced test strategy, install [Test Architect (TEA)](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/) module.
## Quick Flow (Parallel Track)
Skip phases 1-3 for small, well-understood work.

View File

@ -2,16 +2,16 @@ agent:
metadata:
id: "_bmad/bmm/agents/quinn"
name: Quinn
title: QA Engineer
title: Software Development Engineer in Test (SDET)
icon: 🧪
module: bmm
hasSidecar: false
persona:
role: QA Engineer
role: Software Development Engineer in Test (SDET)
identity: |
Pragmatic test automation engineer focused on rapid test coverage.
Specializes in generating tests quickly for existing features using standard test framework patterns.
Specializes in generating tests quickly for existing features using standard Playwright patterns.
Simpler, more direct approach than the advanced Test Architect module.
communication_style: |
Practical and straightforward. Gets tests written fast without overthinking.
@ -19,7 +19,7 @@ agent:
principles:
- Fast test generation over perfect architecture
- Coverage first, optimization later
- Standard test framework patterns (no advanced utilities required)
- Standard Playwright patterns (no advanced utilities required)
- Works well for beginners and small teams
- Simpler decision-making than full test architecture
- Happy path + critical edge cases = good enough
@ -27,28 +27,27 @@ agent:
critical_actions:
- Never skip running the generated tests to verify they pass
- Always use standard test framework APIs (no external utilities)
- Always use standard Playwright APIs (no external utilities)
- Keep tests simple and maintainable
- Focus on realistic user scenarios
menu:
- trigger: QA
workflow: "{project-root}/_bmad/bmm/workflows/qa/automate/workflow.yaml"
description: "[QA] Automate - Generate tests for existing features (simplified)"
workflow: "{project-root}/_bmad/bmm/workflows/sdet/automate/workflow.yaml"
description: "[QA] Quick Automate - Generate tests for existing features (simplified)"
prompts:
- id: welcome
content: |
👋 Hi, I'm Quinn - your QA Engineer.
👋 Hi, I'm Quinn - your Software Development Engineer in Test (SDET).
I help you generate tests quickly using standard test framework patterns.
I help you generate tests quickly using standard Playwright patterns.
**What I do:**
- Generate API and E2E tests for existing features
- Use standard test framework patterns (simple and maintainable)
- Use standard Playwright patterns (simple and maintainable)
- Focus on happy path + critical edge cases
- Get you covered fast without overthinking
- Generate tests only (use Code Review `CR` for review/validation)
**When to use me:**
- Quick test coverage for small-medium projects
@ -59,4 +58,4 @@ agent:
For comprehensive test strategy, risk-based planning, quality gates, and enterprise features,
install the Test Architect (TEA) module: https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/
Ready to generate some tests? Just say `QA` or `bmad-bmm-automate`!
Ready to generate some tests? Just say `QA` or `/bmad:bmm:quick-automate`!

View File

@ -29,4 +29,4 @@ bmm,4-implementation,Validate Story,VS,35,_bmad/bmm/workflows/4-implementation/c
bmm,4-implementation,Dev Story,DS,40,_bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml,bmad-bmm-dev-story,true,dev,Create Mode,"Story cycle: Execute story implementation tasks and tests then CR then back to DS if fixes needed",,,
bmm,4-implementation,Code Review,CR,50,_bmad/bmm/workflows/4-implementation/code-review/workflow.yaml,bmad-bmm-code-review,false,dev,Create Mode,"Story cycle: If issues back to DS if approved then next CS or ER if epic complete",,,
bmm,4-implementation,Retrospective,ER,60,_bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml,bmad-bmm-retrospective,false,sm,Create Mode,"Optional at epic end: Review completed work lessons learned and next epic or if major issues consider CC",implementation_artifacts,retrospective,
bmm,4-implementation,Automate,QA,45,_bmad/bmm/workflows/qa/automate/workflow.yaml,bmad-bmm-automate,false,quinn,Create Mode,"Generate tests quickly for existing features (not code review) using standard test patterns",implementation_artifacts,"test suite",
bmm,4-implementation,Quick Automate,QA,45,_bmad/bmm/workflows/sdet/automate/workflow.yaml,bmad-bmm-quick-automate,false,quinn,Create Mode,"Generate tests quickly for existing features using standard Playwright patterns",implementation_artifacts,"test suite",

Can't render this file because it has a wrong number of fields in line 7.

View File

@ -18,3 +18,4 @@ name,displayName,title,icon,role,identity,communicationStyle,principles,module,p
"lateral-thinker","Edward de Bono","Lateral Thinking Pioneer","🧩","Creator of Creative Thinking Tools","Inventor of lateral thinking and Six Thinking Hats methodology. Master of deliberate creativity through systematic pattern-breaking techniques.","You stand at a crossroads. Choose wisely, adventurer! Presents choices with dice-roll energy, proposes deliberate provocations, breaks patterns methodically.","Logic gets you from A to B. Creativity gets you everywhere else. Use tools to escape habitual thinking patterns.","cis",""
"mythic-storyteller","Joseph Campbell","Mythic Storyteller","🌟","Master of the Hero's Journey + Archetypal Wisdom","Scholar who decoded the universal story patterns across all cultures. Expert in mythology, comparative religion, and archetypal narratives.","I sense challenge and reward on the path ahead. Speaks in prophetic mythological metaphors - EVERY story is a hero's journey, references ancient wisdom.","Follow your bliss. All stories share the monomyth. Myths reveal universal human truths. The call to adventure is irresistible.","cis",""
"combinatorial-genius","Steve Jobs","Combinatorial Genius","🍎","Master of Intersection Thinking + Taste Curator","Legendary innovator who connected technology with liberal arts. Master at seeing patterns across disciplines and combining them into elegant products.","I'll be back... with results! Talks in reality distortion field mode - insanely great, magical, revolutionary, makes impossible seem inevitable.","Innovation happens at intersections. Taste is about saying NO to 1000 things. Stay hungry stay foolish. Simplicity is sophistication.","cis",""
"quinn","Quinn","SDET","🧪","Software Development Engineer in Test","Pragmatic test automation engineer focused on rapid test coverage. Specializes in generating tests quickly for existing features using standard Playwright patterns.","Practical and straightforward. Gets tests written fast without overthinking.","Fast test generation over perfect architecture. Coverage first, optimization later. Standard Playwright patterns. Works well for beginners and small teams.","bmm","_bmad/bmm/agents/quinn.agent.yaml"

1 name displayName title icon role identity communicationStyle principles module path
18 lateral-thinker Edward de Bono Lateral Thinking Pioneer 🧩 Creator of Creative Thinking Tools Inventor of lateral thinking and Six Thinking Hats methodology. Master of deliberate creativity through systematic pattern-breaking techniques. You stand at a crossroads. Choose wisely, adventurer! Presents choices with dice-roll energy, proposes deliberate provocations, breaks patterns methodically. Logic gets you from A to B. Creativity gets you everywhere else. Use tools to escape habitual thinking patterns. cis
19 mythic-storyteller Joseph Campbell Mythic Storyteller 🌟 Master of the Hero's Journey + Archetypal Wisdom Scholar who decoded the universal story patterns across all cultures. Expert in mythology, comparative religion, and archetypal narratives. I sense challenge and reward on the path ahead. Speaks in prophetic mythological metaphors - EVERY story is a hero's journey, references ancient wisdom. Follow your bliss. All stories share the monomyth. Myths reveal universal human truths. The call to adventure is irresistible. cis
20 combinatorial-genius Steve Jobs Combinatorial Genius 🍎 Master of Intersection Thinking + Taste Curator Legendary innovator who connected technology with liberal arts. Master at seeing patterns across disciplines and combining them into elegant products. I'll be back... with results! Talks in reality distortion field mode - insanely great, magical, revolutionary, makes impossible seem inevitable. Innovation happens at intersections. Taste is about saying NO to 1000 things. Stay hungry stay foolish. Simplicity is sophistication. cis
21 quinn Quinn SDET 🧪 Software Development Engineer in Test Pragmatic test automation engineer focused on rapid test coverage. Specializes in generating tests quickly for existing features using standard Playwright patterns. Practical and straightforward. Gets tests written fast without overthinking. Fast test generation over perfect architecture. Coverage first, optimization later. Standard Playwright patterns. Works well for beginners and small teams. bmm _bmad/bmm/agents/quinn.agent.yaml

View File

@ -1,17 +1,17 @@
# Quinn Automate - Validation Checklist
# Quinn Quick Automate - Validation Checklist
## Test Generation
- [ ] API tests generated (if applicable)
- [ ] E2E tests generated (if UI exists)
- [ ] Tests use standard test framework APIs
- [ ] Tests use standard Playwright APIs
- [ ] Tests cover happy path
- [ ] Tests cover 1-2 critical error cases
## Test Quality
- [ ] All generated tests run successfully
- [ ] Tests use proper locators (semantic, accessible)
- [ ] Tests use proper locators (getByRole, getByText, getByLabel)
- [ ] Tests have clear descriptions
- [ ] No hardcoded waits or sleeps
- [ ] Tests are independent (no order dependency)
@ -24,7 +24,11 @@
## Validation
Run the tests using your project's test command.
Run the tests:
```bash
npx playwright test
```
**Expected**: All tests pass ✅

View File

@ -1,8 +1,6 @@
# Quinn QA - Automate
# Quinn SDET - Quick Automate
**Goal**: Generate tests quickly for existing features using standard test patterns.
**Scope**: This workflow only generates tests. It does **not** perform code review or story validation (use Code Review `CR` for that).
**Goal**: Generate tests quickly for existing features using standard Playwright patterns.
## Instructions
@ -16,27 +14,54 @@ Ask user what to test:
### Step 2: Generate API Tests (if applicable)
For API endpoints/services, generate tests that:
For API endpoints/services:
```typescript
import { test, expect } from '@playwright/test';
test('API endpoint returns success', async ({ request }) => {
const response = await request.get('/api/endpoint');
expect(response.status()).toBe(200);
const data = await response.json();
expect(data).toHaveProperty('expectedField');
});
```
**Patterns:**
- Use `request` fixture for API testing
- Test status codes (200, 400, 404, 500)
- Validate response structure
- Cover happy path + 1-2 error cases
- Use project's existing test framework patterns
- Test happy path + 1-2 error cases
### Step 3: Generate E2E Tests (if UI exists)
For UI features, generate tests that:
For UI features:
- Test user workflows end-to-end
- Use semantic locators (roles, labels, text)
```typescript
import { test, expect } from '@playwright/test';
test('user can complete main workflow', async ({ page }) => {
await page.goto('/feature');
await page.getByRole('button', { name: 'Submit' }).click();
await expect(page.getByText('Success')).toBeVisible();
});
```
**Patterns:**
- Use standard Playwright locators: `getByRole`, `getByText`, `getByLabel`
- Focus on user interactions (clicks, form fills, navigation)
- Assert visible outcomes
- Keep tests linear and simple
- Follow project's existing test patterns
- Assert visible outcomes (text appears, navigation happens)
- Keep tests linear and simple (no complex fixture setups)
### Step 4: Run Tests
Execute tests to verify they pass (use project's test command).
Execute tests to verify they pass:
```bash
npx playwright test
```
If failures occur, fix them immediately.
@ -68,7 +93,7 @@ Output markdown summary:
**Do:**
- Use standard test framework APIs
- Use standard Playwright APIs only
- Focus on happy path + critical errors
- Write readable, maintainable tests
- Run tests to verify they pass
@ -76,8 +101,10 @@ Output markdown summary:
**Avoid:**
- Complex fixture composition
- Network interception (unless necessary)
- Data factories (use inline test data)
- Over-engineering
- Unnecessary abstractions
- Custom utilities
**For Advanced Features:**
@ -87,7 +114,7 @@ If the project needs:
- Test design planning
- Quality gates and NFR assessment
- Comprehensive coverage analysis
- Advanced testing patterns and utilities
- Playwright Utils integration
**Install Test Architect (TEA) module**: <https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/>

View File

@ -1,6 +1,6 @@
# Quinn QA workflow: Automate
name: qa-automate
description: "Generate tests quickly for existing features using standard test patterns"
# Quinn SDET workflow: Quick Automate
name: sdet-quick-automate
description: "Generate tests quickly for existing features using standard Playwright patterns"
author: "BMad"
# Critical variables from config
@ -13,7 +13,7 @@ document_output_language: "{config_source}:document_output_language"
date: system-generated
# Workflow components
installed_path: "{project-root}/_bmad/bmm/workflows/qa/automate"
installed_path: "{project-root}/_bmad/bmm/workflows/sdet/automate"
instructions: "{installed_path}/instructions.md"
validation: "{installed_path}/checklist.md"
template: false
@ -38,8 +38,10 @@ required_tools:
tags:
- qa
- sdet
- automation
- testing
- playwright
execution_hints:
interactive: false

View File

@ -158,30 +158,30 @@ async function runTests() {
console.log('');
// ============================================================
// Test 5: QA Agent Compilation
// Test 5: SDET Agent Compilation
// ============================================================
console.log(`${colors.yellow}Test Suite 5: QA Agent Compilation${colors.reset}\n`);
console.log(`${colors.yellow}Test Suite 5: SDET Agent Compilation${colors.reset}\n`);
try {
const builder = new YamlXmlBuilder();
const qaAgentPath = path.join(projectRoot, 'src/bmm/agents/quinn.agent.yaml');
const tempOutput = path.join(__dirname, 'temp-qa-agent.md');
const sdetAgentPath = path.join(projectRoot, 'src/bmm/agents/quinn.agent.yaml');
const tempOutput = path.join(__dirname, 'temp-sdet-agent.md');
try {
const result = await builder.buildAgent(qaAgentPath, null, tempOutput, { includeMetadata: true });
const result = await builder.buildAgent(sdetAgentPath, null, tempOutput, { includeMetadata: true });
const compiled = await fs.readFile(tempOutput, 'utf8');
assert(compiled.includes('QA Engineer'), 'QA agent compilation includes agent title');
assert(compiled.includes('Software Development Engineer in Test'), 'SDET agent compilation includes agent title');
assert(compiled.includes('qa/automate'), 'QA agent menu includes automate workflow');
assert(compiled.includes('sdet/automate'), 'SDET agent menu includes automate workflow');
// Cleanup
await fs.remove(tempOutput);
} catch (error) {
assert(false, 'QA agent compiles successfully', error.message);
assert(false, 'SDET agent compiles successfully', error.message);
}
} catch (error) {
assert(false, 'QA compilation test setup', error.message);
assert(false, 'SDET compilation test setup', error.message);
}
console.log('');