the team is right, a flakey test is worse than having no tests
come up with a strict definition of done
build the knowledge and skill set, or hire, to enable higher quality tests
here's a sample DoD, for us, anything that doesn't meet it cannot go to main, shift + deleted
- no flake
- no hard waits/sleeps
- stateless, multiple entities can execute - cron job or semaphore where not possible
- no order dependency; each it/describe/context block can run with .only in isolation
- tests handle their own state and clean up after themselves - deleted or de-activated entities
- tests live near the source code
- shifted left, as possible - begins with local server or sandbox, works throughout deployments
- low/minimal maintenance
- enough testing per feature to give us release confidence
- execution evidence in CI
- some visibility, as in a test report