Pest: Parallel Testing Is Now Available
Published 13/08/2021 | Last updated 17/12/2021 | 1459 viewsSave precious time by running your tests concurrently with Pest!
Fasten your seatbelts, people; today Pest is taking it to eleven with the introduction of the official Parallel Testing plugin! What's in it for you, and how can you get started?
Benefits of parallel testing
By default, Pest runs your tests in series. In simple terms, that means all of your tests will be queued up and run one after the other in a single PHP process. This can take a while, especially on large test suites.
However, unless your computer is from the '90s, it has many CPU cores that it can dispatch processes to. So, if there were a way to ask Pest to use more of those cores at once, our test suite could run an order of magnitude more quickly.
We are excited to announce that, as of today, there is a way to do exactly that! Pest now integrates with Paratest to provide this functionality in a completely seamless way!
Installation
To get started, you'll need to be running the latest version of Pest and the Pest Parallel plugin:
composer update pestphp/pest && composer require pestphp/pest-plugin-parallel --dev
Then, include the --parallel
options when executing the pest
command:
./vendor/bin/pest --parallel
That's it! You're now running in parallel. If you want more tips and info, read on!
Tips and tricks
We've worked really hard to make Pest Parallel a seamless experience. This results in an experience that feels so Pesty.
For example, the parallel test output is identical to the standard test output, so you'll still get all of that beautiful rich reporting you're used to. Features like once
and skip
are fully supported, so no nasty error messages or warnings are to be expected.
Even Pest's beautiful coverage support is seamlessly integrated, for a beautiful testing experience:
./vendor/bin/pest --parallel --coverage --min=90
We've also worked hard to make sure Laravel has full Pest support, so as long as you have the Pest and the Pest Parallel plugin installed, you can run php artisan test --parallel
and get all of that tasty Pest goodness for free.
Here's a cool tip: instead of writing --parallel
every time, you can instead use the shorter -p
option:
./vendor/bin/pest -p
By default, Pest will boot as many processes as you have cores on your computer. If you want to tweak that, you can pass the --processes
option with the number of processes to use:
./vendor/bin/pest -p --processes=10
Going forwards
We're stoked to finally release parallel support. We've been working hard on that feature for a long time, and we know you're going to love it. We have a lot more in store for parallel in the future, including a full hook system, PhpStorm integration, compact printing modes, and more. We'll keep you posted!
In the meantime, sit back and enjoy the power of parallel testing in Pest!