name: CI
on:
pull_request:
push:
branches:
- main
- master
jobs:
rust-and-wasm:
name: Rust / Wasm Checks
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
targets: wasm32-unknown-unknown
- name: Rust format check
run: cargo fmt --all -- --check
- name: Rust lint check
run: cargo clippy --workspace --all-targets -- -D warnings
- name: Rust unit tests
run: cargo test --lib
- name: Wasm examples build check
run: cargo check --examples --target wasm32-unknown-unknown
- name: Demo wasm build check
run: cargo check --manifest-path demo/Cargo.toml --target wasm32-unknown-unknown
trunk-build:
name: Trunk Build Smoke
runs-on: ubuntu-latest
needs: rust-and-wasm
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown
- name: Install trunk
run: cargo install trunk --locked
- name: Build demo with trunk
run: |
cd demo
trunk build
browser-e2e:
name: Browser E2E
runs-on: ubuntu-latest
needs: trunk-build
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "npm"
- name: Install JS dependencies
run: npm ci
- name: Install trunk
run: cargo install trunk --locked
- name: Install wasm-bindgen-cli
run: cargo install wasm-bindgen-cli --version 0.2.117 --locked
- name: Install Playwright browser
run: npx playwright install --with-deps chromium
- name: Run browser e2e
run: npm run test:browser:e2e