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 uses the WebdriverIO example we previously built together and
GitHub Actions.
This means the following assumptions:
- The Tauri application is in the repository root and the binary builds when running
cargo build --release
. - The WebDriverIO test runner is in the
webdriver/webdriverio
directory and runs whenyarn 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 toon: [push]
# the name of our workflowname: WebDriver
jobs: # a single job named test test: # the display name of 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 libayatana-appindicator3-dev libwebkit2gtk-4.0-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
© 2024 Tauri Contributors. CC-BY / MIT