diff --git a/.bazelignore b/.bazelignore
index 7dbb22ecb417b..e920cea308429 100644
--- a/.bazelignore
+++ b/.bazelignore
@@ -1,5 +1,25 @@
buck-out
+dotnet/test/firefox/bin
+dotnet/test/firefox/obj
+dotnet/test/edge/bin
+dotnet/test/edge/obj
+dotnet/test/common/bin
+dotnet/test/common/obj
+dotnet/test/support/bin
+dotnet/test/support/obj
+dotnet/test/safari/bin
+dotnet/test/safari/obj
+dotnet/test/chrome/bin
+dotnet/test/chrome/obj
+dotnet/test/ie/bin
+dotnet/test/ie/obj
+dotnet/test/remote/bin
+dotnet/test/remote/obj
+dotnet/src/support/bin
+dotnet/src/support/obj
+dotnet/src/webdriver/bin
+dotnet/src/webdriver/obj
+java/build/production
java/client/build
java/server/build
node_modules
-java/build/production
diff --git a/.bazelrc b/.bazelrc
index ea23ac61e3548..825edc7a2f634 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -16,9 +16,9 @@ build --java_runtime_version=remotejdk_17
build --tool_java_language_version=17
build --tool_java_runtime_version=remotejdk_17
-# We target java 8 by default
+# We target java 11 by default
-build --javacopt="--release 8"
+build --javacopt="--release 11"
# Require java dependencies to be used and first-order
@@ -47,20 +47,20 @@ build --test_output=errors
# pass environment variables to the test environment
-build --test_env=CI
-build --test_env=DASHBOARD_URL
-build --test_env=DISPLAY
-build --test_env=FIREFOX_NIGHTLY_BINARY
-build --test_env=GITHUB_ACTIONS
-build --test_env=MOZ_HEADLESS
-build --test_env=PATH # Remove once browser pinning works
-build --test_env=SELENIUM_BROWSER
-build --test_env=TRAVIS
-build --test_env=PYTHON_VERSION
+test --test_env=CI
+test --test_env=DASHBOARD_URL
+test --test_env=DISPLAY
+test --test_env=FIREFOX_NIGHTLY_BINARY
+test --test_env=GITHUB_ACTIONS
+test --test_env=MOZ_HEADLESS
+test --test_env=PATH # Remove once browser pinning works
+test --test_env=SELENIUM_BROWSER
+test --test_env=TRAVIS
+test --test_env=PYTHON_VERSION
# Remove once rules_ruby support proper $LOAD_PATH expansion.
-build --test_env=RUBYOPT="-Irb/lib -w"
+test --test_env=RUBYOPT="-Irb/lib -w"
# JRuby/TruffleRuby: https://github.com/jruby/jruby/issues/5661
@@ -113,11 +113,12 @@ build:remote --disk_cache=
build:remote --incompatible_enable_cc_toolchain_resolution
build:remote --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1
test:remote --test_env=DISPLAY=:99.0
-test:remote --test_tag_filters=-edge,-safari,-remote
+test:remote --test_tag_filters=-skip-remote,-remote
# Env vars we can hard code
build:remote --action_env=HOME=/home/dev
build:remote --action_env=PATH=/bin:/usr/bin:/usr/local/bin
+test:remote --test_env=PATH=/bin:/usr/bin:/usr/local/bin
test:remote --test_env=HOME=/home/dev
# Make sure we sniff credentials properly
@@ -146,3 +147,7 @@ build:remote-ci --bes_upload_mode=wait_for_upload_complete
# Configuration changes suggested by EngFlow
build:remote --grpc_keepalive_time=30s
build:remote --nolegacy_important_outputs
+
+build:release --config=remote
+build:release --stamp
+build:release --remote_download_outputs=toplevel
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 201fa59406196..aca34a0191f00 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -5,4 +5,52 @@ updates:
schedule:
interval: daily
time: '08:00'
- open-pull-requests-limit: 99
+ open-pull-requests-limit: 0
+ labels:
+ - "C-build"
+ - "dependencies"
+ - package-ecosystem: "npm"
+ directory: "/"
+ schedule:
+ interval: daily
+ time: '08:00'
+ open-pull-requests-limit: 0
+ labels:
+ - "C-nodejs"
+ - "dependencies"
+ - package-ecosystem: "bundler"
+ directory: "/"
+ schedule:
+ interval: daily
+ time: '08:00'
+ open-pull-requests-limit: 0
+ labels:
+ - "C-rb"
+ - "dependencies"
+ - package-ecosystem: "cargo"
+ directory: "/rust"
+ schedule:
+ interval: daily
+ time: '08:00'
+ open-pull-requests-limit: 0
+ labels:
+ - "C-rust"
+ - "dependencies"
+ - package-ecosystem: "pip"
+ directory: "/py"
+ schedule:
+ interval: daily
+ time: '08:00'
+ open-pull-requests-limit: 0
+ labels:
+ - "C-py"
+ - "dependencies"
+ - package-ecosystem: "nuget"
+ directory: "/dotnet"
+ schedule:
+ interval: daily
+ time: '08:00'
+ open-pull-requests-limit: 0
+ labels:
+ - "C-dotnet"
+ - "dependencies"
diff --git a/.github/label-commenter-config.yml b/.github/label-commenter-config.yml
index 229fa69428f38..a4733b7d647b2 100644
--- a/.github/label-commenter-config.yml
+++ b/.github/label-commenter-config.yml
@@ -129,3 +129,11 @@ labels:
This issue is looking for contributors.
Please comment below or reach out to us through our [IRC/Slack/Matrix channels](https://www.selenium.dev/support/) if you are interested.
+ - name: I-logging
+ labeled:
+ issue:
+ body: |
+ We need more information about this issue in order to troubleshoot.
+
+ Please turn on logging and re-run your code. Information on how to adjust logs for your language can be found in our
+ [Troubleshooting documentation](https://www.selenium.dev/documentation/webdriver/troubleshooting/logging/).
diff --git a/.github/workflows/bazel.yml b/.github/workflows/bazel.yml
index 9999a6d905124..9dcfc56b7365f 100644
--- a/.github/workflows/bazel.yml
+++ b/.github/workflows/bazel.yml
@@ -70,10 +70,10 @@ jobs:
- name: Remove driver directories Non-Windows
if: inputs.os != 'windows'
run: |
- sudo rm -rf $CHROMEWEBDRIVER $EDGEWEBDRIVER $GECKOWEBDRIVER
+ sudo rm -rf "$CHROMEWEBDRIVER" "$EDGEWEBDRIVER" "$GECKOWEBDRIVER"
- name: Set Ruby version
if: inputs.ruby-version != ''
- run: echo 'RUBY_VERSION = "${{ inputs.ruby-version }}"' > rb/ruby_version.bzl
+ run: echo '${{ inputs.ruby-version }}' > rb/.ruby-version
- name: Setup Java
if: inputs.java-version != ''
uses: actions/setup-java@v3
@@ -81,9 +81,10 @@ jobs:
java-version: ${{ inputs.java-version }}
distribution: 'temurin'
- name: Setup Bazel
- uses: p0deje/setup-bazel@0.2.0
+ uses: p0deje/setup-bazel@0.3.2
with:
bazelisk-cache: true
+ bazelrc: common --color=yes
disk-cache: ${{ inputs.cache-key }}
external-cache: |
name: ${{ inputs.cache-key }}
@@ -99,7 +100,7 @@ jobs:
sudo apt-get -y install fluxbox
Xvfb :99 &
fluxbox -display :99 &
- echo "DISPLAY=:99" >> $GITHUB_ENV
+ echo "DISPLAY=:99" >> "$GITHUB_ENV"
- name: Set resolution
if: inputs.os == 'windows' && inputs.browser != ''
run: Set-DisplayResolution -Width 1920 -Height 1080 -Force
diff --git a/.github/workflows/build-selenium-manager.yml b/.github/workflows/build-selenium-manager.yml
index 92880db927845..ce57455ccd0df 100644
--- a/.github/workflows/build-selenium-manager.yml
+++ b/.github/workflows/build-selenium-manager.yml
@@ -1,32 +1,53 @@
name: Build selenium-manager
-on: workflow_dispatch
+on:
+ workflow_dispatch:
+ inputs:
+ debug:
+ description: 'Include debug symbols in binaries'
+ required: false
+ type: boolean
jobs:
win32:
name: "[Windows x32] Build selenium-manager"
runs-on: windows-latest
- env:
- RUSTFLAGS: '-Ctarget-feature=+crt-static'
steps:
- name: "Checkout project"
uses: actions/checkout@v4
- name: "Update Rust"
run: |
rustup update
+ - name: "Build release binary"
+ if: ${{ inputs.debug == false }}
+ run: |
rustup toolchain install stable-i686-pc-windows-msvc
rustup default stable-i686-pc-windows-msvc
rustc -vV
- - name: "Build release"
- run: |
cd rust
cargo build --release
- - name: "Upload binary"
+ - name: "Upload release binary"
+ if: ${{ inputs.debug == false }}
uses: actions/upload-artifact@v3
with:
name: selenium-manager_windows-x32
path: rust/target/release/selenium-manager.exe
retention-days: 6
+ - name: "Build debug binary"
+ if: ${{ inputs.debug == true }}
+ run: |
+ rustup toolchain install stable-i686-pc-windows-gnu
+ rustup default stable-i686-pc-windows-gnu
+ rustc -vV
+ cd rust
+ cargo build --profile dev
+ - name: "Upload debug binary"
+ if: ${{ inputs.debug == true }}
+ uses: actions/upload-artifact@v3
+ with:
+ name: selenium-manager_windows-x32-debug
+ path: rust/target/debug/selenium-manager.exe
+ retention-days: 6
linux64:
name: "[Linux x64] Build selenium-manager"
@@ -42,26 +63,38 @@ jobs:
run: |
cargo install cross --git https://github.com/cross-rs/cross
cross -V
- - name: "Build release"
+ - name: "Build release binary"
+ if: ${{ inputs.debug == false }}
run: |
cd rust
cross build --target x86_64-unknown-linux-musl --release
- - name: "Tar binary (to keep executable permission)"
- run: |
- cd rust/target/x86_64-unknown-linux-musl/release
+ cd target/x86_64-unknown-linux-musl/release
tar -cvf ../../../../selenium-manager.tar selenium-manager
- - name: "Upload binary"
+ - name: "Upload release binary"
+ if: ${{ inputs.debug == false }}
uses: actions/upload-artifact@v3
with:
name: selenium-manager_linux-x64
path: selenium-manager.tar
retention-days: 6
+ - name: "Build debug binary"
+ if: ${{ inputs.debug == true }}
+ run: |
+ cd rust
+ cross build --target x86_64-unknown-linux-musl --profile dev
+ cd target/x86_64-unknown-linux-musl/debug
+ tar -cvf ../../../../selenium-manager.tar selenium-manager
+ - name: "Upload debug binary"
+ if: ${{ inputs.debug == true }}
+ uses: actions/upload-artifact@v3
+ with:
+ name: selenium-manager_linux-x64-debug
+ path: selenium-manager.tar
+ retention-days: 6
macos64:
name: "[macOS x64/arm64] Build selenium-manager"
runs-on: macos-latest
- env:
- RUSTFLAGS: '-Ctarget-feature=+crt-static'
steps:
- name: "Checkout project"
uses: actions/checkout@v4
@@ -70,28 +103,39 @@ jobs:
rustup update
rustup target add aarch64-apple-darwin
rustc -vV
- - name: "Build x64"
- run: |
- cd rust
- cargo build --release --target x86_64-apple-darwin
- - name: "Build arm64"
+ - name: "Build release binary"
+ if: ${{ inputs.debug == false }}
run: |
cd rust
- cargo build --release --target aarch64-apple-darwin
- - name: "Build universal"
- run: |
- cd rust
- lipo -create \
- -output target/selenium-manager \
+ cargo build --target x86_64-apple-darwin --release
+ cargo build --target aarch64-apple-darwin --release
+ lipo -create -output target/selenium-manager \
target/aarch64-apple-darwin/release/selenium-manager \
target/x86_64-apple-darwin/release/selenium-manager
- - name: "Tar binary (to keep executable permission)"
- run: |
- cd rust/target
+ cd target
tar -cvf ../../selenium-manager.tar selenium-manager
- - name: "Upload binary"
+ - name: "Upload release binary"
+ if: ${{ inputs.debug == false }}
uses: actions/upload-artifact@v3
with:
name: selenium-manager_macos-universal
path: selenium-manager.tar
retention-days: 6
+ - name: "Build debug binary"
+ if: ${{ inputs.debug == true }}
+ run: |
+ cd rust
+ cargo build --target x86_64-apple-darwin --profile dev
+ cargo build --target aarch64-apple-darwin --profile dev
+ lipo -create -output target/selenium-manager \
+ target/aarch64-apple-darwin/debug/selenium-manager \
+ target/x86_64-apple-darwin/debug/selenium-manager
+ cd target
+ tar -cvf ../../selenium-manager.tar selenium-manager
+ - name: "Upload debug binary"
+ if: ${{ inputs.debug == true }}
+ uses: actions/upload-artifact@v3
+ with:
+ name: selenium-manager_macos-universal-debug
+ path: selenium-manager.tar
+ retention-days: 6
\ No newline at end of file
diff --git a/.github/workflows/ci-dotnet.yml b/.github/workflows/ci-dotnet.yml
index 848bb09da1399..5778ead45f911 100644
--- a/.github/workflows/ci-dotnet.yml
+++ b/.github/workflows/ci-dotnet.yml
@@ -12,34 +12,17 @@ jobs:
name: Build
cache-key: false
os: windows
- run: bazel build //dotnet/src/webdriver:package //dotnet/src/support:package
+ run: |
+ bazel build //dotnet/src/webdriver --stamp
+ bazel build //dotnet/src/support --stamp
integration-tests:
name: Browser Tests
- needs: build
uses: ./.github/workflows/bazel.yml
- strategy:
- fail-fast: false
- matrix:
- driver:
- - Chrome
- - Firefox
- framework:
- - net48
- - net6.0
- include:
- - driver: Chrome
- browser: chrome
- - driver: Firefox
- browser: chrome
with:
- name: Browser Tests (${{ matrix.driver }}, ${{ matrix.framework }})
- browser: ${{ matrix.browser }}
+ name: Browser Tests
cache-key: false
java-version: 17
os: windows
run: |
- bazel build //dotnet/test/common:${{ matrix.browser }}
- $env:ACTIVE_DRIVER_CONFIG = '${{ matrix.driver }}'
- cd dotnet
- dotnet test test/common/WebDriver.Common.Tests.csproj --framework ${{ matrix.framework }}
+ bazel test //dotnet/test/common:ElementFindingTest-firefox //dotnet/test/common:ElementFindingTest-chrome --pin_browsers=true --stamp
diff --git a/.github/workflows/ci-java.yml b/.github/workflows/ci-java.yml
index ce3f6955d10e3..af6492bbb4240 100644
--- a/.github/workflows/ci-java.yml
+++ b/.github/workflows/ci-java.yml
@@ -5,96 +5,36 @@ on:
workflow_dispatch:
jobs:
- build:
- name: Build
- uses: ./.github/workflows/bazel.yml
- with:
- name: Build
- cache-key: java
- run: bazel build grid
-
- docs:
- name: Documentation
- needs: build
- uses: ./.github/workflows/bazel.yml
- with:
- name: Documentation
- cache-key: java-doc
- run: ./go --verbose javadocs
-
- lint:
- name: Lint
- needs: build
- uses: ./.github/workflows/bazel.yml
- with:
- name: Lint
- cache-key: java-lint
- run: bazel test --test_tag_filters "lint,-no-lint" //java/...
-
- small-tests:
- name: Small Tests
- needs: build
- uses: ./.github/workflows/bazel.yml
- with:
- name: Small Tests
- cache-key: java-small-tests
- run: bazel test --test_size_filters "small" --test_tag_filters "-lint" //java/...
-
- medium-tests:
- name: Medium Tests
- needs: small-tests
- uses: ./.github/workflows/bazel.yml
- with:
- name: Medium Tests
- cache-key: java-medium-tests
- run: bazel test --test_size_filters "medium" --test_tag_filters "-lint" --flaky_test_attempts 3 //java/...
-
browser-tests:
name: Browser Tests
- needs: small-tests
uses: ./.github/workflows/bazel.yml
strategy:
fail-fast: false
matrix:
include:
- - browser: chrome
- browser-version: stable
- - browser: firefox
- browser-version: latest
- - browser: firefox
- browser-version: latest-beta
- - browser: firefox
- browser-version: latest-devedition
+ - os: windows
+ - os: macos
with:
- name: Browser Tests (${{ matrix.browser }}, ${{ matrix.browser-version }})
- browser: ${{ matrix.browser }}
- browser-version: ${{ matrix.browser-version }}
- cache-key: java-${{ matrix.browser }}-tests
+ name: Browser Tests (chrome, ${{ matrix.os }})
+ os: ${{ matrix.os }}
+ browser: chrome
+ cache-key: java-${{ matrix.os }}-tests
run: >
- bazel query "attr(tags, ${{ matrix.browser }}, tests(//java/...)) except attr(tags, 'rc|remote', tests(//java/...))" |
- xargs bazel test --flaky_test_attempts 3
+ bazel test //java/test/org/openqa/selenium/chrome:ChromeDriverFunctionalTest
remote-tests:
name: Remote Tests
- needs: small-tests
uses: ./.github/workflows/bazel.yml
strategy:
fail-fast: false
matrix:
include:
- - browser: chrome
- browser-version: stable
- - browser: firefox
- browser-version: latest
- - browser: firefox
- browser-version: latest-beta
- - browser: firefox
- browser-version: latest-devedition
+ - os: windows
+ - os: macos
with:
- name: Remote Tests (${{ matrix.browser }}, ${{ matrix.browser-version }})
- browser: ${{ matrix.browser }}
- browser-version: ${{ matrix.browser-version }}
- cache-key: java-${{ matrix.browser }}-remote-tests
+ name: Remote Tests (chrome, ${{ matrix.os }})
+ os: ${{ matrix.os }}
+ browser: chrome
+ cache-key: java-${{ matrix.os }}-remote-tests
run: >
- bazel query "attr(tags, ${{ matrix.browser }}, tests(//java/...)) intersect attr(tags, 'remote', tests(//java/...))" |
- xargs bazel test --flaky_test_attempts 3
+ bazel test //java/test/org/openqa/selenium/chrome:ChromeDriverFunctionalTest-remote
diff --git a/.github/workflows/ci-javascript.yml b/.github/workflows/ci-javascript.yml
index 384de680d1578..bf3c5c4fa6d04 100644
--- a/.github/workflows/ci-javascript.yml
+++ b/.github/workflows/ci-javascript.yml
@@ -12,21 +12,6 @@ jobs:
name: Build
cache-key: javascript-build
run: bazel build //javascript/node/selenium-webdriver:selenium-webdriver
-
- atoms:
- name: Atom Tests
- needs: build
- uses: ./.github/workflows/bazel.yml
- with:
- name: Atom Tests
- browser: firefox
- cache-key: atoms
- run: >
- bazel test --test_tag_filters=firefox
- //javascript/atoms/...
- //javascript/selenium-atoms/...
- //javascript/webdriver/...
-
browser-tests:
name: Browser Tests
needs: build
@@ -55,7 +40,7 @@ jobs:
- name: Checkout source tree
uses: actions/checkout@v4
- name: Setup Node
- uses: actions/setup-node@v3
+ uses: actions/setup-node@v4
with:
node-version: 16
- name: NPM install
diff --git a/.github/workflows/ci-python.yml b/.github/workflows/ci-python.yml
index 5d09c6d971136..9749fd4e7ad82 100644
--- a/.github/workflows/ci-python.yml
+++ b/.github/workflows/ci-python.yml
@@ -77,34 +77,9 @@ jobs:
env:
TOXENV: mypy
- unit-tests:
- name: Unit Tests
- needs: build
- uses: ./.github/workflows/bazel.yml
- with:
- name: Unit Tests
- cache-key: py-unit
- run: bazel test //py:unit
-
- browser-tests:
- name: Browser Tests
- needs: unit-tests
- uses: ./.github/workflows/bazel.yml
- strategy:
- fail-fast: false
- matrix:
- browser:
- - chrome
- - firefox
- with:
- name: Integration Tests (${{ matrix.browser }})
- browser: ${{ matrix.browser }}
- cache-key: py-${{ matrix.browser }}
- run: bazel test --flaky_test_attempts 3 //py:test-${{ matrix.browser }}
-
remote-tests:
name: Remote Tests
- needs: unit-tests
+ needs: build
uses: ./.github/workflows/bazel.yml
with:
name: Integration Tests (remote)
diff --git a/.github/workflows/ci-rbe.yml b/.github/workflows/ci-rbe.yml
index 881f67492d254..3b4c36d9212f2 100644
--- a/.github/workflows/ci-rbe.yml
+++ b/.github/workflows/ci-rbe.yml
@@ -20,6 +20,7 @@ jobs:
name: Test
uses: ./.github/workflows/bazel.yml
with:
+ # TODO: experiment with turning off caches
name: All RBE tests
cache-key: rbe
ruby-version: jruby-9.4.2.0
diff --git a/.github/workflows/ci-ruby.yml b/.github/workflows/ci-ruby.yml
index 80ced414f5fef..5f59315a1f805 100644
--- a/.github/workflows/ci-ruby.yml
+++ b/.github/workflows/ci-ruby.yml
@@ -43,13 +43,13 @@ jobs:
os: ubuntu
- ruby-version: 3.0.6
os: windows
- - ruby-version: 3.2.0
- os: ubuntu
- - ruby-version: 3.2.0
+ - ruby-version: 3.0.6
os: macos
- - ruby-version: jruby-9.4.0.0
+ - ruby-version: 3.2.2
+ os: ubuntu
+ - ruby-version: jruby-9.4.5.0
os: ubuntu
- - ruby-version: truffleruby-22.3.0
+ - ruby-version: truffleruby-23.1.1
os: ubuntu
with:
name: Unit Tests (${{ matrix.ruby-version }}, ${{ matrix.os }})
@@ -102,29 +102,21 @@ jobs:
strategy:
fail-fast: false
matrix:
- browser:
- - chrome
- - edge
- - firefox
- - safari
- os:
- - ubuntu
- - windows
- - macos
- exclude:
+ include:
- browser: edge
+ os: windows
+ - browser: chrome
os: ubuntu
- - browser: edge
- os: macos
- - browser: safari
+ - browser: firefox
os: ubuntu
- browser: safari
- os: windows
+ os: macos
with:
name: Remote Tests (${{ matrix.browser }}, ${{ matrix.os }})
browser: ${{ matrix.browser }}
cache-key: rb-remote-${{ matrix.browser }}-test
os: ${{ matrix.os }}
+ java-version: 11
run: >
bazel test
--define browser=${{ matrix.browser }}
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 9a20e2719d5dc..137f1a7ebe256 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -25,7 +25,7 @@ jobs:
with:
fetch-depth: 50
- name: Setup Bazel
- uses: p0deje/setup-bazel@0.2.0
+ uses: p0deje/setup-bazel@0.3.2
with:
bazelisk-cache: true
external-cache: |
diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml
index 8d7bd8cb2d4b6..7abaecd8073c4 100644
--- a/.github/workflows/lock.yml
+++ b/.github/workflows/lock.yml
@@ -14,12 +14,12 @@ jobs:
action:
runs-on: ubuntu-latest
steps:
- - uses: dessant/lock-threads@v4
+ - uses: dessant/lock-threads@v5
with:
process-only: 'issues'
- issue-lock-inactive-days: '30'
+ issue-inactive-days: '30'
issue-lock-reason: ''
- issue-lock-comment: >
+ issue-comment: >
This issue has been automatically locked since there
has not been any recent activity after it was closed.
Please open a new issue for related bugs.
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
index c656543e13eda..53c6b734ac318 100644
--- a/.github/workflows/nightly.yml
+++ b/.github/workflows/nightly.yml
@@ -28,7 +28,6 @@ jobs:
fail-fast: false
matrix:
gem:
- - selenium-devtools
- selenium-webdriver
with:
name: Release
diff --git a/.github/workflows/should-workflow-run.yml b/.github/workflows/should-workflow-run.yml
index ce540e5df5001..f95fd0282d8f4 100644
--- a/.github/workflows/should-workflow-run.yml
+++ b/.github/workflows/should-workflow-run.yml
@@ -29,7 +29,7 @@ jobs:
with:
fetch-depth: 50
- name: Setup Bazel
- uses: p0deje/setup-bazel@0.2.0
+ uses: p0deje/setup-bazel@0.3.2
with:
bazelisk-cache: true
external-cache: |
diff --git a/.gitignore b/.gitignore
index 63e5176c32523..419de8777964f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,6 +13,8 @@ test-output/
common/build
/build/
cpp/iedriver/IEReturnTypes.h
+dotnet/.idea/
+dotnet/packages/
java/client/src/org/openqa/selenium/ie/IeReturnTypes.java
java/server/test/org/openqa/selenium/example
javascript/deps.js
@@ -97,7 +99,6 @@ ipch/
geckodriver.log
ghostdriver.log
.tags
-.ruby-version
GPATH
GRTAGS
GSYMS
@@ -106,6 +107,7 @@ GTAGS
/rb/.idea
rb/bin/
rb/lib/selenium/devtools/v1*
+rb/.gem_rbs_collection/
.sonar/
.idea/sonarIssues.xml
.idea/inspectionProfiles/profiles_settings.xml
@@ -133,3 +135,6 @@ bazel-testlogs
# Engflow
*.crt
*.key
+javascript/node/selenium-webdriver/.vscode/settings.json
+
+dotnet-bin
diff --git a/.skipped-tests b/.skipped-tests
index 6009b57437413..48a77298dbe7d 100644
--- a/.skipped-tests
+++ b/.skipped-tests
@@ -1,15 +1,33 @@
--//java/test/org/openqa/selenium:FormHandlingTest-chrome
--//java/test/org/openqa/selenium/bidi:BiDiSessionTest-remote
--//java/test/org/openqa/selenium/bidi:BiDiTest-remote
+-//dotnet/test/common:DevTools/DevToolsNetworkTest-chrome
+-//dotnet/test/common:Interactions/BasicMouseInterfaceTest-chrome
+-//dotnet/test/common:Interactions/BasicMouseInterfaceTest-firefox
+-//dotnet/test/common:JavascriptEnabledBrowserTest-chrome
+-//dotnet/test/common:NetworkInterceptionTests-chrome
+-//dotnet/test/common:TakesScreenshotTest-chrome
+-//dotnet/test/common:TakesScreenshotTest-firefox
+-//dotnet/test/common:VirtualAuthn/VirtualAuthenticatorTest-chrome
+-//dotnet/test/support/UI:SelectBrowserTests-firefox
+-//dotnet/test/support/UI:SelectTests
+-//java/test/org/openqa/selenium/bidi/browsingcontext:BrowsingContextTest
-//java/test/org/openqa/selenium/bidi/browsingcontext:BrowsingContextTest-remote
--//java/test/org/openqa/selenium/bidi/log:LogInspectorTest-remote
--//java/test/org/openqa/selenium/devtools:CdpFacadeTest-remote
--//java/test/org/openqa/selenium/devtools:ChangeUserAgentTest-remote
--//java/test/org/openqa/selenium/devtools:DevToolsReuseTest-remote
--//java/test/org/openqa/selenium/devtools:JavascriptExceptionsTest-remote
--//java/test/org/openqa/selenium/devtools:NetworkInterceptorRestTest-chrome-remote
--//java/test/org/openqa/selenium/devtools:NetworkInterceptorTest-chrome-remote
+-//java/test/org/openqa/selenium/chrome:ChromeDriverFunctionalTest
+-//java/test/org/openqa/selenium/chrome:ChromeDriverFunctionalTest-remote
-//java/test/org/openqa/selenium/federatedcredentialmanagement:FederatedCredentialManagementTest
--//java/test/org/openqa/selenium/firefox:RemoteFirefoxDriverTest-remote
+-//java/test/org/openqa/selenium/firefox:FirefoxDriverBuilderTest
+-//java/test/org/openqa/selenium/grid/gridui:OverallGridTest
+-//java/test/org/openqa/selenium/grid/router:RemoteWebDriverDownloadTest
+-//java/test/org/openqa/selenium/grid/router:RemoteWebDriverDownloadTest-chrome
+-//java/test/org/openqa/selenium/grid/router:RemoteWebDriverDownloadTest-chrome-remote
+-//java/test/org/openqa/selenium/grid/router:RemoteWebDriverDownloadTest-remote
+-//java/test/org/openqa/selenium/interactions:DefaultMouseTest
+-//java/test/org/openqa/selenium/interactions:DefaultMouseTest-remote
+-//java/test/org/openqa/selenium/remote:RemoteWebDriverBuilderTest
-//java/test/org/openqa/selenium/remote:RemoteWebDriverScreenshotTest-remote
--//py:auto-chrome-test/selenium/webdriver/common/virtual_authenticator_tests.py
+-//javascript/atoms:test-chrome
+-//javascript/atoms:test-firefox-beta
+-//javascript/atoms:test-firefox-dev
+-//py:common-chrome-test/selenium/webdriver/common/virtual_authenticator_tests.py
+-//py:test-chrome-test/selenium/webdriver/chrome/chrome_launcher_tests.py
+-//py:test-chrome-test/selenium/webdriver/chrome/chrome_service_tests.py
+-//py:test-chrome-test/selenium/webdriver/chrome/proxy_tests.py
+-//py:unit-test/unit/selenium/webdriver/common/cdp_module_fallback_tests.py
diff --git a/README.md b/README.md
index 22bda93ebea27..fd4c1f83b970b 100644
--- a/README.md
+++ b/README.md
@@ -260,9 +260,10 @@ Supported environment variables:
- `EDGE_BINARY` - path to test specific Edge browser
- `FIREFOX_BINARY` - path to test specific Firefox browser
-To run with a specific version of Ruby you can change the version in `rb/ruby_version.bzl` or from command line:
+To run with a specific version of Ruby you can change the version in `rb/.ruby-version` or from command line:
+
```sh
-echo 'RUBY_VERSION = ""' > rb/ruby_version.bzl
+echo '' > rb/.ruby-version
```
If you want to debug code in tests, you can do it via [`debug`](https://github.com/ruby/debug) gem:
diff --git a/Rakefile b/Rakefile
index 6a26ae038720a..89c76f3c2e62e 100644
--- a/Rakefile
+++ b/Rakefile
@@ -50,12 +50,10 @@ $DEBUG = true if ENV['debug'] == 'true'
verbose($DEBUG)
-def release_version
- '4.13'
-end
-
-def version
- "#{release_version}.0"
+def java_version
+ File.foreach('java/version.bzl') do |line|
+ return line.split('=').last.strip.tr('"', '') if line.include?('SE_VERSION')
+ end
end
# The build system used by webdriver is layered on top of rake, and we call it
@@ -98,9 +96,9 @@ task '//java/test/org/openqa/selenium/environment/webserver:webserver:uber' => [
JAVA_RELEASE_TARGETS = %w[
//java/src/org/openqa/selenium/chrome:chrome.publish
//java/src/org/openqa/selenium/chromium:chromium.publish
- //java/src/org/openqa/selenium/devtools/v115:v115.publish
- //java/src/org/openqa/selenium/devtools/v116:v116.publish
- //java/src/org/openqa/selenium/devtools/v117:v117.publish
+ //java/src/org/openqa/selenium/devtools/v119:v119.publish
+ //java/src/org/openqa/selenium/devtools/v120:v120.publish
+ //java/src/org/openqa/selenium/devtools/v118:v118.publish
//java/src/org/openqa/selenium/devtools/v85:v85.publish
//java/src/org/openqa/selenium/edge:edge.publish
//java/src/org/openqa/selenium/firefox:firefox.publish
@@ -111,10 +109,8 @@ JAVA_RELEASE_TARGETS = %w[
//java/src/org/openqa/selenium/grid:grid.publish
//java/src/org/openqa/selenium/ie:ie.publish
//java/src/org/openqa/selenium/json:json.publish
- //java/src/org/openqa/selenium/lift:lift.publish
//java/src/org/openqa/selenium/manager:manager.publish
//java/src/org/openqa/selenium/os:os.publish
- //java/src/org/openqa/selenium/remote/http/jdk:jdk.publish
//java/src/org/openqa/selenium/remote/http:http.publish
//java/src/org/openqa/selenium/remote:remote.publish
//java/src/org/openqa/selenium/safari:safari.publish
@@ -154,7 +150,6 @@ task remote_server: ['//java/src/org/openqa/selenium/remote/server']
task safari: ['//java/src/org/openqa/selenium/safari']
task selenium: ['//java/src/org/openqa/selenium:core']
task support: [
- '//java/src/org/openqa/selenium/lift',
'//java/src/org/openqa/selenium/support'
]
@@ -203,7 +198,6 @@ task test_remote: [
]
task test_safari: ['//java/test/org/openqa/selenium/safari:safari:run']
task test_support: [
- '//java/test/org/openqa/selenium/lift:lift:run',
'//java/test/org/openqa/selenium/support:small-tests:run',
'//java/test/org/openqa/selenium/support:large-tests:run'
]
@@ -336,21 +330,21 @@ task 'prep-release-zip': [
'//java/src/org/openqa/selenium/grid:executable-grid',
] do
[
- "build/dist/selenium-server-#{version}.zip",
- "build/dist/selenium-java-#{version}.zip",
- "build/dist/selenium-server-#{version}.jar"
+ "build/dist/selenium-server-#{java-version}.zip",
+ "build/dist/selenium-java-#{java-version}.zip",
+ "build/dist/selenium-server-#{java-version}.jar"
].each do |f|
rm_f(f) if File.exists?(f)
end
mkdir_p 'build/dist'
File.delete
- cp "bazel-bin/java/src/org/openqa/selenium/grid/server-zip.zip", "build/dist/selenium-server-#{version}.zip", preserve: false
- chmod 0666, "build/dist/selenium-server-#{version}.zip"
- cp "bazel-bin/java/src/org/openqa/selenium/client-zip.zip", "build/dist/selenium-java-#{version}.zip", preserve: false
- chmod 0666, "build/dist/selenium-java-#{version}.zip"
- cp "bazel-bin/java/src/org/openqa/selenium/grid/selenium", "build/dist/selenium-server-#{version}.jar", preserve: false
- chmod 0666, "build/dist/selenium-server-#{version}.jar"
+ cp "bazel-bin/java/src/org/openqa/selenium/grid/server-zip.zip", "build/dist/selenium-server-#{java-version}.zip", preserve: false
+ chmod 0666, "build/dist/selenium-server-#{java-version}.zip"
+ cp "bazel-bin/java/src/org/openqa/selenium/client-zip.zip", "build/dist/selenium-java-#{java-version}.zip", preserve: false
+ chmod 0666, "build/dist/selenium-java-#{java-version}.zip"
+ cp "bazel-bin/java/src/org/openqa/selenium/grid/selenium", "build/dist/selenium-server-#{java-version}.jar", preserve: false
+ chmod 0777, "build/dist/selenium-server-#{java-version}.jar"
end
task 'release-java': %i[prep-release-zip publish-maven]
@@ -391,7 +385,7 @@ end
task 'publish-maven-snapshot': JAVA_RELEASE_TARGETS do
creds = read_m2_user_pass
- if version.end_with?('-SNAPSHOT')
+ if java-version.end_with?('-SNAPSHOT')
JAVA_RELEASE_TARGETS.each do |p|
Bazel::execute('run', ['--stamp', '--define', 'maven_repo=https://oss.sonatype.org/content/repositories/snapshots', '--define', "maven_user=#{creds[0]}", '--define', "maven_password=#{creds[1]}", '--define', 'gpg_sign=false'], p)
end
diff --git a/WORKSPACE b/WORKSPACE
index 40f16067d43c4..6832bce4ddf07 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -62,10 +62,10 @@ python_register_multi_toolchains(
)
load("@python//:pip.bzl", "multi_pip_parse")
-load("@python//3.11:defs.bzl", interpreter_3_11 = "interpreter")
load("@python//3.10:defs.bzl", interpreter_3_10 = "interpreter")
-load("@python//3.9:defs.bzl", interpreter_3_9 = "interpreter")
+load("@python//3.11:defs.bzl", interpreter_3_11 = "interpreter")
load("@python//3.8:defs.bzl", interpreter_3_8 = "interpreter")
+load("@python//3.9:defs.bzl", interpreter_3_9 = "interpreter")
multi_pip_parse(
name = "py_dev_requirements",
@@ -144,9 +144,9 @@ rules_jvm_external_setup()
http_archive(
name = "contrib_rules_jvm",
- sha256 = "548f0583192ff79c317789b03b882a7be9b1325eb5d3da5d7fdcc4b7ca69d543",
- strip_prefix = "rules_jvm-0.9.0",
- url = "https://github.com/bazel-contrib/rules_jvm/archive/refs/tags/v0.9.0.tar.gz",
+ sha256 = "4d62589dc6a55e74bbe33930b826d593367fc777449a410604b2ad7c6c625ef7",
+ strip_prefix = "rules_jvm-0.19.0",
+ url = "https://github.com/bazel-contrib/rules_jvm/releases/download/v0.19.0/rules_jvm-v0.19.0.tar.gz",
)
load("@contrib_rules_jvm//:repositories.bzl", "contrib_rules_jvm_deps")
@@ -166,17 +166,33 @@ load("@maven//:defs.bzl", "pinned_maven_install")
pinned_maven_install()
http_archive(
- name = "d2l_rules_csharp",
- sha256 = "c0152befb1fd0e08527b38e41ef00b6627f9f0c2be6f2d23a4950f41701fa48a",
- strip_prefix = "rules_csharp-50e2f6c79e7a53e50b4518239b5ebcc61279759e",
- urls = [
- "https://github.com/Brightspace/rules_csharp/archive/50e2f6c79e7a53e50b4518239b5ebcc61279759e.tar.gz",
- ],
+ name = "rules_dotnet",
+ sha256 = "718cb2c3431523aaf3df7feed0e997e4ded002abbf56ac37d9c0536a812d6276",
+ strip_prefix = "rules_dotnet-0.12.0",
+ url = "https://github.com/bazelbuild/rules_dotnet/releases/download/v0.12.0/rules_dotnet-v0.12.0.tar.gz",
)
-load("//dotnet:workspace.bzl", "selenium_register_dotnet")
+load(
+ "@rules_dotnet//dotnet:repositories.bzl",
+ "dotnet_register_toolchains",
+ "rules_dotnet_dependencies",
+)
+
+rules_dotnet_dependencies()
+
+dotnet_register_toolchains("dotnet", "7.0.400")
+
+load("@rules_dotnet//dotnet:rules_dotnet_nuget_packages.bzl", "rules_dotnet_nuget_packages")
+
+rules_dotnet_nuget_packages()
+
+load("@rules_dotnet//dotnet:paket2bazel_dependencies.bzl", "paket2bazel_dependencies")
+
+paket2bazel_dependencies()
+
+load("//dotnet:paket.bzl", "paket")
-selenium_register_dotnet()
+paket()
http_archive(
name = "rules_rust",
@@ -311,19 +327,18 @@ pin_browsers()
http_archive(
name = "rules_ruby",
- sha256 = "34296f8cad46ec10b7eea59f3399feabcfbc33935b7d8bec880ea0ecfadc23b5",
- strip_prefix = "rules_ruby-9550503e1c1702375e87837d43eb137030edd28a",
- url = "https://github.com/p0deje/rules_ruby/archive/9550503e1c1702375e87837d43eb137030edd28a.zip",
+ sha256 = "e3495d0129222572654cc5dd5c72c6c997513d65fb8649f43a860ab15334a1c2",
+ strip_prefix = "rules_ruby-0.4.1",
+ url = "https://github.com/bazel-contrib/rules_ruby/releases/download/v0.4.1/rules_ruby-v0.4.1.tar.gz",
)
-load("//rb:ruby_version.bzl", "RUBY_VERSION")
load(
"@rules_ruby//ruby:deps.bzl",
"rb_bundle",
"rb_register_toolchains",
)
-rb_register_toolchains(version = RUBY_VERSION)
+rb_register_toolchains(version_file = "//:rb/.ruby-version")
rb_bundle(
name = "bundle",
diff --git a/common/devtools/chromium/v115/BUILD.bazel b/common/devtools/chromium/v118/BUILD.bazel
similarity index 100%
rename from common/devtools/chromium/v115/BUILD.bazel
rename to common/devtools/chromium/v118/BUILD.bazel
diff --git a/common/devtools/chromium/v117/browser_protocol.pdl b/common/devtools/chromium/v118/browser_protocol.pdl
similarity index 99%
rename from common/devtools/chromium/v117/browser_protocol.pdl
rename to common/devtools/chromium/v118/browser_protocol.pdl
index a2d52be0a8702..f19168c9ea39f 100644
--- a/common/devtools/chromium/v117/browser_protocol.pdl
+++ b/common/devtools/chromium/v118/browser_protocol.pdl
@@ -1002,14 +1002,61 @@ experimental domain Autofill
properties
# address field name, for example GIVEN_NAME.
string name
- # address field name, for example Jon Doe.
+ # address field value, for example Jon Doe.
string value
+ # A list of address fields.
+ type AddressFields extends object
+ properties
+ array of AddressField fields
+
type Address extends object
properties
- # fields and values defining a test address.
+ # fields and values defining an address.
array of AddressField fields
+ # Defines how an address can be displayed like in chrome://settings/addresses.
+ # Address UI is a two dimensional array, each inner array is an "address information line", and when rendered in a UI surface should be displayed as such.
+ # The following address UI for instance:
+ # [[{name: "GIVE_NAME", value: "Jon"}, {name: "FAMILY_NAME", value: "Doe"}], [{name: "CITY", value: "Munich"}, {name: "ZIP", value: "81456"}]]
+ # should allow the receiver to render:
+ # Jon Doe
+ # Munich 81456
+ type AddressUI extends object
+ properties
+ # A two dimension array containing the repesentation of values from an address profile.
+ array of AddressFields addressFields
+
+ # Specified whether a filled field was done so by using the html autocomplete attribute or autofill heuristics.
+ type FillingStrategy extends string
+ enum
+ autocompleteAttribute
+ autofillInferred
+
+ type FilledField extends object
+ properties
+ # The type of the field, e.g text, password etc.
+ string htmlType
+ # the html id
+ string id
+ # the html name
+ string name
+ # the field value
+ string value
+ # The actual field type, e.g FAMILY_NAME
+ string autofillType
+ # The filling strategy
+ FillingStrategy fillingStrategy
+
+ # Emitted when an address form is filled.
+ event addressFormFilled
+ parameters
+ # Information about the fields that were filled
+ array of FilledField filledFields
+ # An UI representation of the address used to fill the form.
+ # Consists of a 2D array where each child represents an address/profile line.
+ AddressUI addressUi
+
# Trigger autofill on a form identified by the fieldId.
# If the field and related form cannot be autofilled, returns an error.
command trigger
@@ -1027,6 +1074,11 @@ experimental domain Autofill
parameters
array of Address addresses
+ # Disables autofill domain notifications.
+ command disable
+
+ # Enables autofill domain notifications.
+ command enable
# Defines events for background web platform features.
experimental domain BackgroundService
@@ -1830,6 +1882,28 @@ experimental domain CSS
# List of keyframes.
array of CSSKeyframeRule keyframes
+ # Representation of a custom property registration through CSS.registerProperty
+ type CSSPropertyRegistration extends object
+ properties
+ string propertyName
+ optional Value initialValue
+ boolean inherits
+ string syntax
+
+
+ # CSS property at-rule representation.
+ type CSSPropertyRule extends object
+ properties
+ # The css style sheet identifier (absent for user agent stylesheet and user-specified
+ # stylesheet rules) this rule came from.
+ optional StyleSheetId styleSheetId
+ # Parent stylesheet's origin.
+ StyleSheetOrigin origin
+ # Associated property name.
+ Value propertyName
+ # Associated style declaration.
+ CSSStyle style
+
# CSS keyframe rule representation.
type CSSKeyframeRule extends object
properties
@@ -1957,6 +2031,10 @@ experimental domain CSS
optional array of CSSKeyframesRule cssKeyframesRules
# A list of CSS position fallbacks matching this node.
optional array of CSSPositionFallbackRule cssPositionFallbackRules
+ # A list of CSS at-property rules matching this node.
+ optional array of CSSPropertyRule cssPropertyRules
+ # A list of CSS property registrations matching this node.
+ optional array of CSSPropertyRegistration cssPropertyRegistrations
# Id of the first parent element that does not have display: contents.
experimental optional DOM.NodeId parentLayoutNodeId
@@ -7352,6 +7430,7 @@ domain Page
ch-ect
ch-prefers-color-scheme
ch-prefers-reduced-motion
+ ch-prefers-reduced-transparency
ch-rtt
ch-save-data
ch-ua
@@ -9691,13 +9770,22 @@ experimental domain Storage
string key
UnsignedInt128AsBase16 value
+ experimental type AttributionReportingEventReportWindows extends object
+ properties
+ # duration in seconds
+ integer start
+ # duration in seconds
+ array of integer ends
+
experimental type AttributionReportingSourceRegistration extends object
properties
Network.TimeSinceEpoch time
# duration in seconds
optional integer expiry
+ # eventReportWindow and eventReportWindows are mutually exclusive
# duration in seconds
optional integer eventReportWindow
+ optional AttributionReportingEventReportWindows eventReportWindows
# duration in seconds
optional integer aggregatableReportWindow
AttributionReportingSourceType type
@@ -11372,6 +11460,7 @@ experimental domain FedCm
enum
AccountChooser
AutoReauthn
+ ConfirmIdpSignin
# Corresponds to IdentityRequestAccount
type Account extends object
@@ -11412,6 +11501,12 @@ experimental domain FedCm
string dialogId
integer accountIndex
+ # Only valid if the dialog type is ConfirmIdpSignin. Acts as if the user had
+ # clicked the continue button.
+ command confirmIdpSignin
+ parameters
+ string dialogId
+
command dismissDialog
parameters
string dialogId
diff --git a/common/devtools/chromium/v117/js_protocol.pdl b/common/devtools/chromium/v118/js_protocol.pdl
similarity index 100%
rename from common/devtools/chromium/v117/js_protocol.pdl
rename to common/devtools/chromium/v118/js_protocol.pdl
diff --git a/common/devtools/chromium/v116/BUILD.bazel b/common/devtools/chromium/v119/BUILD.bazel
similarity index 100%
rename from common/devtools/chromium/v116/BUILD.bazel
rename to common/devtools/chromium/v119/BUILD.bazel
diff --git a/common/devtools/chromium/v116/browser_protocol.pdl b/common/devtools/chromium/v119/browser_protocol.pdl
similarity index 97%
rename from common/devtools/chromium/v116/browser_protocol.pdl
rename to common/devtools/chromium/v119/browser_protocol.pdl
index 46ab2a53eec4d..1360239087bb5 100644
--- a/common/devtools/chromium/v116/browser_protocol.pdl
+++ b/common/devtools/chromium/v119/browser_protocol.pdl
@@ -72,7 +72,7 @@ experimental domain Accessibility
optional AXValue attributeValue
# Whether this source is superseded by a higher priority source.
optional boolean superseded
- # The native markup source for this value, e.g. a
*/
private void TestPageLoadTimeoutIsEnforced(long webDriverPageLoadTimeoutInSeconds)
{
diff --git a/dotnet/test/common/TakesScreenshotTest.cs b/dotnet/test/common/TakesScreenshotTest.cs
index 4024ee153ddc3..83f57dc3a3ddc 100644
--- a/dotnet/test/common/TakesScreenshotTest.cs
+++ b/dotnet/test/common/TakesScreenshotTest.cs
@@ -29,7 +29,7 @@ public void GetScreenshotAsFile()
string filename = Path.Combine(Path.GetTempPath(), "snapshot" + new Random().Next().ToString() + ".png");
Screenshot screenImage = screenshotCapableDriver.GetScreenshot();
- screenImage.SaveAsFile(filename, ScreenshotImageFormat.Png);
+ screenImage.SaveAsFile(filename);
Assert.That(File.Exists(filename), Is.True);
Assert.That(new FileInfo(filename).Length, Is.GreaterThan(0));
File.Delete(filename);
@@ -101,7 +101,7 @@ public void ShouldCaptureScreenshotOfCurrentViewport()
[IgnoreBrowser(Browser.Edge, "Color comparisons fail on Edge")]
public void ShouldTakeScreenshotsOfAnElement()
{
-#if NET6_0
+#if NET6_0 || NET7_0
Assert.Ignore("Skipping test: this framework can not process colors.");
#endif
@@ -130,7 +130,7 @@ public void ShouldTakeScreenshotsOfAnElement()
[IgnoreBrowser(Browser.Edge, "Color comparisons fail on Edge")]
public void ShouldCaptureScreenshotAtFramePage()
{
-#if NET6_0
+#if NET6_0 || NET7_0
Assert.Ignore("Skipping test: this framework can not process colors.");
#endif
@@ -175,7 +175,7 @@ public void ShouldCaptureScreenshotAtFramePage()
[IgnoreBrowser(Browser.Edge, "Color comparisons fail on Edge")]
public void ShouldCaptureScreenshotAtIFramePage()
{
-#if NET6_0
+#if NET6_0 || NET7_0
Assert.Ignore("Skipping test: this framework can not process colors.");
#endif
@@ -218,7 +218,7 @@ public void ShouldCaptureScreenshotAtIFramePage()
[IgnoreBrowser(Browser.Edge, "Color comparisons fail on Edge")]
public void ShouldCaptureScreenshotAtFramePageAfterSwitching()
{
-#if NET6_0
+#if NET6_0 || NET7_0
Assert.Ignore("Skipping test: this framework can not process colors.");
#endif
@@ -259,7 +259,7 @@ public void ShouldCaptureScreenshotAtFramePageAfterSwitching()
[IgnoreBrowser(Browser.Edge, "Color comparisons fail on Edge")]
public void ShouldCaptureScreenshotAtIFramePageAfterSwitching()
{
-#if NET6_0
+#if NET6_0 || NET7_0
Assert.Ignore("Skipping test: this framework can not process colors.");
#endif
@@ -335,7 +335,7 @@ private HashSet ScanActualColors(Screenshot screenshot, int stepX, int s
{
HashSet colors = new HashSet();
-#if !NET6_0
+#if !NET6_0 && !NET7_0
try
{
Image image = Image.FromStream(new MemoryStream(screenshot.AsByteArray));
@@ -369,7 +369,7 @@ private Color GetPixelColor(Screenshot screenshot, int x, int y)
{
Color pixelColor = Color.Black;
-#if !NET6_0
+#if !NET6_0 && !NET7_0
Image image = Image.FromStream(new MemoryStream(screenshot.AsByteArray));
Bitmap bitmap = new Bitmap(image);
pixelColor = bitmap.GetPixel(1, 1);
diff --git a/dotnet/test/common/VirtualAuthn/VirtualAuthenticatorTest.cs b/dotnet/test/common/VirtualAuthn/VirtualAuthenticatorTest.cs
index c0573eb59241a..a5c707aa46f6b 100644
--- a/dotnet/test/common/VirtualAuthn/VirtualAuthenticatorTest.cs
+++ b/dotnet/test/common/VirtualAuthn/VirtualAuthenticatorTest.cs
@@ -3,8 +3,8 @@
using System.Collections.ObjectModel;
using System.Linq;
using OpenQA.Selenium.Environment;
+using OpenQA.Selenium.Internal;
using NUnit.Framework;
-using Microsoft.IdentityModel.Tokens;
using static OpenQA.Selenium.VirtualAuth.VirtualAuthenticatorOptions;
@@ -207,9 +207,8 @@ public void ShouldAddNonResidentCredentialWhenAuthenticatorUsesU2FProtocol()
{
CreateRKDisabledU2FAuthenticator();
- /**
- * A pkcs#8 encoded unencrypted EC256 private key as a base64url string.
- */
+
+ // A pkcs#8 encoded unencrypted EC256 private key as a base64url string.
string base64EncodedEC256PK =
"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg8_zMDQDYAxlU-Q"
+ "hk1Dwkf0v18GZca1DMF3SaJ9HPdmShRANCAASNYX5lyVCOZLzFZzrIKmeZ2jwU"
@@ -272,9 +271,7 @@ public void AddResidentCredentialNotSupportedWhenAuthenticatorUsesU2FProtocol()
// Add a resident credential using the testing API.
CreateRKEnabledU2FAuthenticator();
- /**
- * A pkcs#8 encoded unencrypted EC256 private key as a base64url string.
- */
+ // A pkcs#8 encoded unencrypted EC256 private key as a base64url string.
string base64EncodedEC256PK =
"MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg8_zMDQDYAxlU-Q"
+ "hk1Dwkf0v18GZca1DMF3SaJ9HPdmShRANCAASNYX5lyVCOZLzFZzrIKmeZ2jwU"
@@ -475,4 +472,4 @@ public void testSetUserVerified()
Assert.True(error.StartsWith("NotAllowedError"));
}
}
-}
+}
\ No newline at end of file
diff --git a/dotnet/test/common/WebDriver.Common.Tests.csproj b/dotnet/test/common/WebDriver.Common.Tests.csproj
index 46f0097bcdbe6..c0f4075b1d439 100644
--- a/dotnet/test/common/WebDriver.Common.Tests.csproj
+++ b/dotnet/test/common/WebDriver.Common.Tests.csproj
@@ -1,7 +1,7 @@
- net6.0;net48
+ net7.0
WebDriver.Common.Tests
OpenQA.Selenium
@@ -25,12 +25,12 @@
-
-
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
@@ -59,6 +59,6 @@
..\..\..\common\manager
-
+
diff --git a/dotnet/test/common/appconfig.json b/dotnet/test/common/appconfig.json
index 3bb05d483db4e..0871ec6ed9a9f 100644
--- a/dotnet/test/common/appconfig.json
+++ b/dotnet/test/common/appconfig.json
@@ -1,4 +1,5 @@
{
+ "DriverServiceLocation": "",
"ActiveDriverConfig": "Chrome",
"ActiveWebsiteConfig": "Default",
"TestWebServerConfig": {
@@ -25,7 +26,6 @@
"DriverConfigs": {
"Chrome": {
"DriverTypeName": "OpenQA.Selenium.Chrome.StableChannelChromeDriver",
- "AssemblyName": "WebDriver.Common.Tests",
"BrowserValue": "Chrome",
"RemoteCapabilities": "chrome",
"Logging": false
@@ -33,7 +33,6 @@
"ChromeDev": {
"DriverTypeName": "OpenQA.Selenium.Chrome.DevChannelChromeDriver",
- "AssemblyName": "WebDriver.Common.Tests",
"BrowserValue": "Chrome",
"RemoteCapabilities": "chrome",
"Logging": false
@@ -41,7 +40,6 @@
"EdgeIEMode": {
"DriverTypeName": "OpenQA.Selenium.IE.EdgeInternetExplorerModeDriver",
- "AssemblyName": "WebDriver.Common.Tests",
"BrowserValue": "IE",
"RemoteCapabilities": "internet explorer",
"Logging": false
@@ -49,7 +47,6 @@
"Edge": {
"DriverTypeName": "OpenQA.Selenium.Edge.StableChannelEdgeDriver",
- "AssemblyName": "WebDriver.Common.Tests",
"BrowserValue": "Edge",
"RemoteCapabilities": "MicrosoftEdge",
"Logging": false
@@ -57,7 +54,6 @@
"EdgeDev": {
"DriverTypeName": "OpenQA.Selenium.Edge.DevChannelEdgeDriver",
- "AssemblyName": "WebDriver.Common.Tests",
"BrowserValue": "Edge",
"RemoteCapabilities": "MicrosoftEdge",
"Logging": false
@@ -65,7 +61,6 @@
"Firefox": {
"DriverTypeName": "OpenQA.Selenium.Firefox.StableChannelFirefoxDriver",
- "AssemblyName": "WebDriver.Common.Tests",
"BrowserValue": "Firefox",
"RemoteCapabilities": "firefox",
"Logging": false
@@ -73,7 +68,6 @@
"FirefoxNightly": {
"DriverTypeName": "OpenQA.Selenium.Firefox.NightlyChannelFirefoxDriver",
- "AssemblyName": "WebDriver.Common.Tests",
"BrowserValue": "Firefox",
"RemoteCapabilities": "firefox",
"Logging": false
@@ -81,7 +75,6 @@
"Safari": {
"DriverTypeName": "OpenQA.Selenium.Safari.DefaultSafariDriver",
- "AssemblyName": "WebDriver.Common.Tests",
"BrowserValue": "Safari",
"RemoteCapabilities": "safari",
"Logging": false
@@ -89,7 +82,6 @@
"SafariTechPreview": {
"DriverTypeName": "OpenQA.Selenium.Safari.SafariTechnologyPreviewDriver",
- "AssemblyName": "WebDriver.Common.Tests",
"BrowserValue": "Safari",
"RemoteCapabilities": "safari",
"Logging": false
@@ -97,7 +89,6 @@
"Remote": {
"DriverTypeName": "OpenQA.Selenium.Remote.StableChannelRemoteChromeDriver",
- "AssemblyName": "WebDriver.Common.Tests",
"BrowserValue": "Remote",
"RemoteCapabilities": "chrome",
"AutoStartRemoteServer": true,
diff --git a/dotnet/test/edge/WebDriver.Edge.Tests.csproj b/dotnet/test/edge/WebDriver.Edge.Tests.csproj
index 917c36d7ae282..411dd22b73e55 100644
--- a/dotnet/test/edge/WebDriver.Edge.Tests.csproj
+++ b/dotnet/test/edge/WebDriver.Edge.Tests.csproj
@@ -1,7 +1,7 @@
- net6.0;net48
+ net7.0
WebDriver.Edge.Tests
@@ -26,8 +26,8 @@
-
-
+
+
diff --git a/dotnet/test/firefox/WebDriver.Firefox.Tests.csproj b/dotnet/test/firefox/WebDriver.Firefox.Tests.csproj
index bb64393e53984..e75039f3f4bb6 100644
--- a/dotnet/test/firefox/WebDriver.Firefox.Tests.csproj
+++ b/dotnet/test/firefox/WebDriver.Firefox.Tests.csproj
@@ -1,7 +1,7 @@
- net6.0;net48
+ net7.0
WebDriver.Firefox.Tests
@@ -37,8 +37,8 @@
-
-
+
+
diff --git a/dotnet/test/ie/WebDriver.IE.Tests.csproj b/dotnet/test/ie/WebDriver.IE.Tests.csproj
index a4de6942f7bfb..262410e1b705e 100644
--- a/dotnet/test/ie/WebDriver.IE.Tests.csproj
+++ b/dotnet/test/ie/WebDriver.IE.Tests.csproj
@@ -1,7 +1,7 @@
- net6.0;net48
+ net7.0
WebDriver.IE.Tests
OpenQA.Selenium.IE
@@ -25,8 +25,8 @@
-
-
+
+
diff --git a/dotnet/test/remote/WebDriver.Remote.Tests.csproj b/dotnet/test/remote/WebDriver.Remote.Tests.csproj
index 58563243faad2..56edf029a66a3 100644
--- a/dotnet/test/remote/WebDriver.Remote.Tests.csproj
+++ b/dotnet/test/remote/WebDriver.Remote.Tests.csproj
@@ -1,7 +1,7 @@
- net6.0;net48
+ net7.0
WebDriver.Remote.Tests
@@ -22,8 +22,8 @@
-
-
+
+
diff --git a/dotnet/test/safari/WebDriver.Safari.Tests.csproj b/dotnet/test/safari/WebDriver.Safari.Tests.csproj
index e3964e27b3445..1700c54bcf225 100644
--- a/dotnet/test/safari/WebDriver.Safari.Tests.csproj
+++ b/dotnet/test/safari/WebDriver.Safari.Tests.csproj
@@ -1,7 +1,7 @@
- net6.0;net48
+ net7.0
WebDriver.Safari.Tests
@@ -23,8 +23,8 @@
-
-
+
+
diff --git a/dotnet/test/support/BUILD.bazel b/dotnet/test/support/BUILD.bazel
deleted file mode 100644
index 2fdeabfa268b5..0000000000000
--- a/dotnet/test/support/BUILD.bazel
+++ /dev/null
@@ -1,41 +0,0 @@
-load("//dotnet:defs.bzl", "nunit_test")
-
-nunit_test(
- name = "support",
- size = "enormous",
- srcs = glob([
- "*.cs",
- "Events/*.cs",
- "Extensions/*.cs",
- "UI/*.cs",
- ]),
- out = "WebDriver.Support.Tests.dll",
- args = [
- "--workers=1",
- "--params=ConfigFile=$(location //dotnet/test/common:appconfig.json)",
- "--params=ActiveDriverConfig={}".format(config_setting),
- "--params=ActiveWebsiteConfig=HostsFileRedirect",
- ],
- data = [
- "//common/src/web",
- "//dotnet/test/common:appconfig.json",
- "//java/test/org/openqa/selenium/environment:appserver_deploy.jar",
- ],
- is_windows = select({
- "@bazel_tools//src/conditions:host_windows": True,
- "//conditions:default": False,
- }),
- tags = [
- "no-sandbox",
- "requires-network",
- ],
- target_frameworks = ["netcoreapp3.1"],
- visibility = ["//visibility:public"],
- deps = [
- "//dotnet/src/support:netstandard2.1",
- "//dotnet/src/webdriver:netstandard2.1",
- "//dotnet/test/common:firefox",
- "@json.net//:Newtonsoft.Json",
- "@moq//:Moq",
- ],
-)
diff --git a/dotnet/test/support/Events/BUILD.bazel b/dotnet/test/support/Events/BUILD.bazel
new file mode 100644
index 0000000000000..ed817b58cc87d
--- /dev/null
+++ b/dotnet/test/support/Events/BUILD.bazel
@@ -0,0 +1,52 @@
+load("//dotnet:defs.bzl", "dotnet_nunit_test_suite", "framework")
+
+SMALL_TESTS = [
+ "EventFiringWebDriverTest.cs",
+]
+
+dotnet_nunit_test_suite(
+ name = "SmallTests",
+ size = "small",
+ srcs = SMALL_TESTS,
+ target_frameworks = ["net7.0"],
+ targeting_packs = [
+ framework("nuget", "NETStandard.Library"),
+ ],
+ deps = [
+ "//dotnet/src/support",
+ "//dotnet/src/webdriver",
+ "//dotnet/test/common:fixtures",
+ framework("nuget", "NUnit"),
+ framework("nuget", "Moq"),
+ ],
+)
+
+dotnet_nunit_test_suite(
+ name = "LargeTests",
+ size = "large",
+ srcs = glob(
+ [
+ "**/*Test.cs",
+ "**/*Tests.cs",
+ ],
+ exclude = SMALL_TESTS,
+ ) + [
+ "//dotnet/test/common:assembly-fixtures",
+ ],
+ browsers = [
+ "firefox",
+ ],
+ data = [
+ "//dotnet/test/common:test-data",
+ ],
+ target_frameworks = ["net7.0"],
+ targeting_packs = [
+ framework("nuget", "NETStandard.Library"),
+ ],
+ deps = [
+ "//dotnet/src/support",
+ "//dotnet/src/webdriver",
+ "//dotnet/test/common:fixtures",
+ framework("nuget", "NUnit"),
+ ],
+)
diff --git a/dotnet/test/support/Extensions/BUILD.bazel b/dotnet/test/support/Extensions/BUILD.bazel
new file mode 100644
index 0000000000000..2605646c6dbf7
--- /dev/null
+++ b/dotnet/test/support/Extensions/BUILD.bazel
@@ -0,0 +1,18 @@
+load("//dotnet:defs.bzl", "dotnet_nunit_test_suite", "framework")
+
+dotnet_nunit_test_suite(
+ name = "SmallTests",
+ size = "small",
+ srcs = glob(["*.cs"]),
+ target_frameworks = ["net7.0"],
+ targeting_packs = [
+ framework("nuget", "NETStandard.Library"),
+ ],
+ deps = [
+ "//dotnet/src/support",
+ "//dotnet/src/webdriver",
+ "//dotnet/test/common:fixtures",
+ framework("nuget", "Moq"),
+ framework("nuget", "NUnit"),
+ ],
+)
diff --git a/dotnet/test/support/UI/BUILD.bazel b/dotnet/test/support/UI/BUILD.bazel
new file mode 100644
index 0000000000000..bb4ef1f9f8246
--- /dev/null
+++ b/dotnet/test/support/UI/BUILD.bazel
@@ -0,0 +1,57 @@
+load("//dotnet:defs.bzl", "dotnet_nunit_test_suite", "framework")
+
+SMALL_TESTS = [
+ "DefaultWaitTest.cs",
+ "FakeClock.cs",
+ "LoadableComponentTests.cs",
+ "SelectTests.cs",
+ "SlowLoadableComponentTest.cs",
+ "WebDriverWaitTest.cs",
+]
+
+dotnet_nunit_test_suite(
+ name = "SmallTests",
+ size = "small",
+ srcs = SMALL_TESTS,
+ target_frameworks = ["net7.0"],
+ targeting_packs = [
+ framework("nuget", "NETStandard.Library"),
+ ],
+ deps = [
+ "//dotnet/src/support",
+ "//dotnet/src/webdriver",
+ "//dotnet/test/common:fixtures",
+ framework("nuget", "NUnit"),
+ framework("nuget", "Moq"),
+ ],
+)
+
+dotnet_nunit_test_suite(
+ name = "LargeTests",
+ size = "large",
+ srcs = glob(
+ [
+ "**/*Test.cs",
+ "**/*Tests.cs",
+ ],
+ exclude = SMALL_TESTS,
+ ) + [
+ "//dotnet/test/common:assembly-fixtures",
+ ],
+ browsers = [
+ "firefox",
+ ],
+ data = [
+ "//dotnet/test/common:test-data",
+ ],
+ target_frameworks = ["net7.0"],
+ targeting_packs = [
+ framework("nuget", "NETStandard.Library"),
+ ],
+ deps = [
+ "//dotnet/src/support",
+ "//dotnet/src/webdriver",
+ "//dotnet/test/common:fixtures",
+ framework("nuget", "NUnit"),
+ ],
+)
diff --git a/dotnet/test/support/WebDriver.Support.Tests.csproj b/dotnet/test/support/WebDriver.Support.Tests.csproj
index 9ffeb410e34b2..7fb4107b4b938 100644
--- a/dotnet/test/support/WebDriver.Support.Tests.csproj
+++ b/dotnet/test/support/WebDriver.Support.Tests.csproj
@@ -1,7 +1,7 @@
- net6.0;net48
+ net7.0
WebDriver.Support.Tests
@@ -23,8 +23,8 @@
-
-
+
+
diff --git a/dotnet/update-deps.sh b/dotnet/update-deps.sh
new file mode 100755
index 0000000000000..e2056c70b305e
--- /dev/null
+++ b/dotnet/update-deps.sh
@@ -0,0 +1,9 @@
+#! /usr/bin/env bash
+
+SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
+
+(
+ cd "$SCRIPT_DIR" || exit 1
+ (dotnet tool restore && dotnet tool run paket install)
+ bazel run @rules_dotnet//tools/paket2bazel:paket2bazel.exe -- --dependencies-file "$(pwd)"/paket.dependencies --output-folder "$(pwd)"
+)
diff --git a/dotnet/workspace.bzl b/dotnet/workspace.bzl
index 3e8ebc2ca8bed..270eeef854208 100644
--- a/dotnet/workspace.bzl
+++ b/dotnet/workspace.bzl
@@ -11,36 +11,12 @@ def selenium_register_dotnet():
native.register_toolchains("//third_party/dotnet/ilmerge:all")
- import_nuget_package(
- name = "identitymodel.tokens",
- file = "third_party/dotnet/nuget/packages/microsoft.identitymodel.tokens.6.19.0.nupkg",
- sha256 = "9ef0cd1a0f36716e20a39a7d612292c1ea0b1a6f196395db0c7552518ac0f0bd",
- )
-
- import_nuget_package(
- name = "identitymodel.logging",
- file = "third_party/dotnet/nuget/packages/microsoft.identitymodel.logging.6.19.0.nupkg",
- sha256 = "0f0c738bf4ce27c5b4f6a441ce067a888b3e3b2a6783517b5d8caa46eec4516a",
- )
-
- import_nuget_package(
- name = "identitymodel.abstractions",
- file = "third_party/dotnet/nuget/packages/microsoft.identitymodel.abstractions.6.19.0.nupkg",
- sha256 = "eaa7f4995eb68edf7b6d1586a3a35027f6f9252ab82cb1478cec347a42895ee0",
- )
-
import_nuget_package(
name = "json.net",
file = "third_party/dotnet/nuget/packages/newtonsoft.json.13.0.1.nupkg",
sha256 = "2b6b52556e27e1b7913f33eedeb95568110c746bd64afff74357f1683878323a",
)
- import_nuget_package(
- name = "system.drawing.common",
- file = "third_party/dotnet/nuget/packages/system.drawing.common.7.0.0.nupkg",
- sha256 = "b78141813321b8e039140db77e0d1640e1ae1f49e357b8495d24ff2e7fd99e4b",
- )
-
import_nuget_package(
name = "moq",
file = "third_party/dotnet/nuget/packages/moq.4.12.0.nupkg",
diff --git a/java/CHANGELOG b/java/CHANGELOG
index 9b7c33e42fe33..cedc87ac9d212 100644
--- a/java/CHANGELOG
+++ b/java/CHANGELOG
@@ -1,3 +1,108 @@
+v4.16.0
+======
+
+* Allow stereotype to always allow browser version of "stable"
+* [bidi] Listen to channel message
+* [bidi] Add realm related events
+* Move the module-info.class to the correct place
+* Allow external uri to be configurable for components that support server functionality - #12491 (#12508)
+* Close the streams after I/O failure #13096
+* Fix events without parameters #13109
+* Chrome-based browsers can do CDP-based script pinning (#13125)
+* Ensure the complete output is read #13091
+* Fixed reading array parameters in the CDP client
+* Keep HttpClient alive until unused #12558 (#12978)
+* Implement Safe Casting in getPermissions Method (#13143)
+* Fix null request in case of chunked request (#13113)
+* Set a name for thread started to forward output of external processes (#13142)
+* Allow resuing devtools instance with JDK 11 client (#12882, #13165)
+* Ensure all print options are sent as map instead of object
+* Allow setting print options page ranges using list
+* Fix bug replacing setDownloadThroughput for setUploadThroughput (#13187)
+* Add macOS 14.0 to Platform enum
+* Do not return linux Selenium Manager by default
+* [bidi] Add traverse history command
+* Make the json parsing exception text more helpful
+* Add javadoc to support event classes (#13199)
+* Packages should be opened to modules #13217
+* Add more tests for java support event class (#13198)
+* Add a `/quitquitquit` endpoint to the test server to make killing it easy
+* Grid vnc session is not using the --sub-path argument (#12791, #13219)
+* Remove retrying on timeout exception (#13224, #12975)
+* Must not request further invocations for a broken websocket
+* Moved org.openqa.selenium.remote.http.jdk to selenium-http (#13243)
+* Add Chrome 120 and remove 117 for CDP
+
+v4.15.0
+======
+
+* Fixed the characteristics of the collector
+* Marked Client Config version field as final. (#12941)
+* Removed use of guava from browser packages
+* Removed use of guava from devtools (#12943)
+* Do not set browser binary if it is an empty string (#12738)
+* Allow setting proxy for all http client instances (#12940)
+* Ensure request can be modified while intercepting (#12930)
+* Add BiDi browsing contexts events related to navigation and user prompt
+* Update Actions.java as removed modifier keys (#12903)
+* Removed the unused netty domain socket client and dependencies
+* Removed the guava reference from os, manager, bidi package
+* Removed the unused sockets test base
+* Removed most usages of guava from the support package
+* Copy SM binary to cache folder and use it from there (#11359) (#12539)
+* Prevent browser to be created and unused in case a short session-request-timeout is set (#12848)
+* Add BiDi request data types from Network module
+* Remove the http2-settings header in the reverse proxy
+* Add BiDi network response data type, network initiator type
+* Add value key to delete downloadFile response per w3c convention (#13025)
+* Add BiDi BeforeRequestSent type
+* Add BiDi mechanism to listen to network event - beforeRequestSent
+* Fix bug in downloading files by ensuring browser vendor options in capabilities (#13024)
+* Add BiDi network module events - onResponseStarted and onResponseCompleted
+* Fixed processing continuation frames #12962
+* Remove CDP version dependencies in the server (#12502)
+* Add placeholder for BiDi script module commands and events
+* Add BiDi script types, remote reference types, and local value types for script module
+* Change local value method name for BiDi serialization
+* Fixed the invalid session id response #12655
+* Add BiDi channel value type, remote value type and evaluate result types
+* Add BiDi call script command, evaluate function command, disown command, get realms command
+* Open the selenium-manager to the selenium-json package for the Java Module System
+* Add message to exception error for downloads error
+* Add BiDi command to add and remove preload script
+* Add CDP v119 and remove v116
+* Implement file downloads (#12979)
+
+v4.14.1
+======
+* Add print, activate and set viewport commands to Browsing Context
+* Remove deprecated lift packages (#12917)
+* Add validation for browsing context id (#12920)
+* Fix default values for print options page size
+* Use the java process builder to run external processes (#12898)
+* Allow a custom timeout when shutting down a process
+* Replacing Guava implementations with native Java implementations
+* Allow setting version in Http Client Config (#12919)
+
+v4.14.0
+======
+* Supported CDP versions: 85, 116, 117, 118
+* Replace the EventAttribute(Value) with an AttributeMap (#12684)
+* Add browsing context's capture box and element screenshot commands
+* Enable handle user prompt tests for Firefox
+* Delete SM binary only when SE_MANAGER_PATH is not set (#12840)
+* Shutdown executors created for a single tasks
+* Ensure closed socket connection does not prevent freeing up resources
+* Remove the unused htmlunit-driver from the unit tests (#12849)
+* Ensure proper error message gets logged (#12853)
+* Allow setting SSL context in client config for HttpClient (#12874)
+* Improve warning when CDP version not found (#12880)
+* Ensure retry mechanism does not swallow an exception (#12838)
+* Require Java 11 and move jdk-http-client into default package (#12843)
+* Reduce log noise at FINE level (#12866)
+* Refactor frame method to use isEmpty for list check and String check. (#12894)
+* Use new 'getArray' method to extract driver configurations (#12716)
+
v4.13.0
======
* Supported CDP versions: 85, 115, 116, 117
diff --git a/java/defs.bzl b/java/defs.bzl
index 5089a29c60451..354013ecf109a 100644
--- a/java/defs.bzl
+++ b/java/defs.bzl
@@ -1,3 +1,7 @@
+load(
+ "@contrib_rules_jvm//java:defs.bzl",
+ _JUNIT5_DEPS = "JUNIT5_DEPS",
+)
load(
"@rules_java//java:defs.bzl",
_java_binary = "java_binary",
@@ -5,16 +9,12 @@ load(
)
load("@rules_jvm_external//:defs.bzl", _artifact = "artifact", _javadoc = "javadoc", _maven_bom = "maven_bom")
load("//java/private:dist_zip.bzl", _java_dist_zip = "java_dist_zip")
+load("//java/private:java_test_suite.bzl", _java_test_suite = "java_test_suite")
load("//java/private:library.bzl", _java_export = "java_export", _java_library = "java_library", _java_test = "java_test")
load("//java/private:merge_jars.bzl", _merge_jars = "merge_jars")
load("//java/private:module.bzl", _java_module = "java_module")
load("//java/private:selenium_test.bzl", _selenium_test = "selenium_test")
load("//java/private:suite.bzl", _java_selenium_test_suite = "java_selenium_test_suite")
-load(
- "@contrib_rules_jvm//java:defs.bzl",
- _JUNIT5_DEPS = "JUNIT5_DEPS",
- _java_test_suite = "java_test_suite",
-)
def java_test_suite(name, runner = "junit5", **kwargs):
_java_test_suite(name = name, runner = runner, **kwargs)
diff --git a/java/maven_deps.bzl b/java/maven_deps.bzl
index d2083aec21b75..05f6c39c808c4 100644
--- a/java/maven_deps.bzl
+++ b/java/maven_deps.bzl
@@ -2,7 +2,7 @@ load("@rules_jvm_external//:defs.bzl", "maven_install")
load("@rules_jvm_external//:specs.bzl", "maven")
def selenium_java_deps():
- netty_version = "4.1.96.Final"
+ netty_version = "4.1.100.Final"
opentelemetry_version = "1.28.0"
junit_jupiter_version = "5.10.0"
junit_platform_version = "1.10.0"
@@ -29,16 +29,6 @@ def selenium_java_deps():
"com.graphql-java:graphql-java:20.2",
"com.graphql-java:java-dataloader:3.2.0",
"dev.failsafe:failsafe:3.3.2",
- maven.artifact(
- group = "junit",
- artifact = "junit",
- version = "4.13.2",
- exclusions = [
- "org.hamcrest:hamcrest-all",
- "org.hamcrest:hamcrest-core",
- "org.hamcrest:hamcrest-library",
- ],
- ),
"io.grpc:grpc-context:1.57.1",
"io.lettuce:lettuce-core:6.2.5.RELEASE",
"io.netty:netty-buffer:%s" % netty_version,
@@ -48,16 +38,6 @@ def selenium_java_deps():
"io.netty:netty-handler:%s" % netty_version,
"io.netty:netty-handler-proxy:%s" % netty_version,
"io.netty:netty-transport:%s" % netty_version,
- "io.netty:netty-transport-classes-epoll:%s" % netty_version,
- "io.netty:netty-transport-classes-kqueue:%s" % netty_version,
- # Start - Needed to support unix domain sockets
- "io.netty:netty-transport-native-epoll:%s" % netty_version,
- "io.netty:netty-transport-native-epoll:jar:linux-x86_64:%s" % netty_version,
- "io.netty:netty-transport-native-kqueue:%s" % netty_version,
- "io.netty:netty-transport-native-kqueue:jar:osx-aarch_64:%s" % netty_version,
- "io.netty:netty-transport-native-kqueue:jar:osx-x86_64:%s" % netty_version,
- # End - Needed to support unix domain sockets
- "io.netty:netty-transport-native-unix-common:%s" % netty_version,
"io.opentelemetry:opentelemetry-api:%s" % opentelemetry_version,
"io.opentelemetry:opentelemetry-context:%s" % opentelemetry_version,
"io.opentelemetry:opentelemetry-exporter-logging:%s" % opentelemetry_version,
@@ -75,18 +55,8 @@ def selenium_java_deps():
"org.apache.commons:commons-exec:1.3",
"org.apache.logging.log4j:log4j-core:2.20.0",
"org.assertj:assertj-core:3.24.2",
- maven.artifact(
- group = "org.asynchttpclient",
- artifact = "async-http-client",
- version = "2.12.3",
- exclusions = [
- "io.netty:netty-transport-native-epoll",
- "io.netty:netty-transport-native-kqueue",
- ],
- ),
- "org.bouncycastle:bcpkix-jdk15on:1.70",
+ "org.bouncycastle:bcpkix-jdk18on:1.76",
"org.eclipse.mylyn.github:org.eclipse.egit.github.core:2.1.5",
- "org.hamcrest:hamcrest:2.2",
"org.hsqldb:hsqldb:2.7.2",
"org.junit.jupiter:junit-jupiter-api:%s" % junit_jupiter_version,
"org.junit.jupiter:junit-jupiter-engine:%s" % junit_jupiter_version,
@@ -98,7 +68,6 @@ def selenium_java_deps():
"org.mockito:mockito-core:4.11.0",
"org.mockito:mockito-inline:4.11.0",
"org.redisson:redisson:3.23.2",
- "org.seleniumhq.selenium:htmlunit-driver:4.11.0",
"org.slf4j:slf4j-api:2.0.7",
"org.slf4j:slf4j-jdk14:2.0.7",
"org.zeromq:jeromq:0.5.3",
@@ -108,11 +77,6 @@ def selenium_java_deps():
"org.hamcrest:hamcrest-core",
"io.netty:netty-all", # Depend on the actual things you need
],
- override_targets = {
- "org.seleniumhq.selenium:selenium-api": "@//java/src/org/openqa/selenium:core",
- "org.seleniumhq.selenium:selenium-remote-driver": "@//java/src/org/openqa/selenium/remote:remote",
- "org.seleniumhq.selenium:selenium-support": "@//java/src/org/openqa/selenium/support",
- },
fail_on_missing_checksum = True,
fail_if_repin_required = True,
fetch_sources = True,
diff --git a/java/maven_install.json b/java/maven_install.json
index 841ae2d5eb387..10a99e1013579 100644
--- a/java/maven_install.json
+++ b/java/maven_install.json
@@ -1,7 +1,7 @@
{
"__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
- "__INPUT_ARTIFACTS_HASH": 991709172,
- "__RESOLVED_ARTIFACTS_HASH": 1120536062,
+ "__INPUT_ARTIFACTS_HASH": -500415533,
+ "__RESOLVED_ARTIFACTS_HASH": -758805856,
"artifacts": {
"com.beust:jcommander": {
"shasums": {
@@ -178,27 +178,6 @@
},
"version": "3.2.0"
},
- "com.shapesecurity:salvation2": {
- "shasums": {
- "jar": "a1a0f5238a07f246c9e206725f697e5623e93b729d8fd8b148fc627bf9a27c07",
- "sources": "b10a798a9f988eaac6d053f445d5769f6f51dc89164aae16901ea37234d8af3c"
- },
- "version": "3.0.1"
- },
- "com.sun.activation:jakarta.activation": {
- "shasums": {
- "jar": "02156773e4ae9d048d14a56ad35d644bee9f1052a791d072df3ded3c656e6e1a",
- "sources": "f8f52ce9df5d5d29c1778183d48214624caa36be202a7eff2cef5a0519f2aa53"
- },
- "version": "1.2.2"
- },
- "com.typesafe.netty:netty-reactive-streams": {
- "shasums": {
- "jar": "eafc52d500b49e891db095ee7baac0420aea8a97015ab7671ba1f1ccabf799d2",
- "sources": "76df17cc7c4fac9c470e557b5cca224df51ba878ec9fd3fd8f0f89878cbf98ab"
- },
- "version": "2.0.4"
- },
"commons-codec:commons-codec": {
"shasums": {
"jar": "b3e9f6d63a790109bf0d056611fbed1cf69055826defeb9894a71369d246ed63",
@@ -208,10 +187,10 @@
},
"commons-io:commons-io": {
"shasums": {
- "jar": "15093cffda2a0c65783c1d371de55548303cc158df94a66fc6cd15d25c3e2ef8",
- "sources": "7fca56242374a75f9104836b2da299fb91aee05f263303db69ad5bb886be5249"
+ "jar": "a10418348d234968600ccb1d988efcbbd08716e1d96936ccc1880e7d22513474",
+ "sources": "3b69b518d9a844732e35509b79e499fca63a960ee4301b1c96dc32e87f3f60a1"
},
- "version": "2.10.0"
+ "version": "2.5"
},
"commons-logging:commons-logging": {
"shasums": {
@@ -220,13 +199,6 @@
},
"version": "1.2"
},
- "commons-net:commons-net": {
- "shasums": {
- "jar": "e3c1566f821b84489308cd933f57e8c00dd8714dc96b898bef844386510d3461",
- "sources": "b910528017f757a8b54f4e764d3e0fadccf7a25aaf2acd666674585ae6e58b55"
- },
- "version": "3.9.0"
- },
"dev.failsafe:failsafe": {
"shasums": {
"jar": "2c5dc879a6dac7ea3a7b29d795e27bd49b8e7908b05c2f3e56053c19d79850f5",
@@ -264,17 +236,17 @@
},
"io.netty:netty-buffer": {
"shasums": {
- "jar": "1dee6f5b4aa485339d49525ec3689463f724785fc35e7db02f9e46cbdecbe335",
- "sources": "87b842d95f2ce1aadad356487cc396fc26cebae2ba56c331943b3a2e8eea4085"
+ "jar": "462874b44ee782fbefec64078cda6eb8e7bf9f0e0af71a928ef4c1f2d564f7ee",
+ "sources": "7954d2b274d418d844a573a4712b18a7c40b85f94284f5429cb32e6408394d60"
},
- "version": "4.1.96.Final"
+ "version": "4.1.100.Final"
},
"io.netty:netty-codec": {
"shasums": {
- "jar": "07305d3e565fc01da310f1c8ea7935c08e42ff1977590f2d44fc1305cb470d60",
- "sources": "d691c3e1cec322b02d62586d1a695989037429d89e6a97558e7a84a17890916d"
+ "jar": "180a01ed67af399602e24ff1c32864e7f57f57c4a0fa5e9ab3fe9b0e5e9cf051",
+ "sources": "33a18f8618c81b251e58d2cc94445bddf7bf0c84856213febf13c2b42fd5966a"
},
- "version": "4.1.96.Final"
+ "version": "4.1.100.Final"
},
"io.netty:netty-codec-dns": {
"shasums": {
@@ -285,52 +257,52 @@
},
"io.netty:netty-codec-http": {
"shasums": {
- "jar": "b64808027d7d18c59126ff3a33012c43ac58a0798c1cd1e765f6f71a3fd4ff76",
- "sources": "f479e83d7a984b75f120980c5717de510dfd800fad110e9521edb86c4403c4ed"
+ "jar": "326811d249cb0e5555e78e026e877834e792261c38f0666d80464426695d9590",
+ "sources": "6f1489ef88b5dc670addd06180e1f5f3bf86b9fd01758d8200a4f7307ddf77d1"
},
- "version": "4.1.96.Final"
+ "version": "4.1.100.Final"
},
"io.netty:netty-codec-http2": {
"shasums": {
- "jar": "6eb87af9a396ba21a6cbbbd047c4b3139f40ded2feefba4632802e94c0ef24dd",
- "sources": "32b4f5038a22d09caeeb2e533d5d7f9dcb8d97d855ecffb77c3ba8189a79b171"
+ "jar": "23b4a74350f4cf8d41b93fb93d52b5050667d8d53fffc385672c86eab83b8749",
+ "sources": "10ddecd4de1351a4bdfa4ed6a113a47f808edfdd54b83cd477c4fb27e935f78e"
},
- "version": "4.1.96.Final"
+ "version": "4.1.100.Final"
},
"io.netty:netty-codec-socks": {
"shasums": {
- "jar": "29de9bb7fe9633fcc3d2f8246293f8692aa5e5bd7ee2a425a0f211d5e6b493b8",
- "sources": "98ca5d528fdd2fb46970780ec51d1b5aa5b049e8edadc8b7e28d58bdbb330ab4"
+ "jar": "608a453b90f8384ba4efcdc6db7f899a1f10b9ea1890954696e6cfac45ff1ba9",
+ "sources": "a2f57ddadc95f8d06ce8b1713a30e72aab6acf9a20fba7eb0e30b7df9e6ec256"
},
- "version": "4.1.96.Final"
+ "version": "4.1.100.Final"
},
"io.netty:netty-common": {
"shasums": {
- "jar": "da104e80db830922eaf860eb1c5e957cd1d124068253d02e9c7a7843bc66427a",
- "sources": "93ffed7895170f30173b62ef87b0d69cc9e897eff693870d748b13f8d8010b27"
+ "jar": "d2908301f1ac6f2910900742473c15d701765d3d4467acdb1eebb9df3aa82885",
+ "sources": "cb67f6cfc3ee2c9f0966ad244197e0c23a9c1c615aec764afd3793316766c67c"
},
- "version": "4.1.96.Final"
+ "version": "4.1.100.Final"
},
"io.netty:netty-handler": {
"shasums": {
- "jar": "574ebef95a16053246ab692773d75d8bd7907b709e1083a096fa6ab2a6d6c2b3",
- "sources": "3205eefc3ba2618f46fc5b12997e14ae512370f96222777f21fd189844eca511"
+ "jar": "0e10e584c2e7fdf7f4804e14760ed987003f1b62ab982f62eaf13a9892793d3a",
+ "sources": "c591995af266161769863298dfe1aa2ff634c25abef33e710a1c9f2ef707fc20"
},
- "version": "4.1.96.Final"
+ "version": "4.1.100.Final"
},
"io.netty:netty-handler-proxy": {
"shasums": {
- "jar": "4832bbbab1daac36ecd04d2ed2dc586c4a57b4604d89145a2de487ff5b00e4cd",
- "sources": "25eea09d17a66434208666efb945247415703d2f6d35ce18fa2754db9b31d456"
+ "jar": "686dbc2e61407f216d6cb267dd7954896f851dd34b58be3e757c5a89f20a5e67",
+ "sources": "40b1123cfaec444459e1184af882c994cb7c6a9b21cc7f4c98e902e2ee628f10"
},
- "version": "4.1.96.Final"
+ "version": "4.1.100.Final"
},
"io.netty:netty-resolver": {
"shasums": {
- "jar": "54951fae449fa343038fc57855abf5822918d52ca5a302a421f327cad9c75cf1",
- "sources": "d0418d5ae50d3b323f638316e2595bdba30a36bb4c8b960a7e70546fea5eb680"
+ "jar": "c42c481c776e9d367a45cc3a67a06f65897d280334eb30b2362b8c55b7523f4f",
+ "sources": "5e8cd49d0804f2ec6c04f16f46cc1a6ebfb00745177d740c23a51b9913c28fc8"
},
- "version": "4.1.96.Final"
+ "version": "4.1.100.Final"
},
"io.netty:netty-resolver-dns": {
"shasums": {
@@ -341,48 +313,17 @@
},
"io.netty:netty-transport": {
"shasums": {
- "jar": "8fe3afbe8b094a7b9f1eb27becf1cf017e5572343c1744d2b6040d5f331e84e3",
- "sources": "2e6524f975bff28fec73ef6cfdf315a184ee1b438f5ade4ca468ada0e902adac"
+ "jar": "b1deeceedab3734cdb959c55f4be5ab4a667a8aed59121ff93763f49470f5470",
+ "sources": "3c90fa8b30f71f02aff109d06931819ae54b16a3d61a15dfa9e24161057d57c4"
},
- "version": "4.1.96.Final"
- },
- "io.netty:netty-transport-classes-epoll": {
- "shasums": {
- "jar": "1591b3ea061932677dc2bab6cb7d82e8f1837a52b3c781f4daa99984ec87a9cd",
- "sources": "2bd68cc0d88b97413abfa9ede1b66e688275f40b6f79557e5d775687dab62ca8"
- },
- "version": "4.1.96.Final"
- },
- "io.netty:netty-transport-classes-kqueue": {
- "shasums": {
- "jar": "f2f1fab3b297aee20a3922c79b548c8b4b72bb10b635375434c108ee05f29430",
- "sources": "31857b216e8fc6a80abb7284e1eb11aad19ec9ded66837cfe5a17d30c3b9df54"
- },
- "version": "4.1.96.Final"
- },
- "io.netty:netty-transport-native-epoll": {
- "shasums": {
- "jar": "33d8f491e47a5a365a9bab0c279ae3d47313f00f305c3d0333ae7fdba6762786",
- "linux-x86_64": "9363c8131744931d54db62d03922563aa5ddc96db53910beb9c2953bfa8bca34",
- "sources": "f56e7f66fc2446126b116f302a0fa92b82c9721b2e8b61f5134ef0f228089491"
- },
- "version": "4.1.96.Final"
- },
- "io.netty:netty-transport-native-kqueue": {
- "shasums": {
- "jar": "ccc3c040867d9512607af3639839f686a68d8ff836f304a71aa68c9ec6ef94c3",
- "osx-aarch_64": "c5e228db77b235fc3e2df0afe0128904022893f1db5395fb8bd44257ada268c5",
- "osx-x86_64": "89f1a331da4fd49d39ac83e03f4cdb04417bd7ce32f522ef2eb670e09225add6",
- "sources": "f1be67562c87ac5ae2f093fcd59a6bc0beb59ac8927d266a3d5db5e550d05226"
- },
- "version": "4.1.96.Final"
+ "version": "4.1.100.Final"
},
"io.netty:netty-transport-native-unix-common": {
"shasums": {
- "jar": "4f96297a06a544a4cdb6fe6af8b868640f100fa96969e2196be216bd41adef13",
- "sources": "5ecc143cda9ad195dc29aa1c2dae767c72ff07659781fd51ca2a64a4d54d170f"
+ "jar": "5d888230a04c4a3e647c64e933cefb64fd49056f969bfb734c8a3fcedf0bea8a",
+ "sources": "28c71aa6c4f36cd8cc472142c858f324f8a23b85150a443e742c8814f46bb596"
},
- "version": "4.1.96.Final"
+ "version": "4.1.100.Final"
},
"io.opentelemetry:opentelemetry-api": {
"shasums": {
@@ -524,13 +465,6 @@
},
"version": "1.2.0"
},
- "junit:junit": {
- "shasums": {
- "jar": "8e495b634469d64fb8acfa3495a065cbacc8a0fff55ce1e31007be4c16dc57d3",
- "sources": "34181df6482d40ea4c046b063cb53c7ffae94bdf1b1d62695bdf3adf9dea7e3a"
- },
- "version": "4.13.2"
- },
"net.bytebuddy:byte-buddy": {
"shasums": {
"jar": "e99761a526df0fefbbd3fe14436b0f953000cdfa5151dc63c0b18d37d9c46f1c",
@@ -559,13 +493,6 @@
},
"version": "11.4"
},
- "net.sourceforge.htmlunit:htmlunit": {
- "shasums": {
- "jar": "9957f53bd8eb96d5afc78766415486567549d9b204dc5d931a5690f8f10155ee",
- "sources": "93a22d875c6db84746180fd620f523da65eea5c713673ec49ded7c0d0a34d662"
- },
- "version": "2.70.0"
- },
"net.sourceforge.htmlunit:htmlunit-core-js": {
"shasums": {
"jar": "7008cd93de74c8413b94ecf8b63fe642ee73168c5beba8c33b76ac80c4e4865c",
@@ -573,27 +500,6 @@
},
"version": "2.70.0"
},
- "net.sourceforge.htmlunit:htmlunit-cssparser": {
- "shasums": {
- "jar": "c684323dc4e2198d0abebe5f0c025560c3c10c34c1d228646e40ae747135f607",
- "sources": "8787b79b62c9e0f6472c3b0f02e4fadbe028fecfd5355404077cd2e88dd4c7c7"
- },
- "version": "1.14.0"
- },
- "net.sourceforge.htmlunit:htmlunit-xpath": {
- "shasums": {
- "jar": "3eaee2f5058da2ebcf5c74f0d977c032cfbd9300564eb49870dce399706b0a73",
- "sources": "f8a6465dd4f64a34da81b396c0b1d6740ba9f301718a808d30adb3b3559b21d6"
- },
- "version": "2.70.0"
- },
- "net.sourceforge.htmlunit:neko-htmlunit": {
- "shasums": {
- "jar": "e9e011e102ef85cfb4369580babd60a5c62b806e21224451f7e3e1949e475565",
- "sources": "d082f1d317d4153f93f23ad9e24ba694dd104177cd8d03fe19c6f5fa97e43120"
- },
- "version": "2.70.0"
- },
"org.apache.bcel:bcel": {
"shasums": {
"jar": "bdeb381d0d19999e221e6a0f8d8bf44f5b19c2e57eabf68b70dc098652aefaf5",
@@ -643,27 +549,6 @@
},
"version": "5.1.3"
},
- "org.apache.httpcomponents:httpclient": {
- "shasums": {
- "jar": "c8bc7e1c51a6d4ce72f40d2ebbabf1c4b68bfe76e732104b04381b493478e9d6",
- "sources": "55b01f9f4cbec9ac646866a4b64b176570d79e293a556796b5b0263d047ef8e6"
- },
- "version": "4.5.14"
- },
- "org.apache.httpcomponents:httpcore": {
- "shasums": {
- "jar": "6c9b3dd142a09dc468e23ad39aad6f75a0f2b85125104469f026e52a474e464f",
- "sources": "705f8cf3671093b6c1db16bbf6971a7ef400e3819784f1af53e5bc3e67b5a9a0"
- },
- "version": "4.4.16"
- },
- "org.apache.httpcomponents:httpmime": {
- "shasums": {
- "jar": "d401243d5c6eae928a37121b6e819158c8c32ea0584793e7285bb489ab2a3d17",
- "sources": "9b8c59ecd259d16a026945abb5c2a82f403b6c3dcc1588dbc2532f2cd5d4e83d"
- },
- "version": "4.5.14"
- },
"org.apache.logging.log4j:log4j-api": {
"shasums": {
"jar": "2f43eea679ea66f14ca0f13fec2a8600ac124f5a5231dcb4df8393eddcb97550",
@@ -692,47 +577,26 @@
},
"version": "3.24.2"
},
- "org.asynchttpclient:async-http-client": {
- "shasums": {
- "jar": "107a4ace7a3586f8e8a027c6d7e9933c9ae56eeb1a6df347eed2e7b552e4e5ed",
- "sources": "fd7d5e61cb6e5adbb06c14b72c10c88e18ebfaf22d401a521eae14123b537900"
- },
- "version": "2.12.3"
- },
- "org.asynchttpclient:async-http-client-netty-utils": {
- "shasums": {
- "jar": "e0bb76bbca0c85c68cab25dbed7989b00db5da8627cf69258f398d7d89bc9067",
- "sources": "0b66a2867a3e4ea1e101e64d961d677bc6fbbbefa462b8fac461ef9101bec435"
- },
- "version": "2.12.3"
- },
- "org.bouncycastle:bcpkix-jdk15on": {
- "shasums": {
- "jar": "e5b9cb821df57f70b0593358e89c0e8d7266515da9d088af6c646f63d433c07c",
- "sources": "0c9a75e4c10ec82bb1d410fd0787fd15acc718ea59b5dc160278fcee887c0f26"
- },
- "version": "1.70"
- },
- "org.bouncycastle:bcprov-jdk15on": {
+ "org.bouncycastle:bcpkix-jdk18on": {
"shasums": {
- "jar": "8f3c20e3e2d565d26f33e8d4857a37d0d7f8ac39b62a7026496fcab1bdac30d4",
- "sources": "0252e39814e4403b5d91a7386c3a5ac3e1fe65d43c2d25fed8d45e8eebab2696"
+ "jar": "935a388854c329f9a6f32708f30c90045d2f91294fa687281273145d4cf9834a",
+ "sources": "c2f5d37a268bd3c7fac567e700bb10e63756d391b0090743b2ee6e3ffac58c63"
},
- "version": "1.70"
+ "version": "1.76"
},
- "org.bouncycastle:bcutil-jdk15on": {
+ "org.bouncycastle:bcprov-jdk18on": {
"shasums": {
- "jar": "52dc5551b0257666526c5095424567fed7dc7b00d2b1ba7bd52298411112b1d0",
- "sources": "5bc99f2da0436d62ab22a374a77a913f33c91f9c23f06f1fca4d62a66b24d303"
+ "jar": "fda85d777aaae168015860b23a77cad9b8d3a1d5c904fda875313427bd560179",
+ "sources": "b021a75c7ea7602d7fa6eaa288dafa855ec4a327321680dca289871b9271534f"
},
- "version": "1.70"
+ "version": "1.76"
},
- "org.brotli:dec": {
+ "org.bouncycastle:bcutil-jdk18on": {
"shasums": {
- "jar": "615c0c3efef990d77831104475fba6a1f7971388691d4bad1471ad84101f6d52",
- "sources": "064ac1e41f475c1fd0479b6505f44b6e3bb044b948bddc75d56a496ebb85fbc3"
+ "jar": "1a65ad02958223a3f31373bd72eea942cafd1b1877a3ed0b492c2487e77c3c27",
+ "sources": "897cc65df5e79dfc31add6a61016b189d51718bc5e914bc78cb0948c45327b14"
},
- "version": "0.1.2"
+ "version": "1.76"
},
"org.checkerframework:checker-qual": {
"shasums": {
@@ -748,55 +612,6 @@
},
"version": "2.1.3"
},
- "org.eclipse.jetty.websocket:websocket-api": {
- "shasums": {
- "jar": "cd64551abf8e5130b01f1063fe94d4c58df74f134bb684f0b9bed56196e85f1d",
- "sources": "7d6224315742a1214fba2cb3492ed5849741122298b5eff17e59b1f50d4ade54"
- },
- "version": "9.4.50.v20221201"
- },
- "org.eclipse.jetty.websocket:websocket-client": {
- "shasums": {
- "jar": "7f8d9861f87e59cbe1fd6beadeae0b32f1a7cc78ffccf2f13e8b4db9dd70602b",
- "sources": "88be3d0110d3b9f78ad7c8996d41f2fe5bf2bbdfed90dabf12390e479a5cebda"
- },
- "version": "9.4.50.v20221201"
- },
- "org.eclipse.jetty.websocket:websocket-common": {
- "shasums": {
- "jar": "d6b8bba5e8864eaf98d853458403a75dc401c4858badf9d009941f402cc2671b",
- "sources": "c68f5cd7413f8511afde5df620ab6dab1dad18fbe96adb35e19d89c6754a9955"
- },
- "version": "9.4.50.v20221201"
- },
- "org.eclipse.jetty:jetty-client": {
- "shasums": {
- "jar": "b216e173d79c0adce1da3d0894abe418453851a3dc6cc5006e5d3003dcac88fd",
- "sources": "e29b882a38ee652e82d9759435ca4cfabf78434c715095fcac703b181aa16e5f"
- },
- "version": "9.4.50.v20221201"
- },
- "org.eclipse.jetty:jetty-http": {
- "shasums": {
- "jar": "3e3c569b9f39dbd1c9ae6d67e32512e072c50b4845866e941bcfd741e0ef5088",
- "sources": "056c9b41dd5e30504132b4a5556b19085fd03e6746cb17881ae8bcfb9b8d8f63"
- },
- "version": "9.4.50.v20221201"
- },
- "org.eclipse.jetty:jetty-io": {
- "shasums": {
- "jar": "dc51976bc91236279c82e9f1a51e82631562eea518e8654097d271b8dd0acb0b",
- "sources": "f339b03abc5036be066c1d919eed9667d73017d03bc2935826054bc53e5a614b"
- },
- "version": "9.4.50.v20221201"
- },
- "org.eclipse.jetty:jetty-util": {
- "shasums": {
- "jar": "38891b3480b582d1f2646cf94f33e1675bdc7c814657e1742424c98193c9117b",
- "sources": "d3c3e0f19b5ed6a34c9b135120ded21b81a3d88344ed8ddda2b9e24331668702"
- },
- "version": "9.4.50.v20221201"
- },
"org.eclipse.mylyn.github:org.eclipse.egit.github.core": {
"shasums": {
"jar": "5ae0ce75c0d4938e1fe32d5efbb0204e38585e76454bd16d91b5a59852a1e64e",
@@ -804,13 +619,6 @@
},
"version": "2.1.5"
},
- "org.hamcrest:hamcrest": {
- "shasums": {
- "jar": "5e62846a89f05cd78cd9c1a553f340d002458380c320455dd1f8fc5497a8a1c1",
- "sources": "f49e697dbc70591f91a90dd7f741f5780f53f63f34a416d6a9879499d4d666af"
- },
- "version": "2.2"
- },
"org.hsqldb:hsqldb": {
"shasums": {
"jar": "aa455133e664f6a7e6f30cd0cd4f8ad83dfbd94eb717c438548e446784614a92",
@@ -972,55 +780,6 @@
},
"version": "3.23.2"
},
- "org.seleniumhq.selenium:htmlunit-driver": {
- "shasums": {
- "jar": "f54ec2138e2ad788a8957d0e939b4eabe25a52d71224168ec60605b8d70a01d9",
- "sources": "317d5094d4c30627ef1d2cf845768f7e6ee2bbff5bd5e5ecf70e2bf2a467688b"
- },
- "version": "4.11.0"
- },
- "org.seleniumhq.selenium:selenium-api": {
- "shasums": {
- "jar": "8c145530c654edec393a578852887b619722600c9ddd7b9f8629350392dad12c",
- "sources": "edf51a8b2c993d48c41bee268f44d66ffaf71a7c801509bd892415ccbef5536f"
- },
- "version": "4.11.0"
- },
- "org.seleniumhq.selenium:selenium-http": {
- "shasums": {
- "jar": "fceff573397010c18d8e56d1c4b37dadfffa8da5baf9771caf530f5ed52c483b",
- "sources": "2bfb79f3900947825c9dc6e5e6ac93e973953e5b817528d6915464bbb44fd89c"
- },
- "version": "4.11.0"
- },
- "org.seleniumhq.selenium:selenium-json": {
- "shasums": {
- "jar": "5383937f742f156c1e7e3ed584832c29b3d661fd81bf44db3ee0a830627d384d",
- "sources": "a1b29d04e134658ba7452697a8ddb1e622781eff1bfed7d6359f0f193da14afe"
- },
- "version": "4.11.0"
- },
- "org.seleniumhq.selenium:selenium-manager": {
- "shasums": {
- "jar": "47e1379efab2258620bd92c8730845b6a80d48d5660067486cd676eb5a93a788",
- "sources": "33c528317d41a8cf025decdb0862f5f30d082be9c964522ede5990a4c89fe651"
- },
- "version": "4.11.0"
- },
- "org.seleniumhq.selenium:selenium-remote-driver": {
- "shasums": {
- "jar": "e7fd521c0c769803fedc90d2715c8c2afedcb30213e11c13309c41ba33a14234",
- "sources": "125236a09c90509382186f83e7c11a966877ac6ddc7fb3fd90a86aff61b3eeeb"
- },
- "version": "4.11.0"
- },
- "org.seleniumhq.selenium:selenium-support": {
- "shasums": {
- "jar": "1da9fbbe99971bac1a535b2aaede1442ae6b2920f44a4aabeb4334cb87ebd0ff",
- "sources": "135596d8516fe833b08c4958b7f20d861c0fdaf80120d44f5ee94cb3d3732cda"
- },
- "version": "4.11.0"
- },
"org.slf4j:slf4j-api": {
"shasums": {
"jar": "5d6298b93a1905c32cda6478808ac14c2d4a47e91535e53c41f7feeb85d946f4",
@@ -1134,10 +893,6 @@
"com.graphql-java:java-dataloader": [
"org.slf4j:slf4j-api"
],
- "com.typesafe.netty:netty-reactive-streams": [
- "io.netty:netty-handler",
- "org.reactivestreams:reactive-streams"
- ],
"io.grpc:grpc-context": [
"io.grpc:grpc-api"
],
@@ -1215,53 +970,6 @@
"io.netty:netty-common",
"io.netty:netty-resolver"
],
- "io.netty:netty-transport-classes-epoll": [
- "io.netty:netty-buffer",
- "io.netty:netty-common",
- "io.netty:netty-transport",
- "io.netty:netty-transport-native-unix-common"
- ],
- "io.netty:netty-transport-classes-kqueue": [
- "io.netty:netty-buffer",
- "io.netty:netty-common",
- "io.netty:netty-transport",
- "io.netty:netty-transport-native-unix-common"
- ],
- "io.netty:netty-transport-native-epoll": [
- "io.netty:netty-buffer",
- "io.netty:netty-common",
- "io.netty:netty-transport",
- "io.netty:netty-transport-classes-epoll",
- "io.netty:netty-transport-native-unix-common"
- ],
- "io.netty:netty-transport-native-epoll:jar:linux-x86_64": [
- "io.netty:netty-buffer",
- "io.netty:netty-common",
- "io.netty:netty-transport",
- "io.netty:netty-transport-classes-epoll",
- "io.netty:netty-transport-native-unix-common"
- ],
- "io.netty:netty-transport-native-kqueue": [
- "io.netty:netty-buffer",
- "io.netty:netty-common",
- "io.netty:netty-transport",
- "io.netty:netty-transport-classes-kqueue",
- "io.netty:netty-transport-native-unix-common"
- ],
- "io.netty:netty-transport-native-kqueue:jar:osx-aarch_64": [
- "io.netty:netty-buffer",
- "io.netty:netty-common",
- "io.netty:netty-transport",
- "io.netty:netty-transport-classes-kqueue",
- "io.netty:netty-transport-native-unix-common"
- ],
- "io.netty:netty-transport-native-kqueue:jar:osx-x86_64": [
- "io.netty:netty-buffer",
- "io.netty:netty-common",
- "io.netty:netty-transport",
- "io.netty:netty-transport-classes-kqueue",
- "io.netty:netty-transport-native-unix-common"
- ],
"io.netty:netty-transport-native-unix-common": [
"io.netty:netty-buffer",
"io.netty:netty-common",
@@ -1341,22 +1049,6 @@
"org.xmlresolver:xmlresolver",
"org.xmlresolver:xmlresolver:jar:data"
],
- "net.sourceforge.htmlunit:htmlunit": [
- "com.shapesecurity:salvation2",
- "commons-codec:commons-codec",
- "commons-io:commons-io",
- "commons-logging:commons-logging",
- "commons-net:commons-net",
- "net.sourceforge.htmlunit:htmlunit-core-js",
- "net.sourceforge.htmlunit:htmlunit-cssparser",
- "net.sourceforge.htmlunit:htmlunit-xpath",
- "net.sourceforge.htmlunit:neko-htmlunit",
- "org.apache.commons:commons-lang3",
- "org.apache.commons:commons-text",
- "org.apache.httpcomponents:httpmime",
- "org.brotli:dec",
- "org.eclipse.jetty.websocket:websocket-client"
- ],
"org.apache.commons:commons-text": [
"org.apache.commons:commons-lang3"
],
@@ -1368,63 +1060,18 @@
"org.apache.httpcomponents.core5:httpcore5-h2": [
"org.apache.httpcomponents.core5:httpcore5"
],
- "org.apache.httpcomponents:httpclient": [
- "commons-logging:commons-logging",
- "org.apache.httpcomponents:httpcore"
- ],
- "org.apache.httpcomponents:httpmime": [
- "org.apache.httpcomponents:httpclient"
- ],
"org.apache.logging.log4j:log4j-core": [
"org.apache.logging.log4j:log4j-api"
],
"org.assertj:assertj-core": [
"net.bytebuddy:byte-buddy"
],
- "org.asynchttpclient:async-http-client": [
- "com.sun.activation:jakarta.activation",
- "com.typesafe.netty:netty-reactive-streams",
- "io.netty:netty-codec-http",
- "io.netty:netty-codec-socks",
- "io.netty:netty-handler",
- "io.netty:netty-handler-proxy",
- "org.asynchttpclient:async-http-client-netty-utils",
- "org.reactivestreams:reactive-streams",
- "org.slf4j:slf4j-api"
- ],
- "org.asynchttpclient:async-http-client-netty-utils": [
- "com.sun.activation:jakarta.activation",
- "io.netty:netty-buffer",
- "org.slf4j:slf4j-api"
+ "org.bouncycastle:bcpkix-jdk18on": [
+ "org.bouncycastle:bcprov-jdk18on",
+ "org.bouncycastle:bcutil-jdk18on"
],
- "org.bouncycastle:bcpkix-jdk15on": [
- "org.bouncycastle:bcprov-jdk15on",
- "org.bouncycastle:bcutil-jdk15on"
- ],
- "org.bouncycastle:bcutil-jdk15on": [
- "org.bouncycastle:bcprov-jdk15on"
- ],
- "org.eclipse.jetty.websocket:websocket-client": [
- "org.eclipse.jetty.websocket:websocket-common",
- "org.eclipse.jetty:jetty-client",
- "org.eclipse.jetty:jetty-io",
- "org.eclipse.jetty:jetty-util"
- ],
- "org.eclipse.jetty.websocket:websocket-common": [
- "org.eclipse.jetty.websocket:websocket-api",
- "org.eclipse.jetty:jetty-io",
- "org.eclipse.jetty:jetty-util"
- ],
- "org.eclipse.jetty:jetty-client": [
- "org.eclipse.jetty:jetty-http",
- "org.eclipse.jetty:jetty-io"
- ],
- "org.eclipse.jetty:jetty-http": [
- "org.eclipse.jetty:jetty-io",
- "org.eclipse.jetty:jetty-util"
- ],
- "org.eclipse.jetty:jetty-io": [
- "org.eclipse.jetty:jetty-util"
+ "org.bouncycastle:bcutil-jdk18on": [
+ "org.bouncycastle:bcprov-jdk18on"
],
"org.eclipse.mylyn.github:org.eclipse.egit.github.core": [
"com.google.code.gson:gson"
@@ -1511,62 +1158,6 @@
"org.reactivestreams:reactive-streams",
"org.slf4j:slf4j-api"
],
- "org.seleniumhq.selenium:htmlunit-driver": [
- "net.sourceforge.htmlunit:htmlunit",
- "org.seleniumhq.selenium:selenium-api",
- "org.seleniumhq.selenium:selenium-support"
- ],
- "org.seleniumhq.selenium:selenium-http": [
- "com.google.guava:guava",
- "dev.failsafe:failsafe",
- "org.seleniumhq.selenium:selenium-api",
- "org.seleniumhq.selenium:selenium-json"
- ],
- "org.seleniumhq.selenium:selenium-json": [
- "org.seleniumhq.selenium:selenium-api"
- ],
- "org.seleniumhq.selenium:selenium-manager": [
- "com.google.guava:guava",
- "org.seleniumhq.selenium:selenium-api",
- "org.seleniumhq.selenium:selenium-json"
- ],
- "org.seleniumhq.selenium:selenium-remote-driver": [
- "com.google.auto.service:auto-service-annotations",
- "com.google.guava:guava",
- "io.netty:netty-buffer",
- "io.netty:netty-codec-http",
- "io.netty:netty-common",
- "io.netty:netty-transport",
- "io.netty:netty-transport-classes-epoll",
- "io.netty:netty-transport-classes-kqueue",
- "io.netty:netty-transport-native-epoll",
- "io.netty:netty-transport-native-kqueue",
- "io.netty:netty-transport-native-unix-common",
- "io.opentelemetry:opentelemetry-api",
- "io.opentelemetry:opentelemetry-context",
- "io.opentelemetry:opentelemetry-exporter-logging",
- "io.opentelemetry:opentelemetry-sdk",
- "io.opentelemetry:opentelemetry-sdk-common",
- "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure",
- "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi",
- "io.opentelemetry:opentelemetry-sdk-trace",
- "io.opentelemetry:opentelemetry-semconv",
- "net.bytebuddy:byte-buddy",
- "org.apache.commons:commons-exec",
- "org.asynchttpclient:async-http-client",
- "org.seleniumhq.selenium:selenium-api",
- "org.seleniumhq.selenium:selenium-http",
- "org.seleniumhq.selenium:selenium-json",
- "org.seleniumhq.selenium:selenium-manager"
- ],
- "org.seleniumhq.selenium:selenium-support": [
- "com.google.auto.service:auto-service-annotations",
- "com.google.guava:guava",
- "net.bytebuddy:byte-buddy",
- "org.seleniumhq.selenium:selenium-api",
- "org.seleniumhq.selenium:selenium-json",
- "org.seleniumhq.selenium:selenium-remote-driver"
- ],
"org.slf4j:slf4j-jdk14": [
"org.slf4j:slf4j-api"
],
@@ -1882,20 +1473,6 @@
"org.dataloader.stats",
"org.dataloader.stats.context"
],
- "com.shapesecurity:salvation2": [
- "com.shapesecurity.salvation2",
- "com.shapesecurity.salvation2.Directives",
- "com.shapesecurity.salvation2.URLs",
- "com.shapesecurity.salvation2.Values"
- ],
- "com.sun.activation:jakarta.activation": [
- "com.sun.activation.registries",
- "com.sun.activation.viewers",
- "javax.activation"
- ],
- "com.typesafe.netty:netty-reactive-streams": [
- "com.typesafe.netty"
- ],
"commons-codec:commons-codec": [
"org.apache.commons.codec",
"org.apache.commons.codec.binary",
@@ -1908,12 +1485,8 @@
"commons-io:commons-io": [
"org.apache.commons.io",
"org.apache.commons.io.comparator",
- "org.apache.commons.io.file",
- "org.apache.commons.io.file.spi",
"org.apache.commons.io.filefilter",
- "org.apache.commons.io.function",
"org.apache.commons.io.input",
- "org.apache.commons.io.input.buffer",
"org.apache.commons.io.monitor",
"org.apache.commons.io.output",
"org.apache.commons.io.serialization"
@@ -1922,28 +1495,6 @@
"org.apache.commons.logging",
"org.apache.commons.logging.impl"
],
- "commons-net:commons-net": [
- "org.apache.commons.net",
- "org.apache.commons.net.bsd",
- "org.apache.commons.net.chargen",
- "org.apache.commons.net.daytime",
- "org.apache.commons.net.discard",
- "org.apache.commons.net.echo",
- "org.apache.commons.net.finger",
- "org.apache.commons.net.ftp",
- "org.apache.commons.net.ftp.parser",
- "org.apache.commons.net.imap",
- "org.apache.commons.net.io",
- "org.apache.commons.net.nntp",
- "org.apache.commons.net.ntp",
- "org.apache.commons.net.pop3",
- "org.apache.commons.net.smtp",
- "org.apache.commons.net.telnet",
- "org.apache.commons.net.tftp",
- "org.apache.commons.net.time",
- "org.apache.commons.net.util",
- "org.apache.commons.net.whois"
- ],
"dev.failsafe:failsafe": [
"dev.failsafe",
"dev.failsafe.event",
@@ -2110,12 +1661,6 @@
"io.netty.channel.socket.nio",
"io.netty.channel.socket.oio"
],
- "io.netty:netty-transport-classes-epoll": [
- "io.netty.channel.epoll"
- ],
- "io.netty:netty-transport-classes-kqueue": [
- "io.netty.channel.kqueue"
- ],
"io.netty:netty-transport-native-unix-common": [
"io.netty.channel.unix"
],
@@ -2300,40 +1845,6 @@
"org.jaxen.util",
"org.jaxen.xom"
],
- "junit:junit": [
- "junit.extensions",
- "junit.framework",
- "junit.runner",
- "junit.textui",
- "org.junit",
- "org.junit.experimental",
- "org.junit.experimental.categories",
- "org.junit.experimental.max",
- "org.junit.experimental.results",
- "org.junit.experimental.runners",
- "org.junit.experimental.theories",
- "org.junit.experimental.theories.internal",
- "org.junit.experimental.theories.suppliers",
- "org.junit.function",
- "org.junit.internal",
- "org.junit.internal.builders",
- "org.junit.internal.management",
- "org.junit.internal.matchers",
- "org.junit.internal.requests",
- "org.junit.internal.runners",
- "org.junit.internal.runners.model",
- "org.junit.internal.runners.rules",
- "org.junit.internal.runners.statements",
- "org.junit.matchers",
- "org.junit.rules",
- "org.junit.runner",
- "org.junit.runner.manipulation",
- "org.junit.runner.notification",
- "org.junit.runners",
- "org.junit.runners.model",
- "org.junit.runners.parameterized",
- "org.junit.validator"
- ],
"net.bytebuddy:byte-buddy": [
"net.bytebuddy",
"net.bytebuddy.agent.builder",
@@ -2444,70 +1955,6 @@
"net.sf.saxon.xpath",
"net.sf.saxon.z"
],
- "net.sourceforge.htmlunit:htmlunit": [
- "com.gargoylesoftware.htmlunit",
- "com.gargoylesoftware.htmlunit.activex.javascript.msxml",
- "com.gargoylesoftware.htmlunit.attachment",
- "com.gargoylesoftware.htmlunit.css",
- "com.gargoylesoftware.htmlunit.html",
- "com.gargoylesoftware.htmlunit.html.applets",
- "com.gargoylesoftware.htmlunit.html.impl",
- "com.gargoylesoftware.htmlunit.html.parser",
- "com.gargoylesoftware.htmlunit.html.parser.neko",
- "com.gargoylesoftware.htmlunit.html.serializer",
- "com.gargoylesoftware.htmlunit.html.xpath",
- "com.gargoylesoftware.htmlunit.httpclient",
- "com.gargoylesoftware.htmlunit.javascript",
- "com.gargoylesoftware.htmlunit.javascript.background",
- "com.gargoylesoftware.htmlunit.javascript.configuration",
- "com.gargoylesoftware.htmlunit.javascript.host",
- "com.gargoylesoftware.htmlunit.javascript.host.animations",
- "com.gargoylesoftware.htmlunit.javascript.host.arrays",
- "com.gargoylesoftware.htmlunit.javascript.host.canvas",
- "com.gargoylesoftware.htmlunit.javascript.host.canvas.ext",
- "com.gargoylesoftware.htmlunit.javascript.host.crypto",
- "com.gargoylesoftware.htmlunit.javascript.host.css",
- "com.gargoylesoftware.htmlunit.javascript.host.dom",
- "com.gargoylesoftware.htmlunit.javascript.host.event",
- "com.gargoylesoftware.htmlunit.javascript.host.fetch",
- "com.gargoylesoftware.htmlunit.javascript.host.file",
- "com.gargoylesoftware.htmlunit.javascript.host.geo",
- "com.gargoylesoftware.htmlunit.javascript.host.html",
- "com.gargoylesoftware.htmlunit.javascript.host.idb",
- "com.gargoylesoftware.htmlunit.javascript.host.intl",
- "com.gargoylesoftware.htmlunit.javascript.host.media",
- "com.gargoylesoftware.htmlunit.javascript.host.media.midi",
- "com.gargoylesoftware.htmlunit.javascript.host.media.presentation",
- "com.gargoylesoftware.htmlunit.javascript.host.media.rtc",
- "com.gargoylesoftware.htmlunit.javascript.host.network",
- "com.gargoylesoftware.htmlunit.javascript.host.payment",
- "com.gargoylesoftware.htmlunit.javascript.host.performance",
- "com.gargoylesoftware.htmlunit.javascript.host.security",
- "com.gargoylesoftware.htmlunit.javascript.host.speech",
- "com.gargoylesoftware.htmlunit.javascript.host.svg",
- "com.gargoylesoftware.htmlunit.javascript.host.worker",
- "com.gargoylesoftware.htmlunit.javascript.host.xml",
- "com.gargoylesoftware.htmlunit.javascript.polyfill",
- "com.gargoylesoftware.htmlunit.javascript.regexp",
- "com.gargoylesoftware.htmlunit.platform",
- "com.gargoylesoftware.htmlunit.platform.canvas.rendering",
- "com.gargoylesoftware.htmlunit.platform.dom.traversal",
- "com.gargoylesoftware.htmlunit.platform.geom",
- "com.gargoylesoftware.htmlunit.platform.image",
- "com.gargoylesoftware.htmlunit.platform.util",
- "com.gargoylesoftware.htmlunit.protocol",
- "com.gargoylesoftware.htmlunit.protocol.about",
- "com.gargoylesoftware.htmlunit.protocol.data",
- "com.gargoylesoftware.htmlunit.protocol.javascript",
- "com.gargoylesoftware.htmlunit.svg",
- "com.gargoylesoftware.htmlunit.util",
- "com.gargoylesoftware.htmlunit.util.geometry",
- "com.gargoylesoftware.htmlunit.websocket",
- "com.gargoylesoftware.htmlunit.webstart",
- "com.gargoylesoftware.htmlunit.xml",
- "netscape",
- "netscape.javascript"
- ],
"net.sourceforge.htmlunit:htmlunit-core-js": [
"net.sourceforge.htmlunit.corejs.classfile",
"net.sourceforge.htmlunit.corejs.javascript",
@@ -2530,41 +1977,6 @@
"net.sourceforge.htmlunit.corejs.javascript.v8dtoa",
"net.sourceforge.htmlunit.corejs.javascript.xml"
],
- "net.sourceforge.htmlunit:htmlunit-cssparser": [
- "com.gargoylesoftware.css.dom",
- "com.gargoylesoftware.css.parser",
- "com.gargoylesoftware.css.parser.condition",
- "com.gargoylesoftware.css.parser.javacc",
- "com.gargoylesoftware.css.parser.media",
- "com.gargoylesoftware.css.parser.selector",
- "com.gargoylesoftware.css.util"
- ],
- "net.sourceforge.htmlunit:htmlunit-xpath": [
- "net.sourceforge.htmlunit.xpath",
- "net.sourceforge.htmlunit.xpath.axes",
- "net.sourceforge.htmlunit.xpath.compiler",
- "net.sourceforge.htmlunit.xpath.functions",
- "net.sourceforge.htmlunit.xpath.objects",
- "net.sourceforge.htmlunit.xpath.operations",
- "net.sourceforge.htmlunit.xpath.patterns",
- "net.sourceforge.htmlunit.xpath.res",
- "net.sourceforge.htmlunit.xpath.xml.dtm",
- "net.sourceforge.htmlunit.xpath.xml.dtm.ref",
- "net.sourceforge.htmlunit.xpath.xml.dtm.ref.dom2dtm",
- "net.sourceforge.htmlunit.xpath.xml.utils"
- ],
- "net.sourceforge.htmlunit:neko-htmlunit": [
- "net.sourceforge.htmlunit.cyberneko",
- "net.sourceforge.htmlunit.cyberneko.filters",
- "net.sourceforge.htmlunit.cyberneko.parsers",
- "net.sourceforge.htmlunit.xerces.dom",
- "net.sourceforge.htmlunit.xerces.impl",
- "net.sourceforge.htmlunit.xerces.impl.msg",
- "net.sourceforge.htmlunit.xerces.parsers",
- "net.sourceforge.htmlunit.xerces.util",
- "net.sourceforge.htmlunit.xerces.xni",
- "net.sourceforge.htmlunit.xerces.xni.parser"
- ],
"org.apache.bcel:bcel": [
"org.apache.bcel",
"org.apache.bcel.classfile",
@@ -2686,55 +2098,6 @@
"org.apache.hc.core5.http2.protocol",
"org.apache.hc.core5.http2.ssl"
],
- "org.apache.httpcomponents:httpclient": [
- "org.apache.http.auth",
- "org.apache.http.auth.params",
- "org.apache.http.client",
- "org.apache.http.client.config",
- "org.apache.http.client.entity",
- "org.apache.http.client.methods",
- "org.apache.http.client.params",
- "org.apache.http.client.protocol",
- "org.apache.http.client.utils",
- "org.apache.http.conn",
- "org.apache.http.conn.params",
- "org.apache.http.conn.routing",
- "org.apache.http.conn.scheme",
- "org.apache.http.conn.socket",
- "org.apache.http.conn.ssl",
- "org.apache.http.conn.util",
- "org.apache.http.cookie",
- "org.apache.http.cookie.params",
- "org.apache.http.impl.auth",
- "org.apache.http.impl.client",
- "org.apache.http.impl.conn",
- "org.apache.http.impl.conn.tsccm",
- "org.apache.http.impl.cookie",
- "org.apache.http.impl.execchain"
- ],
- "org.apache.httpcomponents:httpcore": [
- "org.apache.http",
- "org.apache.http.annotation",
- "org.apache.http.concurrent",
- "org.apache.http.config",
- "org.apache.http.entity",
- "org.apache.http.impl",
- "org.apache.http.impl.bootstrap",
- "org.apache.http.impl.entity",
- "org.apache.http.impl.io",
- "org.apache.http.impl.pool",
- "org.apache.http.io",
- "org.apache.http.message",
- "org.apache.http.params",
- "org.apache.http.pool",
- "org.apache.http.protocol",
- "org.apache.http.ssl",
- "org.apache.http.util"
- ],
- "org.apache.httpcomponents:httpmime": [
- "org.apache.http.entity.mime",
- "org.apache.http.entity.mime.content"
- ],
"org.apache.logging.log4j:log4j-api": [
"org.apache.logging.log4j",
"org.apache.logging.log4j.internal",
@@ -2833,43 +2196,7 @@
"org.assertj.core.util.introspection",
"org.assertj.core.util.xml"
],
- "org.asynchttpclient:async-http-client": [
- "org.asynchttpclient",
- "org.asynchttpclient.channel",
- "org.asynchttpclient.config",
- "org.asynchttpclient.cookie",
- "org.asynchttpclient.exception",
- "org.asynchttpclient.filter",
- "org.asynchttpclient.handler",
- "org.asynchttpclient.handler.resumable",
- "org.asynchttpclient.netty",
- "org.asynchttpclient.netty.channel",
- "org.asynchttpclient.netty.future",
- "org.asynchttpclient.netty.handler",
- "org.asynchttpclient.netty.handler.intercept",
- "org.asynchttpclient.netty.request",
- "org.asynchttpclient.netty.request.body",
- "org.asynchttpclient.netty.ssl",
- "org.asynchttpclient.netty.timeout",
- "org.asynchttpclient.netty.ws",
- "org.asynchttpclient.ntlm",
- "org.asynchttpclient.oauth",
- "org.asynchttpclient.proxy",
- "org.asynchttpclient.request.body",
- "org.asynchttpclient.request.body.generator",
- "org.asynchttpclient.request.body.multipart",
- "org.asynchttpclient.request.body.multipart.part",
- "org.asynchttpclient.resolver",
- "org.asynchttpclient.spnego",
- "org.asynchttpclient.uri",
- "org.asynchttpclient.util",
- "org.asynchttpclient.webdav",
- "org.asynchttpclient.ws"
- ],
- "org.asynchttpclient:async-http-client-netty-utils": [
- "org.asynchttpclient.netty.util"
- ],
- "org.bouncycastle:bcpkix-jdk15on": [
+ "org.bouncycastle:bcpkix-jdk18on": [
"org.bouncycastle.cert",
"org.bouncycastle.cert.bc",
"org.bouncycastle.cert.cmp",
@@ -2916,12 +2243,14 @@
"org.bouncycastle.pkcs.jcajce",
"org.bouncycastle.pkix",
"org.bouncycastle.pkix.jcajce",
+ "org.bouncycastle.pkix.util",
+ "org.bouncycastle.pkix.util.filter",
"org.bouncycastle.tsp",
"org.bouncycastle.tsp.cms",
"org.bouncycastle.tsp.ers",
"org.bouncycastle.voms"
],
- "org.bouncycastle:bcprov-jdk15on": [
+ "org.bouncycastle:bcprov-jdk18on": [
"org.bouncycastle",
"org.bouncycastle.asn1",
"org.bouncycastle.asn1.anssi",
@@ -2961,6 +2290,7 @@
"org.bouncycastle.crypto.agreement.kdf",
"org.bouncycastle.crypto.agreement.srp",
"org.bouncycastle.crypto.commitments",
+ "org.bouncycastle.crypto.constraints",
"org.bouncycastle.crypto.digests",
"org.bouncycastle.crypto.ec",
"org.bouncycastle.crypto.encodings",
@@ -2968,6 +2298,7 @@
"org.bouncycastle.crypto.examples",
"org.bouncycastle.crypto.fpe",
"org.bouncycastle.crypto.generators",
+ "org.bouncycastle.crypto.hpke",
"org.bouncycastle.crypto.io",
"org.bouncycastle.crypto.kems",
"org.bouncycastle.crypto.macs",
@@ -3037,31 +2368,57 @@
"org.bouncycastle.math.raw",
"org.bouncycastle.pqc.asn1",
"org.bouncycastle.pqc.crypto",
- "org.bouncycastle.pqc.crypto.gmss",
- "org.bouncycastle.pqc.crypto.gmss.util",
+ "org.bouncycastle.pqc.crypto.bike",
+ "org.bouncycastle.pqc.crypto.cmce",
+ "org.bouncycastle.pqc.crypto.crystals.dilithium",
+ "org.bouncycastle.pqc.crypto.crystals.kyber",
+ "org.bouncycastle.pqc.crypto.falcon",
+ "org.bouncycastle.pqc.crypto.frodo",
+ "org.bouncycastle.pqc.crypto.gemss",
+ "org.bouncycastle.pqc.crypto.hqc",
"org.bouncycastle.pqc.crypto.lms",
- "org.bouncycastle.pqc.crypto.mceliece",
"org.bouncycastle.pqc.crypto.newhope",
- "org.bouncycastle.pqc.crypto.qtesla",
+ "org.bouncycastle.pqc.crypto.ntru",
+ "org.bouncycastle.pqc.crypto.ntruprime",
+ "org.bouncycastle.pqc.crypto.picnic",
"org.bouncycastle.pqc.crypto.rainbow",
- "org.bouncycastle.pqc.crypto.rainbow.util",
+ "org.bouncycastle.pqc.crypto.saber",
"org.bouncycastle.pqc.crypto.sphincs",
"org.bouncycastle.pqc.crypto.sphincsplus",
"org.bouncycastle.pqc.crypto.util",
"org.bouncycastle.pqc.crypto.xmss",
"org.bouncycastle.pqc.jcajce.interfaces",
"org.bouncycastle.pqc.jcajce.provider",
+ "org.bouncycastle.pqc.jcajce.provider.bike",
+ "org.bouncycastle.pqc.jcajce.provider.cmce",
+ "org.bouncycastle.pqc.jcajce.provider.dilithium",
+ "org.bouncycastle.pqc.jcajce.provider.falcon",
+ "org.bouncycastle.pqc.jcajce.provider.frodo",
"org.bouncycastle.pqc.jcajce.provider.gmss",
+ "org.bouncycastle.pqc.jcajce.provider.hqc",
+ "org.bouncycastle.pqc.jcajce.provider.kyber",
"org.bouncycastle.pqc.jcajce.provider.lms",
"org.bouncycastle.pqc.jcajce.provider.mceliece",
"org.bouncycastle.pqc.jcajce.provider.newhope",
- "org.bouncycastle.pqc.jcajce.provider.qtesla",
+ "org.bouncycastle.pqc.jcajce.provider.ntru",
+ "org.bouncycastle.pqc.jcajce.provider.ntruprime",
+ "org.bouncycastle.pqc.jcajce.provider.picnic",
"org.bouncycastle.pqc.jcajce.provider.rainbow",
+ "org.bouncycastle.pqc.jcajce.provider.saber",
"org.bouncycastle.pqc.jcajce.provider.sphincs",
+ "org.bouncycastle.pqc.jcajce.provider.sphincsplus",
"org.bouncycastle.pqc.jcajce.provider.util",
"org.bouncycastle.pqc.jcajce.provider.xmss",
"org.bouncycastle.pqc.jcajce.spec",
- "org.bouncycastle.pqc.math.linearalgebra",
+ "org.bouncycastle.pqc.legacy.crypto.gmss",
+ "org.bouncycastle.pqc.legacy.crypto.gmss.util",
+ "org.bouncycastle.pqc.legacy.crypto.mceliece",
+ "org.bouncycastle.pqc.legacy.crypto.qtesla",
+ "org.bouncycastle.pqc.legacy.crypto.rainbow",
+ "org.bouncycastle.pqc.legacy.crypto.rainbow.util",
+ "org.bouncycastle.pqc.legacy.math.linearalgebra",
+ "org.bouncycastle.pqc.math.ntru",
+ "org.bouncycastle.pqc.math.ntru.parameters",
"org.bouncycastle.util",
"org.bouncycastle.util.encoders",
"org.bouncycastle.util.io",
@@ -3071,7 +2428,7 @@
"org.bouncycastle.x509.extension",
"org.bouncycastle.x509.util"
],
- "org.bouncycastle:bcutil-jdk15on": [
+ "org.bouncycastle:bcutil-jdk18on": [
"org.bouncycastle.asn1.bsi",
"org.bouncycastle.asn1.cmc",
"org.bouncycastle.asn1.cmp",
@@ -3091,10 +2448,20 @@
"org.bouncycastle.asn1.tsp",
"org.bouncycastle.oer",
"org.bouncycastle.oer.its",
- "org.bouncycastle.oer.its.template"
- ],
- "org.brotli:dec": [
- "org.brotli.dec"
+ "org.bouncycastle.oer.its.etsi102941",
+ "org.bouncycastle.oer.its.etsi102941.basetypes",
+ "org.bouncycastle.oer.its.etsi103097",
+ "org.bouncycastle.oer.its.etsi103097.extension",
+ "org.bouncycastle.oer.its.ieee1609dot2",
+ "org.bouncycastle.oer.its.ieee1609dot2.basetypes",
+ "org.bouncycastle.oer.its.ieee1609dot2dot1",
+ "org.bouncycastle.oer.its.template.etsi102941",
+ "org.bouncycastle.oer.its.template.etsi102941.basetypes",
+ "org.bouncycastle.oer.its.template.etsi103097",
+ "org.bouncycastle.oer.its.template.etsi103097.extension",
+ "org.bouncycastle.oer.its.template.ieee1609dot2",
+ "org.bouncycastle.oer.its.template.ieee1609dot2.basetypes",
+ "org.bouncycastle.oer.its.template.ieee1609dot2dot1"
],
"org.checkerframework:checker-qual": [
"org.checkerframework.checker.builder.qual",
@@ -3144,63 +2511,6 @@
"org.dom4j.xpath",
"org.dom4j.xpp"
],
- "org.eclipse.jetty.websocket:websocket-api": [
- "org.eclipse.jetty.websocket.api",
- "org.eclipse.jetty.websocket.api.annotations",
- "org.eclipse.jetty.websocket.api.extensions",
- "org.eclipse.jetty.websocket.api.util"
- ],
- "org.eclipse.jetty.websocket:websocket-client": [
- "org.eclipse.jetty.websocket.client",
- "org.eclipse.jetty.websocket.client.io",
- "org.eclipse.jetty.websocket.client.masks"
- ],
- "org.eclipse.jetty.websocket:websocket-common": [
- "org.eclipse.jetty.websocket.common",
- "org.eclipse.jetty.websocket.common.events",
- "org.eclipse.jetty.websocket.common.events.annotated",
- "org.eclipse.jetty.websocket.common.extensions",
- "org.eclipse.jetty.websocket.common.extensions.compress",
- "org.eclipse.jetty.websocket.common.extensions.fragment",
- "org.eclipse.jetty.websocket.common.extensions.identity",
- "org.eclipse.jetty.websocket.common.frames",
- "org.eclipse.jetty.websocket.common.io",
- "org.eclipse.jetty.websocket.common.io.http",
- "org.eclipse.jetty.websocket.common.io.payload",
- "org.eclipse.jetty.websocket.common.message",
- "org.eclipse.jetty.websocket.common.scopes",
- "org.eclipse.jetty.websocket.common.util"
- ],
- "org.eclipse.jetty:jetty-client": [
- "org.eclipse.jetty.client",
- "org.eclipse.jetty.client.api",
- "org.eclipse.jetty.client.http",
- "org.eclipse.jetty.client.jmx",
- "org.eclipse.jetty.client.util"
- ],
- "org.eclipse.jetty:jetty-http": [
- "org.eclipse.jetty.http",
- "org.eclipse.jetty.http.pathmap"
- ],
- "org.eclipse.jetty:jetty-io": [
- "org.eclipse.jetty.io",
- "org.eclipse.jetty.io.jmx",
- "org.eclipse.jetty.io.ssl"
- ],
- "org.eclipse.jetty:jetty-util": [
- "org.eclipse.jetty.util",
- "org.eclipse.jetty.util.annotation",
- "org.eclipse.jetty.util.component",
- "org.eclipse.jetty.util.compression",
- "org.eclipse.jetty.util.log",
- "org.eclipse.jetty.util.preventers",
- "org.eclipse.jetty.util.resource",
- "org.eclipse.jetty.util.security",
- "org.eclipse.jetty.util.ssl",
- "org.eclipse.jetty.util.statistic",
- "org.eclipse.jetty.util.thread",
- "org.eclipse.jetty.util.thread.strategy"
- ],
"org.eclipse.mylyn.github:org.eclipse.egit.github.core": [
"org.eclipse.egit.github.core",
"org.eclipse.egit.github.core.client",
@@ -3208,19 +2518,6 @@
"org.eclipse.egit.github.core.service",
"org.eclipse.egit.github.core.util"
],
- "org.hamcrest:hamcrest": [
- "org.hamcrest",
- "org.hamcrest.beans",
- "org.hamcrest.collection",
- "org.hamcrest.comparator",
- "org.hamcrest.core",
- "org.hamcrest.internal",
- "org.hamcrest.io",
- "org.hamcrest.number",
- "org.hamcrest.object",
- "org.hamcrest.text",
- "org.hamcrest.xml"
- ],
"org.hsqldb:hsqldb": [
"org.hsqldb",
"org.hsqldb.auth",
@@ -3530,72 +2827,6 @@
"org.redisson.transaction.operation.map",
"org.redisson.transaction.operation.set"
],
- "org.seleniumhq.selenium:htmlunit-driver": [
- "org.openqa.selenium.htmlunit",
- "org.openqa.selenium.htmlunit.logging",
- "org.openqa.selenium.htmlunit.w3"
- ],
- "org.seleniumhq.selenium:selenium-api": [
- "org.openqa.selenium",
- "org.openqa.selenium.federatedcredentialmanagement",
- "org.openqa.selenium.html5",
- "org.openqa.selenium.interactions",
- "org.openqa.selenium.internal",
- "org.openqa.selenium.logging",
- "org.openqa.selenium.logging.profiler",
- "org.openqa.selenium.mobile",
- "org.openqa.selenium.net",
- "org.openqa.selenium.print",
- "org.openqa.selenium.virtualauthenticator"
- ],
- "org.seleniumhq.selenium:selenium-http": [
- "org.openqa.selenium.remote.http"
- ],
- "org.seleniumhq.selenium:selenium-json": [
- "org.openqa.selenium.json"
- ],
- "org.seleniumhq.selenium:selenium-manager": [
- "org.openqa.selenium.manager"
- ],
- "org.seleniumhq.selenium:selenium-remote-driver": [
- "org.openqa.selenium.bidi",
- "org.openqa.selenium.bidi.browsingcontext",
- "org.openqa.selenium.bidi.log",
- "org.openqa.selenium.concurrent",
- "org.openqa.selenium.devtools",
- "org.openqa.selenium.devtools.events",
- "org.openqa.selenium.devtools.idealized",
- "org.openqa.selenium.devtools.idealized.browser.model",
- "org.openqa.selenium.devtools.idealized.log",
- "org.openqa.selenium.devtools.idealized.log.model",
- "org.openqa.selenium.devtools.idealized.runtime.model",
- "org.openqa.selenium.devtools.idealized.target",
- "org.openqa.selenium.devtools.idealized.target.model",
- "org.openqa.selenium.devtools.noop",
- "org.openqa.selenium.io",
- "org.openqa.selenium.os",
- "org.openqa.selenium.remote",
- "org.openqa.selenium.remote.codec",
- "org.openqa.selenium.remote.codec.w3c",
- "org.openqa.selenium.remote.html5",
- "org.openqa.selenium.remote.http.netty",
- "org.openqa.selenium.remote.internal",
- "org.openqa.selenium.remote.locators",
- "org.openqa.selenium.remote.mobile",
- "org.openqa.selenium.remote.service",
- "org.openqa.selenium.remote.tracing",
- "org.openqa.selenium.remote.tracing.empty",
- "org.openqa.selenium.remote.tracing.opentelemetry",
- "org.openqa.selenium.support.decorators"
- ],
- "org.seleniumhq.selenium:selenium-support": [
- "org.openqa.selenium.support",
- "org.openqa.selenium.support.events",
- "org.openqa.selenium.support.locators",
- "org.openqa.selenium.support.pagefactory",
- "org.openqa.selenium.support.pagefactory.internal",
- "org.openqa.selenium.support.ui"
- ],
"org.slf4j:slf4j-api": [
"org.slf4j",
"org.slf4j.event",
@@ -3762,20 +2993,12 @@
"com.graphql-java:graphql-java:jar:sources",
"com.graphql-java:java-dataloader",
"com.graphql-java:java-dataloader:jar:sources",
- "com.shapesecurity:salvation2",
- "com.shapesecurity:salvation2:jar:sources",
- "com.sun.activation:jakarta.activation",
- "com.sun.activation:jakarta.activation:jar:sources",
- "com.typesafe.netty:netty-reactive-streams",
- "com.typesafe.netty:netty-reactive-streams:jar:sources",
"commons-codec:commons-codec",
"commons-codec:commons-codec:jar:sources",
"commons-io:commons-io",
"commons-io:commons-io:jar:sources",
"commons-logging:commons-logging",
"commons-logging:commons-logging:jar:sources",
- "commons-net:commons-net",
- "commons-net:commons-net:jar:sources",
"dev.failsafe:failsafe",
"dev.failsafe:failsafe:jar:sources",
"eu.neilalexander:jnacl",
@@ -3809,17 +3032,6 @@
"io.netty:netty-resolver-dns:jar:sources",
"io.netty:netty-resolver:jar:sources",
"io.netty:netty-transport",
- "io.netty:netty-transport-classes-epoll",
- "io.netty:netty-transport-classes-epoll:jar:sources",
- "io.netty:netty-transport-classes-kqueue",
- "io.netty:netty-transport-classes-kqueue:jar:sources",
- "io.netty:netty-transport-native-epoll",
- "io.netty:netty-transport-native-epoll:jar:linux-x86_64",
- "io.netty:netty-transport-native-epoll:jar:sources",
- "io.netty:netty-transport-native-kqueue",
- "io.netty:netty-transport-native-kqueue:jar:osx-aarch_64",
- "io.netty:netty-transport-native-kqueue:jar:osx-x86_64",
- "io.netty:netty-transport-native-kqueue:jar:sources",
"io.netty:netty-transport-native-unix-common",
"io.netty:netty-transport-native-unix-common:jar:sources",
"io.netty:netty-transport:jar:sources",
@@ -3863,8 +3075,6 @@
"javax.cache:cache-api:jar:sources",
"jaxen:jaxen",
"jaxen:jaxen:jar:sources",
- "junit:junit",
- "junit:junit:jar:sources",
"net.bytebuddy:byte-buddy",
"net.bytebuddy:byte-buddy-agent",
"net.bytebuddy:byte-buddy-agent:jar:sources",
@@ -3873,16 +3083,8 @@
"net.jcip:jcip-annotations:jar:sources",
"net.sf.saxon:Saxon-HE",
"net.sf.saxon:Saxon-HE:jar:sources",
- "net.sourceforge.htmlunit:htmlunit",
"net.sourceforge.htmlunit:htmlunit-core-js",
"net.sourceforge.htmlunit:htmlunit-core-js:jar:sources",
- "net.sourceforge.htmlunit:htmlunit-cssparser",
- "net.sourceforge.htmlunit:htmlunit-cssparser:jar:sources",
- "net.sourceforge.htmlunit:htmlunit-xpath",
- "net.sourceforge.htmlunit:htmlunit-xpath:jar:sources",
- "net.sourceforge.htmlunit:htmlunit:jar:sources",
- "net.sourceforge.htmlunit:neko-htmlunit",
- "net.sourceforge.htmlunit:neko-htmlunit:jar:sources",
"org.apache.bcel:bcel",
"org.apache.bcel:bcel:jar:sources",
"org.apache.commons:commons-exec",
@@ -3897,12 +3099,6 @@
"org.apache.httpcomponents.core5:httpcore5-h2",
"org.apache.httpcomponents.core5:httpcore5-h2:jar:sources",
"org.apache.httpcomponents.core5:httpcore5:jar:sources",
- "org.apache.httpcomponents:httpclient",
- "org.apache.httpcomponents:httpclient:jar:sources",
- "org.apache.httpcomponents:httpcore",
- "org.apache.httpcomponents:httpcore:jar:sources",
- "org.apache.httpcomponents:httpmime",
- "org.apache.httpcomponents:httpmime:jar:sources",
"org.apache.logging.log4j:log4j-api",
"org.apache.logging.log4j:log4j-api:jar:sources",
"org.apache.logging.log4j:log4j-core",
@@ -3911,40 +3107,18 @@
"org.apiguardian:apiguardian-api:jar:sources",
"org.assertj:assertj-core",
"org.assertj:assertj-core:jar:sources",
- "org.asynchttpclient:async-http-client",
- "org.asynchttpclient:async-http-client-netty-utils",
- "org.asynchttpclient:async-http-client-netty-utils:jar:sources",
- "org.asynchttpclient:async-http-client:jar:sources",
- "org.bouncycastle:bcpkix-jdk15on",
- "org.bouncycastle:bcpkix-jdk15on:jar:sources",
- "org.bouncycastle:bcprov-jdk15on",
- "org.bouncycastle:bcprov-jdk15on:jar:sources",
- "org.bouncycastle:bcutil-jdk15on",
- "org.bouncycastle:bcutil-jdk15on:jar:sources",
- "org.brotli:dec",
- "org.brotli:dec:jar:sources",
+ "org.bouncycastle:bcpkix-jdk18on",
+ "org.bouncycastle:bcpkix-jdk18on:jar:sources",
+ "org.bouncycastle:bcprov-jdk18on",
+ "org.bouncycastle:bcprov-jdk18on:jar:sources",
+ "org.bouncycastle:bcutil-jdk18on",
+ "org.bouncycastle:bcutil-jdk18on:jar:sources",
"org.checkerframework:checker-qual",
"org.checkerframework:checker-qual:jar:sources",
"org.dom4j:dom4j",
"org.dom4j:dom4j:jar:sources",
- "org.eclipse.jetty.websocket:websocket-api",
- "org.eclipse.jetty.websocket:websocket-api:jar:sources",
- "org.eclipse.jetty.websocket:websocket-client",
- "org.eclipse.jetty.websocket:websocket-client:jar:sources",
- "org.eclipse.jetty.websocket:websocket-common",
- "org.eclipse.jetty.websocket:websocket-common:jar:sources",
- "org.eclipse.jetty:jetty-client",
- "org.eclipse.jetty:jetty-client:jar:sources",
- "org.eclipse.jetty:jetty-http",
- "org.eclipse.jetty:jetty-http:jar:sources",
- "org.eclipse.jetty:jetty-io",
- "org.eclipse.jetty:jetty-io:jar:sources",
- "org.eclipse.jetty:jetty-util",
- "org.eclipse.jetty:jetty-util:jar:sources",
"org.eclipse.mylyn.github:org.eclipse.egit.github.core",
"org.eclipse.mylyn.github:org.eclipse.egit.github.core:jar:sources",
- "org.hamcrest:hamcrest",
- "org.hamcrest:hamcrest:jar:sources",
"org.hsqldb:hsqldb",
"org.hsqldb:hsqldb:jar:sources",
"org.jboss.marshalling:jboss-marshalling",
@@ -3991,20 +3165,6 @@
"org.reactivestreams:reactive-streams:jar:sources",
"org.redisson:redisson",
"org.redisson:redisson:jar:sources",
- "org.seleniumhq.selenium:htmlunit-driver",
- "org.seleniumhq.selenium:htmlunit-driver:jar:sources",
- "org.seleniumhq.selenium:selenium-api",
- "org.seleniumhq.selenium:selenium-api:jar:sources",
- "org.seleniumhq.selenium:selenium-http",
- "org.seleniumhq.selenium:selenium-http:jar:sources",
- "org.seleniumhq.selenium:selenium-json",
- "org.seleniumhq.selenium:selenium-json:jar:sources",
- "org.seleniumhq.selenium:selenium-manager",
- "org.seleniumhq.selenium:selenium-manager:jar:sources",
- "org.seleniumhq.selenium:selenium-remote-driver",
- "org.seleniumhq.selenium:selenium-remote-driver:jar:sources",
- "org.seleniumhq.selenium:selenium-support",
- "org.seleniumhq.selenium:selenium-support:jar:sources",
"org.slf4j:slf4j-api",
"org.slf4j:slf4j-api:jar:sources",
"org.slf4j:slf4j-jdk14",
@@ -4071,20 +3231,12 @@
"com.graphql-java:graphql-java:jar:sources",
"com.graphql-java:java-dataloader",
"com.graphql-java:java-dataloader:jar:sources",
- "com.shapesecurity:salvation2",
- "com.shapesecurity:salvation2:jar:sources",
- "com.sun.activation:jakarta.activation",
- "com.sun.activation:jakarta.activation:jar:sources",
- "com.typesafe.netty:netty-reactive-streams",
- "com.typesafe.netty:netty-reactive-streams:jar:sources",
"commons-codec:commons-codec",
"commons-codec:commons-codec:jar:sources",
"commons-io:commons-io",
"commons-io:commons-io:jar:sources",
"commons-logging:commons-logging",
"commons-logging:commons-logging:jar:sources",
- "commons-net:commons-net",
- "commons-net:commons-net:jar:sources",
"dev.failsafe:failsafe",
"dev.failsafe:failsafe:jar:sources",
"eu.neilalexander:jnacl",
@@ -4118,17 +3270,6 @@
"io.netty:netty-resolver-dns:jar:sources",
"io.netty:netty-resolver:jar:sources",
"io.netty:netty-transport",
- "io.netty:netty-transport-classes-epoll",
- "io.netty:netty-transport-classes-epoll:jar:sources",
- "io.netty:netty-transport-classes-kqueue",
- "io.netty:netty-transport-classes-kqueue:jar:sources",
- "io.netty:netty-transport-native-epoll",
- "io.netty:netty-transport-native-epoll:jar:linux-x86_64",
- "io.netty:netty-transport-native-epoll:jar:sources",
- "io.netty:netty-transport-native-kqueue",
- "io.netty:netty-transport-native-kqueue:jar:osx-aarch_64",
- "io.netty:netty-transport-native-kqueue:jar:osx-x86_64",
- "io.netty:netty-transport-native-kqueue:jar:sources",
"io.netty:netty-transport-native-unix-common",
"io.netty:netty-transport-native-unix-common:jar:sources",
"io.netty:netty-transport:jar:sources",
@@ -4172,8 +3313,6 @@
"javax.cache:cache-api:jar:sources",
"jaxen:jaxen",
"jaxen:jaxen:jar:sources",
- "junit:junit",
- "junit:junit:jar:sources",
"net.bytebuddy:byte-buddy",
"net.bytebuddy:byte-buddy-agent",
"net.bytebuddy:byte-buddy-agent:jar:sources",
@@ -4182,16 +3321,8 @@
"net.jcip:jcip-annotations:jar:sources",
"net.sf.saxon:Saxon-HE",
"net.sf.saxon:Saxon-HE:jar:sources",
- "net.sourceforge.htmlunit:htmlunit",
"net.sourceforge.htmlunit:htmlunit-core-js",
"net.sourceforge.htmlunit:htmlunit-core-js:jar:sources",
- "net.sourceforge.htmlunit:htmlunit-cssparser",
- "net.sourceforge.htmlunit:htmlunit-cssparser:jar:sources",
- "net.sourceforge.htmlunit:htmlunit-xpath",
- "net.sourceforge.htmlunit:htmlunit-xpath:jar:sources",
- "net.sourceforge.htmlunit:htmlunit:jar:sources",
- "net.sourceforge.htmlunit:neko-htmlunit",
- "net.sourceforge.htmlunit:neko-htmlunit:jar:sources",
"org.apache.bcel:bcel",
"org.apache.bcel:bcel:jar:sources",
"org.apache.commons:commons-exec",
@@ -4206,12 +3337,6 @@
"org.apache.httpcomponents.core5:httpcore5-h2",
"org.apache.httpcomponents.core5:httpcore5-h2:jar:sources",
"org.apache.httpcomponents.core5:httpcore5:jar:sources",
- "org.apache.httpcomponents:httpclient",
- "org.apache.httpcomponents:httpclient:jar:sources",
- "org.apache.httpcomponents:httpcore",
- "org.apache.httpcomponents:httpcore:jar:sources",
- "org.apache.httpcomponents:httpmime",
- "org.apache.httpcomponents:httpmime:jar:sources",
"org.apache.logging.log4j:log4j-api",
"org.apache.logging.log4j:log4j-api:jar:sources",
"org.apache.logging.log4j:log4j-core",
@@ -4220,40 +3345,18 @@
"org.apiguardian:apiguardian-api:jar:sources",
"org.assertj:assertj-core",
"org.assertj:assertj-core:jar:sources",
- "org.asynchttpclient:async-http-client",
- "org.asynchttpclient:async-http-client-netty-utils",
- "org.asynchttpclient:async-http-client-netty-utils:jar:sources",
- "org.asynchttpclient:async-http-client:jar:sources",
- "org.bouncycastle:bcpkix-jdk15on",
- "org.bouncycastle:bcpkix-jdk15on:jar:sources",
- "org.bouncycastle:bcprov-jdk15on",
- "org.bouncycastle:bcprov-jdk15on:jar:sources",
- "org.bouncycastle:bcutil-jdk15on",
- "org.bouncycastle:bcutil-jdk15on:jar:sources",
- "org.brotli:dec",
- "org.brotli:dec:jar:sources",
+ "org.bouncycastle:bcpkix-jdk18on",
+ "org.bouncycastle:bcpkix-jdk18on:jar:sources",
+ "org.bouncycastle:bcprov-jdk18on",
+ "org.bouncycastle:bcprov-jdk18on:jar:sources",
+ "org.bouncycastle:bcutil-jdk18on",
+ "org.bouncycastle:bcutil-jdk18on:jar:sources",
"org.checkerframework:checker-qual",
"org.checkerframework:checker-qual:jar:sources",
"org.dom4j:dom4j",
"org.dom4j:dom4j:jar:sources",
- "org.eclipse.jetty.websocket:websocket-api",
- "org.eclipse.jetty.websocket:websocket-api:jar:sources",
- "org.eclipse.jetty.websocket:websocket-client",
- "org.eclipse.jetty.websocket:websocket-client:jar:sources",
- "org.eclipse.jetty.websocket:websocket-common",
- "org.eclipse.jetty.websocket:websocket-common:jar:sources",
- "org.eclipse.jetty:jetty-client",
- "org.eclipse.jetty:jetty-client:jar:sources",
- "org.eclipse.jetty:jetty-http",
- "org.eclipse.jetty:jetty-http:jar:sources",
- "org.eclipse.jetty:jetty-io",
- "org.eclipse.jetty:jetty-io:jar:sources",
- "org.eclipse.jetty:jetty-util",
- "org.eclipse.jetty:jetty-util:jar:sources",
"org.eclipse.mylyn.github:org.eclipse.egit.github.core",
"org.eclipse.mylyn.github:org.eclipse.egit.github.core:jar:sources",
- "org.hamcrest:hamcrest",
- "org.hamcrest:hamcrest:jar:sources",
"org.hsqldb:hsqldb",
"org.hsqldb:hsqldb:jar:sources",
"org.jboss.marshalling:jboss-marshalling",
@@ -4300,20 +3403,6 @@
"org.reactivestreams:reactive-streams:jar:sources",
"org.redisson:redisson",
"org.redisson:redisson:jar:sources",
- "org.seleniumhq.selenium:htmlunit-driver",
- "org.seleniumhq.selenium:htmlunit-driver:jar:sources",
- "org.seleniumhq.selenium:selenium-api",
- "org.seleniumhq.selenium:selenium-api:jar:sources",
- "org.seleniumhq.selenium:selenium-http",
- "org.seleniumhq.selenium:selenium-http:jar:sources",
- "org.seleniumhq.selenium:selenium-json",
- "org.seleniumhq.selenium:selenium-json:jar:sources",
- "org.seleniumhq.selenium:selenium-manager",
- "org.seleniumhq.selenium:selenium-manager:jar:sources",
- "org.seleniumhq.selenium:selenium-remote-driver",
- "org.seleniumhq.selenium:selenium-remote-driver:jar:sources",
- "org.seleniumhq.selenium:selenium-support",
- "org.seleniumhq.selenium:selenium-support:jar:sources",
"org.slf4j:slf4j-api",
"org.slf4j:slf4j-api:jar:sources",
"org.slf4j:slf4j-jdk14",
diff --git a/java/private/java_test_suite.bzl b/java/private/java_test_suite.bzl
new file mode 100644
index 0000000000000..04ea657c2d7a7
--- /dev/null
+++ b/java/private/java_test_suite.bzl
@@ -0,0 +1,29 @@
+load("@contrib_rules_jvm//java/private:create_jvm_test_suite.bzl", "create_jvm_test_suite")
+load("@contrib_rules_jvm//java/private:java_test_suite_shared_constants.bzl", "DEFAULT_TEST_SUFFIXES")
+load("@contrib_rules_jvm//java/private:library.bzl", "java_library")
+load(":junit5_test.bzl", "junit5_test")
+
+def java_test_suite(
+ name,
+ srcs,
+ runner = "junit5",
+ test_suffixes = DEFAULT_TEST_SUFFIXES,
+ package = None,
+ deps = None,
+ runtime_deps = [],
+ size = None,
+ **kwargs):
+ create_jvm_test_suite(
+ name,
+ srcs = srcs,
+ test_suffixes = test_suffixes,
+ package = package,
+ define_library = java_library,
+ # We want to use our own test runner
+ define_test = junit5_test,
+ runner = runner,
+ deps = deps,
+ runtime_deps = runtime_deps,
+ size = size,
+ **kwargs
+ )
diff --git a/java/private/junit5_test.bzl b/java/private/junit5_test.bzl
new file mode 100644
index 0000000000000..9ef9d2857a328
--- /dev/null
+++ b/java/private/junit5_test.bzl
@@ -0,0 +1,27 @@
+load("@contrib_rules_jvm//java:defs.bzl", "java_test")
+load("@contrib_rules_jvm//java/private:package.bzl", "get_package_name")
+
+def junit5_test(
+ name,
+ test_class = None,
+ runtime_deps = [],
+ package_prefixes = [],
+ jvm_flags = [],
+ **kwargs):
+ if test_class:
+ clazz = test_class
+ else:
+ clazz = get_package_name(package_prefixes) + name
+
+ java_test(
+ name = name,
+ main_class = "com.github.bazel_contrib.contrib_rules_jvm.junit5.JUnit5Runner",
+ test_class = clazz,
+ runtime_deps = runtime_deps + [
+ "@contrib_rules_jvm//java/src/com/github/bazel_contrib/contrib_rules_jvm/junit5",
+ ],
+ jvm_flags = jvm_flags + ["-Djava.security.manager=allow"],
+ **kwargs
+ )
+
+ return name
diff --git a/java/private/selenium_test.bzl b/java/private/selenium_test.bzl
index e381712ef5d38..bb2ae6f32f669 100644
--- a/java/private/selenium_test.bzl
+++ b/java/private/selenium_test.bzl
@@ -1,4 +1,3 @@
-load("@contrib_rules_jvm//java:defs.bzl", "java_junit5_test")
load(
"//common:browsers.bzl",
"COMMON_TAGS",
@@ -16,6 +15,7 @@ load(
"firefox_dev_jvm_flags",
"firefox_jvm_flags",
)
+load(":junit5_test.bzl", "junit5_test")
DEFAULT_BROWSER = "firefox"
@@ -42,13 +42,13 @@ BROWSERS = {
"deps": ["//java/src/org/openqa/selenium/firefox"],
"jvm_flags": ["-Dselenium.browser=ff"] + firefox_beta_jvm_flags,
"data": firefox_beta_data,
- "tags": COMMON_TAGS + ["firefox"],
+ "tags": COMMON_TAGS + ["firefox", "firefox-beta"],
},
"firefox-dev": {
"deps": ["//java/src/org/openqa/selenium/firefox"],
"jvm_flags": ["-Dselenium.browser=ff"] + firefox_dev_jvm_flags,
"data": firefox_dev_data,
- "tags": COMMON_TAGS + ["firefox"],
+ "tags": COMMON_TAGS + ["firefox", "firefox-dev"],
},
"ie": {
"deps": ["//java/src/org/openqa/selenium/ie"],
@@ -105,7 +105,7 @@ def selenium_test(name, test_class, size = "medium", browsers = DEFAULT_BROWSERS
test = name if browser == default_browser else "%s-%s" % (name, browser)
- java_junit5_test(
+ junit5_test(
name = test,
test_class = test_class,
size = size,
@@ -124,7 +124,7 @@ def selenium_test(name, test_class, size = "medium", browsers = DEFAULT_BROWSERS
all_tests.append(":%s" % test)
if remote:
- java_junit5_test(
+ junit5_test(
name = "%s-remote" % test,
test_class = test_class,
size = size,
diff --git a/java/private/suite.bzl b/java/private/suite.bzl
index 9f233eec0b42d..7655493cab23c 100644
--- a/java/private/suite.bzl
+++ b/java/private/suite.bzl
@@ -1,6 +1,6 @@
load(":library.bzl", "java_library", "java_test")
-load(":selenium_test.bzl", "BROWSERS", "selenium_test")
load(":package.bzl", "package_name")
+load(":selenium_test.bzl", "BROWSERS", "selenium_test")
_test_attrs = [
"browsers",
diff --git a/java/spotbugs-excludes.xml b/java/spotbugs-excludes.xml
index 26c908dffa18e..979a69248dad9 100644
--- a/java/spotbugs-excludes.xml
+++ b/java/spotbugs-excludes.xml
@@ -145,11 +145,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -165,6 +180,11 @@
+
+
+
+
+
diff --git a/java/src/dev/selenium/tools/modules/ModuleGenerator.java b/java/src/dev/selenium/tools/modules/ModuleGenerator.java
index 0d10eabc916a3..409d233eb2e9e 100644
--- a/java/src/dev/selenium/tools/modules/ModuleGenerator.java
+++ b/java/src/dev/selenium/tools/modules/ModuleGenerator.java
@@ -24,6 +24,7 @@
import static net.bytebuddy.jar.asm.Opcodes.ACC_STATIC_PHASE;
import static net.bytebuddy.jar.asm.Opcodes.ACC_TRANSITIVE;
import static net.bytebuddy.jar.asm.Opcodes.ASM9;
+import static net.bytebuddy.jar.asm.Opcodes.V11;
import com.github.bazelbuild.rules_jvm_external.zip.StableZipEntry;
import com.github.javaparser.JavaParser;
@@ -319,9 +320,7 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
exportedPackages.stream().map(Name::new).collect(Collectors.toSet())))));
ClassWriter classWriter = new ClassWriter(0);
- classWriter.visit(
- /* version 9 */
- 53, ACC_MODULE, "module-info", null, null, null);
+ classWriter.visit(V11, ACC_MODULE, "module-info", null, null, null);
ModuleVisitor moduleVisitor = classWriter.visitModule(moduleName, isOpen ? ACC_OPEN : 0, null);
moduleVisitor.visitRequire("java.base", ACC_MANDATED, null);
@@ -334,24 +333,14 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
Manifest manifest = new Manifest();
manifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0");
- manifest.getMainAttributes().put(Attributes.Name.MULTI_RELEASE, "true");
try (OutputStream os = Files.newOutputStream(outJar);
JarOutputStream jos = new JarOutputStream(os, manifest)) {
jos.setLevel(ZipOutputStream.STORED);
- ZipEntry dir = new StableZipEntry("META-INF/");
- jos.putNextEntry(dir);
-
- dir = new StableZipEntry("META-INF/versions/");
- jos.putNextEntry(dir);
-
- dir = new StableZipEntry("META-INF/versions/9/");
- jos.putNextEntry(dir);
-
byte[] bytes = classWriter.toByteArray();
- ZipEntry entry = new StableZipEntry("META-INF/versions/9/module-info.class");
+ ZipEntry entry = new StableZipEntry("module-info.class");
entry.setSize(bytes.length);
jos.putNextEntry(entry);
diff --git a/java/src/org/openqa/selenium/BUILD.bazel b/java/src/org/openqa/selenium/BUILD.bazel
index e6a7aa1a082d3..8e193683fd713 100644
--- a/java/src/org/openqa/selenium/BUILD.bazel
+++ b/java/src/org/openqa/selenium/BUILD.bazel
@@ -27,7 +27,7 @@ java_export(
],
maven_coordinates = "org.seleniumhq.selenium:selenium-api:%s" % SE_VERSION,
opens_to = [
- "org.openqa.selenium.json",
+ "org.seleniumhq.selenium.json",
],
pom_template = ":template-pom",
visibility = ["//visibility:public"],
diff --git a/java/src/org/openqa/selenium/Capabilities.java b/java/src/org/openqa/selenium/Capabilities.java
index 4a5fe4361e076..683e5e4e41b7d 100644
--- a/java/src/org/openqa/selenium/Capabilities.java
+++ b/java/src/org/openqa/selenium/Capabilities.java
@@ -77,8 +77,7 @@ default String getBrowserVersion() {
default boolean is(String capabilityName) {
Object cap = getCapability(capabilityName);
if (cap == null) {
- // If it's not set explicitly, javascriptEnabled is true.
- return "javascriptEnabled".equals(capabilityName);
+ return false;
}
return cap instanceof Boolean ? (Boolean) cap : Boolean.parseBoolean(String.valueOf(cap));
}
diff --git a/java/src/org/openqa/selenium/HasDownloads.java b/java/src/org/openqa/selenium/HasDownloads.java
new file mode 100644
index 0000000000000..d759f279cc349
--- /dev/null
+++ b/java/src/org/openqa/selenium/HasDownloads.java
@@ -0,0 +1,61 @@
+// Licensed to the Software Freedom Conservancy (SFC) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The SFC licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.openqa.selenium;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.List;
+
+/** Indicates that a driver supports downloading remote files. */
+public interface HasDownloads {
+
+ /**
+ * Requires downloads to be enabled.
+ *
+ * TODO: Create an example in the documentation and provide a link to it.
+ *
+ * @param capabilities the capabilities object
+ * @throws WebDriverException if capability to enable downloads is not set
+ */
+ default void requireDownloadsEnabled(Capabilities capabilities) {
+ boolean downloadsEnabled = (boolean) capabilities.getCapability("se:downloadsEnabled");
+ if (!downloadsEnabled) {
+ throw new WebDriverException(
+ "You must enable downloads in order to work with downloadable files.");
+ }
+ }
+
+ /**
+ * Gets the downloadable files.
+ *
+ * @return a list of downloadable files for each key
+ */
+ List getDownloadableFiles();
+
+ /**
+ * Downloads a file to a given location.
+ *
+ * @param fileName the name of the file to be downloaded
+ * @param targetLocation the location where the file will be downloaded to
+ * @throws IOException if an I/O error occurs while downloading the file
+ */
+ void downloadFile(String fileName, Path targetLocation) throws IOException;
+
+ /** Deletes the downloadable files. */
+ void deleteDownloadableFiles();
+}
diff --git a/java/src/org/openqa/selenium/Platform.java b/java/src/org/openqa/selenium/Platform.java
index c0388ad508894..577aaef2881cc 100644
--- a/java/src/org/openqa/selenium/Platform.java
+++ b/java/src/org/openqa/selenium/Platform.java
@@ -289,6 +289,18 @@ public String toString() {
}
},
+ SONOMA("sonoma", "os x 14.0", "macos 14.0") {
+ @Override
+ public Platform family() {
+ return MAC;
+ }
+
+ @Override
+ public String toString() {
+ return "macOS 14.0";
+ }
+ },
+
/** Many platforms have UNIX traits, amongst them LINUX, Solaris and BSD. */
UNIX("solaris", "bsd") {
@Override
diff --git a/java/src/org/openqa/selenium/ScriptKey.java b/java/src/org/openqa/selenium/ScriptKey.java
index 2ea3b7c596352..9293b04ae7fae 100644
--- a/java/src/org/openqa/selenium/ScriptKey.java
+++ b/java/src/org/openqa/selenium/ScriptKey.java
@@ -28,6 +28,10 @@ public ScriptKey(String identifier) {
this.identifier = Require.nonNull("Script ID", identifier);
}
+ public String getIdentifier() {
+ return identifier;
+ }
+
@Override
public boolean equals(Object o) {
if (!(o instanceof ScriptKey)) {
diff --git a/java/src/org/openqa/selenium/WebDriverException.java b/java/src/org/openqa/selenium/WebDriverException.java
index aef430101d5c1..1ac297425d751 100644
--- a/java/src/org/openqa/selenium/WebDriverException.java
+++ b/java/src/org/openqa/selenium/WebDriverException.java
@@ -86,7 +86,7 @@ private String createMessage(String originalMessageString) {
getBuildInformation().toString(),
getSystemInformation(),
getAdditionalInformation())
- .filter(s -> !(s == null || s.equals("")))
+ .filter(s -> !(s == null || s.isEmpty()))
.collect(Collectors.joining("\n"));
}
diff --git a/java/src/org/openqa/selenium/WindowType.java b/java/src/org/openqa/selenium/WindowType.java
index 4d32107522822..afe583225a502 100644
--- a/java/src/org/openqa/selenium/WindowType.java
+++ b/java/src/org/openqa/selenium/WindowType.java
@@ -17,7 +17,7 @@
package org.openqa.selenium;
-/** Represents the type of a new browser window that may be created. */
+/** Represents the type of new browser window that may be created. */
public enum WindowType {
WINDOW("window"),
TAB("tab"),
diff --git a/java/src/org/openqa/selenium/bidi/BUILD.bazel b/java/src/org/openqa/selenium/bidi/BUILD.bazel
index 0215c99a70561..79b00c803d8ce 100644
--- a/java/src/org/openqa/selenium/bidi/BUILD.bazel
+++ b/java/src/org/openqa/selenium/bidi/BUILD.bazel
@@ -1,4 +1,3 @@
-load("@rules_jvm_external//:defs.bzl", "artifact")
load("//java:defs.bzl", "java_library")
AUGMENTER_SRCS = [
@@ -27,6 +26,8 @@ java_library(
"*.java",
"log/*.java",
"browsingcontext/*.java",
+ "network/*.java",
+ "script/*.java",
],
exclude = AUGMENTER_SRCS,
),
@@ -41,6 +42,5 @@ java_library(
"//java/src/org/openqa/selenium:core",
"//java/src/org/openqa/selenium/json",
"//java/src/org/openqa/selenium/remote/http",
- artifact("com.google.guava:guava"),
],
)
diff --git a/java/src/org/openqa/selenium/bidi/BiDi.java b/java/src/org/openqa/selenium/bidi/BiDi.java
index 1d99c075fe032..4639a56ca5e45 100644
--- a/java/src/org/openqa/selenium/bidi/BiDi.java
+++ b/java/src/org/openqa/selenium/bidi/BiDi.java
@@ -17,10 +17,10 @@
package org.openqa.selenium.bidi;
-import com.google.common.collect.ImmutableMap;
import java.io.Closeable;
import java.time.Duration;
import java.util.Collections;
+import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;
import org.openqa.selenium.internal.Require;
@@ -60,8 +60,7 @@ public void addListener(Event event, Consumer handler) {
send(
new Command<>(
- "session.subscribe",
- ImmutableMap.of("events", Collections.singletonList(event.getMethod()))));
+ "session.subscribe", Map.of("events", Collections.singletonList(event.getMethod()))));
connection.addListener(event, handler);
}
@@ -74,7 +73,7 @@ void addListener(String browsingContextId, Event event, Consumer handl
send(
new Command<>(
"session.subscribe",
- ImmutableMap.of(
+ Map.of(
"contexts",
Collections.singletonList(browsingContextId),
"events",
@@ -91,7 +90,7 @@ void addListener(Set browsingContextIds, Event event, Consumer
send(
new Command<>(
"session.subscribe",
- ImmutableMap.of(
+ Map.of(
"contexts",
browsingContextIds,
"events",
@@ -109,7 +108,7 @@ public void clearListener(Event event) {
send(
new Command<>(
"session.unsubscribe",
- ImmutableMap.of("events", Collections.singletonList(event.getMethod()))));
+ Map.of("events", Collections.singletonList(event.getMethod()))));
connection.clearListener(event);
}
diff --git a/java/src/org/openqa/selenium/bidi/BrowsingContextInspector.java b/java/src/org/openqa/selenium/bidi/BrowsingContextInspector.java
index 555a360ae64fc..9eb4048c7ac99 100644
--- a/java/src/org/openqa/selenium/bidi/BrowsingContextInspector.java
+++ b/java/src/org/openqa/selenium/bidi/BrowsingContextInspector.java
@@ -121,11 +121,11 @@ private void onBrowsingContextDestroyed(Consumer consumer)
}
}
- private void onNavigationStarted(Consumer consumer) {
+ public void onNavigationStarted(Consumer consumer) {
addNavigationEventListener("browsingContext.navigationStarted", consumer);
}
- private void onFragmentNavigated(Consumer consumer) {
+ public void onFragmentNavigated(Consumer consumer) {
addNavigationEventListener("browsingContext.fragmentNavigated", consumer);
}
@@ -149,7 +149,7 @@ private void onNavigationFailed(Consumer consumer) {
addNavigationEventListener("browsingContext.navigationFailed", consumer);
}
- private void onUserPromptClosed(Consumer consumer) {
+ public void onUserPromptClosed(Consumer consumer) {
if (browsingContextIds.isEmpty()) {
this.bidi.addListener(userPromptClosed, consumer);
} else {
@@ -157,7 +157,7 @@ private void onUserPromptClosed(Consumer consumer) {
}
}
- private void onUserPromptOpened(Consumer consumer) {
+ public void onUserPromptOpened(Consumer consumer) {
if (browsingContextIds.isEmpty()) {
this.bidi.addListener(userPromptOpened, consumer);
} else {
diff --git a/java/src/org/openqa/selenium/bidi/Command.java b/java/src/org/openqa/selenium/bidi/Command.java
index 2ecca3f651447..8a120a3369cf7 100644
--- a/java/src/org/openqa/selenium/bidi/Command.java
+++ b/java/src/org/openqa/selenium/bidi/Command.java
@@ -17,7 +17,6 @@
package org.openqa.selenium.bidi;
-import com.google.common.collect.ImmutableMap;
import java.lang.reflect.Type;
import java.util.Map;
import java.util.function.Function;
@@ -49,7 +48,7 @@ public Command(
Function mapper,
boolean sendsResponse) {
this.method = Require.nonNull("Method name", method);
- this.params = ImmutableMap.copyOf(Require.nonNull("Command parameters", params));
+ this.params = Map.copyOf(Require.nonNull("Command parameters", params));
this.mapper = Require.nonNull("Mapper for result", mapper);
this.sendsResponse = sendsResponse;
}
diff --git a/java/src/org/openqa/selenium/bidi/Connection.java b/java/src/org/openqa/selenium/bidi/Connection.java
index b4f46bbbe7a93..3f7081150ea5c 100644
--- a/java/src/org/openqa/selenium/bidi/Connection.java
+++ b/java/src/org/openqa/selenium/bidi/Connection.java
@@ -22,12 +22,11 @@
import static org.openqa.selenium.json.Json.MAP_TYPE;
import static org.openqa.selenium.remote.http.HttpMethod.GET;
-import com.google.common.collect.HashMultimap;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Multimap;
import java.io.Closeable;
import java.io.StringReader;
import java.time.Duration;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
@@ -36,6 +35,7 @@
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeoutException;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
@@ -70,8 +70,9 @@ public class Connection implements Closeable {
private final Map>> methodCallbacks =
new ConcurrentHashMap<>();
private final ReadWriteLock callbacksLock = new ReentrantReadWriteLock(true);
- private final Multimap, Consumer>> eventCallbacks = HashMultimap.create();
+ private final Map, List>> eventCallbacks = new HashMap<>();
private final HttpClient client;
+ private final AtomicBoolean underlyingSocketClosed;
public Connection(HttpClient client, String url) {
Require.nonNull("HTTP client", client);
@@ -79,6 +80,7 @@ public Connection(HttpClient client, String url) {
this.client = client;
socket = this.client.openSocket(new HttpRequest(GET, url), new Listener());
+ underlyingSocketClosed = new AtomicBoolean();
}
private static class NamedConsumer implements Consumer {
@@ -133,14 +135,15 @@ public CompletableFuture send(Command command) {
}));
}
- ImmutableMap.Builder serialized = ImmutableMap.builder();
- serialized.put("id", id);
- serialized.put("method", command.getMethod());
- serialized.put("params", command.getParams());
+ Map serialized =
+ Map.of(
+ "id", id,
+ "method", command.getMethod(),
+ "params", command.getParams());
StringBuilder json = new StringBuilder();
try (JsonOutput out = JSON.newOutput(json).writeClassName(false)) {
- out.write(serialized.build());
+ out.write(serialized);
}
LOG.log(getDebugLogLevel(), "-> {0}", json);
socket.sendText(json);
@@ -177,7 +180,7 @@ public void addListener(Event event, Consumer handler) {
Lock lock = callbacksLock.writeLock();
lock.lock();
try {
- eventCallbacks.put(event, handler);
+ eventCallbacks.computeIfAbsent(event, (key) -> new ArrayList<>()).add(handler);
} finally {
lock.unlock();
}
@@ -187,7 +190,7 @@ public void clearListener(Event event) {
Lock lock = callbacksLock.writeLock();
lock.lock();
try {
- eventCallbacks.removeAll(event);
+ eventCallbacks.remove(event);
} finally {
lock.unlock();
}
@@ -210,7 +213,14 @@ public void clearListeners() {
List events =
eventCallbacks.keySet().stream().map(Event::getMethod).collect(Collectors.toList());
- send(new Command<>("session.unsubscribe", ImmutableMap.of("events", events)));
+ // If WebDriver close() is called, it closes the session if it is the last browsing context.
+ // It also closes the WebSocket from the remote end.
+ // If we try to now send commands, depending on the underlying web socket implementation, it
+ // will throw errors.
+ // Ideally, such errors should not prevent freeing up resources.
+ if (!underlyingSocketClosed.get()) {
+ send(new Command<>("session.unsubscribe", Map.of("events", events)));
+ }
eventCallbacks.clear();
} finally {
@@ -237,6 +247,12 @@ public void onText(CharSequence data) {
}
});
}
+
+ @Override
+ public void onClose(int code, String reason) {
+ LOG.fine("BiDi connection websocket closed");
+ underlyingSocketClosed.set(true);
+ }
}
private void handle(CharSequence data) {
@@ -294,7 +310,7 @@ private void handleEventResponse(Map rawDataMap) {
"Method"
+ rawDataMap.get("method")
+ "called with"
- + eventCallbacks.keySet().size()
+ + eventCallbacks.size()
+ "callbacks available");
Lock lock = callbacksLock.readLock();
// A waiting writer will block a reader to enter the lock, even if there are currently other
@@ -306,21 +322,21 @@ private void handleEventResponse(Map rawDataMap) {
lock.lock();
}
try {
- eventCallbacks.keySet().stream()
+ eventCallbacks.entrySet().stream()
.filter(
event -> {
LOG.log(
getDebugLogLevel(),
"Matching {0} with {1}",
- new Object[] {rawDataMap.get("method"), event.getMethod()});
- return rawDataMap.get("method").equals(event.getMethod());
+ new Object[] {rawDataMap.get("method"), event.getKey().getMethod()});
+ return rawDataMap.get("method").equals(event.getKey().getMethod());
})
.forEach(
event -> {
Map params = (Map) rawDataMap.get("params");
Object value = null;
if (params != null) {
- value = event.getMapper().apply(params);
+ value = event.getKey().getMapper().apply(params);
}
if (value == null) {
return;
@@ -328,13 +344,13 @@ private void handleEventResponse(Map rawDataMap) {
final Object finalValue = value;
- for (Consumer> action : eventCallbacks.get(event)) {
+ for (Consumer> action : event.getValue()) {
@SuppressWarnings("unchecked")
Consumer