Workflow logic changes can silently ship if tests don’t observe the exact contract your users/ops depend on. Adopt this checklist when writing/modifying tests around GitHub Actions scripts/workflows:
1) Assert the real user-visible contract
2) Make stubs/fakes record critical invariants
3) Drive every critical branch with fixtures
[] in fixtures if the production logic relies on that being sometimes non-empty.4) Scope assertions to the correct job/step
job('verify')) or step scoping (e.g., stepIn(job, step)) so the test proves the intended behavior.Example pattern (branch + contract + invariant):
PATCH /issues/comments/<id> (not POST), and the new body contains the exact verdict headline.This approach prevents the three common silent-failure modes shown in review: (a) tests only look at coarse substrings, (b) stubs discard the changed parameter so nothing is asserted, and (c) fixtures never reach the branch that would break in production.