[[Approval testing]] and [[Snapshot assertion]] describe the same underlying mechanic — store output, diff against it later — but differ in emphasis and mindset. | | Snapshot assertion | Approval testing | |---|---|---| | Output states | 2-state: pass / fail | 3-state: no change / expected change / unexpected change | | Human review | implied | **explicit and deliberate** — you must consciously approve | | Auto-record | implied | specifically discouraged — always inspect first | | Implied mindset | ephemeral, throwaway | deliberate acceptance of a known good result | | Tooling needs | basic diff | richer tooling: grouping failures, stack trace warnings | The key distinction (from the video): Jest-style snapshot testing **auto-records without showing you** the result on first run. Approval testing requires you to look at the output and explicitly approve it. "Snapshot" implies the data is ephemeral and you don't really care what's in it. "Approval" implies you do. **Golden master** is a third term for the same mechanic, but implies the approved result is fixed and sacred — misleading since you update it regularly. **Conclusion**: snapshot assertion describes the mechanical pattern; approval testing is the named practice built on that mechanic, with the critical addition of deliberate human review.