name: Test Wasm Version on: push: branches: ["main"] pull_request: branches: ["main"] types: [opened, synchronize] concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true env: CARGO_TERM_COLOR: always REVIVE_WASM_INSTALL_DIR: ${{ github.workspace }}/target/wasm32-unknown-emscripten/release jobs: build: runs-on: ubuntu-24.04 defaults: run: shell: bash steps: - uses: actions/checkout@v4 - uses: actions-rust-lang/setup-rust-toolchain@v1 with: target: wasm32-unknown-emscripten # without this it will override our rust flags rustflags: "" - name: Download Host LLVM uses: ./.github/actions/get-llvm with: target: x86_64-unknown-linux-gnu - name: Download Wasm LLVM uses: ./.github/actions/get-llvm with: target: wasm32-unknown-emscripten - name: Install emsdk uses: ./.github/actions/get-emsdk - name: Set LLVM Environment Variables run: | echo "LLVM_SYS_181_PREFIX=$(pwd)/llvm-x86_64-unknown-linux-gnu" >> $GITHUB_ENV echo "REVIVE_LLVM_TARGET_PREFIX=$(pwd)/llvm-wasm32-unknown-emscripten" >> $GITHUB_ENV - name: Build Revive run: | source emsdk/emsdk_env.sh make install-wasm - uses: actions/upload-artifact@v4 with: name: revive-wasm path: | ${{ env.REVIVE_WASM_INSTALL_DIR }}/resolc.js ${{ env.REVIVE_WASM_INSTALL_DIR }}/resolc.wasm ${{ env.REVIVE_WASM_INSTALL_DIR }}/resolc_web.js retention-days: 1 test: needs: build strategy: matrix: os: ["ubuntu-24.04", "macos-14", "windows-2022"] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - name: Create Target Directory run: mkdir -p ${{ env.REVIVE_WASM_INSTALL_DIR }} - name: Download Artifact uses: actions/download-artifact@v4 with: name: revive-wasm path: ${{ env.REVIVE_WASM_INSTALL_DIR }} - name: Set Up Node.js uses: actions/setup-node@v3 with: node-version: "20" - name: Install Node Packages run: npm install - name: Test emscripten run: | echo "Running tests for ${{ matrix.os }}" npm run test:wasm - name: Test @parity/resolc run: | echo "Running tests for ${{ matrix.os }}" npm run -w js/resolc test - name: Run Playwright tests run: | cd js/emscripten npx playwright install --with-deps npx playwright test