testing

  • The flake that only appeared under parallelism

    A test that had passed ten thousand times serially and failed roughly one run in twelve once eight processes shared a clock. Serial execution made the timing deterministic…

  • A browser test that asserted a redirect, not a page

    A test that filled a form, submitted it and asserted on the resulting page, which passed when the redirect went somewhere wrong. Asserting on a page’s content without…

  • Ninety seconds, and what changed about how people work

    A suite at four minutes forty that people ran on push, and at ninety seconds that people run on save. There is a threshold below which running the…

  • A contract fixture published by a consumer

    Tests describing what a consumer reads, written by them, run by us. Owning the tests ourselves means asserting what we intended, and the risk is the gap between…

  • Boundaries drawn on a whiteboard, and the test that checks them

    A module diagram from 2023 and a codebase that has moved since. A diagram everybody references and nobody has checked.

  • Parallel tests, and the fixture that could not be

    Eight parallel processes, and one test group that writes to a fixed path on disk. Two runs — parallel for everything and serial for the exceptions — is…

  • A schema cached rather than migrated, per job

    188 migrations run at the start of every CI job, replaced by a dump loaded in nine seconds. The staleness check is what makes this safe, and without…

  • A test written by a tool, and read as review

    A generated test for an existing class, which is the case model assistance is genuinely good at, with one caveat. The second test asserts that assignment works, which…

  • A database per process, and the isolation it buys

    Parallel test processes sharing one database, and the transaction-per-test isolation that stops working under concurrency. Loading the schema from a dump rather than migrating is what makes eight…

  • Ten years of a codebase, read in one week

    A decade of an application, and a week spent reading it rather than changing it. Decisions re-litigated because nobody knows what is already there.