Files
pokemon-inventory/docs/TESTING.md
T
2026-09-08 21:52:48 -04:00

75 lines
1.9 KiB
Markdown

# Testing Strategy
Testing begins with the first implementation.
## Unit
Test domain rules and pure services:
- status transitions
- listing requirements
- cost basis
- profit
- valuation strategies
- outlier handling
- condition rules
## API / integration
Test:
- authentication
- authorization
- repositories
- API validation
- Product/provider mapping
- inventory lifecycle
- sales transactions
- public/private DTO boundaries
## Component
Test important Vue components and composables. Every new or changed visual component must include a colocated Storybook story or an update to an existing story before its vertical slice is committed.
For visual slices, run the complete Storybook gate from the repository root:
```sh
npm run test --workspace=@pokemon-inventory/web
npm run build --workspace=@pokemon-inventory/web
npm run build-storybook --workspace=@pokemon-inventory/web
npm run test-storybook
```
Stories should use mock fixture data and cover the component states that users can encounter, including keyboard focus, selected, disabled, loading, empty, error, responsive, and light/dark theme behavior where applicable. Do not add production domain behavior just to make a story render.
## E2E
Core workflows:
1. Login
2. Add Product
3. Find/link provider mappings
4. Add Inventory Item
5. Upload images
6. Calculate pricing
7. Publish listing
8. Search public site
9. Record sale
10. View dashboard
## Accessibility
Run automated accessibility checks and maintain manual keyboard/assistive technology coverage for critical workflows.
## CI
GitHub Actions should run:
- linting
- unit tests
- integration/API tests
- component tests
- E2E tests as appropriate
- accessibility checks
- build validation
The Storybook build and interaction/accessibility runner are part of the visual-slice commit gate. Backend-only slices may omit them when no visual component or UI contract changes.
Do not weaken or skip tests to obtain a passing build.