integration-testing

  • One flaky test split into three

    A test asserting three things across two systems, failing intermittently for three years, split into three tests that each assert one. Splitting is diagnosis rather than a fix…

  • The command bus we removed

    A command bus introduced in 2021, and 88 commands with one handler each. A stack trace with four frames of dispatch before the work.

  • The test that had been quarantined since 2023

    A quarantine list with a deadline, three extensions, and one test covering a payment path that had been skipped for three years.

  • A contract fixture that a consumer stopped publishing

    Four consumer-authored fixtures fetched nightly, and one that stopped updating in November. A fetch that falls back to a cached copy on failure is being helpful and is…

  • Reusable skills and agent definitions, and what they are actually for

    turkerdev/ai-skills and turkerdev/ai-agents, and eighteen months of retyping the same instructions. Context is per-session and knowledge is not.

  • 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…

  • 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 integration that outlived the integrator

    A supplier acquired and shut down, and an endpoint returning 200 with an empty body for eleven weeks.

  • A browser test that outlived the page it tested

    A Playwright test passing against a page that had been replaced, because the assertions were generic enough to match both. A test that asserts on generic structure passes…

  • Reviewing code I did not write

    Review as the skill that matters, and a volume of code that needs it. A change that looks right, passes, and is subtly wrong.