Skip to content

Add integration testing with testcontainers and Playwright #1

Add integration testing with testcontainers and Playwright

Add integration testing with testcontainers and Playwright #1

name: "Integration Tests"
permissions:
contents: read
on:
push:
branches: [main]
pull_request:
branches: [main]
paths:
- "crates/integration-tests/**"
- "crates/common/**"
- "crates/fastly/**"
- ".github/workflows/integration-tests.yml"
jobs:
integration-tests:
name: integration tests
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 }}
target: wasm32-wasip1
cache-shared-key: cargo-${{ runner.os }}
- name: Get Viceroy cache key
id: viceroy-rev
run: echo "sha=$(git ls-remote https://github.com/fastly/Viceroy HEAD | cut -f1)" >> $GITHUB_OUTPUT
- name: Cache Viceroy binary
id: cache-viceroy
uses: actions/cache@v4
with:
path: ~/.cargo/bin/viceroy
key: viceroy-${{ runner.os }}-${{ steps.viceroy-rev.outputs.sha }}
- name: Install Viceroy
if: steps.cache-viceroy.outputs.cache-hit != 'true'
run: cargo install --git https://github.com/fastly/Viceroy viceroy
- name: Build WASM binary
run: cargo build --bin trusted-server-fastly --release --target wasm32-wasip1
- name: Build WordPress test container
run: |
docker build -t test-wordpress:latest \
crates/integration-tests/fixtures/frameworks/wordpress/
- name: Build Next.js test container
run: |
docker build -t test-nextjs:latest \
crates/integration-tests/fixtures/frameworks/nextjs/
- name: Run integration tests
run: cargo test -p integration-tests --target x86_64-unknown-linux-gnu
env:
WASM_BINARY_PATH: target/wasm32-wasip1/release/trusted-server-fastly.wasm
RUST_LOG: info