Skip to content

Add Phase 5 cross-adapter verification suite (PR 18) #1536

Add Phase 5 cross-adapter verification suite (PR 18)

Add Phase 5 cross-adapter verification suite (PR 18) #1536

Workflow file for this run

name: "Run Tests"
permissions:
contents: read
on:
push:
branches: [main]
pull_request:
branches: [main, "feature/**"]
jobs:
test-rust:
name: cargo test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Retrieve Rust version
id: rust-version
run: echo "rust-version=$(grep '^rust ' .tool-versions | awk '{print $2}')" >> $GITHUB_OUTPUT
shell: bash
- name: Retrieve Viceroy version
id: viceroy-version
# `.tool-versions` is the single source of truth so this workflow and
# `.github/actions/setup-integration-test-env/action.yml` can't drift.
# The pin matters because upstream Viceroy > v0.16.4 has bumped MSRV
# beyond the rustc pin in `rust-toolchain.toml`.
run: echo "viceroy-version=$(grep '^viceroy ' .tool-versions | awk '{print $2}')" >> $GITHUB_OUTPUT
shell: bash
- name: Set up Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ steps.rust-version.outputs.rust-version }}
target: wasm32-wasip1
cache-shared-key: cargo-${{ runner.os }}
- name: Cache Viceroy binary
id: cache-viceroy
uses: actions/cache@v4
with:
path: ~/.cargo/bin/viceroy
key: viceroy-${{ runner.os }}-v${{ steps.viceroy-version.outputs.viceroy-version }}
- name: Install Viceroy
if: steps.cache-viceroy.outputs.cache-hit != 'true'
run: cargo install --git https://github.com/fastly/Viceroy --tag v${{ steps.viceroy-version.outputs.viceroy-version }} viceroy
- name: Run tests
run: cargo test-fastly
test-axum:
name: cargo test (axum native)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Retrieve Rust version
id: rust-version
run: echo "rust-version=$(grep '^rust ' .tool-versions | awk '{print $2}')" >> $GITHUB_OUTPUT
shell: bash
- name: Set up Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ steps.rust-version.outputs.rust-version }}
cache-shared-key: cargo-${{ runner.os }}
- name: Build Axum adapter
run: cargo build -p trusted-server-adapter-axum
- name: Run Axum adapter tests
run: cargo test-axum
- name: Run HTML processor benchmarks (smoke)
# -- --test runs each benchmark as a regular test (no timing harness) so CI stays fast
run: cargo bench -p trusted-server-core --bench html_processor_bench -- --test
test-cloudflare:
name: cargo check (cloudflare native + wasm32-unknown-unknown)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Retrieve Rust version
id: rust-version
run: echo "rust-version=$(grep '^rust ' .tool-versions | awk '{print $2}')" >> $GITHUB_OUTPUT
shell: bash
- name: Set up Rust toolchain (native + wasm32-unknown-unknown)
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ steps.rust-version.outputs.rust-version }}
target: wasm32-unknown-unknown
cache-shared-key: cargo-${{ runner.os }}
- name: Check Cloudflare adapter (native host)
run: cargo check -p trusted-server-adapter-cloudflare
- name: Check Cloudflare adapter (wasm32-unknown-unknown)
run: cargo check -p trusted-server-adapter-cloudflare --target wasm32-unknown-unknown --features cloudflare
- name: Run Cloudflare adapter tests (native host)
run: cargo test-cloudflare
test-parity:
name: cargo test (cross-adapter parity)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Retrieve Rust version
id: rust-version
run: echo "rust-version=$(grep '^rust ' .tool-versions | awk '{print $2}')" >> $GITHUB_OUTPUT
shell: bash
- name: Set up Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ steps.rust-version.outputs.rust-version }}
components: clippy
cache-shared-key: cargo-${{ runner.os }}
- name: Run cross-adapter parity tests
run: cargo test --manifest-path crates/integration-tests/Cargo.toml --test parity
- name: Clippy (parity test crate)
run: cargo clippy --manifest-path crates/integration-tests/Cargo.toml --all-targets -- -D warnings
test-typescript:
name: vitest
runs-on: ubuntu-latest
defaults:
run:
working-directory: crates/js/lib
steps:
- uses: actions/checkout@v4
- name: Retrieve Node.js version
id: node-version
working-directory: .
run: echo "node-version=$(grep '^nodejs ' .tool-versions | awk '{print $2}')" >> $GITHUB_OUTPUT
shell: bash
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ steps.node-version.outputs.node-version }}
cache: "npm"
cache-dependency-path: crates/js/lib/package.json
- name: Install dependencies
run: npm ci
- name: Build bundle
run: npm run build
- name: Run unit tests
run: npm test -- --run