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 --pin_browsers=true //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 --pin_browsers=true //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 --pin_browsers=true //py:common-${{ matrix.browser }} //py:test-${{ matrix.browser }}