tauri/docs/guides/webdriver/ci.md
Kasper 4f9c9e6307
Restructure docs (#3180)
Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
2022-01-07 09:30:23 -03:00

3.2 KiB

title
Continuous Integration

Utilizing Linux and some programs to create a fake display, it is possible to run WebDriver tests with tauri-driver on your CI. The following example will use the WebdriverIO example we previously built together and GitHub Actions.

This means the following assumptions:

  1. The Tauri application is in the repository root and the binary builds when running cargo build --release.
  2. The WebDriverIO test runner is in the webdriver/webdriverio directory and runs when yarn test is used in that directory.

The following is a commented GitHub Actions workflow file at .github/workflows/webdriver.yml

# run this action when the repository is pushed to
on: [ push ]

# the name of our workflow
name: WebDriver

jobs:
  # a single job named test
  test:
    # the display name the test job
    name: WebDriverIO Test Runner

    # we want to run on the latest linux environment
    runs-on: ubuntu-latest

    # the steps our job runs **in order**
    steps:
      # checkout the code on the workflow runner
      - uses: actions/checkout@v2

      # install system dependencies that Tauri needs to compile on Linux.
      # note the extra dependencies for `tauri-driver` to run which are `webkit2gtk-driver` and  `xvfb`
      - name: Tauri dependencies
        run: >-
          sudo apt-get update &&
          sudo apt-get install -y
          libgtk-3-dev
          libgtksourceview-3.0-dev
          webkit2gtk-4.0
          libappindicator3-dev
          webkit2gtk-driver
          xvfb          

      # install the latest Rust stable
      - name: Rust stable
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable

      # we run our rust tests before the webdriver tests to avoid testing a broken application
      - name: Cargo test
        uses: actions-rs/cargo@v1
        with:
          command: test

      # build a release build of our application to be used during our WebdriverIO tests
      - name: Cargo build
        uses: actions-rs/cargo@v1
        with:
          command: build
          args: --release

      # install the latest stable node version at the time of writing
      - name: Node v16
        uses: actions/setup-node@v2
        with:
          node-version: 16.x

      # install our Node.js dependencies with Yarn
      - name: Yarn install
        run: yarn install
        working-directory: webdriver/webdriverio

      # install the latest version of `tauri-driver`.
      # note: the tauri-driver version is independent of any other Tauri versions
      - name: Install tauri-driver
        uses: actions-rs/cargo@v1
        with:
          command: install
          args: tauri-driver

      # run the WebdriverIO test suite.
      # we run it through `xvfb-run` (the dependency we installed earlier) to have a fake
      # display server which allows our application to run headless without any changes to the code
      - name: WebdriverIO
        run: xvfb-run yarn test
        working-directory: webdriver/webdriverio