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 needs: build runs-on: ubuntu-latest steps: - name: Checkout source tree uses: actions/checkout@v4 - name: Set up Python 3.9 uses: actions/setup-python@v4 with: python-version: 3.9 - name: Install dependencies run: | python -m pip install --upgrade pip pip install tox==4.6.4 - name: Test with tox run: tox -c py/tox.ini env: TOXENV: docs lint: name: Lint needs: build runs-on: ubuntu-latest steps: - name: Checkout source tree uses: actions/checkout@v4 - name: Set up Python 3.9 uses: actions/setup-python@v4 with: python-version: 3.9 - name: Install dependencies run: | python -m pip install --upgrade pip pip install tox==4.6.4 - name: Test with tox run: tox -c py/tox.ini env: # If this fails, it will exit. Local work should be using `tox -e linting` prior to committing. # the linting-ci recipe exists solely for CI and will not attempt to rewrite any files in-place etc. TOXENV: linting-ci mypy: name: Mypy needs: build runs-on: ubuntu-latest steps: - name: Checkout source tree uses: actions/checkout@v4 - name: Set up Python 3.9 uses: actions/setup-python@v4 with: python-version: 3.9 - name: Install dependencies run: | python -m pip install --upgrade pip pip install tox==4.6.4 - name: Test with tox run: | tox -c py/tox.ini -- --cobertura-xml-report ci || true bash <(curl -s https://codecov.io/bash) -f py/ci/cobertura.xml env: TOXENV: mypy remote-tests: name: Remote Tests needs: build uses: ./.github/workflows/bazel.yml strategy: fail-fast: false matrix: include: - browser: firefox 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 bazel test --local_test_jobs 1 --flaky_test_attempts 3 //py:test-${{ matrix.browser }} safari-tests: 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:test-${{ matrix.browser }}