mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-31 20:09:11 +00:00
53 lines
1.9 KiB
Markdown
53 lines
1.9 KiB
Markdown
# Testing strategy
|
|
|
|
Use for changed behaviour or tests.
|
|
|
|
## Layers
|
|
|
|
### Pure unit
|
|
|
|
Put detailed business-rule coverage on pure functions. Test public inputs/outputs with Vitest: relevant boundaries, invalid input, ordering, rollover, errors.
|
|
|
|
Every bug fix needs a regression test that fails before the fix. Prefer behaviour over mocks/implementation assertions.
|
|
|
|
### Service and state
|
|
|
|
Use service, DAO, store, or hook tests for orchestration: transitions, transactions, persistence, cache, notifications, external effects.
|
|
|
|
Do not repeat all pure cases here. Prove delegation and sequencing.
|
|
|
|
### End-to-end
|
|
|
|
Reserve Playwright for key journeys and high-risk cross-layer integrations: edit/run rundown, playback, imports, rundown switching, cloud-prefixed navigation.
|
|
|
|
No E2E for edges already proven in lower layers. Add E2E only when lower layers cannot prove the user-facing integration.
|
|
|
|
## Compact before handoff
|
|
|
|
Development harnesses may be broad, repetitive, diagnostic, temporary. Before handoff:
|
|
|
|
1. Identify distinct required behaviours/regressions.
|
|
2. Keep the smallest readable set that catches them.
|
|
3. Parameterise repetition only when the table reads better.
|
|
4. Remove diagnostic assertions, redundant permutations, temporary fixtures, private-detail coupling.
|
|
5. Keep rare cases that encode real domain rules.
|
|
|
|
Optimise for future readers, not minimum line count.
|
|
|
|
## Quality
|
|
|
|
- Name tests by observable behaviour.
|
|
- Keep setup local/explicit unless a fixture improves comprehension.
|
|
- Avoid arbitrary waits, wall-clock dependence, cross-test state, weak assertions.
|
|
- Prefer realistic typed fixtures over large snapshots or masking casts.
|
|
- Test non-mutation when promised.
|
|
- No tests for trivial type/format changes or framework behaviour Ontime does not own.
|
|
|
|
## Review prompts
|
|
|
|
- Business logic directly unit-testable?
|
|
- Test catches the reported bug/regression?
|
|
- Cases distinct, not repeated path?
|
|
- Temporary harness leaked?
|
|
- E2E justified by cross-layer risk?
|