Run tests automatically on save

Running your tests automatically every time you save helps a lot with languages like Elixir.

Reported from dev.to

I was looking for a solution to run tests automatically every time I save any changes. The best way so far for me is the following hex package:

mix_test_watch

Install the dependency

# mix.exs (v1.13)
def deps do
  [
    {:mix_test_watch, "~> 1.0", only: :dev}
  ]
end

Configure it in your project

# config/config.exs
import Config

if config_env() == :dev do
  config :mix_test_watch,
    clear: true
end

The clear: true option means that the screen will clear every time tests run. This is useful because it is easier to scroll back to the top of the most recent test run.

Start watching for changes

In your terminal or within a VS Code terminal, this works great:

mix test.watch --seed 0 --max-failures 1 --include pending

Example

Here's an example of how this looks in VS Code:

Enjoy!

Do you have feedback or questions about this? Email me.

Last updated