name: Test
on:
workflow_call:
env:
CARGO_TERM_COLOR: always
jobs:
curl-backend:
name: Curl backend (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
shared-key: test-${{ matrix.os }}
- uses: taiki-e/install-action@nextest
- name: Run curl backend tests
run: cargo nextest run --no-default-features --features curl-backend --workspace
- name: Run curl backend doctests
run: cargo test --doc --no-default-features --features curl-backend --workspace
- name: Run curl backend tests with websockets
if: matrix.os == 'ubuntu-latest'
run: cargo nextest run --no-default-features --features curl-backend,ws,rustls --workspace
hyper-backend:
name: Hyper backend (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
shared-key: test-${{ matrix.os }}
- uses: taiki-e/install-action@nextest
- name: Run hyper backend tests (rustls)
run: cargo nextest run --no-default-features --features hyper-backend,rustls,ws --workspace
- name: Run hyper backend tests (native-tls)
run: cargo nextest run --no-default-features --features hyper-backend,native-tls,ws --workspace
- name: Run hyper backend doctests
run: cargo test --doc --no-default-features --features hyper-backend,rustls,ws --workspace
wasm-linux:
name: wasm-pack (Linux - ${{ matrix.browser }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
browser: [chrome, firefox]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
shared-key: test-wasm
- name: Install wasm-pack
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
- name: Add wasm target
run: rustup target add wasm32-unknown-unknown
- name: wasm-pack test
run: bash scripts/test-wasm.sh ${{ matrix.browser }}
wasm-macos:
name: wasm-pack (macOS Safari)
runs-on: macos-15-intel
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
shared-key: test-wasm
- name: Install wasm-pack
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
- name: Add wasm target
run: rustup target add wasm32-unknown-unknown
- name: Enable safaridriver
run: sudo safaridriver --enable
- name: wasm-pack test (Safari)
run: bash scripts/test-wasm.sh safari
apple-backend:
name: Apple backend (macOS)
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
shared-key: test-macos
- uses: taiki-e/install-action@nextest
- name: Run apple backend suite
run: bash scripts/test-apple.sh
ios-simulator:
name: iOS simulator
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-apple-ios-sim
- uses: Swatinem/rust-cache@v2
with:
shared-key: test-ios-simulator
- name: Run the suite on a simulator
run: bash scripts/test-ios.sh
workerd:
name: Cloudflare Worker (workerd via wrangler)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown
- uses: Swatinem/rust-cache@v2
with:
shared-key: test-workerd
workspaces: |
. -> target
tests/workerd -> target
- uses: taiki-e/install-action@v2
with:
tool: skyzen-cli
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Install wrangler
run: npm install --global wrangler@4
- name: Run zenwave inside workerd
run: bash scripts/test-workerd.sh