| name: CI - Python |
| |
| on: |
| workflow_call: |
| workflow_dispatch: |
| |
| jobs: |
| build: |
| name: Build |
| uses: ./.github/workflows/bazel.yml |
| with: |
| name: Build |
| cache-key: py-build |
| run: | |
| bazel build //py:selenium-wheel //py:selenium-sdist |
| |
| docs: |
| name: Documentation |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout source tree |
| uses: actions/checkout@v4 |
| - name: Set up Python 3.10 |
| uses: actions/setup-python@v6 |
| with: |
| python-version: '3.10' |
| - name: Install dependencies |
| run: | |
| python -m pip install --upgrade pip |
| pip install tox |
| - name: Generate docs |
| run: | |
| tox -c py/tox.ini |
| env: |
| TOXENV: docs |
| |
| typing: |
| name: Type Checker |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout source tree |
| uses: actions/checkout@v4 |
| - name: Set up Python 3.10 |
| uses: actions/setup-python@v6 |
| with: |
| python-version: '3.10' |
| - name: Install dependencies |
| run: | |
| python -m pip install --upgrade pip |
| pip install tox |
| - name: Run type checking |
| run: | |
| tox -c py/tox.ini || true |
| env: |
| TOXENV: mypy |
| |
| unit-tests: |
| name: Unit Tests |
| needs: build |
| uses: ./.github/workflows/bazel.yml |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - python-version: '3.10' |
| os: ubuntu |
| - python-version: '3.10' |
| os: macos |
| - python-version: '3.14' |
| os: ubuntu |
| - python-version: '3.14' |
| os: macos |
| with: |
| name: Unit Tests (${{ matrix.python-version }}, ${{ matrix.os }}) |
| os: ${{ matrix.os }} |
| python-version: ${{ matrix.python-version }} |
| cache-key: python-unit-test-${{ matrix.python-version }} |
| run: | |
| bazel test //py:unit |
| |
| remote-tests: |
| name: Remote Tests |
| needs: build |
| uses: ./.github/workflows/bazel.yml |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - browser: chrome |
| with: |
| name: Integration Tests (remote, ${{ matrix.browser }}) |
| browser: ${{ matrix.browser }} |
| cache-key: py-remote-${{ matrix.browser }} |
| run: | |
| bazel test --local_test_jobs 1 --flaky_test_attempts 3 //py:test-remote |
| |
| browser-tests: |
| name: Browser Tests |
| needs: build |
| uses: ./.github/workflows/bazel.yml |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - browser: chrome |
| os: ubuntu |
| - browser: edge |
| os: ubuntu |
| - browser: firefox |
| os: ubuntu |
| with: |
| name: Integration Tests (${{ matrix.browser }}, ${{ matrix.os }}) |
| browser: ${{ matrix.browser }} |
| os: ${{ matrix.os }} |
| cache-key: py-browser-${{ matrix.browser }} |
| run: | |
| bazel test --local_test_jobs 1 --flaky_test_attempts 3 //py:common-${{ matrix.browser }}-bidi //py:test-${{ matrix.browser }} |
| |
| browser-tests-windows: |
| name: Browser Tests |
| needs: build |
| uses: ./.github/workflows/bazel.yml |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - browser: chrome |
| os: windows |
| - browser: edge |
| os: windows |
| with: |
| name: Integration Tests (${{ matrix.browser }}, ${{ matrix.os }}) |
| browser: ${{ matrix.browser }} |
| os: ${{ matrix.os }} |
| cache-key: py-browser-${{ matrix.browser }} |
| run: | |
| fsutil 8dot3name set 0 |
| bazel test --local_test_jobs 1 --flaky_test_attempts 3 //py:common-${{ matrix.browser }}-bidi //py:test-${{ matrix.browser }} |
| |
| browser-tests-macos: |
| name: Browser Tests |
| needs: build |
| uses: ./.github/workflows/bazel.yml |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - browser: safari |
| os: macos |
| with: |
| name: Integration Tests (${{ matrix.browser }}, ${{ matrix.os }}) |
| browser: ${{ matrix.browser }} |
| os: ${{ matrix.os }} |
| cache-key: py-browser-${{ matrix.browser }} |
| run: | |
| bazel test --local_test_jobs 1 --flaky_test_attempts 3 //py:common-${{ matrix.browser }} //py:test-${{ matrix.browser }} |