tdd-guard-storybook
v0.1.0
Published
Storybook test-runner reporter for TDD Guard
Readme
TDD Guard Storybook Reporter
Storybook test-runner reporter that captures test results for TDD Guard validation.
Requirements
- Node.js 18+
- Storybook 7.x - 9.x
- @storybook/test-runner 0.19.0+
- TDD Guard installed globally
[!IMPORTANT] For Storybook v10.x, use the
tdd-guard-vitestreporter w/ Vitest
Installation
npm install --save-dev tdd-guard-storybookConfiguration
Basic Configuration
Add the reporter to your .storybook/test-runner.ts:
import { StorybookReporter } from 'tdd-guard-storybook'
const reporter = new StorybookReporter()
module.exports = {
async postVisit(page, context) {
await reporter.onStoryResult(context)
},
}
process.on('exit', () => {
reporter.onComplete()
})Workspace/Monorepo Configuration
For workspaces or monorepos, pass the project root path to the reporter:
import { StorybookReporter } from 'tdd-guard-storybook'
import path from 'path'
const reporter = new StorybookReporter(path.resolve(__dirname, '../..'))
module.exports = {
async postVisit(page, context) {
await reporter.onStoryResult(context)
},
}
process.on('exit', () => {
reporter.onComplete()
})If your test-runner config is in a subdirectory, pass the absolute path to your project root:
new StorybookReporter('/Users/username/projects/my-app')How It Works
The reporter captures results from stories that have play functions (interaction tests):
- Stories with
playfunctions are reported as tests - Stories without
playfunctions are ignored - Test results are saved to
.claude/tdd-guard/data/test.json
Output Format
The reporter writes test results in a format compatible with TDD Guard validation:
{
"testModules": [
{
"moduleId": "button--primary",
"tests": [
{
"name": "Primary",
"fullName": "Button > Primary",
"state": "passed"
}
]
}
],
"unhandledErrors": [],
"reason": "passed"
}More Information
- Test results are saved to
.claude/tdd-guard/data/test.json - See TDD Guard documentation for complete setup
License
MIT
