| name: CI - Ruby |
| |
| on: |
| workflow_call: |
| workflow_dispatch: |
| |
| permissions: |
| contents: read |
| |
| jobs: |
| build: |
| name: Build |
| uses: ./.github/workflows/bazel.yml |
| with: |
| name: Build |
| cache-key: rb-build |
| run: bazel build //rb:selenium-devtools //rb:selenium-webdriver |
| |
| docs: |
| name: Documentation |
| needs: build |
| uses: ./.github/workflows/bazel.yml |
| with: |
| name: Documentation |
| cache-key: rb-docs |
| run: bazel run //rb:docs |
| |
| steep-check: |
| name: Type Check (Steep) |
| needs: build |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout code |
| uses: actions/checkout@v4 |
| |
| - name: Install system dependencies |
| run: sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev |
| |
| - name: Set up Ruby |
| uses: ruby/setup-ruby@v1 |
| with: |
| ruby-version: 3.2.8 |
| bundler-cache: true |
| working-directory: rb |
| |
| - name: Install RBS collection |
| working-directory: rb |
| run: bundle exec rbs collection install |
| |
| - name: Run Steep type check |
| working-directory: rb |
| run: bundle exec rake steep 2>/dev/null || (bundle exec rake steep && exit 1) |
| |
| unit-tests: |
| name: Unit Tests |
| needs: build |
| uses: ./.github/workflows/bazel.yml |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - ruby-version: 3.2.8 |
| os: ubuntu |
| - ruby-version: 3.2.8 |
| os: windows |
| - ruby-version: 3.2.8 |
| os: macos |
| - ruby-version: 3.4.3 |
| os: ubuntu |
| - ruby-version: jruby-10.0.0.0 |
| os: ubuntu |
| - ruby-version: truffleruby-24.2.1 |
| os: ubuntu |
| with: |
| name: Unit Tests (${{ matrix.ruby-version }}, ${{ matrix.os }}) |
| cache-key: rb-unit-test-${{ matrix.ruby-version }}-${{ matrix.os }} |
| os: ${{ matrix.os }} |
| ruby-version: ${{ matrix.ruby-version }} |
| run: > |
| bazel test |
| --keep_going |
| --build_tests_only |
| --test_size_filters small |
| //rb/spec/... |
| |
| integration-tests-local: |
| name: Local Tests |
| needs: build |
| uses: ./.github/workflows/bazel.yml |
| strategy: |
| fail-fast: false |
| matrix: |
| browser: |
| - chrome |
| - edge |
| - firefox |
| os: |
| - windows |
| - macos |
| exclude: |
| - browser: edge |
| os: macos |
| with: |
| name: Local Tests (${{ matrix.browser }}, ${{ matrix.os }}) |
| browser: ${{ matrix.browser }} |
| cache-key: rb-${{ matrix.browser }}-${{ matrix.os }}-test |
| os: ${{ matrix.os }} |
| run: > |
| bazel test |
| --keep_going |
| --build_tests_only |
| --flaky_test_attempts 3 |
| --local_test_jobs 1 |
| --test_size_filters large |
| --test_tag_filters ${{ matrix.browser }} |
| //rb/spec/... |
| |
| integration-tests-remote: |
| name: Remote Tests |
| needs: build |
| uses: ./.github/workflows/bazel.yml |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - browser: edge |
| os: macos |
| with: |
| name: Remote Tests (${{ matrix.browser }}, ${{ matrix.os }}) |
| browser: ${{ matrix.browser }} |
| cache-key: rb-remote-${{ matrix.browser }}-${{ matrix.os }}-test |
| os: ${{ matrix.os }} |
| java-version: 17 |
| run: > |
| bazel test |
| --keep_going |
| --build_tests_only |
| --flaky_test_attempts 3 |
| --local_test_jobs 1 |
| --test_size_filters large |
| --test_tag_filters ${{ matrix.browser }}-remote |
| //rb/spec/... |