The tests need MySQL and Redis, and CI gives you an empty machine. Service containers, where they differ from compose, and the readiness nothing does for you.
Testing that a controller queued something by starting a worker is slow and flaky; testing it by reading the queue table couples the test to the driver. Splitting…
94% coverage, and a suite that passes with the logic inverted. Coverage measures execution rather than verification, and there is a tool that measures the difference.