-
-
Notifications
You must be signed in to change notification settings - Fork 8.7k
141 lines (132 loc) · 4.12 KB
/
Copy pathci-python.yml
File metadata and controls
141 lines (132 loc) · 4.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
name: CI - Python
on:
workflow_call:
inputs:
smoke:
description: Smoke tests always run; callers pass false to add the full matrix
required: false
type: boolean
default: true
compile-manager:
description: Build Selenium Manager from source instead of downloading the pinned binary
required: false
type: boolean
default: false
workflow_dispatch:
inputs:
smoke:
description: Smoke tests only (default also runs the full matrix)
required: false
type: boolean
default: false
compile-manager:
description: Build Selenium Manager from source instead of downloading the pinned binary
required: false
type: boolean
default: false
permissions:
contents: read
# Two tiers, mutually exclusive by content. `smoke` runs on every event, including
# schedule, so the schedule-only flaky parser sees it. The full jobs run on schedule
# or dispatch and exclude the smoke tags, so they are the nightly complement of
# smoke rather than the whole tree.
jobs:
build:
name: Build
if: github.event_name == 'schedule' || !inputs.smoke
uses: ./.github/workflows/bazel.yml
with:
name: Build
run: |
bazel build //py:selenium-wheel //py:selenium-sdist
lint-ruff:
name: Lint (ruff)
uses: ./.github/workflows/bazel.yml
with:
name: Lint (ruff)
run: bazel run //py:ruff-check -- --no-fix
lint-mypy:
name: Lint (mypy)
uses: ./.github/workflows/bazel.yml
with:
name: Lint (mypy)
run: bazel run //py:mypy
lint-docs:
name: Lint (docs)
uses: ./.github/workflows/bazel.yml
with:
name: Lint (docs)
run: |
bazel run //py:generate-api-listing
bazel run //py:sphinx-autogen
bazel build //py:docs
unit-tests:
name: Unit Tests
if: github.event_name == 'schedule' || !inputs.smoke
uses: ./.github/workflows/bazel.yml
strategy:
fail-fast: false
matrix:
python-version: ['3.10', '3.14']
os: [ubuntu, macos, windows]
with:
name: Unit Tests (${{ matrix.python-version }}, ${{ matrix.os }})
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
run: bazel test --local_test_jobs 1 //py:unit
smoke:
name: ${{ matrix.os }}-smoke
uses: ./.github/workflows/bazel.yml
strategy:
fail-fast: false
matrix:
os: [windows, macos]
tag_filters: ["os-sensitive,se-manager,skip-rbe"]
include:
# RBE already runs the os-sensitive targets on Linux; ubuntu is here for what needs network.
- os: ubuntu
tag_filters: se-manager,skip-rbe
with:
name: ${{ matrix.os }}
needs-display: true
os: ${{ matrix.os }}
rerun-with-debug: true
download-artifact-name: targets
run: >
[ -s bazel-targets-py.txt ] || echo //py/... > bazel-targets-py.txt;
./scripts/github-actions/bazel-test-if-targets.sh
--keep_going
--flaky_test_attempts 3
--local_test_jobs 1
--build_tests_only
--skip_incompatible_explicit_targets
--pin_browsers=false
${{ inputs.compile-manager && '--manager=host' || '' }}
--test_tag_filters=${{ matrix.tag_filters }}
--target_pattern_file=bazel-targets-py.txt
browser-tests:
name: Browser Tests
if: github.event_name == 'schedule' || !inputs.smoke
uses: ./.github/workflows/bazel.yml
strategy:
fail-fast: false
matrix:
browser: [chrome, firefox, chrome-bidi, edge, chrome-grid, firefox-grid]
os: [windows]
include:
- browser: safari
os: macos
with:
name: Integration Tests (${{ matrix.browser }})
needs-display: true
os: ${{ matrix.os }}
rerun-with-debug: true
run: >
bazel test
--keep_going
--flaky_test_attempts 3
--local_test_jobs 1
--pin_browsers=false
${{ inputs.compile-manager && '--manager=host' || '' }}
--test_tag_filters=-os-sensitive,-se-manager,-skip-rbe
//py:test-${{ matrix.browser }}