A randomised test order, in CI, on every push

Tests that pass in file order and fail in any other order are testing the order, and the coupling is invisible until something is added.

<phpunit executionOrder="random"
         resolveDependencies="true"
         cacheResult="true">

<!-- and the seed, printed on failure, to reproduce it:
     Randomized with seed 1637284192 -->

$ vendor/bin/phpunit --order-by=random --random-order-seed=1637284192

The seed being printed and reusable is what makes this practical rather than infuriating — a random failure that cannot be reproduced is worse than no signal. defects ordering, which runs previously failed tests first, is the useful setting for local work and randomised order is the one for CI. The failures it finds are almost always shared state: a static property, a container binding, a row left in a table.