Testing in GitHub Actions

Quickstrom can be run in a continuous integration (CI) workflow to find problems early. Here’s a configuration for GitHub Actions that checks a website on every commit to the main branch. It’s based on Domen Kožar’s gist. 1

name: "Quickstrom integration tests"
on:
  push:
    branches:
      - main
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2.3.4

    # We use `install-nix-action` and `cachix-action` to quickly install the
    # latest Quickstrom from a binary cache.
    - uses: cachix/install-nix-action@v12
    - uses: cachix/cachix-action@v8
      with:
        name: quickstrom
    - run: nix-env -iA quickstrom -f https://github.com/quickstrom/quickstrom/tarball/main

    # We install and run Geckodriver in the background, so that we can run
    # tests using Firefox.
    - run: nix-env -i geckodriver -f https://github.com/NixOS/nixpkgs/tarball/nixos-21.05
    - run: geckodriver&

    # Finally, run tests! This assumes there's a file called
    # `example.spec.purs` in the root of the GitHub repository.
    - run: quickstrom check example.spec.purs https://example.com

Replace the placeholder paths and URLs.

Next Steps

  • You might want to run tests in Chrome instead. See Checking for instructions on using other browsers.

  • If you’d like to check multiple specs and in multiple browsers, see matrix configurations in the GitHub Actions documentation.

1

Domen Kožar wrote the original GitHub Action configuration for Cachix: https://gist.github.com/domenkozar/71135bf7aa6d50d6911fb74f4dcb4bad