Add WASI support for server-side rendering. #2540
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Main Checks | |
on: | |
pull_request: | |
paths: | |
- '.github/workflows/main-checks.yml' | |
- 'ci/**' | |
- 'packages/**/*' | |
- 'Cargo.toml' | |
- 'Cargo.lock' | |
push: | |
branches: [master] | |
jobs: | |
spell_check: | |
name: spellcheck | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Check spelling | |
run: | | |
sudo apt-get install aspell | |
ci/spellcheck.sh list | |
doc_tests: | |
name: Documentation Tests | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
# for wasm-bindgen-cli, always use stable rust | |
- name: Setup toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: stable | |
- name: Install wasm-bindgen-cli | |
shell: bash | |
run: ./ci/install-wasm-bindgen-cli.sh | |
- name: Setup toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: nightly | |
targets: wasm32-unknown-unknown | |
- uses: browser-actions/setup-geckodriver@latest | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- uses: nanasess/setup-chromedriver@v2 | |
- name: Run doctest | |
run: | | |
ls packages | xargs -I {} \ | |
cargo test \ | |
-p {} \ | |
--doc \ | |
--all-features \ | |
--target wasm32-unknown-unknown | |
integration_tests: | |
name: Integration Tests on ${{ matrix.toolchain }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
toolchain: | |
- 1.76.0 | |
- stable | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
# for wasm-bindgen-cli, always use stable rust | |
- name: Setup toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: stable | |
- name: Install wasm-bindgen-cli | |
shell: bash | |
run: ./ci/install-wasm-bindgen-cli.sh | |
- name: Setup toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.toolchain }} | |
targets: wasm32-unknown-unknown | |
- uses: browser-actions/setup-geckodriver@latest | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- uses: nanasess/setup-chromedriver@v2 | |
- name: Run tests - yew | |
run: | | |
cd packages/yew | |
CHROMEDRIVER=$(which chromedriver) cargo test --features csr,hydration,ssr --target wasm32-unknown-unknown | |
GECKODRIVER=$(which geckodriver) cargo test --features csr,hydration,ssr --target wasm32-unknown-unknown | |
- name: Run tests - yew-router | |
run: | | |
cd packages/yew-router | |
CHROMEDRIVER=$(which chromedriver) cargo test --target wasm32-unknown-unknown | |
GECKODRIVER=$(which geckodriver) cargo test --target wasm32-unknown-unknown | |
unit_tests: | |
name: Unit Tests on ${{ matrix.toolchain }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
toolchain: | |
- 1.76.0 | |
- stable | |
- nightly | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.toolchain }} | |
- uses: Swatinem/rust-cache@v2 | |
- name: Run native tests | |
env: | |
# workaround for lack of ternary operator | |
# see https://github.com/orgs/community/discussions/25725 | |
RUSTFLAGS: ${{ matrix.toolchain == 'nightly' && '--cfg nightly_yew' || '' }} | |
run: ls packages | grep -v "^yew$" | xargs -I {} cargo test --all-targets -p {} | |
- name: Run native tests for yew | |
env: | |
# workaround for lack of ternary operator | |
# see https://github.com/orgs/community/discussions/25725 | |
RUSTFLAGS: ${{ matrix.toolchain == 'nightly' && '--cfg nightly_yew' || '' }} | |
run: cargo test -p yew --all-features | |
test-lints: | |
name: Test lints on nightly | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: nightly | |
- uses: Swatinem/rust-cache@v2 | |
- name: Run tests | |
env: | |
RUSTFLAGS: --cfg nightly_yew --cfg yew_lints | |
run: cargo test -p yew-macro test_html_lints | |
unit_tests_wasi: | |
name: Unit Tests (WASI) on ${{ matrix.toolchain }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
toolchain: | |
- stable | |
- nightly | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.toolchain }} | |
target: wasm32-wasip1 | |
- name: Install wasmtime | |
run: | | |
wget https://github.com/bytecodealliance/wasmtime/releases/download/v24.0.0/wasmtime-v24.0.0-x86_64-linux.tar.xz | |
tar xf wasmtime-v24.0.0-x86_64-linux.tar.xz | |
mv wasmtime-v24.0.0-x86_64-linux/wasmtime ~/wasmtime | |
rm -rf wasmtime-v24.0.0-x86_64-linux.tar.xz wasmtime-v24.0.0-x86_64-linux | |
chmod +x ~/wasmtime | |
mv ~/wasmtime /usr/local/bin | |
source ~/.bashrc | |
- uses: Swatinem/rust-cache@v2 | |
- name: Run WASI tests for yew | |
run: | | |
RUST_LOG=info | |
cargo test --features ssr,hydration --target wasm32-wasip1 -p yew | |
example-runnable-tests-on-wasi: | |
name: Example Runnable Tests on WASI | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
package: | |
- wasi_ssr_module | |
toolchain: | |
- stable | |
- nightly | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.toolchain }} | |
target: wasm32-wasip1 | |
- name: Install wasmtime | |
run: | | |
wget https://github.com/bytecodealliance/wasmtime/releases/download/v24.0.0/wasmtime-v24.0.0-x86_64-linux.tar.xz | |
tar xf wasmtime-v24.0.0-x86_64-linux.tar.xz | |
mv wasmtime-v24.0.0-x86_64-linux/wasmtime ~/wasmtime | |
rm -rf wasmtime-v24.0.0-x86_64-linux.tar.xz wasmtime-v24.0.0-x86_64-linux | |
chmod +x ~/wasmtime | |
mv ~/wasmtime /usr/local/bin | |
source ~/.bashrc | |
- uses: Swatinem/rust-cache@v2 | |
- name: Build and run ${{ matrix.package }} | |
run: | | |
cargo build --target wasm32-wasip1 -p ${{ matrix.package }} | |
wasmtime -W unknown-imports-trap=y target/wasm32-wasip1/debug/${{ matrix.package }}.wasm |