Gladly! Compiling Elm and running Elm tests is reasonably fast:
$ elm-test tests/
Compiling > Starting tests
elm-test 0.19.1-revision6
-------------------------
Running 4060 tests.
TEST RUN PASSED
Duration: 27597 ms
Passed: 4060
Failed: 0
The usual time hog is recompiling each entry point through Shake and esbuild. If you think that it takes around 1.5s for each entrypoint, it would take us 150 seconds for a change to a shared module that every page imports!
So @brian wrote a script that traverses the import tree and figures out which entry points need to be recompiled when you change a Elm module. So this is our day-to-day experience with making changes:
That’s fast enough for you to make a change, switch to the browser and refresh the page without having to think “oh I should wait for the compilation to finish”.
We have a similar script (also made by brian) that figures out the subset of tests to be executed when making a change, so that it’s easy to work in a TDD fashion.