diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 26aa0532..1415e7e5 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -1,346 +1,352 @@ name: Build and Test on: - push: - pull_request: - types: - - opened - - synchronize - - reopened - - ready_for_review + push: + pull_request: + types: + - opened + - synchronize + - reopened + - ready_for_review env: - CARGO_TERM_COLOR: always + CARGO_TERM_COLOR: always + RUSTFLAGS: "-Dwarnings" # Make sure CI fails on all warnings, including Clippy lints jobs: - # TODO: Add a job to run clippy - lint: - runs-on: ubuntu-latest - if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name - steps: - - uses: actions/checkout@v4 + clippy_check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Run Clippy + run: cargo clippy --all-targets --all-features + lint: + runs-on: ubuntu-latest + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name + steps: + - uses: actions/checkout@v4 - - name: Check formatting - run: cargo fmt --all -- --check - - cli: - runs-on: ubuntu-latest - if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name - steps: - - uses: actions/checkout@v4 - - name: Install cli - run: | - cd cli - cargo install --path . - mopro --help + - name: Check formatting + run: cargo fmt --all -- --check - test-ffi-halo2: - runs-on: ubuntu-latest - if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name - steps: - - uses: actions/checkout@v4 - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - - name: Run ffi halo2 tests - run: cd mopro-ffi && cargo test --features halo2 --no-default-features - test-ffi-circom: - runs-on: ubuntu-latest - if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name - steps: - - uses: actions/checkout@v4 - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - - name: Run ffi circom tests - run: cd mopro-ffi && cargo test --features circom --no-default-features - test-ffi-ashlang: - runs-on: ubuntu-latest - if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name - steps: - - uses: actions/checkout@v4 - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - - name: Run ffi ashlang tests - run: cd mopro-ffi && cargo test --features ashlang --no-default-features - setup-halo2-wasm-env: - runs-on: ubuntu-latest - if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name - outputs: - chrome-dir: ${{ steps.parsed-chrome-chromedriver-dir.outputs.chrome-dir }} - chromedriver-dir: ${{ steps.parsed-chrome-chromedriver-dir.outputs.chromedriver-dir }} - steps: - - uses: actions/checkout@v4 - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: nightly-2024-07-18 - override: true - - name: Cache wasm-pack - id: cache-wasm-pack - uses: actions/cache@v4 - with: - path: ~/.cargo/bin/wasm-pack - key: ${{ runner.os }}-wasm-pack - - name: Install wasm-pack - if: steps.cache-wasm-pack.outputs.cache-hit != 'true' - run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - - name: Setup Chrome and ChromeDriver - uses: browser-actions/setup-chrome@v1 - id: setup-chrome-chromedriver - with: - chrome-version: 130 - install-chromedriver: true - - name: Parse Chrome and ChromeDriver Directories - id: parsed-chrome-chromedriver-dir - run: | - echo "chrome-dir=$(dirname ${{ steps.setup-chrome-chromedriver.outputs.chrome-path }})" >> $GITHUB_OUTPUT - echo "chromedriver-dir=$(dirname ${{ steps.setup-chrome-chromedriver.outputs.chromedriver-path }})" >> $GITHUB_OUTPUT - - name: Cache Chrome and ChromeDriver - id: cache-chrome-chromedriver - uses: actions/cache@v4 - with: - path: | - ${{ steps.parsed-chrome-chromedriver-dir.outputs.chrome-dir }} - ${{ steps.parsed-chrome-chromedriver-dir.outputs.chromedriver-dir }} - key: ${{ runner.os }}-cache-chrome-chromedriver - - test-wasm-halo2: - runs-on: ubuntu-latest - if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name - needs: setup-halo2-wasm-env - env: - CHROME_BIN: ${{ needs.setup-halo2-wasm-env.outputs.chrome-dir }}/chrome - CHROMEDRIVER_BIN: ${{ needs.setup-halo2-wasm-env.outputs.chromedriver-dir }}/chromedriver - steps: - - uses: actions/checkout@v4 - - name: Restore cached wasm-pack - uses: actions/cache@v4 - with: - path: ~/.cargo/bin/wasm-pack - key: ${{ runner.os }}-wasm-pack - - name: Restore cached chrome and chromedriver - uses: actions/cache@v4 - with: - path: | - ${{ needs.setup-halo2-wasm-env.outputs.chrome-dir }} - ${{ needs.setup-halo2-wasm-env.outputs.chromedriver-dir }} - key: ${{ runner.os }}-cache-chrome-chromedriver - - name: Run wasm halo2 tests - run: | - echo "Override default chrome path for 'wasm-pack test'" - ln -sf $CHROME_BIN /usr/local/bin/google-chrome-stable - echo "Check override chrome version" - google-chrome-stable --version - cd mopro-wasm - wasm-pack test --chrome --chromedriver $CHROMEDRIVER_BIN --headless - test-e2e: - runs-on: ubuntu-latest - if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name - steps: - - uses: actions/checkout@v4 - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - - name: Run e2e circom tests - # TODO: Fix this custom jar thing - run: | - cd test-e2e - curl -L https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.13.0/jna-5.13.0.jar -o jna-5.13.0.jar - CLASSPATH=jna-5.13.0.jar cargo test --test circom -- --nocapture - - name: Run e2e halo2 tests - run: CLASSPATH=jna-5.13.0.jar cargo test --test halo2 -- --nocapture - build-xcframework: - runs-on: macos-latest - if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name - steps: - - uses: actions/checkout@v4 - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - - name: Build iOS xcframework - run: cd test-e2e && cargo run --bin ios - - name: Cache xcframework - id: cache-xcframework - uses: actions/cache/save@v4 - with: - path: test-e2e/MoproiOSBindings - key: ${{ github.sha }}-xcframework - build-ios-app-device: - runs-on: macos-latest - needs: build-xcframework - steps: - - uses: actions/checkout@v4 - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - - name: Restore cached xcframework - id: cache-restore-xcframework - uses: actions/cache/restore@v4 - with: - path: test-e2e/MoproiOSBindings - key: ${{ github.sha }}-xcframework - - name: Build app for device - run: xcodebuild -project ./test-e2e/ios/mopro-test.xcodeproj -scheme mopro-test -destination generic/platform=iOS build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO - build-ios-app-simulator: - runs-on: macos-latest - needs: build-xcframework - steps: - - uses: actions/checkout@v4 - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - - name: Restore cached xcframework - id: cache-restore-xcframework - uses: actions/cache/restore@v4 - with: - path: test-e2e/MoproiOSBindings - key: ${{ github.sha }}-xcframework - - name: Build app for device - run: xcodebuild -project ./test-e2e/ios/mopro-test.xcodeproj -scheme mopro-test -destination generic/platform=iOS\ Simulator build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO - test-ios-app-simulator: - runs-on: macos-14 - needs: build-xcframework - steps: - - uses: actions/checkout@v4 - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - - name: Restore cached xcframework - id: cache-restore-xcframework - uses: actions/cache/restore@v4 - with: - path: test-e2e/MoproiOSBindings - key: ${{ github.sha }}-xcframework - # to list available simulators: xcrun simctl list devices - - name: Test app in simulator - run: xcodebuild -project ./test-e2e/ios/mopro-test.xcodeproj -scheme mopro-test -destination 'platform=iOS Simulator,name=iPhone 15' test CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO - build-android-lib: - runs-on: ubuntu-latest - if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name - steps: - - uses: actions/checkout@v4 - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - - name: Build Android bindings - run: cd test-e2e && cargo run --bin android - - name: Cache android lib - id: cache-android-lib - uses: actions/cache/save@v4 - with: - path: test-e2e/MoproAndroidBindings - key: ${{ github.sha }}-android-lib - build-android-app: - runs-on: ubuntu-latest - needs: build-android-lib - steps: - - uses: actions/checkout@v4 - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true - - name: Restore cached android lib - id: cache-restore-android-lib - uses: actions/cache/restore@v4 - with: - path: test-e2e/MoproAndroidBindings - key: ${{ github.sha }}-android-lib - - name: Setup Java - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: 17 - - name: Setup Android SDK - uses: android-actions/setup-android@v2.0.10 - - name: Build android app - run: cd test-e2e/android && ./gradlew build - build-halo2-wasm-web: - runs-on: ubuntu-latest - needs: setup-halo2-wasm-env - if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name - steps: - - uses: actions/checkout@v4 - - name: Install Rust toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: nightly-2024-07-18 - - name: Restore cached wasm-pack - uses: actions/cache@v4 - with: - path: ~/.cargo/bin/wasm-pack - key: ${{ runner.os }}-wasm-pack - - name: Cache halo2 wasm circuit - id: cache-halo2-wasm-circuit - uses: actions/cache@v4 - with: - path: | - test-e2e/MoproWasmBindings - key: ${{ runner.os }}-halo2-wasm-circuit-${{ github.sha }} - - name: Build circuits for Wasm Web app - if: steps.cache-halo2-wasm-circuit.outputs.cache-hit != 'true' - run: | - cd test-e2e - echo "install rust-src component" - rustup component add rust-src --toolchain nightly-2024-07-18 - cargo run --bin web - test-halo2-wasm-web: - runs-on: ubuntu-latest - needs: - - setup-halo2-wasm-env - - build-halo2-wasm-web - env: - CHROME_BIN: ${{ needs.setup-halo2-wasm-env.outputs.chrome-dir }}/chrome - CHROMEDRIVER_BIN: ${{ needs.setup-halo2-wasm-env.outputs.chromedriver-dir }}/chromedriver - defaults: - run: - working-directory: test-e2e/web - steps: - - uses: actions/checkout@v4 - - name: Restore cached chrome and chromedriver - uses: actions/cache@v4 - with: - path: | - ${{ needs.setup-halo2-wasm-env.outputs.chrome-dir }} - ${{ needs.setup-halo2-wasm-env.outputs.chromedriver-dir }} - key: ${{ runner.os }}-cache-chrome-chromedriver - - name: Restore cached halo2 wasm circuit - uses: actions/cache@v4 - with: - path: | - test-e2e/MoproWasmBindings - key: ${{ runner.os }}-halo2-wasm-circuit-${{ github.sha }} - - name: Install dependencies - run: yarn install - - name: Run halo2-wasm-app server and test it - run: | - nohup yarn start & - for i in {1..30}; do - if curl --silent http://localhost:3000 > /dev/null; then - echo "Server is ready!" - break - fi - echo "Waiting for server..." - sleep 1 - done - yarn test + cli: + runs-on: ubuntu-latest + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name + steps: + - uses: actions/checkout@v4 + - name: Install cli + run: | + cd cli + cargo install --path . + mopro --help + + test-ffi-halo2: + runs-on: ubuntu-latest + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name + steps: + - uses: actions/checkout@v4 + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - name: Run ffi halo2 tests + run: cd mopro-ffi && cargo test --features halo2 --no-default-features + test-ffi-circom: + runs-on: ubuntu-latest + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name + steps: + - uses: actions/checkout@v4 + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - name: Run ffi circom tests + run: cd mopro-ffi && cargo test --features circom --no-default-features + test-ffi-ashlang: + runs-on: ubuntu-latest + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name + steps: + - uses: actions/checkout@v4 + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - name: Run ffi ashlang tests + run: cd mopro-ffi && cargo test --features ashlang --no-default-features + setup-halo2-wasm-env: + runs-on: ubuntu-latest + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name + outputs: + chrome-dir: ${{ steps.parsed-chrome-chromedriver-dir.outputs.chrome-dir }} + chromedriver-dir: ${{ steps.parsed-chrome-chromedriver-dir.outputs.chromedriver-dir }} + steps: + - uses: actions/checkout@v4 + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: nightly-2024-07-18 + override: true + - name: Cache wasm-pack + id: cache-wasm-pack + uses: actions/cache@v4 + with: + path: ~/.cargo/bin/wasm-pack + key: ${{ runner.os }}-wasm-pack + - name: Install wasm-pack + if: steps.cache-wasm-pack.outputs.cache-hit != 'true' + run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh + - name: Setup Chrome and ChromeDriver + uses: browser-actions/setup-chrome@v1 + id: setup-chrome-chromedriver + with: + chrome-version: 130 + install-chromedriver: true + - name: Parse Chrome and ChromeDriver Directories + id: parsed-chrome-chromedriver-dir + run: | + echo "chrome-dir=$(dirname ${{ steps.setup-chrome-chromedriver.outputs.chrome-path }})" >> $GITHUB_OUTPUT + echo "chromedriver-dir=$(dirname ${{ steps.setup-chrome-chromedriver.outputs.chromedriver-path }})" >> $GITHUB_OUTPUT + - name: Cache Chrome and ChromeDriver + id: cache-chrome-chromedriver + uses: actions/cache@v4 + with: + path: | + ${{ steps.parsed-chrome-chromedriver-dir.outputs.chrome-dir }} + ${{ steps.parsed-chrome-chromedriver-dir.outputs.chromedriver-dir }} + key: ${{ runner.os }}-cache-chrome-chromedriver + + test-wasm-halo2: + runs-on: ubuntu-latest + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name + needs: setup-halo2-wasm-env + env: + CHROME_BIN: ${{ needs.setup-halo2-wasm-env.outputs.chrome-dir }}/chrome + CHROMEDRIVER_BIN: ${{ needs.setup-halo2-wasm-env.outputs.chromedriver-dir }}/chromedriver + steps: + - uses: actions/checkout@v4 + - name: Restore cached wasm-pack + uses: actions/cache@v4 + with: + path: ~/.cargo/bin/wasm-pack + key: ${{ runner.os }}-wasm-pack + - name: Restore cached chrome and chromedriver + uses: actions/cache@v4 + with: + path: | + ${{ needs.setup-halo2-wasm-env.outputs.chrome-dir }} + ${{ needs.setup-halo2-wasm-env.outputs.chromedriver-dir }} + key: ${{ runner.os }}-cache-chrome-chromedriver + - name: Run wasm halo2 tests + run: | + echo "Override default chrome path for 'wasm-pack test'" + ln -sf $CHROME_BIN /usr/local/bin/google-chrome-stable + echo "Check override chrome version" + google-chrome-stable --version + cd mopro-wasm + wasm-pack test --chrome --chromedriver $CHROMEDRIVER_BIN --headless + test-e2e: + runs-on: ubuntu-latest + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name + steps: + - uses: actions/checkout@v4 + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - name: Run e2e circom tests + # TODO: Fix this custom jar thing + run: | + cd test-e2e + curl -L https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.13.0/jna-5.13.0.jar -o jna-5.13.0.jar + CLASSPATH=jna-5.13.0.jar cargo test --test circom -- --nocapture + - name: Run e2e halo2 tests + run: CLASSPATH=jna-5.13.0.jar cargo test --test halo2 -- --nocapture + build-xcframework: + runs-on: macos-latest + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name + steps: + - uses: actions/checkout@v4 + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - name: Build iOS xcframework + run: cd test-e2e && cargo run --bin ios + - name: Cache xcframework + id: cache-xcframework + uses: actions/cache/save@v4 + with: + path: test-e2e/MoproiOSBindings + key: ${{ github.sha }}-xcframework + build-ios-app-device: + runs-on: macos-latest + needs: build-xcframework + steps: + - uses: actions/checkout@v4 + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - name: Restore cached xcframework + id: cache-restore-xcframework + uses: actions/cache/restore@v4 + with: + path: test-e2e/MoproiOSBindings + key: ${{ github.sha }}-xcframework + - name: Build app for device + run: xcodebuild -project ./test-e2e/ios/mopro-test.xcodeproj -scheme mopro-test -destination generic/platform=iOS build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + build-ios-app-simulator: + runs-on: macos-latest + needs: build-xcframework + steps: + - uses: actions/checkout@v4 + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - name: Restore cached xcframework + id: cache-restore-xcframework + uses: actions/cache/restore@v4 + with: + path: test-e2e/MoproiOSBindings + key: ${{ github.sha }}-xcframework + - name: Build app for device + run: xcodebuild -project ./test-e2e/ios/mopro-test.xcodeproj -scheme mopro-test -destination generic/platform=iOS\ Simulator build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + test-ios-app-simulator: + runs-on: macos-14 + needs: build-xcframework + steps: + - uses: actions/checkout@v4 + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - name: Restore cached xcframework + id: cache-restore-xcframework + uses: actions/cache/restore@v4 + with: + path: test-e2e/MoproiOSBindings + key: ${{ github.sha }}-xcframework + # to list available simulators: xcrun simctl list devices + - name: Test app in simulator + run: xcodebuild -project ./test-e2e/ios/mopro-test.xcodeproj -scheme mopro-test -destination 'platform=iOS Simulator,name=iPhone 15' test CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + build-android-lib: + runs-on: ubuntu-latest + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name + steps: + - uses: actions/checkout@v4 + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - name: Build Android bindings + run: cd test-e2e && cargo run --bin android + - name: Cache android lib + id: cache-android-lib + uses: actions/cache/save@v4 + with: + path: test-e2e/MoproAndroidBindings + key: ${{ github.sha }}-android-lib + build-android-app: + runs-on: ubuntu-latest + needs: build-android-lib + steps: + - uses: actions/checkout@v4 + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - name: Restore cached android lib + id: cache-restore-android-lib + uses: actions/cache/restore@v4 + with: + path: test-e2e/MoproAndroidBindings + key: ${{ github.sha }}-android-lib + - name: Setup Java + uses: actions/setup-java@v3 + with: + distribution: "temurin" + java-version: 17 + - name: Setup Android SDK + uses: android-actions/setup-android@v2.0.10 + - name: Build android app + run: cd test-e2e/android && ./gradlew build + build-halo2-wasm-web: + runs-on: ubuntu-latest + needs: setup-halo2-wasm-env + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name + steps: + - uses: actions/checkout@v4 + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: nightly-2024-07-18 + - name: Restore cached wasm-pack + uses: actions/cache@v4 + with: + path: ~/.cargo/bin/wasm-pack + key: ${{ runner.os }}-wasm-pack + - name: Cache halo2 wasm circuit + id: cache-halo2-wasm-circuit + uses: actions/cache@v4 + with: + path: | + test-e2e/MoproWasmBindings + key: ${{ runner.os }}-halo2-wasm-circuit-${{ github.sha }} + - name: Build circuits for Wasm Web app + if: steps.cache-halo2-wasm-circuit.outputs.cache-hit != 'true' + run: | + cd test-e2e + echo "install rust-src component" + rustup component add rust-src --toolchain nightly-2024-07-18 + cargo run --bin web + test-halo2-wasm-web: + runs-on: ubuntu-latest + needs: + - setup-halo2-wasm-env + - build-halo2-wasm-web + env: + CHROME_BIN: ${{ needs.setup-halo2-wasm-env.outputs.chrome-dir }}/chrome + CHROMEDRIVER_BIN: ${{ needs.setup-halo2-wasm-env.outputs.chromedriver-dir }}/chromedriver + defaults: + run: + working-directory: test-e2e/web + steps: + - uses: actions/checkout@v4 + - name: Restore cached chrome and chromedriver + uses: actions/cache@v4 + with: + path: | + ${{ needs.setup-halo2-wasm-env.outputs.chrome-dir }} + ${{ needs.setup-halo2-wasm-env.outputs.chromedriver-dir }} + key: ${{ runner.os }}-cache-chrome-chromedriver + - name: Restore cached halo2 wasm circuit + uses: actions/cache@v4 + with: + path: | + test-e2e/MoproWasmBindings + key: ${{ runner.os }}-halo2-wasm-circuit-${{ github.sha }} + - name: Install dependencies + run: yarn install + - name: Run halo2-wasm-app server and test it + run: | + nohup yarn start & + for i in {1..30}; do + if curl --silent http://localhost:3000 > /dev/null; then + echo "Server is ready!" + break + fi + echo "Waiting for server..." + sleep 1 + done + yarn test