A snapshot test for an email, and the day it caught something

Snapshot tests are usually a way of asserting that nothing changed, which is worth very little, until the change is one nobody intended.

public function testOrderConfirmationBody(): void
{
    $mail = new OrderConfirmation($this->order());

    $this->assertMatchesHtmlSnapshot($mail->render());
}

// the diff that mattered:
// -  Total: £49.00
// +  Total: £4900.00
// a formatter change in a shared component, three
// templates away.

The snapshot caught a currency formatting change that no unit test covered because the formatter’s own tests were fine — the caller was passing pence to something that now expected pounds. Snapshots earn their place on rendered output nobody reads carefully; they earn contempt when used on data structures, where a real assertion is both shorter and clearer.