# Exercise the native print host and all UI tests on PRs; the broad FreeBSD/ARM64 gates # stay on their existing nightly/release schedule. name: Printing on: pull_request: paths: - 'Cargo*' - 'apps/wordcraft/**' - 'apps/wordcraft-web/**' - 'crates/ui-egui/**' - '.github/workflows/printing.yml' push: branches: [main] paths: - 'Cargo*' - 'apps/wordcraft/**' - 'apps/wordcraft-web/**' - 'crates/ui-egui/**' - '.github/workflows/printing.yml' workflow_dispatch: permissions: contents: read concurrency: group: printing-${{ github.ref }} cancel-in-progress: true jobs: native: name: Print (${{ matrix.os }}) strategy: fail-fast: false matrix: os: [ubuntu-24.04, windows-latest, macos-latest] runs-on: ${{ matrix.os }} timeout-minutes: 90 env: CARGO_TERM_COLOR: always CARGO_INCREMENTAL: '0' steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install Linux build and software-rendering dependencies if: runner.os == 'Linux' run: | sudo apt-get update sudo apt-get install -y --no-install-recommends \ pkg-config libxkbcommon-dev libwayland-dev libx11-dev libxcursor-dev libxrandr-dev \ libxi-dev libgtk-3-dev libfontconfig1-dev libfreetype-dev libvulkan1 mesa-vulkan-drivers - uses: dtolnay/rust-toolchain@stable with: components: rustfmt, clippy targets: wasm32-unknown-unknown - uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2 with: save-if: ${{ github.ref == 'refs/heads/main' }} - name: Formatting run: cargo fmt --all -- --check - name: Native app and UI Clippy run: cargo clippy -p wordcraft -p wordcraft-ui-egui --all-targets --locked -- -D warnings - name: Native app and UI tests run: cargo test -p wordcraft -p wordcraft-ui-egui --locked - name: Browser compatibility if: runner.os == 'Linux' run: cargo check -p wordcraft-web --target wasm32-unknown-unknown --locked