Turbocharge your Laravel Tests on GitHub Actions

Co-Founder & CEO
We brought a GitHub Actions pipeline with 5,000 PHPUnit tests down from 13 minute to 3 minute runs, and we can do the same for you.
Consider this scenario. It's mid-Monday morning. Your production app is abuzz with active users. The beautifully written PR that you spent last week whipping up was just reviewed and approved. Tests are passing, linter isn't squaking, TypeScript is cooperating. The only thing left to do is hit that beautiful green squash and merge button... and then wait 10+ minutes while CI runs on main
and your code is deployed to production.
You go grab a coffee while you wait, only to return to a growing stack of Sentry issues after deploy. Looks like a single typo made it past you and your reviewers and quickly created an outage. You push up a hotfix branch, and your colleagues (already receiving DMs about the outage) quickly stamp their approval on the PR. You wait another 10 minutes for tests to pass, then press that green button again.
Now you wait another 10 minutes for CI to run on main
. No leaving your desk this time, you're watching the actions run in full stress mode, hoping this run will somehow be faster than the last.
Meanwhile, production's been down for 20 minutes. Thankfully, all 4,000+ tests pass, your hotfix is deployed, and production is back in business. Phew.
Real World, Real Paper Cuts
While the sweaty palm-inducing example above isn't an exact retelling of a Springloaded story – we've certainly been there before. It's just one of the scenarios that drove us to see just how fast we could make our CI runs.
We build large, well-tested apps at Springloaded. One of those projects is at about 5,000 PHPUnit tests as I publish this. Our GitHub Actions test runs on that project were hovering around the 12-minute mark.


Following our standard procedure (PR > Merge > Deploy), our time-to-hotfix with that sort of runtime is about 25 minutes. If we push straight to main
, we can cut it in half, but we risk having another bugged commit in the history on main
if we pushed a mistake. There are tradeoffs to manage.
While being able to deploy quickly in an emergency is a very compelling reason to have fast CI runs, it's certainly not the only one. Slow CI runs are a paper cut for developers. It can be painful and frustrating having to wait many minutes to know if your build is passing on CI. It also costs money. You're billed by the minute on GitHub actions, so the longer those actions take, the more you're going to spend.
Fast CI runs are good for products, and they're loved by teams. In some cases, they're mission-critical.
What if you could improve Laravel test runs on GitHub Actions by 5-10x?
When we set out to solve our run time problem, we weren't sure what was possible. We were already running our tests in parallel and had maxed out at 16 cores to run our tests. There are almost always things you can do in the application layer to speed up test runs, but we wanted to find a solution that we could use across projects without application or domain-specific optimizations.
Plug and Play was the goal. So we got cooking.
Our initial experiments netted us a 5x improvement. ~5,000 tests in 2.5mins.


We brought our average run down to about 3 minutes from 13, with a solution that we can apply across all our projects internally. And not just our projects—yours too. We're really excited to show you how, very soon.
If you look closely, you'll see our lint step is actually taking the longest now. That step includes setting up a PHP environment, calling ESLint & PHP CS Fixer, compiling TypeScript, and building our front end with Vite. We're going to improve that run time too.
In fact, we think we can do even more than that. We want to make setting up a Laravel environment and running your tests and build process blazingly fast. Our audacious goal is to get this entire workflow running in under a minute.
How fast can you deploy to production right now? Want to 10x that speed with a plug and play solution? Drop your email below, and we'll let you know when we're ready to share how.