Eight parallel workers against one database is eight processes fighting over the same rows, and the failures look like flakiness.
# a database per worker, created once and reused
$ php artisan test --parallel --processes=8
# app_test_1 ... app_test_8
# the fixture cost is now paid eight times, which is why
# a schema dump matters more here than anywhere:
$ php artisan schema:dump
# 8 × migrate = 6 minutes. 8 × load dump = 25 seconds.
The setup cost is what determines whether parallelism is worth it at all — eight full migration runs can exceed the time saved. A schema dump or a template database copied per worker is the difference. Anything shared outside the database is the next problem: a filesystem path, a Redis instance, a fixed port. Each of those needs the worker number in it, and finding them all takes a couple of runs.