testing

  • A pipeline described in one file, after four years of five

    Five workflow files, two composite actions, and nobody able to say what runs when. A change that needed editing three files, one of them wrong.

  • Mutation testing on a third directory, and a worse score

    A technique applied to a third directory, with a score of thirty-eight per cent and a good reason. A low score on code whose correctness is asserted at…

  • A component gallery that renders every state

    A page rendering every component in every state, which is what finally let somebody else change the stylesheet. The states are the point rather than the components —…

  • Running PHPUnit inside PHPUnit

    Testing an extension, which means executing a test run and asserting on what it produced. A subprocess rather than an in-process run, because the extension registers against a…

  • A PHPUnit extension, and the event that does not exist

    An extension that needs coverage data, which the event system does not carry. The event system is about test lifecycle rather than about the runner’s outputs, which is…

  • The value object library, five years on

    32 value objects in 2021, 41 now, and a retrospective on which of them earned their place. No symptom — a deliberate look.

  • Building an MCP server for a database

    turkerdev/mysql-mcp, and what a protocol for tool access actually requires. The authorisation model is the host’s problem, which means it is all yours.

  • The stylesheet that finally got a second maintainer

    2,100 lines that one person could change, and the year spent fixing that. Every stylesheet change routed through one person for four years.

  • Writing a PHPUnit extension

    turkerdev/phpunit-json-coverage-report, and a coverage report a machine can read. Coverage as a percentage in a log, and no way to ask which paths changed.

  • The suite at ninety seconds, a year later

    A suite that reached ninety seconds in 2025, measured again after a year of tests being added. Treating suite duration as a budget with a trend rather than…