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.64.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.64.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