Skip to content

Commit 2e80798

Browse files
Merge branch 'trunk' into remote-value
2 parents bb8ec12 + 044097e commit 2e80798

File tree

180 files changed

+2448
-13170
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

180 files changed

+2448
-13170
lines changed

.bazelrc.remote

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ build:remote --disk_cache=
3131
build:remote --incompatible_enable_cc_toolchain_resolution
3232
build:remote --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1
3333
test:remote --test_env=DISPLAY=:99.0
34-
test:remote --test_tag_filters=-skip-remote,-remote
34+
test:remote --test_tag_filters=-exclusive-if-local,-skip-remote,-remote
3535

3636
# Env vars we can hard code
3737
build:remote --action_env=HOME=/home/dev

.github/workflows/ci-ruby.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ jobs:
111111
browser: ${{ matrix.browser }}
112112
cache-key: rb-remote-${{ matrix.browser }}-${{ matrix.os }}-test
113113
os: ${{ matrix.os }}
114-
java-version: 11
114+
java-version: 17
115115
run: >
116116
bazel test
117117
--keep_going

.github/workflows/pre-release.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,17 +97,19 @@ jobs:
9797
**Warning: Manually update the changelogs before merging**
9898
9999
This PR:
100-
* Updates Rust version for Selenium Manager release
101100
* Updates Pinned browser version to coincide with new CDP release
102101
* Adds support for new CDP version and removes old CDP version
103102
* Selenium Manager references the new Selenium Manager release
104103
* Updates Maven Dependencies
105104
* Adds new authors to authors file
106105
* Updates all versions for all bindings
107106
* Generates *rough* change logs for each bindings (please tidy them up before merging this)
107+
* Not all commits need to be in the change log — users do not need to see anything about building or testing Selenium
108+
* Remove references to updating versions including nightly
109+
* The code now outputs the complete body of the commit message; make sure the changelog message is complete and correct
108110
109-
- Auto-generated by [create-pull-request][1]
111+
- This PR was auto-generated by workflow run: [release-preparation][1]
110112
111-
[1]: https://github.com/peter-evans/create-pull-request
113+
[1]: https://github.com/SeleniumHQ/selenium/actions/runs/${{ github.run_id }}
112114
labels: C-build
113115
draft: true

AUTHORS

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ abidema <[email protected]>
1111
Adam Dangoor <[email protected]>
1212
Adam Demuri <[email protected]>
1313
Adam Goucher <[email protected]>
14+
Adam Halbrock <[email protected]>
1415
Adam Smith <[email protected]>
1516
AdamPDotty <[email protected]>
1617
Adi Roiban <[email protected]>
@@ -282,6 +283,7 @@ EwaMarek <[email protected]>
282283
283284
Felipe Knorr Kuhn <[email protected]>
284285
Fenil Mehta <[email protected]>
286+
FloKNetcare <[email protected]>
285287
Florian Apolloner <[email protected]>
286288
Florian LOPES <[email protected]>
287289
Florian Mutter <[email protected]>
@@ -454,6 +456,7 @@ John J. Barton <[email protected]>
454456
John Pelly <[email protected]>
455457
456458
459+
Jolyon Pawlyn <[email protected]>
457460
458461
Jon Dufresne <[email protected]>
459462
Jon Spalding
@@ -685,6 +688,7 @@ orangeudav <[email protected]>
685688
Oscar Devora <[email protected]>
686689
687690
Paladin Wang <[email protected]>
691+
688692
Palmer Bandy <[email protected]>
689693
Pat Tullmann <[email protected]>
690694
Patrice Jaton <[email protected]>
@@ -744,6 +748,7 @@ Robert Fletcher <[email protected]>
744748
Roberto Rivera <[email protected]>
745749
Robin Stocker <[email protected]>
746750
Rod McNew <[email protected]>
751+
Romain Tartière <[email protected]>
747752
Roman Yurchak <[email protected]>
748753
Roman Yurchak <[email protected]>
749754
Roman Zoller <[email protected]>

MODULE.bazel

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -172,55 +172,56 @@ maven.install(
172172
artifacts = [
173173
"com.beust:jcommander:1.82",
174174
"com.github.javaparser:javaparser-core:3.26.3",
175-
"com.github.spotbugs:spotbugs:4.9.1",
175+
"com.github.spotbugs:spotbugs:4.9.3",
176176
"com.github.stephenc.jcip:jcip-annotations:1.0-1",
177+
"com.google.code.findbugs:jsr305:3.0.2",
177178
"com.google.code.gson:gson:2.12.1",
178-
"com.google.guava:guava:33.4.0-jre",
179+
"com.google.guava:guava:33.4.5-jre",
179180
"com.google.auto:auto-common:1.2.2",
180181
"com.google.auto.service:auto-service:1.1.1",
181182
"com.google.auto.service:auto-service-annotations:1.1.1",
182-
"com.google.googlejavaformat:google-java-format:jar:1.25.2",
183+
"com.google.googlejavaformat:google-java-format:1.25.2",
183184
"com.graphql-java:graphql-java:22.3",
184185
"dev.failsafe:failsafe:3.3.2",
185-
"io.grpc:grpc-context:1.70.0",
186-
"io.lettuce:lettuce-core:6.5.4.RELEASE",
187-
"io.netty:netty-buffer",
188-
"io.netty:netty-codec-http",
189-
"io.netty:netty-codec-http2",
190-
"io.netty:netty-common",
191-
"io.netty:netty-handler",
192-
"io.netty:netty-handler-proxy",
193-
"io.netty:netty-transport",
194-
"io.opentelemetry:opentelemetry-api",
195-
"io.opentelemetry:opentelemetry-context",
196-
"io.opentelemetry:opentelemetry-exporter-logging",
197-
"io.opentelemetry:opentelemetry-sdk",
198-
"io.opentelemetry:opentelemetry-sdk-common",
199-
"io.opentelemetry:opentelemetry-sdk-extension-autoconfigure",
200-
"io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi",
201-
"io.opentelemetry:opentelemetry-sdk-testing",
202-
"io.opentelemetry:opentelemetry-sdk-trace",
186+
"io.grpc:grpc-context:1.71.0",
187+
"io.lettuce:lettuce-core:6.5.5.RELEASE",
188+
"io.netty:netty-buffer:4.1.119.Final",
189+
"io.netty:netty-codec-http:4.1.119.Final",
190+
"io.netty:netty-codec-http2:4.1.119.Final",
191+
"io.netty:netty-common:4.1.119.Final",
192+
"io.netty:netty-handler:4.1.119.Final",
193+
"io.netty:netty-handler-proxy:4.1.119.Final",
194+
"io.netty:netty-transport:4.1.119.Final",
195+
"io.opentelemetry:opentelemetry-api:1.48.0",
196+
"io.opentelemetry:opentelemetry-context:1.48.0",
197+
"io.opentelemetry:opentelemetry-exporter-logging:1.48.0",
198+
"io.opentelemetry:opentelemetry-sdk:1.48.0",
199+
"io.opentelemetry:opentelemetry-sdk-common:1.48.0",
200+
"io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.48.0",
201+
"io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.48.0",
202+
"io.opentelemetry:opentelemetry-sdk-testing:1.48.0",
203+
"io.opentelemetry:opentelemetry-sdk-trace:1.48.0",
203204
"it.ozimov:embedded-redis:0.7.3",
204-
"net.bytebuddy:byte-buddy:1.15.11",
205-
"org.htmlunit:htmlunit-core-js:4.7.0",
205+
"net.bytebuddy:byte-buddy:1.17.2",
206+
"org.htmlunit:htmlunit-core-js:4.10.0",
206207
"org.apache.commons:commons-exec:1.4.0",
207208
"org.apache.logging.log4j:log4j-core:2.24.3",
208-
"org.assertj:assertj-core:3.27.2",
209-
"org.bouncycastle:bcpkix-jdk18on:1.79",
209+
"org.assertj:assertj-core:3.27.3",
210+
"org.bouncycastle:bcpkix-jdk18on:1.80",
210211
"org.eclipse.mylyn.github:org.eclipse.egit.github.core:2.1.5",
211212
"org.hsqldb:hsqldb:2.7.4",
212213
"org.jspecify:jspecify:1.0.0",
213-
"org.junit.jupiter:junit-jupiter-api",
214-
"org.junit.jupiter:junit-jupiter-engine",
215-
"org.junit.jupiter:junit-jupiter-params",
216-
"org.junit.platform:junit-platform-launcher",
217-
"org.junit.platform:junit-platform-reporting",
218-
"org.junit.platform:junit-platform-commons",
219-
"org.junit.platform:junit-platform-engine",
220-
"org.mockito:mockito-core:5.15.2",
221-
"org.redisson:redisson:3.41.0",
222-
"org.slf4j:slf4j-api:2.0.16",
223-
"org.slf4j:slf4j-jdk14:2.0.16",
214+
"org.junit.jupiter:junit-jupiter-api:5.12.1",
215+
"org.junit.jupiter:junit-jupiter-engine:5.12.1",
216+
"org.junit.jupiter:junit-jupiter-params:5.12.1",
217+
"org.junit.platform:junit-platform-launcher:1.12.1",
218+
"org.junit.platform:junit-platform-reporting:1.12.1",
219+
"org.junit.platform:junit-platform-commons:1.12.1",
220+
"org.junit.platform:junit-platform-engine:1.12.1",
221+
"org.mockito:mockito-core:5.16.1",
222+
"org.redisson:redisson:3.45.1",
223+
"org.slf4j:slf4j-api:2.0.17",
224+
"org.slf4j:slf4j-jdk14:2.0.17",
224225
"org.tomlj:tomlj:1.1.1",
225226
"org.zeromq:jeromq:0.6.0",
226227
],

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ for Maven to use locally by deploying to your local maven repository (`~/.m2/rep
201201

202202
#### Updating Dependencies
203203

204-
Dependencies are defined in the file [maven_deps.bzl](https://github.com/SeleniumHQ/selenium/blob/trunk/java/maven_deps.bzl).
204+
Dependencies are defined in the file [MODULE.bazel](https://github.com/SeleniumHQ/selenium/blob/trunk/MODULE.bazel).
205205
To automatically update and pin new dependencies, run:
206206

207207
```shell
@@ -314,6 +314,9 @@ Tests can also be filtered by tag like:
314314
bazel test //<language>/... --test_tag_filters=this,-not-this
315315
```
316316

317+
If there are multiple `--test_tag_filters`, only the last one is considered,
318+
so be careful if also using an inherited config
319+
317320
### Java
318321

319322
<details>

Rakefile

Lines changed: 70 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -92,15 +92,13 @@ task '//java/test/org/openqa/selenium/environment/webserver:webserver:uber' => [
9292
'//java/test/org/openqa/selenium/environment:webserver'
9393
]
9494

95-
# Java targets required for release. These should all be java_export targets.
96-
# Generated from: bazel query 'kind(maven_publish, set(//java/... //third_party/...))' | sort
95+
# use #java_release_targets to access this list
9796
JAVA_RELEASE_TARGETS = %w[
9897
//java/src/org/openqa/selenium/chrome:chrome.publish
9998
//java/src/org/openqa/selenium/chromium:chromium.publish
100-
//java/src/org/openqa/selenium/devtools/v131:v131.publish
99+
//java/src/org/openqa/selenium/devtools/v134:v134.publish
101100
//java/src/org/openqa/selenium/devtools/v132:v132.publish
102101
//java/src/org/openqa/selenium/devtools/v133:v133.publish
103-
//java/src/org/openqa/selenium/devtools/v85:v85.publish
104102
//java/src/org/openqa/selenium/edge:edge.publish
105103
//java/src/org/openqa/selenium/firefox:firefox.publish
106104
//java/src/org/openqa/selenium/grid/sessionmap/jdbc:jdbc.publish
@@ -120,6 +118,34 @@ JAVA_RELEASE_TARGETS = %w[
120118
//java/src/org/openqa/selenium:core.publish
121119
].freeze
122120

121+
def java_release_targets
122+
@targets_verified ||= verify_java_release_targets
123+
124+
JAVA_RELEASE_TARGETS
125+
end
126+
127+
def verify_java_release_targets
128+
query = 'kind(maven_publish, set(//java/... //third_party/...))'
129+
current_targets = []
130+
131+
Bazel.execute('query', [], query) do |output|
132+
current_targets = output.lines.map(&:strip).reject(&:empty?).select { |line| line.start_with?('//') }
133+
end
134+
135+
missing_targets = current_targets - JAVA_RELEASE_TARGETS
136+
extra_targets = JAVA_RELEASE_TARGETS - current_targets
137+
138+
return if missing_targets.empty? && extra_targets.empty?
139+
140+
error_message = 'Java release targets are out of sync with Bazel query results.'
141+
142+
error_message += "\nMissing targets: #{missing_targets.join(', ')}" unless missing_targets.empty?
143+
144+
error_message += "\nObsolete targets: #{extra_targets.join(', ')}" unless extra_targets.empty?
145+
146+
raise error_message
147+
end
148+
123149
# Notice that because we're using rake, anything you can do in a normal rake
124150
# build can also be done here. For example, here we set the default task
125151
task default: [:grid]
@@ -364,7 +390,7 @@ end
364390

365391
desc 'Install jars to local m2 directory'
366392
task :'maven-install' do
367-
JAVA_RELEASE_TARGETS.each do |p|
393+
java_release_targets.each do |p|
368394
Bazel.execute('run',
369395
['--stamp',
370396
'--define',
@@ -826,7 +852,7 @@ namespace :java do
826852
desc 'Build Java Client Jars'
827853
task :build do |_task, arguments|
828854
args = arguments.to_a.compact
829-
JAVA_RELEASE_TARGETS.each { |target| Bazel.execute('build', args, target) }
855+
java_release_targets.each { |target| Bazel.execute('build', args, target) }
830856
end
831857

832858
desc 'Build Grid Server'
@@ -873,7 +899,7 @@ namespace :java do
873899
Rake::Task['java:package'].invoke('--config=release')
874900
Rake::Task['java:build'].invoke('--config=release')
875901
# Because we want to `run` things, we can't use the `release` config
876-
JAVA_RELEASE_TARGETS.each { |target| Bazel.execute('run', ['--config=release'], target) }
902+
java_release_targets.each { |target| Bazel.execute('run', ['--config=release'], target) }
877903
end
878904

879905
desc 'Install jars to local m2 directory'
@@ -894,22 +920,19 @@ namespace :java do
894920

895921
file_path = 'MODULE.bazel'
896922
content = File.read(file_path)
897-
# For some reason ./go wrapper is not outputting from Open3, so cannot use Bazel class directly
898-
output = `bazel run @maven//:outdated`
899-
900-
output.scan(/\S+ \[\S+-alpha\]/).each do |match|
901-
puts "WARNING — Cannot automatically update alpha version of: #{match}"
923+
output = nil
924+
Bazel.execute('run', [], '@maven//:outdated') do |out|
925+
output = out
902926
end
903927

904928
versions = output.scan(/(\S+) \[\S+ -> (\S+)\]/).to_h
905929
versions.each do |artifact, version|
906930
if artifact.match?('graphql')
931+
# https://github.com/graphql-java/graphql-java/discussions/3187
907932
puts 'WARNING — Cannot automatically update graphql'
908933
next
909934
end
910-
911-
replacement = artifact.include?('googlejavaformat') ? "#{artifact}:jar:#{version}" : "#{artifact}:#{version}"
912-
content.gsub!(/#{artifact}:(jar:)?\d+\.\d+[^\\"]+/, replacement)
935+
content.sub!(/#{Regexp.escape(artifact)}:([\d.-]+(?:[-.]?[A-Za-z0-9]+)*)/, "#{artifact}:#{version}")
913936
end
914937
File.write(file_path, content)
915938

@@ -1087,34 +1110,38 @@ namespace :all do
10871110
commit!('Update selenium manager version', ['common/selenium_manager.bzl'])
10881111

10891112
Rake::Task['java:update'].invoke
1090-
commit!('Update Maven Dependencies', ['java/maven_deps.bzl', 'java/maven_install.json'])
1113+
commit!('Update Maven Dependencies', ['MODULE.bazel', 'java/maven_install.json'])
10911114

10921115
Rake::Task['authors'].invoke
10931116
commit!('Update authors file', ['AUTHORS'])
10941117

10951118
# Note that this does not include Rust version changes that are handled in separate rake:version task
10961119
# TODO: These files are all defined in other tasks; remove duplication
10971120
Rake::Task['all:version'].invoke(version)
1098-
commit!("FIX CHANGELOGS BEFORE MERGING!\n\nUpdate versions and change logs to release Selenium #{java_version}",
1099-
['dotnet/CHANGELOG',
1100-
'dotnet/selenium-dotnet-version.bzl',
1101-
'java/CHANGELOG',
1121+
commit!("Update Version in all bindings to #{java_version}",
1122+
['dotnet/selenium-dotnet-version.bzl',
11021123
'java/version.bzl',
1103-
'javascript/node/selenium-webdriver/CHANGES.md',
1124+
'javascript/node/selenium-webdriver/BUILD.bazel',
11041125
'javascript/node/selenium-webdriver/package.json',
11051126
'py/docs/source/conf.py',
1127+
'py/pyproject.toml',
11061128
'py/selenium/__init__.py',
11071129
'py/selenium/webdriver/__init__.py',
11081130
'py/BUILD.bazel',
1109-
'py/CHANGES',
11101131
'rb/lib/selenium/webdriver/version.rb',
1111-
'rb/CHANGES',
11121132
'rb/Gemfile.lock',
1113-
'rust/CHANGELOG.md',
11141133
'rust/BUILD.bazel',
11151134
'rust/Cargo.Bazel.lock',
11161135
'rust/Cargo.toml',
11171136
'rust/Cargo.lock'])
1137+
1138+
commit!("FIX CHANGELOGS BEFORE MERGING! #{java_version}",
1139+
['dotnet/CHANGELOG',
1140+
'java/CHANGELOG',
1141+
'javascript/node/selenium-webdriver/CHANGES.md',
1142+
'py/CHANGES',
1143+
'rb/CHANGES',
1144+
'rust/CHANGELOG.md'])
11181145
end
11191146

11201147
desc 'Update all versions'
@@ -1191,16 +1218,25 @@ end
11911218

11921219
def update_changelog(version, language, path, changelog, header)
11931220
tag = previous_tag(version, language)
1194-
log = if language == 'javascript'
1195-
`git --no-pager log #{tag}...HEAD --pretty=format:"- %s" --reverse #{path}`
1196-
else
1197-
`git --no-pager log #{tag}...HEAD --pretty=format:"* %s" --reverse #{path}`
1198-
end
1199-
commits = log.split('>>>').map { |entry|
1200-
lines = entry.split("\n")
1201-
lines.reject! { |line| line.match?(/^(----|Co-authored|Signed-off)/) || line.empty? }
1202-
lines.join("\n")
1203-
}.join("\n>>>")
1221+
bullet = language == 'javascript' ? '- ' : '* '
1222+
commit_delimiter = '===DELIM==='
1223+
tags_to_remove = /\[(dotnet|rb|py|java|js|rust)\]:?\s?/
1224+
1225+
command = "git --no-pager log #{tag}...HEAD --pretty=format:\"%s%n%b#{commit_delimiter}\" --reverse #{path}"
1226+
puts "Executing git command: #{command}"
1227+
1228+
log = `#{command}`
1229+
1230+
commits = log.split(commit_delimiter).map { |commit|
1231+
lines = commit.gsub(tags_to_remove, '').strip.lines.map(&:chomp)
1232+
subject = "#{bullet}#{lines[0]}"
1233+
1234+
body = lines[1..]
1235+
.reject { |line| line.match?(/^(----|Co-authored|Signed-off)/) || line.empty? }
1236+
.map { |line| " > #{line}" }
1237+
.join("\n")
1238+
body.empty? ? subject : "#{subject}\n#{body}"
1239+
}.join("\n")
12041240

12051241
File.open(changelog, 'r+') do |file|
12061242
new_content = "#{header}\n#{commits}\n\n#{file.read}"

0 commit comments

Comments
 (0)