name: Test & Build on: push: branches: ["main"] paths-ignore: - "**.md" - "ui/**" pull_request: branches: ["main"] workflow_dispatch: permissions: contents: read env: CARGO_TERM_COLOR: always jobs: test: name: Test on ${{ matrix.name }} runs-on: ${{ matrix.platform }} container: image: ${{ matrix.container }} options: --user root strategy: fail-fast: false matrix: # On Push: Linux only. On PR: All platforms. include: - platform: "ubuntu-22.04" name: "Ubuntu 22.04" - platform: "ubuntu-22.04" name: "Arch Linux (Wayland)" container: "archlinux:latest" wayland: true - platform: "windows-latest" name: "Windows" - platform: "macos-14" name: "macOS" steps: - uses: actions/checkout@v4 - name: Install Dependencies (Ubuntu) if: runner.os == 'Linux' && !matrix.wayland run: | sudo apt-get update sudo apt-get install -y libwebkit2gtk-4.1-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev - name: Install Dependencies (Arch Linux) if: matrix.wayland run: | pacman -Syu --noconfirm pacman -S --noconfirm webkit2gtk-4.1 base-devel curl wget file openssl gtk3 - name: Setup Wayland Environment (Arch) if: matrix.wayland run: | echo "WAYLAND_DISPLAY=wayland-1" >> $GITHUB_ENV echo "GDK_BACKEND=wayland" >> $GITHUB_ENV echo "XDG_SESSION_TYPE=wayland" >> $GITHUB_ENV echo "Wayland test environment configured" - name: Install Rust uses: dtolnay/rust-toolchain@stable - name: Rust Cache uses: swatinem/rust-cache@v2 with: workspaces: ./src-tauri - name: Run Tests working-directory: ./src-tauri run: cargo test --verbose - name: Build (Dev) working-directory: ./src-tauri run: cargo build --verbose