Tests should be deterministic, isolated, and assert the intended behavior (not just a coincidence or shared prior state). Concretely:
Reset external/shared state for every test (especially Redis, quotas, counters). Do not rely on the order tests run.
Avoid vacuous assertions and shared artifacts (e.g., “last line in a shared file”) that can match data from earlier blocks.
When testing stateful backends, prefer multi-worker coverage so race/state behavior is exercised.
Keep test scaffolding minimal—remove dead/irrelevant setup that doesn’t actually reach the code under test.
Use fixed test inputs/identifiers where applicable to avoid flakiness.
Example (state reset + independent setup):
add_block_preprocessor(sub {my($block)=@_;# Ensure Redis-backed tests start from a known staterequire("lib.test_redis").flush_all();# Optionally set a deterministic default requestif(!$block->request){$block->set_value("request","GET /t");}});
Example (avoid shared-state/vacuous “tail -n 1”):
Don’t assert against a shared “last export” file unless you can correlate the export to the current request.
If you must pattern-match, make the pattern reject the forbidden value (e.g., all-zero) instead of only matching a broad UUID/hex shape.
Apply this standard when adding or modifying tests in the Testing category to reduce CI flakiness and increase confidence in coverage.