funboy
Making Large Elixir Test Suites Faster with Check
Hi,
I built a small utility tool mainly for running test partitions, generating coverage reports, and rerunning failed tests across all partitions.
I managed to speed up test suite from 20min down to 6min ![]()

Why a binary instead of a Mix task?
When you run a Mix task, you often have to wait for the whole project to compile first, especially in large projects. Sometimes you’re waiting longer for compilation than for the task itself.
check avoids that completely. It’s an escript binary that directly runs the commands it needs.
The main feature is test partitioning.
Instead of running all tests one after another, check splits them into multiple partitions and runs them in parallel.
check # runs tests in 3 partitions by default
check --partitions 6 # use more partitions on bigger machines
Coverage is merged automatically after all partitions finish.
You can also run only tests affected by your changes:
check --only modified_tests
This is quite granular. If you change a single test, only that test is run. If you change a describe setup, only tests in that block are run.
You can find a guide on how to set up your project to run tests using partitions here ![]()
Maybe some of you will find it useful too ![]()
Most Liked
Popular in Dev Env & Tools
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance








