elm-community/elm-test/2.0.0

NOTE: this package is not compatible with Elm 0.19.1

elm-test

Write unit and fuzz tests for your Elm code, in Elm.

Quick Start

Here are three example tests:

suite : Test
suite =
    describe "The String module"
        [ describe "String.reverse" -- Nest as many descriptions as you like.
            [ test "has no effect on a palindrome" <|
                \() ->
                    let
                        palindrome =
                            "hannah"
                    in
                        Expect.equal palindrome (String.reverse palindrome)

            -- Expect.equal is designed to be used in pipeline style, like this.
            , test "reverses a known string" <|
                \() ->
                    "ABCDEFG"
                        |> String.reverse
                        |> Expect.equal "GFEDCBA"

            -- fuzz runs the test 100 times with randomly-generated inputs!
            , fuzz string "restores the original string if you run it again" <|
                \randomlyGeneratedString ->
                    randomlyGeneratedString
                        |> String.reverse
                        |> String.reverse
                        |> Expect.equal randomlyGeneratedString
            ]
        ]

This code includes a few common things:

  • describe to add a description string to a list of tests
  • test to write a unit test
  • Expect to determine if a test should pass or fail
  • fuzz to run a function that produces a test several times with randomly-generated inputs

Check out a more complete example or a large real-world test suite for more.

Running tests locally

There are several ways you can run tests locally:

Here's how set up and run your tests using the CLI test runner.

  1. Run npm install -g elm-test if you haven't already.
  2. cd into the directory that has your elm-package.json
  3. Run elm-test init. It will create a tests directory inside this one, with some files in it.
  4. Copy all the dependencies from elm-package.json into tests/elm-package.json. These dependencies need to stay in sync, so make sure whenever you change your dependencies in your current elm-package.json, you make the same change to tests/elm-package.json.
  5. cd into tests
  6. Run elm-test TestRunner.elm

Edit Tests.elm to introduce new tests.

Happy testing!

Running tests on CI

Here are some examples of running tests on CI servers: