testing

  • A no-JavaScript assertion in a browser test

    A page whose interactive parts were converted to a directive-based runtime, and an assertion that it still works with scripting disabled. Progressive enhancement is a claim and this…

  • A framework upgrade that was mostly deleting

    Laravel 11 in March, a skeleton with four fewer directories, and an application still carrying 2019’s structure.

  • The test that asserted the middleware order

    A framework upgrade that moved middleware registration from an array to a fluent configuration, where the order is no longer visible in one place. The order matters —…

  • PHPUnit 11, and the annotations that are finally gone

    The 10.0 migration did the work; 11.0 removes what 10 deprecated, which makes it a two-hour upgrade. A major that only removes previously deprecated behaviour is the cheap…

  • A matrix that was seven jobs to test one thing

    A matrix of PHP versions crossed with dependency strategies, producing seven jobs, six of which tested a combination nobody runs. A full cross product tests combinations that no…

  • PHPUnit 11, and a suite that had already been migrated

    11.0 in February, a year after the 10.0 migration did the hard part, and eleven deprecations that were all things 10 had warned about.

  • The service we merged back

    Two services extracted in 2021, a team of four maintaining four pipelines, and forty-one of forty-four releases touching both.

  • The suite that got slower because of one fixture

    A test suite that went from four minutes to eleven over six weeks, with no test added that was individually slow. A fixture that is individually reasonable and…

  • The migration Rector wrote and we rewrote

    An automated refactor across 412 files, a diff of 8,000 lines, and three wrong hunks in it. The review nobody could actually do.

  • Snapshot tests for a generated stylesheet

    A token pipeline whose output is a stylesheet, and no test at all because the transforms had unit tests. Unit tests on each transform proved every stage correct…