Compare commits
No commits in common. "6faa25843fe05cdc77082755b8adfcbb0a417e4a" and "5d1b58b238fdb1374357af6fa2605fcd982085e6" have entirely different histories.
6faa25843f
...
5d1b58b238
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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/).
|
||||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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`!
|
||||
|
|
|
|||
|
|
@ -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.
|
|
|
@ -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,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 ✅
|
||||
|
||||
|
|
@ -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/>
|
||||
|
||||
|
|
@ -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
|
||||
|
|
@ -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('');
|
||||
|
|
|
|||
Loading…
Reference in New Issue