From 567cd2ab88b9e2459154d91b1ffa40030cb50b40 Mon Sep 17 00:00:00 2001
From: titusfortner
Date: Mon, 25 Sep 2023 15:02:36 -0500
Subject: [PATCH 01/90] [rb] update gemfile lock
---
rb/Gemfile.lock | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/rb/Gemfile.lock b/rb/Gemfile.lock
index 829fcb1a7cd93..2097248850d31 100644
--- a/rb/Gemfile.lock
+++ b/rb/Gemfile.lock
@@ -3,7 +3,7 @@ PATH
specs:
selenium-devtools (0.117.0)
selenium-webdriver (~> 4.2)
- selenium-webdriver (4.12.0)
+ selenium-webdriver (4.13.0)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
websocket (~> 1.0)
@@ -84,7 +84,7 @@ GEM
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
webrick (1.8.1)
- websocket (1.2.9)
+ websocket (1.2.10)
yard (0.9.34)
PLATFORMS
From f593923535c97ac067b549d7a3c639474c3baa97 Mon Sep 17 00:00:00 2001
From: titusfortner
Date: Mon, 25 Sep 2023 15:14:09 -0500
Subject: [PATCH 02/90] [rb] be explicit in version file about releasing
nightly version
---
rb/lib/selenium/support/nightly_version_generator.rb | 2 +-
rb/lib/selenium/webdriver/version.rb | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/rb/lib/selenium/support/nightly_version_generator.rb b/rb/lib/selenium/support/nightly_version_generator.rb
index 4dfff87dbbff6..186965909727f 100644
--- a/rb/lib/selenium/support/nightly_version_generator.rb
+++ b/rb/lib/selenium/support/nightly_version_generator.rb
@@ -37,7 +37,7 @@ def self.call(version_file, version_suffix)
version_file_contents = File.read(version_file)
version_file_contents.gsub!(REGEXP) do
old_version = Regexp.last_match(1)
- new_version = [old_version, 'nightly', version_suffix].join('.')
+ new_version = [old_version, version_suffix].join('.')
puts("#{old_version} -> #{new_version}")
"VERSION = '#{new_version}'"
diff --git a/rb/lib/selenium/webdriver/version.rb b/rb/lib/selenium/webdriver/version.rb
index 5d695a986cf99..fa3eb09007867 100644
--- a/rb/lib/selenium/webdriver/version.rb
+++ b/rb/lib/selenium/webdriver/version.rb
@@ -19,6 +19,6 @@
module Selenium
module WebDriver
- VERSION = '4.13.0'
+ VERSION = '4.14.0.nightly'
end # WebDriver
end # Selenium
From f5893fa6e2d48f2d97dc60a9ae078b83898ccf7d Mon Sep 17 00:00:00 2001
From: titusfortner
Date: Mon, 25 Sep 2023 15:16:08 -0500
Subject: [PATCH 03/90] [java] update version to release snapshots
---
Rakefile | 4 ++--
java/version.bzl | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Rakefile b/Rakefile
index 6a26ae038720a..da86a58f797a9 100644
--- a/Rakefile
+++ b/Rakefile
@@ -51,11 +51,11 @@ $DEBUG = true if ENV['debug'] == 'true'
verbose($DEBUG)
def release_version
- '4.13'
+ '4.14'
end
def version
- "#{release_version}.0"
+ "#{release_version}.0-SNAPSHOT"
end
# The build system used by webdriver is layered on top of rake, and we call it
diff --git a/java/version.bzl b/java/version.bzl
index 713e958c9b0d3..0e64fc2a1378e 100644
--- a/java/version.bzl
+++ b/java/version.bzl
@@ -1,2 +1,2 @@
-SE_VERSION = "4.13.0"
+SE_VERSION = "4.14.0-SNAPSHOT"
TOOLS_JAVA_VERSION = "17"
From bb54b1fd4819ee6af682ce3daebddcb77ac6a88f Mon Sep 17 00:00:00 2001
From: titusfortner
Date: Mon, 25 Sep 2023 18:13:12 -0500
Subject: [PATCH 04/90] [dotnet] fix bug in selenium manager paths to work on
mac and linux
---
dotnet/src/webdriver/SeleniumManager.cs | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/dotnet/src/webdriver/SeleniumManager.cs b/dotnet/src/webdriver/SeleniumManager.cs
index 0828ffcf314ea..9802d5cca46e9 100644
--- a/dotnet/src/webdriver/SeleniumManager.cs
+++ b/dotnet/src/webdriver/SeleniumManager.cs
@@ -44,15 +44,15 @@ static SeleniumManager()
var currentDirectory = AppContext.BaseDirectory;
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
- BinaryFullPath = Path.Combine(currentDirectory, "selenium-manager\\windows\\selenium-manager.exe");
+ BinaryFullPath = Path.Combine(currentDirectory, "selenium-manager/windows/selenium-manager.exe");
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
- BinaryFullPath = Path.Combine(currentDirectory, "selenium-manager\\linux\\selenium-manager");
+ BinaryFullPath = Path.Combine(currentDirectory, "selenium-manager/linux/selenium-manager");
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
- BinaryFullPath = Path.Combine(currentDirectory, "selenium-manager\\macos\\selenium-manager");
+ BinaryFullPath = Path.Combine(currentDirectory, "selenium-manager/macos/selenium-manager");
}
else
{
From 81f5579d37ccb093e40c0f56036a1cd642b66d73 Mon Sep 17 00:00:00 2001
From: Simon Mavi Stewart
Date: Tue, 26 Sep 2023 00:48:29 +0100
Subject: [PATCH 05/90] Run buildifier with all the toggles on. No logical
changes
---
WORKSPACE | 6 +++---
common/remote-build/cc/BUILD | 4 ++--
common/remote-build/cc/cc_toolchain_config.bzl | 2 +-
dotnet/defs.bzl | 2 +-
dotnet/private/executable_assembly.bzl | 2 +-
dotnet/private/nuget.bzl | 2 +-
dotnet/src/support/BUILD.bazel | 2 +-
dotnet/src/webdriver/BUILD.bazel | 2 +-
java/defs.bzl | 10 +++++-----
java/private/suite.bzl | 2 +-
.../openqa/selenium/grid/sessionmap/jdbc/BUILD.bazel | 2 +-
.../openqa/selenium/grid/sessionmap/redis/BUILD.bazel | 2 +-
java/test/org/openqa/selenium/environment/BUILD.bazel | 2 +-
py/BUILD.bazel | 4 ++--
rb/BUILD.bazel | 2 +-
rust/defs.bzl | 2 +-
16 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/WORKSPACE b/WORKSPACE
index 40f16067d43c4..a9f1d9b7516cb 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",
@@ -316,12 +316,12 @@ http_archive(
url = "https://github.com/p0deje/rules_ruby/archive/9550503e1c1702375e87837d43eb137030edd28a.zip",
)
-load("//rb:ruby_version.bzl", "RUBY_VERSION")
load(
"@rules_ruby//ruby:deps.bzl",
"rb_bundle",
"rb_register_toolchains",
)
+load("//rb:ruby_version.bzl", "RUBY_VERSION")
rb_register_toolchains(version = RUBY_VERSION)
diff --git a/common/remote-build/cc/BUILD b/common/remote-build/cc/BUILD
index 1ffa706433cd3..88b9ad9cbcd6c 100755
--- a/common/remote-build/cc/BUILD
+++ b/common/remote-build/cc/BUILD
@@ -14,9 +14,9 @@
# This becomes the BUILD file for @local_config_cc// under non-BSD unixes.
-load(":cc_toolchain_config.bzl", "cc_toolchain_config")
-load(":armeabi_cc_toolchain_config.bzl", "armeabi_cc_toolchain_config")
load("@rules_cc//cc:defs.bzl", "cc_toolchain", "cc_toolchain_suite")
+load(":armeabi_cc_toolchain_config.bzl", "armeabi_cc_toolchain_config")
+load(":cc_toolchain_config.bzl", "cc_toolchain_config")
package(default_visibility = ["//visibility:public"])
diff --git a/common/remote-build/cc/cc_toolchain_config.bzl b/common/remote-build/cc/cc_toolchain_config.bzl
index b951b09c24eed..4fd16d733098a 100755
--- a/common/remote-build/cc/cc_toolchain_config.bzl
+++ b/common/remote-build/cc/cc_toolchain_config.bzl
@@ -14,6 +14,7 @@
"""A Starlark cc_toolchain configuration rule"""
+load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
load(
"@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl",
"action_config",
@@ -27,7 +28,6 @@ load(
"variable_with_value",
"with_feature_set",
)
-load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
def layering_check_features(compiler):
if compiler != "clang":
diff --git a/dotnet/defs.bzl b/dotnet/defs.bzl
index a72899bdccff5..98c5b433c7d96 100644
--- a/dotnet/defs.bzl
+++ b/dotnet/defs.bzl
@@ -1,10 +1,10 @@
+load("//dotnet:selenium-dotnet-version.bzl", "SUPPORTED_DEVTOOLS_VERSIONS")
load("//dotnet/private:assembly_info.bzl", _generated_assembly_info = "generated_assembly_info")
load("//dotnet/private:executable_assembly.bzl", _csharp_executable = "csharp_executable")
load("//dotnet/private:generate_devtools.bzl", _generate_devtools = "generate_devtools")
load("//dotnet/private:merge_assemblies.bzl", _merged_assembly = "merged_assembly")
load("//dotnet/private:nuget.bzl", _nuget_package = "nuget_package", _nuget_push = "nuget_push")
load("//dotnet/private:nunit_test.bzl", _nunit_test = "nunit_test")
-load("//dotnet:selenium-dotnet-version.bzl", "SUPPORTED_DEVTOOLS_VERSIONS")
def devtools_version_targets():
targets = []
diff --git a/dotnet/private/executable_assembly.bzl b/dotnet/private/executable_assembly.bzl
index 932eafce07168..3686b0617ecd6 100644
--- a/dotnet/private/executable_assembly.bzl
+++ b/dotnet/private/executable_assembly.bzl
@@ -1,4 +1,3 @@
-load("@d2l_rules_csharp//csharp/private:providers.bzl", "AnyTargetFrameworkInfo")
load("@d2l_rules_csharp//csharp/private:actions/assembly.bzl", "AssemblyAction")
load("@d2l_rules_csharp//csharp/private:actions/misc.bzl", "write_runtimeconfig")
load(
@@ -8,6 +7,7 @@ load(
"is_debug",
"is_standard_framework",
)
+load("@d2l_rules_csharp//csharp/private:providers.bzl", "AnyTargetFrameworkInfo")
load("//dotnet/private:copy_files.bzl", "copy_files")
def _generate_execution_script_file(ctx, target):
diff --git a/dotnet/private/nuget.bzl b/dotnet/private/nuget.bzl
index cbabe3ea8d168..90f9b0713a842 100644
--- a/dotnet/private/nuget.bzl
+++ b/dotnet/private/nuget.bzl
@@ -1,9 +1,9 @@
load("@bazel_skylib//rules:common_settings.bzl", "BuildSettingInfo")
-load("//dotnet/private:copy_files.bzl", "copy_files")
load(
"//dotnet:selenium-dotnet-version.bzl",
"SUPPORTED_NET_STANDARD_VERSIONS",
)
+load("//dotnet/private:copy_files.bzl", "copy_files")
def _nuget_push_impl(ctx):
args = [
diff --git a/dotnet/src/support/BUILD.bazel b/dotnet/src/support/BUILD.bazel
index 6794ab24e0115..bcad13210544d 100644
--- a/dotnet/src/support/BUILD.bazel
+++ b/dotnet/src/support/BUILD.bazel
@@ -1,5 +1,5 @@
-load("//common:defs.bzl", "copy_file")
load("@d2l_rules_csharp//csharp:defs.bzl", "csharp_library")
+load("//common:defs.bzl", "copy_file")
load(
"//dotnet:defs.bzl",
"generated_assembly_info",
diff --git a/dotnet/src/webdriver/BUILD.bazel b/dotnet/src/webdriver/BUILD.bazel
index 5d5508b6e6c2b..0da022c4b72d1 100644
--- a/dotnet/src/webdriver/BUILD.bazel
+++ b/dotnet/src/webdriver/BUILD.bazel
@@ -1,5 +1,5 @@
-load("//common:defs.bzl", "copy_file")
load("@d2l_rules_csharp//csharp:defs.bzl", "csharp_library")
+load("//common:defs.bzl", "copy_file")
load(
"//dotnet:defs.bzl",
"devtools_version_targets",
diff --git a/java/defs.bzl b/java/defs.bzl
index 5089a29c60451..440a930bf3d29 100644
--- a/java/defs.bzl
+++ b/java/defs.bzl
@@ -1,3 +1,8 @@
+load(
+ "@contrib_rules_jvm//java:defs.bzl",
+ _JUNIT5_DEPS = "JUNIT5_DEPS",
+ _java_test_suite = "java_test_suite",
+)
load(
"@rules_java//java:defs.bzl",
_java_binary = "java_binary",
@@ -10,11 +15,6 @@ 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/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/src/org/openqa/selenium/grid/sessionmap/jdbc/BUILD.bazel b/java/src/org/openqa/selenium/grid/sessionmap/jdbc/BUILD.bazel
index b838c2e349af5..33df6f02163bc 100644
--- a/java/src/org/openqa/selenium/grid/sessionmap/jdbc/BUILD.bazel
+++ b/java/src/org/openqa/selenium/grid/sessionmap/jdbc/BUILD.bazel
@@ -1,6 +1,6 @@
load("@rules_jvm_external//:defs.bzl", "artifact")
-load("//java:version.bzl", "SE_VERSION")
load("//java:defs.bzl", "java_export")
+load("//java:version.bzl", "SE_VERSION")
java_export(
name = "jdbc",
diff --git a/java/src/org/openqa/selenium/grid/sessionmap/redis/BUILD.bazel b/java/src/org/openqa/selenium/grid/sessionmap/redis/BUILD.bazel
index 819cf323c550d..cb9b73307f9f7 100644
--- a/java/src/org/openqa/selenium/grid/sessionmap/redis/BUILD.bazel
+++ b/java/src/org/openqa/selenium/grid/sessionmap/redis/BUILD.bazel
@@ -1,6 +1,6 @@
load("@rules_jvm_external//:defs.bzl", "artifact")
-load("//java:version.bzl", "SE_VERSION")
load("//java:defs.bzl", "java_export")
+load("//java:version.bzl", "SE_VERSION")
java_export(
name = "redis",
diff --git a/java/test/org/openqa/selenium/environment/BUILD.bazel b/java/test/org/openqa/selenium/environment/BUILD.bazel
index 62e3b6240a2fa..306b692efde6e 100644
--- a/java/test/org/openqa/selenium/environment/BUILD.bazel
+++ b/java/test/org/openqa/selenium/environment/BUILD.bazel
@@ -1,7 +1,7 @@
load("@rules_jvm_external//:defs.bzl", "artifact")
-load("//java/private:selenium_test.bzl", "BROWSERS")
load("//java:defs.bzl", "JUNIT5_DEPS", "java_binary", "java_library", "java_test_suite")
load("//java:version.bzl", "TOOLS_JAVA_VERSION")
+load("//java/private:selenium_test.bzl", "BROWSERS")
filegroup(
name = "keystore",
diff --git a/py/BUILD.bazel b/py/BUILD.bazel
index c96518a70aa37..91544af24d013 100644
--- a/py/BUILD.bazel
+++ b/py/BUILD.bazel
@@ -1,13 +1,13 @@
+load("@py_dev_requirements//:requirements.bzl", "requirement")
load("@rules_pkg//pkg:mappings.bzl", "pkg_files", "strip_prefix")
load("@rules_pkg//pkg:pkg.bzl", "pkg_tar")
load("@rules_python//python:defs.bzl", "py_binary", "py_library")
load("@rules_python//python:packaging.bzl", "py_package", "py_wheel")
-load("@py_dev_requirements//:requirements.bzl", "requirement")
+load("@rules_python//python:pip.bzl", "compile_pip_requirements")
load("//common:defs.bzl", "copy_file")
load("//py:defs.bzl", "generate_devtools", "py_test_suite")
load("//py/private:browsers.bzl", "BROWSERS")
load("//py/private:import.bzl", "py_import")
-load("@rules_python//python:pip.bzl", "compile_pip_requirements")
compile_pip_requirements(
# base name for generated targets, typically "requirements"
diff --git a/rb/BUILD.bazel b/rb/BUILD.bazel
index 6ba9b6d4dc647..08537ff806359 100644
--- a/rb/BUILD.bazel
+++ b/rb/BUILD.bazel
@@ -1,5 +1,4 @@
load("@bazel_skylib//rules:select_file.bzl", "select_file")
-load("//common:defs.bzl", "copy_file")
load(
"@rules_ruby//ruby:defs.bzl",
"rb_binary",
@@ -7,6 +6,7 @@ load(
"rb_gem_push",
"rb_test",
)
+load("//common:defs.bzl", "copy_file")
package(default_visibility = ["//:__subpackages__"])
diff --git a/rust/defs.bzl b/rust/defs.bzl
index b053c9ad8240a..bad75bf29de23 100644
--- a/rust/defs.bzl
+++ b/rust/defs.bzl
@@ -1,3 +1,4 @@
+load("//rust/private:rustfmt_config.bzl", _rustfmt_config = "rustfmt_config")
load(
"//rust/private:rustfmt_wrapper.bzl",
_rust_binary = "rust_binary",
@@ -5,7 +6,6 @@ load(
_rust_test = "rust_test",
_rust_test_suite = "rust_test_suite",
)
-load("//rust/private:rustfmt_config.bzl", _rustfmt_config = "rustfmt_config")
rust_binary = _rust_binary
rust_library = _rust_library
From dad73f783ea206eba5a326c3329080b253cee5bc Mon Sep 17 00:00:00 2001
From: Selenium CI Bot
Date: Tue, 26 Sep 2023 00:14:45 +0000
Subject: [PATCH 06/90] Update mirror info (Tue Sep 26 00:14:45 UTC 2023)
---
common/mirror/selenium | 43 ++++++++++++++++++++----------------------
1 file changed, 20 insertions(+), 23 deletions(-)
diff --git a/common/mirror/selenium b/common/mirror/selenium
index 506f9a4cf2896..00af43ccbaf83 100644
--- a/common/mirror/selenium
+++ b/common/mirror/selenium
@@ -1,4 +1,24 @@
[
+ {
+ "tag_name": "selenium-4.13.0",
+ "assets": [
+ {
+ "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.13.0/selenium-dotnet-4.13.0.zip"
+ },
+ {
+ "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.13.0/selenium-dotnet-strongnamed-4.13.0.zip"
+ },
+ {
+ "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.13.0/selenium-java-4.13.0.zip"
+ },
+ {
+ "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.13.0/selenium-server-4.13.0.jar"
+ },
+ {
+ "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.13.0/selenium-server-4.13.0.zip"
+ }
+ ]
+ },
{
"tag_name": "nightly",
"assets": [
@@ -884,28 +904,5 @@
"browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.0.0-alpha-1/selenium-server-standalone-4.0.0-alpha-1.zip"
}
]
- },
- {
- "tag_name": "selenium-3.141.59",
- "assets": [
- {
- "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-3.141.59/IEDriverServer_Win32_3.141.59.zip"
- },
- {
- "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-3.141.59/IEDriverServer_x64_3.141.59.zip"
- },
- {
- "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-3.141.59/selenium-html-runner-3.141.59.jar"
- },
- {
- "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-3.141.59/selenium-java-3.141.59.zip"
- },
- {
- "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-3.141.59/selenium-server-3.141.59.zip"
- },
- {
- "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-3.141.59/selenium-server-standalone-3.141.59.jar"
- }
- ]
}
]
From 313ac2052a818f9d4a36841894d960fdb76517da Mon Sep 17 00:00:00 2001
From: Nikolay Borisenko <22616990+nvborisenko@users.noreply.github.com>
Date: Tue, 26 Sep 2023 03:54:11 +0300
Subject: [PATCH 07/90] [dotnet] Don't break devtools processing events thread
in case of unexpected exception (#12820)
Don't break devtools processing events thread in case of unexpected exception
---
dotnet/src/webdriver/DevTools/DevToolsSession.cs | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/dotnet/src/webdriver/DevTools/DevToolsSession.cs b/dotnet/src/webdriver/DevTools/DevToolsSession.cs
index da03bd4860dfa..d42c9568219b8 100644
--- a/dotnet/src/webdriver/DevTools/DevToolsSession.cs
+++ b/dotnet/src/webdriver/DevTools/DevToolsSession.cs
@@ -455,7 +455,16 @@ private void MonitorMessageQueue()
// in the IEnumerable, meaning the foreach loop will terminate gracefully.
foreach (string message in this.messageQueue.GetConsumingEnumerable())
{
- this.ProcessMessage(message);
+ // Don't breake entire thread in case of unsuccessful message,
+ // and give a chance for the next message in queue to be processed
+ try
+ {
+ this.ProcessMessage(message);
+ }
+ catch(Exception ex)
+ {
+ LogError("Unexpected error occured while processing message: {0}", ex);
+ }
}
}
From 277438136aa9ec6cf860a2361d48bef99778823f Mon Sep 17 00:00:00 2001
From: titusfortner
Date: Mon, 25 Sep 2023 21:13:24 -0500
Subject: [PATCH 08/90] [rb] fix bug in chromedriver arguments for logging to
file
---
rb/lib/selenium/webdriver/chrome/service.rb | 2 +-
rb/lib/selenium/webdriver/edge/service.rb | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/rb/lib/selenium/webdriver/chrome/service.rb b/rb/lib/selenium/webdriver/chrome/service.rb
index 74449fa94f931..82945bba8964a 100644
--- a/rb/lib/selenium/webdriver/chrome/service.rb
+++ b/rb/lib/selenium/webdriver/chrome/service.rb
@@ -28,7 +28,7 @@ class Service < WebDriver::Service
def log
return @log unless @log.is_a? String
- @args += ['--log-path', @log]
+ @args << "--log-path=#{@log}"
@log = nil
end
end # Service
diff --git a/rb/lib/selenium/webdriver/edge/service.rb b/rb/lib/selenium/webdriver/edge/service.rb
index aac7489864849..7b4ca72ecba27 100644
--- a/rb/lib/selenium/webdriver/edge/service.rb
+++ b/rb/lib/selenium/webdriver/edge/service.rb
@@ -28,7 +28,7 @@ class Service < WebDriver::Service
def log
return @log unless @log.is_a? String
- @args += ['--log-path', @log]
+ @args << "--log-path=#{@log}"
@log = nil
end
end # Service
From a8e9c4d23c9bd5ec90f0f7752208a2c9d5ec5a2d Mon Sep 17 00:00:00 2001
From: titusfortner
Date: Mon, 25 Sep 2023 21:27:52 -0500
Subject: [PATCH 09/90] [rb] update version and changelog for 4.13.1
---
rb/CHANGES | 5 +++++
rb/Gemfile.lock | 4 +++-
rb/lib/selenium/webdriver/version.rb | 2 +-
3 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/rb/CHANGES b/rb/CHANGES
index 65e111feb9c91..45da160beff65 100644
--- a/rb/CHANGES
+++ b/rb/CHANGES
@@ -1,3 +1,8 @@
+4.13.1 (2023-09-25)
+=========================
+Ruby:
+ * Fix bug preventing logging chromedriver to file
+
4.13.0 (2023-09-25)
=========================
Ruby:
diff --git a/rb/Gemfile.lock b/rb/Gemfile.lock
index 2097248850d31..393daa6b3afb4 100644
--- a/rb/Gemfile.lock
+++ b/rb/Gemfile.lock
@@ -3,7 +3,7 @@ PATH
specs:
selenium-devtools (0.117.0)
selenium-webdriver (~> 4.2)
- selenium-webdriver (4.13.0)
+ selenium-webdriver (4.13.1)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
websocket (~> 1.0)
@@ -25,6 +25,7 @@ GEM
irb (1.7.0)
reline (>= 0.3.0)
json (2.6.3)
+ json (2.6.3-java)
language_server-protocol (3.17.0.3)
parallel (1.23.0)
parser (3.2.2.3)
@@ -32,6 +33,7 @@ GEM
racc
public_suffix (5.0.1)
racc (1.7.1)
+ racc (1.7.1-java)
rack (2.2.7)
rainbow (3.1.1)
rake (13.0.6)
diff --git a/rb/lib/selenium/webdriver/version.rb b/rb/lib/selenium/webdriver/version.rb
index fa3eb09007867..5247f077f241f 100644
--- a/rb/lib/selenium/webdriver/version.rb
+++ b/rb/lib/selenium/webdriver/version.rb
@@ -19,6 +19,6 @@
module Selenium
module WebDriver
- VERSION = '4.14.0.nightly'
+ VERSION = '4.13.1'
end # WebDriver
end # Selenium
From 1b046b189b2dc908c429f1081d7312d0fdd76f50 Mon Sep 17 00:00:00 2001
From: titusfortner
Date: Mon, 25 Sep 2023 21:46:19 -0500
Subject: [PATCH 10/90] [rb] fix unit tests
---
rb/spec/unit/selenium/webdriver/chrome/service_spec.rb | 2 +-
rb/spec/unit/selenium/webdriver/edge/service_spec.rb | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/rb/spec/unit/selenium/webdriver/chrome/service_spec.rb b/rb/spec/unit/selenium/webdriver/chrome/service_spec.rb
index 525077c2f685c..7ad3581a0563d 100644
--- a/rb/spec/unit/selenium/webdriver/chrome/service_spec.rb
+++ b/rb/spec/unit/selenium/webdriver/chrome/service_spec.rb
@@ -73,7 +73,7 @@ module Chrome
service = described_class.new(log: '/path/to/log.txt')
expect(service.log).to be_nil
- expect(service.args).to eq ['--log-path', '/path/to/log.txt']
+ expect(service.args).to eq ['--log-path=/path/to/log.txt']
end
it 'uses provided args' do
diff --git a/rb/spec/unit/selenium/webdriver/edge/service_spec.rb b/rb/spec/unit/selenium/webdriver/edge/service_spec.rb
index 906adc1fd8c18..9f45e5c58c5ff 100644
--- a/rb/spec/unit/selenium/webdriver/edge/service_spec.rb
+++ b/rb/spec/unit/selenium/webdriver/edge/service_spec.rb
@@ -72,7 +72,7 @@ module Edge
service = described_class.chrome(log: '/path/to/log.txt')
expect(service.log).to be_nil
- expect(service.args).to eq ['--log-path', '/path/to/log.txt']
+ expect(service.args).to eq ['--log-path=/path/to/log.txt']
end
it 'uses provided args' do
@@ -130,7 +130,7 @@ module Edge
service = described_class.chrome(log: '/path/to/log.txt')
expect(service.log).to be_nil
- expect(service.args).to eq ['--log-path', '/path/to/log.txt']
+ expect(service.args).to eq ['--log-path=/path/to/log.txt']
end
end
end
From 8763bcd75b90b0f79172c77714739df1bb19214a Mon Sep 17 00:00:00 2001
From: titusfortner
Date: Mon, 25 Sep 2023 22:11:42 -0500
Subject: [PATCH 11/90] [rb] update version for nightly gems
---
rb/lib/selenium/webdriver/version.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/rb/lib/selenium/webdriver/version.rb b/rb/lib/selenium/webdriver/version.rb
index 5247f077f241f..fa3eb09007867 100644
--- a/rb/lib/selenium/webdriver/version.rb
+++ b/rb/lib/selenium/webdriver/version.rb
@@ -19,6 +19,6 @@
module Selenium
module WebDriver
- VERSION = '4.13.1'
+ VERSION = '4.14.0.nightly'
end # WebDriver
end # Selenium
From 5317f3f4e4ae5193f1d03e9b1d8e86ba56e1e571 Mon Sep 17 00:00:00 2001
From: titusfortner
Date: Mon, 25 Sep 2023 22:40:39 -0500
Subject: [PATCH 12/90] [rb] require nightly gem generation to match nightly in
the version file for clarity
This is similar to how Java is doing snapshot values
---
rb/Gemfile.lock | 4 +---
rb/lib/selenium/support/nightly_version_generator.rb | 2 +-
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/rb/Gemfile.lock b/rb/Gemfile.lock
index 393daa6b3afb4..81d4f881967cf 100644
--- a/rb/Gemfile.lock
+++ b/rb/Gemfile.lock
@@ -3,7 +3,7 @@ PATH
specs:
selenium-devtools (0.117.0)
selenium-webdriver (~> 4.2)
- selenium-webdriver (4.13.1)
+ selenium-webdriver (4.14.0.nightly)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
websocket (~> 1.0)
@@ -25,7 +25,6 @@ GEM
irb (1.7.0)
reline (>= 0.3.0)
json (2.6.3)
- json (2.6.3-java)
language_server-protocol (3.17.0.3)
parallel (1.23.0)
parser (3.2.2.3)
@@ -33,7 +32,6 @@ GEM
racc
public_suffix (5.0.1)
racc (1.7.1)
- racc (1.7.1-java)
rack (2.2.7)
rainbow (3.1.1)
rake (13.0.6)
diff --git a/rb/lib/selenium/support/nightly_version_generator.rb b/rb/lib/selenium/support/nightly_version_generator.rb
index 186965909727f..7c3134f248be2 100644
--- a/rb/lib/selenium/support/nightly_version_generator.rb
+++ b/rb/lib/selenium/support/nightly_version_generator.rb
@@ -30,7 +30,7 @@ module Support
#
class NightlyVersionGenerator
- REGEXP = /VERSION = ['"]([\d.]+)['"]/
+ REGEXP = /VERSION = ['"]([\d.]+\.nightly)['"]/
def self.call(version_file, version_suffix)
version_suffix ||= Date.today.strftime('%Y%m%d')
From 6c9a417185628a8fc89562ab75b4d30f533526ea Mon Sep 17 00:00:00 2001
From: titusfortner
Date: Mon, 25 Sep 2023 22:59:25 -0500
Subject: [PATCH 13/90] [dotnet] update changelog and version for 4.13.1
---
dotnet/CHANGELOG | 5 +++++
dotnet/selenium-dotnet-version.bzl | 2 +-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/dotnet/CHANGELOG b/dotnet/CHANGELOG
index 555c1eff758c7..8bc9418613b79 100644
--- a/dotnet/CHANGELOG
+++ b/dotnet/CHANGELOG
@@ -1,3 +1,8 @@
+v4.13.1
+======
+* Fix bug in selenium manager paths to work on mac and linux
+* Don't break devtools processing events thread in case of unexpected exception (#12820)
+
v4.13.0
======
* Add CDP files for v117 and remove v114
diff --git a/dotnet/selenium-dotnet-version.bzl b/dotnet/selenium-dotnet-version.bzl
index 6d90f6ea0f549..b0f825defdbf5 100644
--- a/dotnet/selenium-dotnet-version.bzl
+++ b/dotnet/selenium-dotnet-version.bzl
@@ -1,6 +1,6 @@
# BUILD FILE SYNTAX: STARLARK
-SE_VERSION = "4.13.0"
+SE_VERSION = "4.13.1"
ASSEMBLY_VERSION = "4.0.0.0"
SUPPORTED_NET_STANDARD_VERSIONS = ["netstandard2.0"]
From 6656c18f663188e070e2993010905c3db5fe02ff Mon Sep 17 00:00:00 2001
From: titusfortner
Date: Mon, 25 Sep 2023 23:04:02 -0500
Subject: [PATCH 14/90] [rb] there is no reason to have nightly devtools
release
Every time we update the code we do a release
---
.github/workflows/nightly.yml | 1 -
1 file changed, 1 deletion(-)
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
From 99c8f991b434d3ff8c7f7030cb431123e179c1c6 Mon Sep 17 00:00:00 2001
From: joerg1985 <16140691+joerg1985@users.noreply.github.com>
Date: Tue, 26 Sep 2023 06:11:42 +0100
Subject: [PATCH 15/90] [java] replaced the EventAttribute(Value) with an
AttributeMap (#12684)
---
.../distributor/local/LocalDistributor.java | 38 +++---
.../selenium/grid/graphql/GraphqlHandler.java | 16 +--
.../config/DriverServiceSessionFactory.java | 27 ++--
.../node/docker/DockerSessionFactory.java | 33 ++---
.../selenium/grid/node/local/LocalNode.java | 18 +--
.../grid/node/relay/RelaySessionFactory.java | 18 ++-
.../grid/router/GridStatusHandler.java | 17 +--
.../selenium/grid/router/HandleSession.java | 18 +--
.../sessionmap/jdbc/JdbcBackedSessionMap.java | 65 ++++------
.../sessionmap/local/LocalSessionMap.java | 15 +--
.../redis/RedisBackedSessionMap.java | 66 +++++-----
.../openqa/selenium/remote/RemoteTags.java | 18 +--
.../selenium/remote/tracing/AttributeMap.java | 37 ++++++
.../remote/tracing/EventAttribute.java | 55 --------
.../remote/tracing/EventAttributeValue.java | 120 ------------------
.../openqa/selenium/remote/tracing/Span.java | 4 +-
.../tracing/SpanWrappedHttpHandler.java | 11 +-
.../openqa/selenium/remote/tracing/Tags.java | 50 +++-----
.../selenium/remote/tracing/Tracer.java | 2 +
.../tracing/empty/NullAttributeMap.java | 62 +++++++++
.../remote/tracing/empty/NullSpan.java | 5 +-
.../remote/tracing/empty/NullTracer.java | 6 +
.../OpenTelemetryAttributeMap.java | 75 +++++++++++
.../opentelemetry/OpenTelemetrySpan.java | 53 +-------
.../opentelemetry/OpenTelemetryTracer.java | 6 +
.../tracing/opentelemetry/TracerTest.java | 61 +++++----
26 files changed, 386 insertions(+), 510 deletions(-)
create mode 100644 java/src/org/openqa/selenium/remote/tracing/AttributeMap.java
delete mode 100644 java/src/org/openqa/selenium/remote/tracing/EventAttribute.java
delete mode 100644 java/src/org/openqa/selenium/remote/tracing/EventAttributeValue.java
create mode 100644 java/src/org/openqa/selenium/remote/tracing/empty/NullAttributeMap.java
create mode 100644 java/src/org/openqa/selenium/remote/tracing/opentelemetry/OpenTelemetryAttributeMap.java
diff --git a/java/src/org/openqa/selenium/grid/distributor/local/LocalDistributor.java b/java/src/org/openqa/selenium/grid/distributor/local/LocalDistributor.java
index 3b147de61b429..2744de1733ebb 100644
--- a/java/src/org/openqa/selenium/grid/distributor/local/LocalDistributor.java
+++ b/java/src/org/openqa/selenium/grid/distributor/local/LocalDistributor.java
@@ -107,8 +107,7 @@
import org.openqa.selenium.remote.SessionId;
import org.openqa.selenium.remote.http.HttpClient;
import org.openqa.selenium.remote.tracing.AttributeKey;
-import org.openqa.selenium.remote.tracing.EventAttribute;
-import org.openqa.selenium.remote.tracing.EventAttributeValue;
+import org.openqa.selenium.remote.tracing.AttributeMap;
import org.openqa.selenium.remote.tracing.Span;
import org.openqa.selenium.remote.tracing.Status;
import org.openqa.selenium.remote.tracing.Tracer;
@@ -509,13 +508,11 @@ public Either newSession(
Require.nonNull("Requests to process", request);
Span span = tracer.getCurrentContext().createSpan("distributor.new_session");
- Map attributeMap = new HashMap<>();
+ AttributeMap attributeMap = tracer.createAttributeMap();
try {
- attributeMap.put(
- AttributeKey.LOGGER_CLASS.getKey(), EventAttribute.setValue(getClass().getName()));
+ attributeMap.put(AttributeKey.LOGGER_CLASS.getKey(), getClass().getName());
- attributeMap.put(
- "request.payload", EventAttribute.setValue(request.getDesiredCapabilities().toString()));
+ attributeMap.put("request.payload", request.getDesiredCapabilities().toString());
String sessionReceivedMessage = "Session request received by the Distributor";
span.addEvent(sessionReceivedMessage, attributeMap);
LOG.info(
@@ -528,8 +525,7 @@ public Either newSession(
EXCEPTION.accept(attributeMap, exception);
attributeMap.put(
AttributeKey.EXCEPTION_MESSAGE.getKey(),
- EventAttribute.setValue(
- "Unable to create session. No capabilities found: " + exception.getMessage()));
+ "Unable to create session. No capabilities found: " + exception.getMessage());
span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);
return Either.left(exception);
}
@@ -574,7 +570,7 @@ public Either newSession(
SESSION_ID_EVENT.accept(attributeMap, sessionId);
CAPABILITIES_EVENT.accept(attributeMap, sessionCaps);
span.setAttribute(SESSION_URI.getKey(), sessionUri);
- attributeMap.put(SESSION_URI.getKey(), EventAttribute.setValue(sessionUri));
+ attributeMap.put(SESSION_URI.getKey(), sessionUri);
String sessionCreatedMessage = "Session created by the Distributor";
span.addEvent(sessionCreatedMessage, attributeMap);
@@ -596,13 +592,13 @@ public Either newSession(
"Will re-attempt to find a node which can run this session", lastFailure);
attributeMap.put(
AttributeKey.EXCEPTION_MESSAGE.getKey(),
- EventAttribute.setValue("Will retry session " + request.getRequestId()));
+ "Will retry session " + request.getRequestId());
} else {
EXCEPTION.accept(attributeMap, lastFailure);
attributeMap.put(
AttributeKey.EXCEPTION_MESSAGE.getKey(),
- EventAttribute.setValue("Unable to create session: " + lastFailure.getMessage()));
+ "Unable to create session: " + lastFailure.getMessage());
}
span.setAttribute(AttributeKey.ERROR.getKey(), true);
span.setStatus(Status.ABORTED);
@@ -614,8 +610,7 @@ public Either newSession(
EXCEPTION.accept(attributeMap, e);
attributeMap.put(
- AttributeKey.EXCEPTION_MESSAGE.getKey(),
- EventAttribute.setValue("Unable to create session: " + e.getMessage()));
+ AttributeKey.EXCEPTION_MESSAGE.getKey(), "Unable to create session: " + e.getMessage());
span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);
return Either.left(e);
@@ -626,8 +621,7 @@ public Either newSession(
EXCEPTION.accept(attributeMap, e);
attributeMap.put(
AttributeKey.EXCEPTION_MESSAGE.getKey(),
- EventAttribute.setValue(
- "Unknown error in LocalDistributor while creating session: " + e.getMessage()));
+ "Unknown error in LocalDistributor while creating session: " + e.getMessage());
span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);
return Either.left(new SessionNotCreatedException(e.getMessage(), e));
@@ -817,14 +811,12 @@ private void handleNewSessionRequest(SessionRequest sessionRequest) {
try (Span span =
TraceSessionRequest.extract(tracer, sessionRequest)
.createSpan("distributor.poll_queue")) {
- Map attributeMap = new HashMap<>();
- attributeMap.put(
- AttributeKey.LOGGER_CLASS.getKey(), EventAttribute.setValue(getClass().getName()));
+ AttributeMap attributeMap = tracer.createAttributeMap();
+ attributeMap.put(AttributeKey.LOGGER_CLASS.getKey(), getClass().getName());
span.setAttribute(AttributeKey.REQUEST_ID.getKey(), reqId.toString());
- attributeMap.put(
- AttributeKey.REQUEST_ID.getKey(), EventAttribute.setValue(reqId.toString()));
+ attributeMap.put(AttributeKey.REQUEST_ID.getKey(), reqId.toString());
- attributeMap.put("request", EventAttribute.setValue(sessionRequest.toString()));
+ attributeMap.put("request", sessionRequest.toString());
Either response =
newSession(sessionRequest);
@@ -834,7 +826,7 @@ private void handleNewSessionRequest(SessionRequest sessionRequest) {
Debug.getDebugLogLevel(), "Retrying {0}", sessionRequest.getDesiredCapabilities());
boolean retried = sessionQueue.retryAddToQueue(sessionRequest);
- attributeMap.put("request.retry_add", EventAttribute.setValue(retried));
+ attributeMap.put("request.retry_add", retried);
childSpan.addEvent("Retry adding to front of queue. No slot available.", attributeMap);
if (retried) {
diff --git a/java/src/org/openqa/selenium/grid/graphql/GraphqlHandler.java b/java/src/org/openqa/selenium/grid/graphql/GraphqlHandler.java
index fda8333ae9386..aa998ed234e72 100644
--- a/java/src/org/openqa/selenium/grid/graphql/GraphqlHandler.java
+++ b/java/src/org/openqa/selenium/grid/graphql/GraphqlHandler.java
@@ -55,8 +55,7 @@
import org.openqa.selenium.remote.http.HttpRequest;
import org.openqa.selenium.remote.http.HttpResponse;
import org.openqa.selenium.remote.tracing.AttributeKey;
-import org.openqa.selenium.remote.tracing.EventAttribute;
-import org.openqa.selenium.remote.tracing.EventAttributeValue;
+import org.openqa.selenium.remote.tracing.AttributeMap;
import org.openqa.selenium.remote.tracing.Span;
import org.openqa.selenium.remote.tracing.Status;
import org.openqa.selenium.remote.tracing.Tracer;
@@ -120,9 +119,8 @@ public HttpResponse execute(HttpRequest req) throws UncheckedIOException {
HttpResponse response;
Map inputs = JSON.toType(Contents.string(req), MAP_TYPE);
- Map attributeMap = new HashMap<>();
- attributeMap.put(
- AttributeKey.LOGGER_CLASS.getKey(), EventAttribute.setValue(getClass().getName()));
+ AttributeMap attributeMap = tracer.createAttributeMap();
+ attributeMap.put(AttributeKey.LOGGER_CLASS.getKey(), getClass().getName());
HTTP_REQUEST.accept(span, req);
HTTP_REQUEST_EVENT.accept(attributeMap, req);
@@ -136,9 +134,7 @@ public HttpResponse execute(HttpRequest req) throws UncheckedIOException {
HTTP_RESPONSE.accept(span, response);
HTTP_RESPONSE_EVENT.accept(attributeMap, response);
- attributeMap.put(
- AttributeKey.EXCEPTION_MESSAGE.getKey(),
- EventAttribute.setValue("Unable to find query"));
+ attributeMap.put(AttributeKey.EXCEPTION_MESSAGE.getKey(), "Unable to find query");
span.setAttribute(AttributeKey.ERROR.getKey(), true);
span.setStatus(Status.NOT_FOUND);
@@ -178,9 +174,7 @@ public HttpResponse execute(HttpRequest req) throws UncheckedIOException {
HTTP_RESPONSE.accept(span, response);
HTTP_RESPONSE_EVENT.accept(attributeMap, response);
- attributeMap.put(
- AttributeKey.EXCEPTION_MESSAGE.getKey(),
- EventAttribute.setValue("Error while executing the query"));
+ attributeMap.put(AttributeKey.EXCEPTION_MESSAGE.getKey(), "Error while executing the query");
span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);
span.setAttribute(AttributeKey.ERROR.getKey(), true);
diff --git a/java/src/org/openqa/selenium/grid/node/config/DriverServiceSessionFactory.java b/java/src/org/openqa/selenium/grid/node/config/DriverServiceSessionFactory.java
index 3e41aaecce458..3525844462e51 100644
--- a/java/src/org/openqa/selenium/grid/node/config/DriverServiceSessionFactory.java
+++ b/java/src/org/openqa/selenium/grid/node/config/DriverServiceSessionFactory.java
@@ -64,8 +64,7 @@
import org.openqa.selenium.remote.service.DriverFinder;
import org.openqa.selenium.remote.service.DriverService;
import org.openqa.selenium.remote.tracing.AttributeKey;
-import org.openqa.selenium.remote.tracing.EventAttribute;
-import org.openqa.selenium.remote.tracing.EventAttributeValue;
+import org.openqa.selenium.remote.tracing.AttributeMap;
import org.openqa.selenium.remote.tracing.Span;
import org.openqa.selenium.remote.tracing.Status;
import org.openqa.selenium.remote.tracing.Tracer;
@@ -121,7 +120,7 @@ public Either apply(CreateSessionRequest sess
}
Span span = tracer.getCurrentContext().createSpan("driver_service_factory.apply");
- Map attributeMap = new HashMap<>();
+ AttributeMap attributeMap = tracer.createAttributeMap();
try {
Capabilities capabilities =
@@ -129,8 +128,7 @@ public Either apply(CreateSessionRequest sess
CAPABILITIES.accept(span, capabilities);
CAPABILITIES_EVENT.accept(attributeMap, capabilities);
- attributeMap.put(
- AttributeKey.LOGGER_CLASS.getKey(), EventAttribute.setValue(this.getClass().getName()));
+ attributeMap.put(AttributeKey.LOGGER_CLASS.getKey(), this.getClass().getName());
DriverService service = builder.build();
if (service.getExecutable() == null) {
@@ -155,8 +153,7 @@ public Either apply(CreateSessionRequest sess
service.start();
URL serviceURL = service.getUrl();
- attributeMap.put(
- AttributeKey.DRIVER_URL.getKey(), EventAttribute.setValue(serviceURL.toString()));
+ attributeMap.put(AttributeKey.DRIVER_URL.getKey(), serviceURL.toString());
ClientConfig clientConfig =
ClientConfig.defaultConfig().readTimeout(sessionTimeout).baseUrl(serviceURL);
@@ -175,13 +172,9 @@ public Either apply(CreateSessionRequest sess
Response response = result.createResponse();
- attributeMap.put(
- AttributeKey.UPSTREAM_DIALECT.getKey(), EventAttribute.setValue(upstream.toString()));
- attributeMap.put(
- AttributeKey.DOWNSTREAM_DIALECT.getKey(),
- EventAttribute.setValue(downstream.toString()));
- attributeMap.put(
- AttributeKey.DRIVER_RESPONSE.getKey(), EventAttribute.setValue(response.toString()));
+ attributeMap.put(AttributeKey.UPSTREAM_DIALECT.getKey(), upstream.toString());
+ attributeMap.put(AttributeKey.DOWNSTREAM_DIALECT.getKey(), downstream.toString());
+ attributeMap.put(AttributeKey.DRIVER_RESPONSE.getKey(), response.toString());
Capabilities caps = new ImmutableCapabilities((Map, ?>) response.getValue());
if (platformName.isPresent()) {
@@ -226,8 +219,7 @@ public void stop() {
+ e.getMessage();
LOG.warning(errorMessage);
- attributeMap.put(
- AttributeKey.EXCEPTION_MESSAGE.getKey(), EventAttribute.setValue(errorMessage));
+ attributeMap.put(AttributeKey.EXCEPTION_MESSAGE.getKey(), errorMessage);
span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);
service.stop();
return Either.left(new SessionNotCreatedException(errorMessage));
@@ -240,8 +232,7 @@ public void stop() {
"Error while creating session with the driver service. " + e.getMessage();
LOG.warning(errorMessage);
- attributeMap.put(
- AttributeKey.EXCEPTION_MESSAGE.getKey(), EventAttribute.setValue(errorMessage));
+ attributeMap.put(AttributeKey.EXCEPTION_MESSAGE.getKey(), errorMessage);
span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);
return Either.left(new SessionNotCreatedException(e.getMessage()));
diff --git a/java/src/org/openqa/selenium/grid/node/docker/DockerSessionFactory.java b/java/src/org/openqa/selenium/grid/node/docker/DockerSessionFactory.java
index eea30bc220f3c..ff1e3250b21c8 100644
--- a/java/src/org/openqa/selenium/grid/node/docker/DockerSessionFactory.java
+++ b/java/src/org/openqa/selenium/grid/node/docker/DockerSessionFactory.java
@@ -77,8 +77,7 @@
import org.openqa.selenium.remote.http.HttpRequest;
import org.openqa.selenium.remote.http.HttpResponse;
import org.openqa.selenium.remote.tracing.AttributeKey;
-import org.openqa.selenium.remote.tracing.EventAttribute;
-import org.openqa.selenium.remote.tracing.EventAttributeValue;
+import org.openqa.selenium.remote.tracing.AttributeMap;
import org.openqa.selenium.remote.tracing.Span;
import org.openqa.selenium.remote.tracing.Status;
import org.openqa.selenium.remote.tracing.Tracer;
@@ -148,9 +147,8 @@ public Either apply(CreateSessionRequest sess
int port = runningInDocker ? 4444 : PortProber.findFreePort();
try (Span span = tracer.getCurrentContext().createSpan("docker_session_factory.apply")) {
- Map attributeMap = new HashMap<>();
- attributeMap.put(
- AttributeKey.LOGGER_CLASS.getKey(), EventAttribute.setValue(this.getClass().getName()));
+ AttributeMap attributeMap = tracer.createAttributeMap();
+ attributeMap.put(AttributeKey.LOGGER_CLASS.getKey(), this.getClass().getName());
String logMessage =
runningInDocker
? "Creating container..."
@@ -166,11 +164,11 @@ public Either apply(CreateSessionRequest sess
ClientConfig.defaultConfig().baseUrl(remoteAddress).readTimeout(sessionTimeout);
HttpClient client = clientFactory.createClient(clientConfig);
- attributeMap.put("docker.browser.image", EventAttribute.setValue(browserImage.toString()));
- attributeMap.put("container.port", EventAttribute.setValue(port));
- attributeMap.put("container.id", EventAttribute.setValue(container.getId().toString()));
- attributeMap.put("container.ip", EventAttribute.setValue(containerIp));
- attributeMap.put("docker.server.url", EventAttribute.setValue(remoteAddress.toString()));
+ attributeMap.put("docker.browser.image", browserImage.toString());
+ attributeMap.put("container.port", port);
+ attributeMap.put("container.id", container.getId().toString());
+ attributeMap.put("container.ip", containerIp);
+ attributeMap.put("docker.server.url", remoteAddress.toString());
LOG.info(
String.format(
@@ -185,8 +183,7 @@ public Either apply(CreateSessionRequest sess
EXCEPTION.accept(attributeMap, e);
attributeMap.put(
AttributeKey.EXCEPTION_MESSAGE.getKey(),
- EventAttribute.setValue(
- "Unable to connect to docker server. Stopping container: " + e.getMessage()));
+ "Unable to connect to docker server. Stopping container: " + e.getMessage());
span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);
container.stop(Duration.ofMinutes(1));
@@ -205,8 +202,7 @@ public Either apply(CreateSessionRequest sess
try {
result = new ProtocolHandshake().createSession(client, command);
response = result.createResponse();
- attributeMap.put(
- AttributeKey.DRIVER_RESPONSE.getKey(), EventAttribute.setValue(response.toString()));
+ attributeMap.put(AttributeKey.DRIVER_RESPONSE.getKey(), response.toString());
} catch (IOException | RuntimeException e) {
span.setAttribute(AttributeKey.ERROR.getKey(), true);
span.setStatus(Status.CANCELLED);
@@ -214,8 +210,7 @@ public Either apply(CreateSessionRequest sess
EXCEPTION.accept(attributeMap, e);
attributeMap.put(
AttributeKey.EXCEPTION_MESSAGE.getKey(),
- EventAttribute.setValue(
- "Unable to create session. Stopping and container: " + e.getMessage()));
+ "Unable to create session. Stopping and container: " + e.getMessage());
span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);
container.stop(Duration.ofMinutes(1));
@@ -244,10 +239,8 @@ public Either apply(CreateSessionRequest sess
sessionRequest.getDownstreamDialects().contains(result.getDialect())
? result.getDialect()
: W3C;
- attributeMap.put(
- AttributeKey.DOWNSTREAM_DIALECT.getKey(), EventAttribute.setValue(downstream.toString()));
- attributeMap.put(
- AttributeKey.DRIVER_RESPONSE.getKey(), EventAttribute.setValue(response.toString()));
+ attributeMap.put(AttributeKey.DOWNSTREAM_DIALECT.getKey(), downstream.toString());
+ attributeMap.put(AttributeKey.DRIVER_RESPONSE.getKey(), response.toString());
span.addEvent("Docker driver service created session", attributeMap);
LOG.fine(
diff --git a/java/src/org/openqa/selenium/grid/node/local/LocalNode.java b/java/src/org/openqa/selenium/grid/node/local/LocalNode.java
index fc79ebe1907a4..9f52b048dc959 100644
--- a/java/src/org/openqa/selenium/grid/node/local/LocalNode.java
+++ b/java/src/org/openqa/selenium/grid/node/local/LocalNode.java
@@ -105,8 +105,7 @@
import org.openqa.selenium.remote.http.HttpRequest;
import org.openqa.selenium.remote.http.HttpResponse;
import org.openqa.selenium.remote.tracing.AttributeKey;
-import org.openqa.selenium.remote.tracing.EventAttribute;
-import org.openqa.selenium.remote.tracing.EventAttributeValue;
+import org.openqa.selenium.remote.tracing.AttributeMap;
import org.openqa.selenium.remote.tracing.Span;
import org.openqa.selenium.remote.tracing.Status;
import org.openqa.selenium.remote.tracing.Tracer;
@@ -404,24 +403,21 @@ public Either newSession(
Require.nonNull("Session request", sessionRequest);
try (Span span = tracer.getCurrentContext().createSpan("node.new_session")) {
- Map attributeMap = new HashMap<>();
+ AttributeMap attributeMap = tracer.createAttributeMap();
+ attributeMap.put(AttributeKey.LOGGER_CLASS.getKey(), getClass().getName());
attributeMap.put(
- AttributeKey.LOGGER_CLASS.getKey(), EventAttribute.setValue(getClass().getName()));
+ "session.request.capabilities", sessionRequest.getDesiredCapabilities().toString());
attributeMap.put(
- "session.request.capabilities",
- EventAttribute.setValue(sessionRequest.getDesiredCapabilities().toString()));
- attributeMap.put(
- "session.request.downstreamdialect",
- EventAttribute.setValue(sessionRequest.getDownstreamDialects().toString()));
+ "session.request.downstreamdialect", sessionRequest.getDownstreamDialects().toString());
int currentSessionCount = getCurrentSessionCount();
span.setAttribute("current.session.count", currentSessionCount);
- attributeMap.put("current.session.count", EventAttribute.setValue(currentSessionCount));
+ attributeMap.put("current.session.count", currentSessionCount);
if (getCurrentSessionCount() >= maxSessionCount) {
span.setAttribute(AttributeKey.ERROR.getKey(), true);
span.setStatus(Status.RESOURCE_EXHAUSTED);
- attributeMap.put("max.session.count", EventAttribute.setValue(maxSessionCount));
+ attributeMap.put("max.session.count", maxSessionCount);
span.addEvent("Max session count reached", attributeMap);
return Either.left(new RetrySessionRequestException("Max session count reached."));
}
diff --git a/java/src/org/openqa/selenium/grid/node/relay/RelaySessionFactory.java b/java/src/org/openqa/selenium/grid/node/relay/RelaySessionFactory.java
index 9e5f4345b79c7..6a1cd3d1a72f6 100644
--- a/java/src/org/openqa/selenium/grid/node/relay/RelaySessionFactory.java
+++ b/java/src/org/openqa/selenium/grid/node/relay/RelaySessionFactory.java
@@ -26,7 +26,6 @@
import static org.openqa.selenium.remote.tracing.AttributeKey.EXCEPTION_MESSAGE;
import static org.openqa.selenium.remote.tracing.AttributeKey.LOGGER_CLASS;
import static org.openqa.selenium.remote.tracing.AttributeKey.UPSTREAM_DIALECT;
-import static org.openqa.selenium.remote.tracing.EventAttribute.setValue;
import static org.openqa.selenium.remote.tracing.Tags.EXCEPTION;
import java.net.MalformedURLException;
@@ -34,7 +33,6 @@
import java.net.URL;
import java.time.Duration;
import java.time.Instant;
-import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
@@ -64,7 +62,7 @@
import org.openqa.selenium.remote.http.HttpRequest;
import org.openqa.selenium.remote.http.HttpResponse;
import org.openqa.selenium.remote.tracing.AttributeKey;
-import org.openqa.selenium.remote.tracing.EventAttributeValue;
+import org.openqa.selenium.remote.tracing.AttributeMap;
import org.openqa.selenium.remote.tracing.Span;
import org.openqa.selenium.remote.tracing.Status;
import org.openqa.selenium.remote.tracing.Tracer;
@@ -149,11 +147,11 @@ public Either apply(CreateSessionRequest sess
try (Span span = tracer.getCurrentContext().createSpan("relay_session_factory.apply")) {
- Map attributeMap = new HashMap<>();
+ AttributeMap attributeMap = tracer.createAttributeMap();
CAPABILITIES.accept(span, capabilities);
CAPABILITIES_EVENT.accept(attributeMap, capabilities);
- attributeMap.put(LOGGER_CLASS.getKey(), setValue(this.getClass().getName()));
- attributeMap.put(DRIVER_URL.getKey(), setValue(serviceUrl.toString()));
+ attributeMap.put(LOGGER_CLASS.getKey(), this.getClass().getName());
+ attributeMap.put(DRIVER_URL.getKey(), serviceUrl.toString());
ClientConfig clientConfig =
ClientConfig.defaultConfig().readTimeout(sessionTimeout).baseUrl(serviceUrl);
@@ -170,9 +168,9 @@ public Either apply(CreateSessionRequest sess
: downstreamDialects.iterator().next();
Response response = result.createResponse();
- attributeMap.put(UPSTREAM_DIALECT.getKey(), setValue(upstream.toString()));
- attributeMap.put(DOWNSTREAM_DIALECT.getKey(), setValue(downstream.toString()));
- attributeMap.put(DRIVER_RESPONSE.getKey(), setValue(response.toString()));
+ attributeMap.put(UPSTREAM_DIALECT.getKey(), upstream.toString());
+ attributeMap.put(DOWNSTREAM_DIALECT.getKey(), downstream.toString());
+ attributeMap.put(DRIVER_RESPONSE.getKey(), response.toString());
Capabilities responseCaps = new ImmutableCapabilities((Map, ?>) response.getValue());
Capabilities mergedCapabilities = capabilities.merge(responseCaps);
@@ -202,7 +200,7 @@ public void stop() {
String errorMessage =
String.format(
"Error while creating session with the service %s. %s", serviceUrl, e.getMessage());
- attributeMap.put(EXCEPTION_MESSAGE.getKey(), setValue(errorMessage));
+ attributeMap.put(EXCEPTION_MESSAGE.getKey(), errorMessage);
span.addEvent(EXCEPTION_EVENT.getKey(), attributeMap);
return Either.left(new SessionNotCreatedException(errorMessage));
}
diff --git a/java/src/org/openqa/selenium/grid/router/GridStatusHandler.java b/java/src/org/openqa/selenium/grid/router/GridStatusHandler.java
index a143d83c4b98b..c873ecaeb003d 100644
--- a/java/src/org/openqa/selenium/grid/router/GridStatusHandler.java
+++ b/java/src/org/openqa/selenium/grid/router/GridStatusHandler.java
@@ -29,7 +29,6 @@
import static org.openqa.selenium.remote.tracing.Tags.HTTP_RESPONSE_EVENT;
import com.google.common.collect.ImmutableMap;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;
@@ -43,8 +42,7 @@
import org.openqa.selenium.remote.http.HttpRequest;
import org.openqa.selenium.remote.http.HttpResponse;
import org.openqa.selenium.remote.tracing.AttributeKey;
-import org.openqa.selenium.remote.tracing.EventAttribute;
-import org.openqa.selenium.remote.tracing.EventAttributeValue;
+import org.openqa.selenium.remote.tracing.AttributeMap;
import org.openqa.selenium.remote.tracing.Span;
import org.openqa.selenium.remote.tracing.Status;
import org.openqa.selenium.remote.tracing.Tracer;
@@ -71,9 +69,8 @@ class GridStatusHandler implements HttpHandler {
public HttpResponse execute(HttpRequest req) {
try (Span span = newSpanAsChildOf(tracer, req, "grid.status")) {
- Map attributeMap = new HashMap<>();
- attributeMap.put(
- AttributeKey.LOGGER_CLASS.getKey(), EventAttribute.setValue(getClass().getName()));
+ AttributeMap attributeMap = tracer.createAttributeMap();
+ attributeMap.put(AttributeKey.LOGGER_CLASS.getKey(), getClass().getName());
HTTP_REQUEST.accept(span, req);
HTTP_REQUEST_EVENT.accept(attributeMap, req);
@@ -87,8 +84,7 @@ public HttpResponse execute(HttpRequest req) {
EXCEPTION.accept(attributeMap, e);
attributeMap.put(
AttributeKey.EXCEPTION_MESSAGE.getKey(),
- EventAttribute.setValue(
- "Error or timeout while getting Distributor " + "status: " + e.getMessage()));
+ "Error or timeout while getting Distributor " + "status: " + e.getMessage());
HttpResponse response =
new HttpResponse()
.setContent(
@@ -109,8 +105,7 @@ public HttpResponse execute(HttpRequest req) {
EXCEPTION.accept(attributeMap, e);
attributeMap.put(
AttributeKey.EXCEPTION_MESSAGE.getKey(),
- EventAttribute.setValue(
- "Interruption while getting distributor status: " + e.getMessage()));
+ "Interruption while getting distributor status: " + e.getMessage());
HttpResponse response =
new HttpResponse()
@@ -163,7 +158,7 @@ public HttpResponse execute(HttpRequest req) {
new HttpResponse().setContent(asJson(ImmutableMap.of("value", value.build())));
HTTP_RESPONSE.accept(span, res);
HTTP_RESPONSE_EVENT.accept(attributeMap, res);
- attributeMap.put("grid.status", EventAttribute.setValue(ready));
+ attributeMap.put("grid.status", ready);
span.setStatus(Status.OK);
span.addEvent("Computed grid status", attributeMap);
return res;
diff --git a/java/src/org/openqa/selenium/grid/router/HandleSession.java b/java/src/org/openqa/selenium/grid/router/HandleSession.java
index fc66b4c8a5fd6..a9c5c3c128e95 100644
--- a/java/src/org/openqa/selenium/grid/router/HandleSession.java
+++ b/java/src/org/openqa/selenium/grid/router/HandleSession.java
@@ -32,8 +32,6 @@
import com.google.common.collect.ImmutableMap;
import java.net.URL;
import java.time.Duration;
-import java.util.HashMap;
-import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
@@ -52,8 +50,7 @@
import org.openqa.selenium.remote.http.HttpRequest;
import org.openqa.selenium.remote.http.HttpResponse;
import org.openqa.selenium.remote.tracing.AttributeKey;
-import org.openqa.selenium.remote.tracing.EventAttribute;
-import org.openqa.selenium.remote.tracing.EventAttributeValue;
+import org.openqa.selenium.remote.tracing.AttributeMap;
import org.openqa.selenium.remote.tracing.HttpTracing;
import org.openqa.selenium.remote.tracing.Span;
import org.openqa.selenium.remote.tracing.Status;
@@ -95,9 +92,8 @@ class HandleSession implements HttpHandler {
@Override
public HttpResponse execute(HttpRequest req) {
try (Span span = HttpTracing.newSpanAsChildOf(tracer, req, "router.handle_session")) {
- Map attributeMap = new HashMap<>();
- attributeMap.put(
- AttributeKey.HTTP_HANDLER_CLASS.getKey(), EventAttribute.setValue(getClass().getName()));
+ AttributeMap attributeMap = tracer.createAttributeMap();
+ attributeMap.put(AttributeKey.HTTP_HANDLER_CLASS.getKey(), getClass().getName());
HTTP_REQUEST.accept(span, req);
HTTP_REQUEST_EVENT.accept(attributeMap, req);
@@ -112,9 +108,8 @@ public HttpResponse execute(HttpRequest req) {
EXCEPTION.accept(attributeMap, exception);
attributeMap.put(
AttributeKey.EXCEPTION_MESSAGE.getKey(),
- EventAttribute.setValue(
- "Unable to execute request for an existing session: "
- + exception.getMessage()));
+ "Unable to execute request for an existing session: "
+ + exception.getMessage());
span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);
return exception;
});
@@ -136,8 +131,7 @@ public HttpResponse execute(HttpRequest req) {
String errorMessage =
"Unable to execute request for an existing session: " + e.getMessage();
EXCEPTION.accept(attributeMap, e);
- attributeMap.put(
- AttributeKey.EXCEPTION_MESSAGE.getKey(), EventAttribute.setValue(errorMessage));
+ attributeMap.put(AttributeKey.EXCEPTION_MESSAGE.getKey(), errorMessage);
span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);
if (e instanceof NoSuchSessionException) {
diff --git a/java/src/org/openqa/selenium/grid/sessionmap/jdbc/JdbcBackedSessionMap.java b/java/src/org/openqa/selenium/grid/sessionmap/jdbc/JdbcBackedSessionMap.java
index f2d963fdc9c06..aeab49abd3f13 100644
--- a/java/src/org/openqa/selenium/grid/sessionmap/jdbc/JdbcBackedSessionMap.java
+++ b/java/src/org/openqa/selenium/grid/sessionmap/jdbc/JdbcBackedSessionMap.java
@@ -31,8 +31,6 @@
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.Instant;
-import java.util.HashMap;
-import java.util.Map;
import java.util.logging.Logger;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.ImmutableCapabilities;
@@ -51,8 +49,7 @@
import org.openqa.selenium.json.Json;
import org.openqa.selenium.remote.SessionId;
import org.openqa.selenium.remote.tracing.AttributeKey;
-import org.openqa.selenium.remote.tracing.EventAttribute;
-import org.openqa.selenium.remote.tracing.EventAttributeValue;
+import org.openqa.selenium.remote.tracing.AttributeMap;
import org.openqa.selenium.remote.tracing.Span;
import org.openqa.selenium.remote.tracing.Status;
import org.openqa.selenium.remote.tracing.Tracer;
@@ -136,15 +133,14 @@ public boolean add(Session session) {
.createSpan(
"INSERT into sessions_map (session_ids, session_uri, session_caps, session_start)"
+ " values (?, ?, ?, ?) ")) {
- Map attributeMap = new HashMap<>();
+ AttributeMap attributeMap = tracer.createAttributeMap();
SESSION_ID.accept(span, session.getId());
SESSION_ID_EVENT.accept(attributeMap, session.getId());
CAPABILITIES.accept(span, session.getCapabilities());
CAPABILITIES_EVENT.accept(attributeMap, session.getCapabilities());
setCommonSpanAttributes(span);
setCommonEventAttributes(attributeMap);
- attributeMap.put(
- AttributeKey.SESSION_URI.getKey(), EventAttribute.setValue(session.getUri().toString()));
+ attributeMap.put(AttributeKey.SESSION_URI.getKey(), session.getUri().toString());
try (PreparedStatement statement =
connection.prepareStatement(
@@ -166,11 +162,11 @@ public boolean add(Session session) {
String statementStr = statement.toString();
span.setAttribute(DATABASE_STATEMENT, statementStr);
span.setAttribute(DATABASE_OPERATION, "insert");
- attributeMap.put(DATABASE_STATEMENT, EventAttribute.setValue(statementStr));
- attributeMap.put(DATABASE_OPERATION, EventAttribute.setValue("insert"));
+ attributeMap.put(DATABASE_STATEMENT, statementStr);
+ attributeMap.put(DATABASE_OPERATION, "insert");
int rowCount = statement.executeUpdate();
- attributeMap.put("rows.added", EventAttribute.setValue(rowCount));
+ attributeMap.put("rows.added", rowCount);
span.addEvent("Inserted into the database", attributeMap);
return rowCount >= 1;
} catch (SQLException e) {
@@ -179,8 +175,7 @@ public boolean add(Session session) {
EXCEPTION.accept(attributeMap, e);
attributeMap.put(
AttributeKey.EXCEPTION_MESSAGE.getKey(),
- EventAttribute.setValue(
- "Unable to add session information to the database: " + e.getMessage()));
+ "Unable to add session information to the database: " + e.getMessage());
span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);
throw new JdbcException(e);
@@ -197,7 +192,7 @@ public Session get(SessionId id) throws NoSuchSessionException {
Capabilities caps = null;
Instant start = null;
String rawUri = null;
- Map attributeMap = new HashMap<>();
+ AttributeMap attributeMap = tracer.createAttributeMap();
try (Span span =
tracer
@@ -218,8 +213,8 @@ public Session get(SessionId id) throws NoSuchSessionException {
String statementStr = statement.toString();
span.setAttribute(DATABASE_STATEMENT, statementStr);
span.setAttribute(DATABASE_OPERATION, "select");
- attributeMap.put(DATABASE_OPERATION, EventAttribute.setValue("select"));
- attributeMap.put(DATABASE_STATEMENT, EventAttribute.setValue(statementStr));
+ attributeMap.put(DATABASE_OPERATION, "select");
+ attributeMap.put(DATABASE_STATEMENT, statementStr);
try (ResultSet sessions = statement.executeQuery()) {
if (!sessions.next()) {
@@ -230,8 +225,7 @@ public Session get(SessionId id) throws NoSuchSessionException {
EXCEPTION.accept(attributeMap, exception);
attributeMap.put(
AttributeKey.EXCEPTION_MESSAGE.getKey(),
- EventAttribute.setValue(
- "Session id does not exist in the database :" + exception.getMessage()));
+ "Session id does not exist in the database :" + exception.getMessage());
span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);
throw exception;
@@ -259,16 +253,16 @@ public Session get(SessionId id) throws NoSuchSessionException {
CAPABILITIES_EVENT.accept(attributeMap, caps);
try {
- attributeMap.put(AttributeKey.SESSION_URI.getKey(), EventAttribute.setValue(rawUri));
+ attributeMap.put(AttributeKey.SESSION_URI.getKey(), rawUri);
uri = new URI(rawUri);
} catch (URISyntaxException e) {
span.setAttribute("error", true);
span.setStatus(Status.INTERNAL);
EXCEPTION.accept(attributeMap, e);
- attributeMap.put(AttributeKey.SESSION_URI.getKey(), EventAttribute.setValue(rawUri));
+ attributeMap.put(AttributeKey.SESSION_URI.getKey(), rawUri);
attributeMap.put(
AttributeKey.EXCEPTION_MESSAGE.getKey(),
- EventAttribute.setValue("Unable to convert session id to uri: " + e.getMessage()));
+ "Unable to convert session id to uri: " + e.getMessage());
span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);
throw new NoSuchSessionException(
@@ -283,8 +277,7 @@ public Session get(SessionId id) throws NoSuchSessionException {
EXCEPTION.accept(attributeMap, e);
attributeMap.put(
AttributeKey.EXCEPTION_MESSAGE.getKey(),
- EventAttribute.setValue(
- "Unable to get session information from the database: " + e.getMessage()));
+ "Unable to get session information from the database: " + e.getMessage());
span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);
throw new JdbcException(e);
}
@@ -296,7 +289,7 @@ public void remove(SessionId id) {
Require.nonNull("Session ID", id);
try (Span span =
tracer.getCurrentContext().createSpan("DELETE from sessions_map where session_ids = ?")) {
- Map attributeMap = new HashMap<>();
+ AttributeMap attributeMap = tracer.createAttributeMap();
SESSION_ID.accept(span, id);
SESSION_ID_EVENT.accept(attributeMap, id);
setCommonSpanAttributes(span);
@@ -310,11 +303,11 @@ public void remove(SessionId id) {
String statementStr = statement.toString();
span.setAttribute(DATABASE_STATEMENT, statementStr);
span.setAttribute(DATABASE_OPERATION, "delete");
- attributeMap.put(DATABASE_STATEMENT, EventAttribute.setValue(statementStr));
- attributeMap.put(DATABASE_OPERATION, EventAttribute.setValue("delete"));
+ attributeMap.put(DATABASE_STATEMENT, statementStr);
+ attributeMap.put(DATABASE_OPERATION, "delete");
int rowCount = statement.executeUpdate();
- attributeMap.put("rows.deleted", EventAttribute.setValue(rowCount));
+ attributeMap.put("rows.deleted", rowCount);
span.addEvent("Deleted session from the database", attributeMap);
} catch (SQLException e) {
@@ -323,8 +316,7 @@ public void remove(SessionId id) {
EXCEPTION.accept(attributeMap, e);
attributeMap.put(
AttributeKey.EXCEPTION_MESSAGE.getKey(),
- EventAttribute.setValue(
- "Unable to delete session information from the database: " + e.getMessage()));
+ "Unable to delete session information from the database: " + e.getMessage());
span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);
throw new JdbcException(e.getMessage());
}
@@ -335,7 +327,7 @@ public void removeByUri(URI sessionUri) {
Require.nonNull("Session URI", sessionUri);
try (Span span =
tracer.getCurrentContext().createSpan("DELETE from sessions_map where session_uri = ?")) {
- Map attributeMap = new HashMap<>();
+ AttributeMap attributeMap = tracer.createAttributeMap();
try (PreparedStatement statement =
connection.prepareStatement(
@@ -345,11 +337,11 @@ public void removeByUri(URI sessionUri) {
String statementStr = statement.toString();
span.setAttribute(DATABASE_STATEMENT, statementStr);
span.setAttribute(DATABASE_OPERATION, "delete");
- attributeMap.put(DATABASE_STATEMENT, EventAttribute.setValue(statementStr));
- attributeMap.put(DATABASE_OPERATION, EventAttribute.setValue("delete"));
+ attributeMap.put(DATABASE_STATEMENT, statementStr);
+ attributeMap.put(DATABASE_OPERATION, "delete");
int rowCount = statement.executeUpdate();
- attributeMap.put("rows.deleted", EventAttribute.setValue(rowCount));
+ attributeMap.put("rows.deleted", rowCount);
span.addEvent("Deleted session from the database", attributeMap);
} catch (SQLException e) {
@@ -358,8 +350,7 @@ public void removeByUri(URI sessionUri) {
EXCEPTION.accept(attributeMap, e);
attributeMap.put(
AttributeKey.EXCEPTION_MESSAGE.getKey(),
- EventAttribute.setValue(
- "Unable to delete session information from the database: " + e.getMessage()));
+ "Unable to delete session information from the database: " + e.getMessage());
span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);
throw new JdbcException(e.getMessage());
}
@@ -385,12 +376,12 @@ private void setCommonSpanAttributes(Span span) {
}
}
- private void setCommonEventAttributes(Map attributeMap) {
+ private void setCommonEventAttributes(AttributeMap attributeMap) {
if (jdbcUser != null) {
- attributeMap.put(DATABASE_USER, EventAttribute.setValue(jdbcUser));
+ attributeMap.put(DATABASE_USER, jdbcUser);
}
if (jdbcUrl != null) {
- attributeMap.put(DATABASE_CONNECTION_STRING, EventAttribute.setValue(jdbcUrl));
+ attributeMap.put(DATABASE_CONNECTION_STRING, jdbcUrl);
}
}
}
diff --git a/java/src/org/openqa/selenium/grid/sessionmap/local/LocalSessionMap.java b/java/src/org/openqa/selenium/grid/sessionmap/local/LocalSessionMap.java
index ff77f91358de6..2dae2e5779e4f 100644
--- a/java/src/org/openqa/selenium/grid/sessionmap/local/LocalSessionMap.java
+++ b/java/src/org/openqa/selenium/grid/sessionmap/local/LocalSessionMap.java
@@ -20,7 +20,6 @@
import static org.openqa.selenium.remote.RemoteTags.SESSION_ID;
import static org.openqa.selenium.remote.RemoteTags.SESSION_ID_EVENT;
-import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.Lock;
@@ -40,8 +39,7 @@
import org.openqa.selenium.internal.Require;
import org.openqa.selenium.remote.SessionId;
import org.openqa.selenium.remote.tracing.AttributeKey;
-import org.openqa.selenium.remote.tracing.EventAttribute;
-import org.openqa.selenium.remote.tracing.EventAttributeValue;
+import org.openqa.selenium.remote.tracing.AttributeMap;
import org.openqa.selenium.remote.tracing.Span;
import org.openqa.selenium.remote.tracing.Tracer;
@@ -62,10 +60,8 @@ public LocalSessionMap(Tracer tracer, EventBus bus) {
SessionClosedEvent.listener(
id -> {
try (Span span = tracer.getCurrentContext().createSpan("local_sessionmap.remove")) {
- Map attributeMap = new HashMap<>();
- attributeMap.put(
- AttributeKey.LOGGER_CLASS.getKey(),
- EventAttribute.setValue(getClass().getName()));
+ AttributeMap attributeMap = tracer.createAttributeMap();
+ attributeMap.put(AttributeKey.LOGGER_CLASS.getKey(), getClass().getName());
SESSION_ID.accept(span, id);
SESSION_ID_EVENT.accept(attributeMap, id);
knownSessions.remove(id);
@@ -110,9 +106,8 @@ public boolean add(Session session) {
Lock writeLock = lock.writeLock();
writeLock.lock();
try (Span span = tracer.getCurrentContext().createSpan("local_sessionmap.add")) {
- Map attributeMap = new HashMap<>();
- attributeMap.put(
- AttributeKey.LOGGER_CLASS.getKey(), EventAttribute.setValue(getClass().getName()));
+ AttributeMap attributeMap = tracer.createAttributeMap();
+ attributeMap.put(AttributeKey.LOGGER_CLASS.getKey(), getClass().getName());
SessionId id = session.getId();
SESSION_ID.accept(span, id);
SESSION_ID_EVENT.accept(attributeMap, id);
diff --git a/java/src/org/openqa/selenium/grid/sessionmap/redis/RedisBackedSessionMap.java b/java/src/org/openqa/selenium/grid/sessionmap/redis/RedisBackedSessionMap.java
index 72c4e027904a7..8fd841e3188bd 100644
--- a/java/src/org/openqa/selenium/grid/sessionmap/redis/RedisBackedSessionMap.java
+++ b/java/src/org/openqa/selenium/grid/sessionmap/redis/RedisBackedSessionMap.java
@@ -28,9 +28,7 @@
import java.net.URI;
import java.net.URISyntaxException;
import java.time.Instant;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import java.util.logging.Logger;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.ImmutableCapabilities;
@@ -50,8 +48,7 @@
import org.openqa.selenium.redis.GridRedisClient;
import org.openqa.selenium.remote.SessionId;
import org.openqa.selenium.remote.tracing.AttributeKey;
-import org.openqa.selenium.remote.tracing.EventAttribute;
-import org.openqa.selenium.remote.tracing.EventAttributeValue;
+import org.openqa.selenium.remote.tracing.AttributeMap;
import org.openqa.selenium.remote.tracing.Span;
import org.openqa.selenium.remote.tracing.Status;
import org.openqa.selenium.remote.tracing.Tracer;
@@ -109,7 +106,7 @@ public boolean add(Session session) {
tracer
.getCurrentContext()
.createSpan("MSET sessionUriKey capabilitiesKey ")) {
- Map attributeMap = new HashMap<>();
+ AttributeMap attributeMap = tracer.createAttributeMap();
SESSION_ID.accept(span, session.getId());
SESSION_ID_EVENT.accept(attributeMap, session.getId());
CAPABILITIES.accept(span, session.getCapabilities());
@@ -131,13 +128,13 @@ public boolean add(Session session) {
span.setAttribute(REDIS_CAPABILITIES_KEY, capabilitiesKey);
span.setAttribute(REDIS_CAPABILITIES_VALUE, capabilitiesJson);
span.setAttribute(DATABASE_OPERATION, "MSET");
- attributeMap.put(REDIS_URI_KEY, EventAttribute.setValue(uriKey));
- attributeMap.put(REDIS_URI_VALUE, EventAttribute.setValue(uriValue));
- attributeMap.put(REDIS_CAPABILITIES_KEY, EventAttribute.setValue(capabilitiesKey));
- attributeMap.put(REDIS_CAPABILITIES_VALUE, EventAttribute.setValue(capabilitiesJson));
- attributeMap.put(REDIS_START_KEY, EventAttribute.setValue(startKey));
- attributeMap.put(REDIS_START_VALUE, EventAttribute.setValue(startValue));
- attributeMap.put(DATABASE_OPERATION, EventAttribute.setValue("MSET"));
+ attributeMap.put(REDIS_URI_KEY, uriKey);
+ attributeMap.put(REDIS_URI_VALUE, uriValue);
+ attributeMap.put(REDIS_CAPABILITIES_KEY, capabilitiesKey);
+ attributeMap.put(REDIS_CAPABILITIES_VALUE, capabilitiesJson);
+ attributeMap.put(REDIS_START_KEY, startKey);
+ attributeMap.put(REDIS_START_VALUE, startValue);
+ attributeMap.put(DATABASE_OPERATION, "MSET");
span.addEvent("Inserted into the database", attributeMap);
connection.mset(
@@ -156,18 +153,18 @@ public Session get(SessionId id) throws NoSuchSessionException {
Require.nonNull("Session ID", id);
try (Span span = tracer.getCurrentContext().createSpan("GET capabilitiesKey")) {
- Map attributeMap = new HashMap<>();
+ AttributeMap attributeMap = tracer.createAttributeMap();
SESSION_ID.accept(span, id);
SESSION_ID_EVENT.accept(attributeMap, id);
setCommonSpanAttributes(span);
setCommonEventAttributes(attributeMap);
span.setAttribute(DATABASE_OPERATION, "GET");
- attributeMap.put(DATABASE_OPERATION, EventAttribute.setValue("GET"));
+ attributeMap.put(DATABASE_OPERATION, "GET");
URI uri = getUri(id);
- attributeMap.put(REDIS_URI_KEY, EventAttribute.setValue(uriKey(id)));
- attributeMap.put(AttributeKey.SESSION_URI.getKey(), EventAttribute.setValue(uri.toString()));
+ attributeMap.put(REDIS_URI_KEY, uriKey(id));
+ attributeMap.put(AttributeKey.SESSION_URI.getKey(), uri.toString());
String capabilitiesKey = capabilitiesKey(id);
String rawCapabilities = connection.get(capabilitiesKey);
@@ -176,7 +173,7 @@ public Session get(SessionId id) throws NoSuchSessionException {
String rawStereotype = connection.get(stereotypeKey);
span.setAttribute(REDIS_CAPABILITIES_KEY, capabilitiesKey);
- attributeMap.put(REDIS_CAPABILITIES_KEY, EventAttribute.setValue(capabilitiesKey));
+ attributeMap.put(REDIS_CAPABILITIES_KEY, capabilitiesKey);
if (rawCapabilities != null) {
span.setAttribute(REDIS_CAPABILITIES_VALUE, rawCapabilities);
@@ -208,13 +205,13 @@ public URI getUri(SessionId id) throws NoSuchSessionException {
Require.nonNull("Session ID", id);
try (Span span = tracer.getCurrentContext().createSpan("GET sessionURI")) {
- Map attributeMap = new HashMap<>();
+ AttributeMap attributeMap = tracer.createAttributeMap();
SESSION_ID.accept(span, id);
SESSION_ID_EVENT.accept(attributeMap, id);
setCommonSpanAttributes(span);
setCommonEventAttributes(attributeMap);
span.setAttribute(DATABASE_OPERATION, "GET");
- attributeMap.put(DATABASE_OPERATION, EventAttribute.setValue("GET"));
+ attributeMap.put(DATABASE_OPERATION, "GET");
String uriKey = uriKey(id);
List> rawValues = connection.mget(uriKey);
@@ -222,7 +219,7 @@ public URI getUri(SessionId id) throws NoSuchSessionException {
String rawUri = rawValues.get(0).getValueOrElse(null);
span.setAttribute(REDIS_URI_KEY, uriKey);
- attributeMap.put(REDIS_URI_KEY, EventAttribute.setValue(uriKey));
+ attributeMap.put(REDIS_URI_KEY, uriKey);
if (rawUri == null) {
NoSuchSessionException exception = new NoSuchSessionException("Unable to find session.");
@@ -231,16 +228,15 @@ public URI getUri(SessionId id) throws NoSuchSessionException {
EXCEPTION.accept(attributeMap, exception);
attributeMap.put(
AttributeKey.EXCEPTION_MESSAGE.getKey(),
- EventAttribute.setValue(
- "Session URI does not exist in the database :" + exception.getMessage()));
+ "Session URI does not exist in the database :" + exception.getMessage());
span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);
throw exception;
}
span.setAttribute(REDIS_URI_VALUE, rawUri);
- attributeMap.put(REDIS_URI_KEY, EventAttribute.setValue(uriKey));
- attributeMap.put(REDIS_URI_VALUE, EventAttribute.setValue(rawUri));
+ attributeMap.put(REDIS_URI_KEY, uriKey);
+ attributeMap.put(REDIS_URI_VALUE, rawUri);
try {
return new URI(rawUri);
@@ -248,10 +244,10 @@ public URI getUri(SessionId id) throws NoSuchSessionException {
span.setAttribute("error", true);
span.setStatus(Status.INTERNAL);
EXCEPTION.accept(attributeMap, e);
- attributeMap.put(AttributeKey.SESSION_URI.getKey(), EventAttribute.setValue(rawUri));
+ attributeMap.put(AttributeKey.SESSION_URI.getKey(), rawUri);
attributeMap.put(
AttributeKey.EXCEPTION_MESSAGE.getKey(),
- EventAttribute.setValue("Unable to convert session id to uri: " + e.getMessage()));
+ "Unable to convert session id to uri: " + e.getMessage());
span.addEvent(AttributeKey.EXCEPTION_EVENT.getKey(), attributeMap);
throw new NoSuchSessionException(
@@ -265,13 +261,13 @@ public void remove(SessionId id) {
Require.nonNull("Session ID", id);
try (Span span = tracer.getCurrentContext().createSpan("DEL sessionUriKey capabilitiesKey")) {
- Map attributeMap = new HashMap<>();
+ AttributeMap attributeMap = tracer.createAttributeMap();
SESSION_ID.accept(span, id);
SESSION_ID_EVENT.accept(attributeMap, id);
setCommonSpanAttributes(span);
setCommonEventAttributes(attributeMap);
span.setAttribute(DATABASE_OPERATION, "DEL");
- attributeMap.put(DATABASE_OPERATION, EventAttribute.setValue("DEL"));
+ attributeMap.put(DATABASE_OPERATION, "DEL");
String uriKey = uriKey(id);
String capabilitiesKey = capabilitiesKey(id);
@@ -280,9 +276,9 @@ public void remove(SessionId id) {
span.setAttribute(REDIS_URI_KEY, uriKey);
span.setAttribute(REDIS_CAPABILITIES_KEY, capabilitiesKey);
span.setAttribute(REDIS_START_KEY, startKey);
- attributeMap.put(REDIS_URI_KEY, EventAttribute.setValue(uriKey));
- attributeMap.put(REDIS_CAPABILITIES_KEY, EventAttribute.setValue(capabilitiesKey));
- attributeMap.put(REDIS_START_KEY, EventAttribute.setValue(startKey));
+ attributeMap.put(REDIS_URI_KEY, uriKey);
+ attributeMap.put(REDIS_CAPABILITIES_KEY, capabilitiesKey);
+ attributeMap.put(REDIS_START_KEY, startKey);
span.addEvent("Deleted session from the database", attributeMap);
@@ -346,12 +342,10 @@ private void setCommonSpanAttributes(Span span) {
span.setAttribute(DATABASE_SYSTEM, "redis");
}
- private void setCommonEventAttributes(Map map) {
- map.put(DATABASE_SYSTEM, EventAttribute.setValue("redis"));
+ private void setCommonEventAttributes(AttributeMap map) {
+ map.put(DATABASE_SYSTEM, "redis");
if (serverUri != null) {
- map.put(
- AttributeKey.DATABASE_CONNECTION_STRING.getKey(),
- EventAttribute.setValue(serverUri.toString()));
+ map.put(AttributeKey.DATABASE_CONNECTION_STRING.getKey(), serverUri.toString());
}
}
diff --git a/java/src/org/openqa/selenium/remote/RemoteTags.java b/java/src/org/openqa/selenium/remote/RemoteTags.java
index 100dd59d76e4b..b00ae268f6265 100644
--- a/java/src/org/openqa/selenium/remote/RemoteTags.java
+++ b/java/src/org/openqa/selenium/remote/RemoteTags.java
@@ -17,14 +17,12 @@
package org.openqa.selenium.remote;
-import java.util.Map;
import java.util.function.BiConsumer;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.json.Json;
import org.openqa.selenium.json.JsonOutput;
import org.openqa.selenium.remote.tracing.AttributeKey;
-import org.openqa.selenium.remote.tracing.EventAttribute;
-import org.openqa.selenium.remote.tracing.EventAttributeValue;
+import org.openqa.selenium.remote.tracing.AttributeMap;
import org.openqa.selenium.remote.tracing.Span;
public class RemoteTags {
@@ -43,16 +41,12 @@ private RemoteTags() {
public static final BiConsumer SESSION_ID =
(span, id) -> span.setAttribute(AttributeKey.SESSION_ID.getKey(), String.valueOf(id));
- public static final BiConsumer
*/
private void TestPageLoadTimeoutIsEnforced(long webDriverPageLoadTimeoutInSeconds)
{
diff --git a/dotnet/test/common/TakesScreenshotTest.cs b/dotnet/test/common/TakesScreenshotTest.cs
index 4024ee153ddc3..7a832471a8c86 100644
--- a/dotnet/test/common/TakesScreenshotTest.cs
+++ b/dotnet/test/common/TakesScreenshotTest.cs
@@ -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/WebDriver.Common.Tests.csproj b/dotnet/test/common/WebDriver.Common.Tests.csproj
index c759d2f2acb93..9cae056c97d25 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
diff --git a/dotnet/test/common/appconfig.json b/dotnet/test/common/appconfig.json
index 3bb05d483db4e..9ed48075d594c 100644
--- a/dotnet/test/common/appconfig.json
+++ b/dotnet/test/common/appconfig.json
@@ -1,4 +1,5 @@
{
+ "DriverServiceLocation": "",
"ActiveDriverConfig": "Chrome",
"ActiveWebsiteConfig": "Default",
"TestWebServerConfig": {
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..a5f7c2f7d60b0
--- /dev/null
+++ b/dotnet/test/support/Events/BUILD.bazel
@@ -0,0 +1,52 @@
+load("//dotnet:defs.bzl", "dotnet_nunit_test_suite", "framework", "nunit_test")
+
+SMALL_TESTS = [
+ "EventFiringWebDriverTest.cs",
+]
+
+nunit_test(
+ name = "SmallTests",
+ size = "small",
+ srcs = SMALL_TESTS,
+ private_deps = [
+ framework("nuget", "NETStandard.Library"),
+ ],
+ target_frameworks = ["net7.0"],
+ 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",
+ ],
+ private_deps = [
+ framework("nuget", "NETStandard.Library"),
+ ],
+ target_frameworks = ["net7.0"],
+ 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..5bd63a4ab7583
--- /dev/null
+++ b/dotnet/test/support/Extensions/BUILD.bazel
@@ -0,0 +1,18 @@
+load("//dotnet:defs.bzl", "framework", "nunit_test")
+
+nunit_test(
+ name = "SmallTests",
+ size = "small",
+ srcs = glob(["*.cs"]),
+ private_deps = [
+ framework("nuget", "NETStandard.Library"),
+ ],
+ target_frameworks = ["net7.0"],
+ 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..15bce7010c76c
--- /dev/null
+++ b/dotnet/test/support/UI/BUILD.bazel
@@ -0,0 +1,57 @@
+load("//dotnet:defs.bzl", "dotnet_nunit_test_suite", "framework", "nunit_test")
+
+SMALL_TESTS = [
+ "DefaultWaitTest.cs",
+ "FakeClock.cs",
+ "LoadableComponentTests.cs",
+ "SelectTests.cs",
+ "SlowLoadableComponentTest.cs",
+ "WebDriverWaitTest.cs",
+]
+
+nunit_test(
+ name = "SmallTests",
+ size = "small",
+ srcs = SMALL_TESTS,
+ private_deps = [
+ framework("nuget", "NETStandard.Library"),
+ ],
+ target_frameworks = ["net7.0"],
+ 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",
+ ],
+ private_deps = [
+ framework("nuget", "NETStandard.Library"),
+ ],
+ target_frameworks = ["net7.0"],
+ deps = [
+ "//dotnet/src/support",
+ "//dotnet/src/webdriver",
+ "//dotnet/test/common:fixtures",
+ framework("nuget", "NUnit"),
+ ],
+)
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/java/test/org/openqa/selenium/environment/webserver/NettyAppServer.java b/java/test/org/openqa/selenium/environment/webserver/NettyAppServer.java
index 3b025f4dbae64..d477bb4f1a2fd 100644
--- a/java/test/org/openqa/selenium/environment/webserver/NettyAppServer.java
+++ b/java/test/org/openqa/selenium/environment/webserver/NettyAppServer.java
@@ -95,8 +95,13 @@ private static Config createDefaultConfig() {
}
public static void main(String[] args) {
+ int port = 2310;
+ if (args.length > 0) {
+ port = Integer.parseInt(args[0]);
+ }
+
MemoizedConfig config =
- new MemoizedConfig(new MapConfig(singletonMap("server", singletonMap("port", 2310))));
+ new MemoizedConfig(new MapConfig(singletonMap("server", singletonMap("port", port))));
BaseServerOptions options = new BaseServerOptions(config);
HttpHandler handler =
diff --git a/scripts/github-actions/ci-build.sh b/scripts/github-actions/ci-build.sh
index 6a3c08f195f1d..1f51aee69143c 100755
--- a/scripts/github-actions/ci-build.sh
+++ b/scripts/github-actions/ci-build.sh
@@ -13,6 +13,6 @@ bazel query @npm//:all >/dev/null
# Now run the tests. The engflow build uses pinned browsers
# so this should be fine
# shellcheck disable=SC2046
-bazel test --config=remote-ci --build_tests_only --test_tag_filters=-exclusive-if-local,-skip-remote --keep_going --flaky_test_attempts=2 //java/... //py/... -- $(cat .skipped-tests | tr '\n' ' ')
-# Build the entire java tree
-bazel build --config=remote-ci java/src/... //py:selenium-wheel
+bazel test --config=remote-ci --build_tests_only --test_tag_filters=-exclusive-if-local,-skip-remote --keep_going --flaky_test_attempts=2 //dotnet/... //java/... //py/... -- $(cat .skipped-tests | tr '\n' ' ')
+# Build the packages we want to ship to users
+bazel build --config=remote-ci //dotnet:all java/src/... //py:selenium-wheel
diff --git a/scripts/ij.bazelproject b/scripts/ij.bazelproject
index 6ac770687b228..c18be8e5ef06c 100644
--- a/scripts/ij.bazelproject
+++ b/scripts/ij.bazelproject
@@ -2,7 +2,6 @@ directories:
# Add the directories you want added as source here
# By default, we've added your entire workspace ('.')
.
- -dotnet
test_sources:
java/test
diff --git a/third_party/dotnet/devtools/src/generator/BUILD.bazel b/third_party/dotnet/devtools/src/generator/BUILD.bazel
index 7f861986a3af8..d2efbb9b24a2d 100644
--- a/third_party/dotnet/devtools/src/generator/BUILD.bazel
+++ b/third_party/dotnet/devtools/src/generator/BUILD.bazel
@@ -1,47 +1,22 @@
-load("//dotnet:defs.bzl", "csharp_executable", "generated_assembly_info")
-load(
- "//dotnet:selenium-dotnet-version.bzl",
- "ASSEMBLY_COMPANY",
- "ASSEMBLY_COPYRIGHT",
- "ASSEMBLY_INFORMATIONAL_VERSION",
- "ASSEMBLY_PRODUCT",
- "ASSEMBLY_VERSION",
-)
-
-generated_assembly_info(
- name = "assembly-info",
- company = ASSEMBLY_COMPANY,
- copyright = ASSEMBLY_COPYRIGHT,
- description = "Selenium DevTools Protocol Code Generator",
- informational_version = ASSEMBLY_INFORMATIONAL_VERSION,
- product = ASSEMBLY_PRODUCT,
- title = "Selenium DevTools Protocol Code Generator",
- version = ASSEMBLY_VERSION,
-)
+load("//dotnet:defs.bzl", "csharp_binary", "framework")
-csharp_executable(
+csharp_binary(
name = "generator",
- srcs = glob([
- "*.cs",
- "CodeGen/**/*.cs",
- "Converters/**/*.cs",
- "ProtocolDefinition/**/*.cs",
- ]) + [":assembly-info"],
- out = "DevToolsGenerator",
- is_windows = select({
- "@bazel_tools//src/conditions:host_windows": True,
- "//conditions:default": False,
- }),
- target_frameworks = [
- "net6.0",
+ srcs = glob(["**/*.cs"]),
+ # Used as a tool in our build, so just target one framework
+ target_frameworks = ["net6.0"],
+ visibility = [
+ "//dotnet:__subpackages__",
],
- visibility = ["//visibility:public"],
deps = [
- "@commandlineparser//:CommandLine",
- "@dependencyinjection//:Microsoft.Extensions.DependencyInjection",
- "@dependencyinjectionabstractions//:Microsoft.Extensions.DependencyInjection.Abstractions",
- "@handlebars//:Handlebars",
- "@humanizer//:Humanizer",
- "@json.net//:Newtonsoft.Json",
+ framework("nuget", "Microsoft.NETCore.App.Ref"),
+ framework("nuget", "CommandLineParser"),
+ framework("nuget", "Handlebars.Net"),
+ framework("nuget", "Humanizer.Core"),
+ framework("nuget", "Microsoft.CSharp"),
+ framework("nuget", "Microsoft.Extensions.DependencyInjection"),
+ framework("nuget", "Microsoft.Extensions.DependencyInjection.Abstractions"),
+ framework("nuget", "Newtonsoft.Json"),
+ framework("nuget", "System.Runtime"),
],
)
From 390fd2d0a26538a75bc5d7caaf1dd713a04b070e Mon Sep 17 00:00:00 2001
From: Simon Mavi Stewart
Date: Tue, 3 Oct 2023 11:13:42 +0100
Subject: [PATCH 38/90] [dotnet] Break out the individual dotnet "small" tests
---
.skipped-tests | 2 +-
dotnet/private/dotnet_nunit_test_suite.bzl | 2 ++
dotnet/test/support/Events/BUILD.bazel | 4 ++--
dotnet/test/support/Extensions/BUILD.bazel | 4 ++--
dotnet/test/support/UI/BUILD.bazel | 4 ++--
5 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/.skipped-tests b/.skipped-tests
index 3d5a74fb9ce91..fa2bdbbec7cb7 100644
--- a/.skipped-tests
+++ b/.skipped-tests
@@ -7,7 +7,7 @@
-//dotnet/test/common:TakesScreenshotTest-firefox
-//dotnet/test/common:VirtualAuthn/VirtualAuthenticatorTest-chrome
-//dotnet/test/support/UI:SelectBrowserTests-firefox
--//dotnet/test/support/UI:SmallTests
+-//dotnet/test/support/UI:SelectTests
-//java/test/org/openqa/selenium:FormHandlingTest-chrome
-//java/test/org/openqa/selenium/bidi:BiDiSessionTest-remote
-//java/test/org/openqa/selenium/bidi:BiDiTest-remote
diff --git a/dotnet/private/dotnet_nunit_test_suite.bzl b/dotnet/private/dotnet_nunit_test_suite.bzl
index 4f81f32b00969..1116037eb21e0 100644
--- a/dotnet/private/dotnet_nunit_test_suite.bzl
+++ b/dotnet/private/dotnet_nunit_test_suite.bzl
@@ -139,6 +139,7 @@ def dotnet_nunit_test_suite(
target_frameworks = target_frameworks,
data = data,
tags = tags,
+ size = size,
**kwargs
)
tests.append(test_name)
@@ -160,6 +161,7 @@ def dotnet_nunit_test_suite(
args = _BROWSERS[browser]["args"] + _HEADLESS_ARGS,
data = data + _BROWSERS[browser]["data"],
tags = tags + [browser] + COMMON_TAGS + _BROWSERS[browser]["tags"],
+ size = size,
**kwargs
)
tests.append(browser_test_name)
diff --git a/dotnet/test/support/Events/BUILD.bazel b/dotnet/test/support/Events/BUILD.bazel
index a5f7c2f7d60b0..415162982d651 100644
--- a/dotnet/test/support/Events/BUILD.bazel
+++ b/dotnet/test/support/Events/BUILD.bazel
@@ -1,10 +1,10 @@
-load("//dotnet:defs.bzl", "dotnet_nunit_test_suite", "framework", "nunit_test")
+load("//dotnet:defs.bzl", "dotnet_nunit_test_suite", "framework")
SMALL_TESTS = [
"EventFiringWebDriverTest.cs",
]
-nunit_test(
+dotnet_nunit_test_suite(
name = "SmallTests",
size = "small",
srcs = SMALL_TESTS,
diff --git a/dotnet/test/support/Extensions/BUILD.bazel b/dotnet/test/support/Extensions/BUILD.bazel
index 5bd63a4ab7583..14ad729c0bcd6 100644
--- a/dotnet/test/support/Extensions/BUILD.bazel
+++ b/dotnet/test/support/Extensions/BUILD.bazel
@@ -1,6 +1,6 @@
-load("//dotnet:defs.bzl", "framework", "nunit_test")
+load("//dotnet:defs.bzl", "dotnet_nunit_test_suite", "framework")
-nunit_test(
+dotnet_nunit_test_suite(
name = "SmallTests",
size = "small",
srcs = glob(["*.cs"]),
diff --git a/dotnet/test/support/UI/BUILD.bazel b/dotnet/test/support/UI/BUILD.bazel
index 15bce7010c76c..e3af6774acc85 100644
--- a/dotnet/test/support/UI/BUILD.bazel
+++ b/dotnet/test/support/UI/BUILD.bazel
@@ -1,4 +1,4 @@
-load("//dotnet:defs.bzl", "dotnet_nunit_test_suite", "framework", "nunit_test")
+load("//dotnet:defs.bzl", "dotnet_nunit_test_suite", "framework")
SMALL_TESTS = [
"DefaultWaitTest.cs",
@@ -9,7 +9,7 @@ SMALL_TESTS = [
"WebDriverWaitTest.cs",
]
-nunit_test(
+dotnet_nunit_test_suite(
name = "SmallTests",
size = "small",
srcs = SMALL_TESTS,
From 5e2972e0db7a361c0291c4917fe0098c6db39536 Mon Sep 17 00:00:00 2001
From: Boni Garcia
Date: Tue, 3 Oct 2023 14:07:22 +0200
Subject: [PATCH 39/90] [rust] Clean logic for checking driver version
---
rust/src/lib.rs | 42 +++++++++++++++++++++---------------------
1 file changed, 21 insertions(+), 21 deletions(-)
diff --git a/rust/src/lib.rs b/rust/src/lib.rs
index e2f2649242bcf..9d1a12bfecaf3 100644
--- a/rust/src/lib.rs
+++ b/rust/src/lib.rs
@@ -281,7 +281,9 @@ pub trait SeleniumManager {
browser_version
}
- fn discover_driver_version(&mut self) -> Result> {
+ fn discover_or_download_browser_and_driver_version(
+ &mut self,
+ ) -> Result> {
let mut download_browser = self.is_force_browser_download();
let major_browser_version = self.get_major_browser_version();
@@ -526,22 +528,23 @@ pub trait SeleniumManager {
}
}
- // Discover proper driver version
- if self.get_driver_version().is_empty() {
- match self.discover_driver_version() {
- Ok(driver_version) => {
+ // Discover browser version (or download it, if not available and possible).
+ // With the found browser version, discover the proper driver version using online endpoints
+ match self.discover_or_download_browser_and_driver_version() {
+ Ok(driver_version) => {
+ if self.get_driver_version().is_empty() {
self.set_driver_version(driver_version);
}
- Err(err) => {
- if driver_in_path_version.is_some() {
- self.get_logger().warn(format!(
- "Exception managing {}: {}",
- self.get_browser_name(),
- err
- ));
- } else {
- return Err(err);
- }
+ }
+ Err(err) => {
+ if driver_in_path_version.is_some() && driver_in_path.is_some() {
+ self.get_logger().warn(format!(
+ "Exception managing {}: {}",
+ self.get_browser_name(),
+ err
+ ));
+ } else {
+ return Err(err);
}
}
}
@@ -550,12 +553,9 @@ pub trait SeleniumManager {
if let (Some(version), Some(path)) = (&driver_in_path_version, &driver_in_path) {
// If proper driver version is not the same as the driver in path, display warning
let major_version = self.get_major_version(version)?;
- let driver_condition = if self.is_firefox() {
- !version.eq(self.get_driver_version())
- } else {
- !major_version.eq(&self.get_major_browser_version())
- };
- if !self.get_driver_version().is_empty() && driver_condition {
+ if (self.is_firefox() && !version.eq(self.get_driver_version()))
+ || !major_version.eq(&self.get_major_browser_version())
+ {
self.get_logger().warn(format!(
"The {} version ({}) detected in PATH at {} might not be compatible with \
the detected {} version ({}); currently, {} {} is recommended for {} {}.*, \
From e94105165395928ba1dacc4857ddc545db5e2726 Mon Sep 17 00:00:00 2001
From: Simon Mavi Stewart
Date: Tue, 3 Oct 2023 14:10:46 +0100
Subject: [PATCH 40/90] [py + rbe] Skip a test ensuring deps are up to date
that we do not expect to run remotely
---
py/BUILD.bazel | 3 +++
1 file changed, 3 insertions(+)
diff --git a/py/BUILD.bazel b/py/BUILD.bazel
index 91544af24d013..0ae7e66096b08 100644
--- a/py/BUILD.bazel
+++ b/py/BUILD.bazel
@@ -14,6 +14,9 @@ compile_pip_requirements(
name = "requirements",
requirements_in = ":requirements.txt",
requirements_txt = ":requirements_lock.txt",
+ tags = [
+ "skip-remote", # This test won't run on the RBE because of a lack of network connectivity
+ ],
)
SE_VERSION = "4.13.0"
From b42044e6696cbaadc362c61bbbb9406445a0fdaa Mon Sep 17 00:00:00 2001
From: Nikolay Borisenko <22616990+nvborisenko@users.noreply.github.com>
Date: Wed, 4 Oct 2023 11:58:00 +0300
Subject: [PATCH 41/90] [dotnet] Rename strong assembly name (#12861)
---
dotnet/src/support/BUILD.bazel | 6 +++---
dotnet/src/webdriver/BUILD.bazel | 4 ++--
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/dotnet/src/support/BUILD.bazel b/dotnet/src/support/BUILD.bazel
index fc0fac34f0f11..298d1e270e9ff 100644
--- a/dotnet/src/support/BUILD.bazel
+++ b/dotnet/src/support/BUILD.bazel
@@ -74,7 +74,7 @@ csharp_library(
"PageObjects/**/*.cs",
"UI/*.cs",
]) + [":assembly-info"],
- out = "WebDriver.Support",
+ out = "WebDriver.Support.StrongNamed",
keyfile = "//dotnet:WebDriver.snk",
private_deps = [
framework("nuget", "NETStandard.Library"),
@@ -95,9 +95,9 @@ nuget_pack(
},
id = "Selenium.Support.StrongNamed",
libs = {
- ":support-strongnamed-lib": "WebDriver.Support",
+ ":support-strongnamed-lib": "WebDriver.Support.StrongNamed",
},
- nuspec_template = "WebDriver.Support.nuspec",
+ nuspec_template = "WebDriver.Support.StrongNamed.nuspec",
tags = [
"block-network",
],
diff --git a/dotnet/src/webdriver/BUILD.bazel b/dotnet/src/webdriver/BUILD.bazel
index c8de65fc8e2e8..ced518cc07a33 100644
--- a/dotnet/src/webdriver/BUILD.bazel
+++ b/dotnet/src/webdriver/BUILD.bazel
@@ -60,7 +60,7 @@ csharp_library(
] + glob([
"**/*.cs",
]) + devtools_version_targets(),
- out = "WebDriver",
+ out = "WebDriver.StrongNamed",
keyfile = "//dotnet:WebDriver.snk",
private_deps = [
framework("nuget", "NETStandard.Library"),
@@ -130,7 +130,7 @@ nuget_pack(
},
id = "Selenium.WebDriver.StrongNamed",
libs = {
- ":webdriver-strongnamed-lib": "WebDriver",
+ ":webdriver-strongnamed-lib": "WebDriver.StrongNamed",
},
nuspec_template = "WebDriver.StrongNamed.nuspec",
property_group_vars = {
From b75c00ffedae359851f39221ed69bf598b63d9a9 Mon Sep 17 00:00:00 2001
From: Simon Mavi Stewart
Date: Wed, 4 Oct 2023 10:06:39 +0100
Subject: [PATCH 42/90] [ci] Ignore failing tests to get some signal from the
RBE build again
---
.skipped-tests | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/.skipped-tests b/.skipped-tests
index fa2bdbbec7cb7..25e52bd24cb62 100644
--- a/.skipped-tests
+++ b/.skipped-tests
@@ -8,11 +8,13 @@
-//dotnet/test/common:VirtualAuthn/VirtualAuthenticatorTest-chrome
-//dotnet/test/support/UI:SelectBrowserTests-firefox
-//dotnet/test/support/UI:SelectTests
--//java/test/org/openqa/selenium:FormHandlingTest-chrome
--//java/test/org/openqa/selenium/bidi:BiDiSessionTest-remote
--//java/test/org/openqa/selenium/bidi:BiDiTest-remote
+-//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/bidi:BiDiSessionTest-remote
+-//java/test/org/openqa/selenium/bidi:BiDiTest-remote
+-//java/test/org/openqa/selenium/chrome:ChromeDriverFunctionalTest
+-//java/test/org/openqa/selenium/chrome:ChromeDriverFunctionalTest-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
@@ -20,6 +22,18 @@
-//java/test/org/openqa/selenium/devtools:NetworkInterceptorRestTest-chrome-remote
-//java/test/org/openqa/selenium/devtools:NetworkInterceptorTest-chrome-remote
-//java/test/org/openqa/selenium/federatedcredentialmanagement:FederatedCredentialManagementTest
+-//java/test/org/openqa/selenium/firefox:FirefoxDriverBuilderTest
-//java/test/org/openqa/selenium/firefox:RemoteFirefoxDriverTest-remote
+-//java/test/org/openqa/selenium/grid/gridui:OverallGridTest
+-//java/test/org/openqa/selenium/grid/router:RemoteWebDriverBiDiTest
+-//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
+-//java/test/org/openqa/selenium:FormHandlingTest-chrome
-//py:auto-chrome-test/selenium/webdriver/common/virtual_authenticator_tests.py
+-//py:unit-test/unit/selenium/webdriver/common/cdp_module_fallback_tests.py
From 4bed5fa7e236d93269186a34d20f661395c9b69d Mon Sep 17 00:00:00 2001
From: Puja Jagani
Date: Wed, 4 Oct 2023 17:08:20 +0530
Subject: [PATCH 43/90] [bidi][java] Ensure closed socket connection does not
prevent freeing up resources
---
.../org/openqa/selenium/bidi/Connection.java | 17 ++++++++++++++++-
.../selenium/bidi/BiDiSessionCleanUpTest.java | 4 ++--
2 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/java/src/org/openqa/selenium/bidi/Connection.java b/java/src/org/openqa/selenium/bidi/Connection.java
index b4f46bbbe7a93..cf9eb81ec1980 100644
--- a/java/src/org/openqa/selenium/bidi/Connection.java
+++ b/java/src/org/openqa/selenium/bidi/Connection.java
@@ -36,6 +36,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;
@@ -72,6 +73,7 @@ public class Connection implements Closeable {
private final ReadWriteLock callbacksLock = new ReentrantReadWriteLock(true);
private final Multimap, Consumer>> eventCallbacks = HashMultimap.create();
private final HttpClient client;
+ private final AtomicBoolean underlyingSocketClosed;
public Connection(HttpClient client, String url) {
Require.nonNull("HTTP client", client);
@@ -79,6 +81,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 {
@@ -210,7 +213,13 @@ 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", ImmutableMap.of("events", events)));
+ }
eventCallbacks.clear();
} finally {
@@ -237,6 +246,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) {
diff --git a/java/test/org/openqa/selenium/bidi/BiDiSessionCleanUpTest.java b/java/test/org/openqa/selenium/bidi/BiDiSessionCleanUpTest.java
index 85964a529751a..090767dd89c1c 100644
--- a/java/test/org/openqa/selenium/bidi/BiDiSessionCleanUpTest.java
+++ b/java/test/org/openqa/selenium/bidi/BiDiSessionCleanUpTest.java
@@ -22,7 +22,7 @@
import java.util.Collections;
import org.junit.jupiter.api.Test;
-import org.openqa.selenium.TimeoutException;
+import org.openqa.selenium.WebDriverException;
import org.openqa.selenium.WindowType;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
@@ -78,7 +78,7 @@ void shouldCloseBiDiSessionIfLastWindowIsClosed() {
driver.close();
// Closing the last top-level browsing context, closes the WebDriver and BiDi session
- assertThatExceptionOfType(TimeoutException.class)
+ assertThatExceptionOfType(WebDriverException.class)
.isThrownBy(
() ->
biDi.send(
From 4f0ddb2d4a20247a7fdbf181f8cc3c734481d8f7 Mon Sep 17 00:00:00 2001
From: Simon Mavi Stewart
Date: Wed, 4 Oct 2023 14:08:35 +0100
Subject: [PATCH 44/90] Run format script. No logical changes
---
java/src/org/openqa/selenium/bidi/Connection.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/java/src/org/openqa/selenium/bidi/Connection.java b/java/src/org/openqa/selenium/bidi/Connection.java
index cf9eb81ec1980..bc9f580824b87 100644
--- a/java/src/org/openqa/selenium/bidi/Connection.java
+++ b/java/src/org/openqa/selenium/bidi/Connection.java
@@ -215,7 +215,8 @@ public void clearListeners() {
// 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.
+ // 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", ImmutableMap.of("events", events)));
From 5292afa156c02d59baf13c9bdd3e139403d60b18 Mon Sep 17 00:00:00 2001
From: titusfortner
Date: Wed, 4 Oct 2023 10:04:27 -0500
Subject: [PATCH 45/90] fix rbe credential helper header output
---
scripts/credential-helper.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/credential-helper.sh b/scripts/credential-helper.sh
index 8ad91d56bd13f..f8bad0af4eca8 100755
--- a/scripts/credential-helper.sh
+++ b/scripts/credential-helper.sh
@@ -52,7 +52,7 @@ function get() {
emit_headers "${KEYCHAIN}"
fi
- "{\"headers\":{}"
+ echo "{\"headers\":{}}"
exit 0
}
From ff6e181aecb746d1215a635d9215e3326b8068d3 Mon Sep 17 00:00:00 2001
From: Nikolay Borisenko <22616990+nvborisenko@users.noreply.github.com>
Date: Thu, 5 Oct 2023 04:12:25 +0300
Subject: [PATCH 46/90] [dotnet] Fix ci dotnet build on github actions (#12863)
* Fix ci dotnet build on github actions
* Don't parallelize builds
---
.github/workflows/ci-dotnet.yml | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/ci-dotnet.yml b/.github/workflows/ci-dotnet.yml
index 848bb09da1399..f569f3e10a7da 100644
--- a/.github/workflows/ci-dotnet.yml
+++ b/.github/workflows/ci-dotnet.yml
@@ -12,7 +12,9 @@ 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
+ bazel build //dotnet/src/support
integration-tests:
name: Browser Tests
From 6765b15ae5008ba6d759a4443eb549f36050d934 Mon Sep 17 00:00:00 2001
From: titusfortner
Date: Wed, 4 Oct 2023 20:36:23 -0500
Subject: [PATCH 47/90] [py] fix text using caplog
need to format the message instead of using the message string with placeholder
---
.../unit/selenium/webdriver/common/cdp_module_fallback_tests.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/py/test/unit/selenium/webdriver/common/cdp_module_fallback_tests.py b/py/test/unit/selenium/webdriver/common/cdp_module_fallback_tests.py
index 006e0360bf0ae..5becf19a97875 100644
--- a/py/test/unit/selenium/webdriver/common/cdp_module_fallback_tests.py
+++ b/py/test/unit/selenium/webdriver/common/cdp_module_fallback_tests.py
@@ -26,4 +26,4 @@ def test_missing_cdp_devtools_version_falls_back(caplog):
with caplog.at_level(logging.DEBUG, logger="selenium"):
assert isinstance(import_devtools("will_never_exist"), types.ModuleType)
# assert the fallback occurred successfully offered up a v{n} option.
- assert re.match(r"Falling back to loading `devtools`: v\d+", caplog.records[-1].msg) is not None
+ assert re.match(r"Falling back to loading `devtools`: v\d+", caplog.records[-1].getMessage()) is not None
From c64ed7d067f8314b2d3fbe3600dcc1ed47b866a4 Mon Sep 17 00:00:00 2001
From: joerg1985 <16140691+joerg1985@users.noreply.github.com>
Date: Thu, 5 Oct 2023 04:34:46 +0200
Subject: [PATCH 48/90] [java] remove the unused htmlunit-driver from the unit
tests (#12849)
Co-authored-by: Diego Molina
---
java/maven_deps.bzl | 6 -
java/maven_install.json | 681 +-----------------
java/test/org/openqa/selenium/AlertsTest.java | 2 -
java/test/org/openqa/selenium/ClearTest.java | 8 -
.../openqa/selenium/ClickScrollingTest.java | 2 -
.../selenium/CorrectEventFiringTest.java | 4 -
.../openqa/selenium/ElementAttributeTest.java | 2 -
.../selenium/ElementDomAttributeTest.java | 2 -
.../openqa/selenium/ElementFindingTest.java | 4 -
.../ExecutingAsyncJavascriptTest.java | 2 -
.../selenium/ExecutingJavascriptTest.java | 7 -
.../openqa/selenium/FrameSwitchingTest.java | 2 -
.../selenium/HistoryNavigationTest.java | 5 -
.../openqa/selenium/PageLoadTimeOutTest.java | 3 -
.../openqa/selenium/PositionAndSizeTest.java | 2 -
.../selenium/SelectElementHandlingTest.java | 4 -
.../org/openqa/selenium/SvgDocumentTest.java | 4 -
.../org/openqa/selenium/SvgElementTest.java | 4 -
.../org/openqa/selenium/TextHandlingTest.java | 3 -
.../selenium/UnexpectedAlertBehaviorTest.java | 5 -
java/test/org/openqa/selenium/UploadTest.java | 4 -
.../org/openqa/selenium/VisibilityTest.java | 3 -
.../openqa/selenium/WindowSwitchingTest.java | 2 -
.../CombinedInputActionsTest.java | 4 -
.../interactions/DefaultKeyboardTest.java | 6 -
.../interactions/DefaultMouseTest.java | 10 -
.../interactions/DragAndDropTest.java | 2 -
.../selenium/interactions/PenPointerTest.java | 10 -
.../selenium/logging/AvailableLogsTest.java | 2 -
.../openqa/selenium/logging/GetLogsTest.java | 2 -
.../logging/PerformanceLogTypeTest.java | 2 -
.../logging/PerformanceLoggingTest.java | 2 -
.../remote/RemoteWebDriverScreenshotTest.java | 2 -
.../org/openqa/selenium/testing/BUILD.bazel | 1 -
.../selenium/testing/TestUtilities.java | 6 +-
.../selenium/testing/drivers/BUILD.bazel | 1 -
.../drivers/DefaultDriverSupplier.java | 5 -
37 files changed, 6 insertions(+), 810 deletions(-)
diff --git a/java/maven_deps.bzl b/java/maven_deps.bzl
index d2083aec21b75..b087e59e98841 100644
--- a/java/maven_deps.bzl
+++ b/java/maven_deps.bzl
@@ -98,7 +98,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 +107,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..f64de36870318 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": 1617623649,
+ "__RESOLVED_ARTIFACTS_HASH": 2144519154,
"artifacts": {
"com.beust:jcommander": {
"shasums": {
@@ -178,13 +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",
@@ -208,10 +201,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 +213,6 @@
},
"version": "1.2"
},
- "commons-net:commons-net": {
- "shasums": {
- "jar": "e3c1566f821b84489308cd933f57e8c00dd8714dc96b898bef844386510d3461",
- "sources": "b910528017f757a8b54f4e764d3e0fadccf7a25aaf2acd666674585ae6e58b55"
- },
- "version": "3.9.0"
- },
"dev.failsafe:failsafe": {
"shasums": {
"jar": "2c5dc879a6dac7ea3a7b29d795e27bd49b8e7908b05c2f3e56053c19d79850f5",
@@ -559,13 +545,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 +552,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 +601,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",
@@ -727,13 +664,6 @@
},
"version": "1.70"
},
- "org.brotli:dec": {
- "shasums": {
- "jar": "615c0c3efef990d77831104475fba6a1f7971388691d4bad1471ad84101f6d52",
- "sources": "064ac1e41f475c1fd0479b6505f44b6e3bb044b948bddc75d56a496ebb85fbc3"
- },
- "version": "0.1.2"
- },
"org.checkerframework:checker-qual": {
"shasums": {
"jar": "e316255bbfcd9fe50d165314b85abb2b33cb2a66a93c491db648e498a82c2de1",
@@ -748,55 +678,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",
@@ -972,55 +853,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",
@@ -1341,22 +1173,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,13 +1184,6 @@
"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"
],
@@ -1404,28 +1213,6 @@
"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.eclipse.mylyn.github:org.eclipse.egit.github.core": [
"com.google.code.gson:gson"
],
@@ -1511,62 +1298,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,12 +1613,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",
@@ -1908,12 +1633,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 +1643,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",
@@ -2444,70 +2143,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 +2165,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 +2286,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",
@@ -3093,9 +2644,6 @@
"org.bouncycastle.oer.its",
"org.bouncycastle.oer.its.template"
],
- "org.brotli:dec": [
- "org.brotli.dec"
- ],
"org.checkerframework:checker-qual": [
"org.checkerframework.checker.builder.qual",
"org.checkerframework.checker.calledmethods.qual",
@@ -3144,63 +2692,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",
@@ -3530,72 +3021,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,8 +3187,6 @@
"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",
@@ -3774,8 +3197,6 @@
"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",
@@ -3873,16 +3294,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 +3310,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",
@@ -3921,26 +3328,10 @@
"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.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",
@@ -3991,20 +3382,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,8 +3448,6 @@
"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",
@@ -4083,8 +3458,6 @@
"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",
@@ -4182,16 +3555,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 +3571,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",
@@ -4230,26 +3589,10 @@
"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.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",
@@ -4300,20 +3643,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/test/org/openqa/selenium/AlertsTest.java b/java/test/org/openqa/selenium/AlertsTest.java
index 5df0fde2df366..2bcf8caba55db 100644
--- a/java/test/org/openqa/selenium/AlertsTest.java
+++ b/java/test/org/openqa/selenium/AlertsTest.java
@@ -25,7 +25,6 @@
import static org.openqa.selenium.testing.drivers.Browser.CHROME;
import static org.openqa.selenium.testing.drivers.Browser.EDGE;
import static org.openqa.selenium.testing.drivers.Browser.FIREFOX;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
import java.util.Set;
@@ -434,7 +433,6 @@ public void testShouldNotHandleAlertInAnotherWindow() {
}
@Test
- @Ignore(value = HTMLUNIT, reason = "https://github.com/SeleniumHQ/htmlunit-driver/issues/57")
@Ignore(
value = FIREFOX,
reason = "Per spec, an error data dictionary with text value is optional")
diff --git a/java/test/org/openqa/selenium/ClearTest.java b/java/test/org/openqa/selenium/ClearTest.java
index 8e6f779b90639..651c2a086ca6b 100644
--- a/java/test/org/openqa/selenium/ClearTest.java
+++ b/java/test/org/openqa/selenium/ClearTest.java
@@ -19,7 +19,6 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.IE;
import org.junit.jupiter.api.Test;
@@ -122,20 +121,17 @@ void shouldBeAbleToClearUrlInput() {
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void shouldBeAbleToClearRangeInput() {
shouldBeAbleToClearInput(By.name("range_input"), "42", "50");
}
@Test
- @NotYetImplemented(HTMLUNIT)
@NotYetImplemented(IE)
public void shouldBeAbleToClearColorInput() {
shouldBeAbleToClearInput(By.name("color_input"), "#00ffff", "#000000");
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void shouldBeAbleToClearDateInput() {
shouldBeAbleToClearInput(By.name("date_input"), "2017-11-22");
}
@@ -146,25 +142,21 @@ void shouldBeAbleToClearDatetimeInput() {
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void shouldBeAbleToClearDatetimeLocalInput() {
shouldBeAbleToClearInput(By.name("datetime_local_input"), "2017-11-22T11:22");
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void shouldBeAbleToClearTimeInput() {
shouldBeAbleToClearInput(By.name("time_input"), "11:22");
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void shouldBeAbleToClearMonthInput() {
shouldBeAbleToClearInput(By.name("month_input"), "2017-11");
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void shouldBeAbleToClearWeekInput() {
shouldBeAbleToClearInput(By.name("week_input"), "2017-W47");
}
diff --git a/java/test/org/openqa/selenium/ClickScrollingTest.java b/java/test/org/openqa/selenium/ClickScrollingTest.java
index 2bb0a55c64a19..7372d2b02e891 100644
--- a/java/test/org/openqa/selenium/ClickScrollingTest.java
+++ b/java/test/org/openqa/selenium/ClickScrollingTest.java
@@ -21,7 +21,6 @@
import static org.openqa.selenium.support.ui.ExpectedConditions.presenceOfElementLocated;
import static org.openqa.selenium.support.ui.ExpectedConditions.titleIs;
import static org.openqa.selenium.testing.drivers.Browser.FIREFOX;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.IE;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
@@ -31,7 +30,6 @@
import org.openqa.selenium.testing.NotYetImplemented;
import org.openqa.selenium.testing.SwitchToTopAfterTest;
-@Ignore(value = HTMLUNIT, reason = "Scrolling requires rendering")
class ClickScrollingTest extends JupiterTestBase {
@Test
diff --git a/java/test/org/openqa/selenium/CorrectEventFiringTest.java b/java/test/org/openqa/selenium/CorrectEventFiringTest.java
index ffa8b2e38357a..751bf1076852c 100644
--- a/java/test/org/openqa/selenium/CorrectEventFiringTest.java
+++ b/java/test/org/openqa/selenium/CorrectEventFiringTest.java
@@ -26,7 +26,6 @@
import static org.openqa.selenium.WaitingConditions.elementValueToEqual;
import static org.openqa.selenium.support.ui.ExpectedConditions.visibilityOfElementLocated;
import static org.openqa.selenium.testing.drivers.Browser.FIREFOX;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.IE;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
@@ -420,7 +419,6 @@ public void testSendingKeysToAFocusedElementShouldNotBlurThatElement() {
}
@Test
- @NotYetImplemented(HTMLUNIT)
@NotYetImplemented(IE)
@NotYetImplemented(SAFARI)
public void testClickingAnUnfocusableChildShouldNotBlurTheParent() {
@@ -511,7 +509,6 @@ void testClickEventsShouldBubble() {
}
@Test
- @Ignore(HTMLUNIT)
public void testClickOverlappingElements() {
driver.get(appServer.whereIs("click_tests/overlapping_elements.html"));
WebElement element = driver.findElement(By.id("under"));
@@ -520,7 +517,6 @@ public void testClickOverlappingElements() {
}
@Test
- @Ignore(HTMLUNIT)
@NotYetImplemented(SAFARI)
public void testClickAnElementThatDisappear() {
driver.get(appServer.whereIs("click_tests/disappearing_element.html"));
diff --git a/java/test/org/openqa/selenium/ElementAttributeTest.java b/java/test/org/openqa/selenium/ElementAttributeTest.java
index 63d32c07e0a17..2ab3813f147ee 100644
--- a/java/test/org/openqa/selenium/ElementAttributeTest.java
+++ b/java/test/org/openqa/selenium/ElementAttributeTest.java
@@ -23,7 +23,6 @@
import static org.openqa.selenium.testing.drivers.Browser.CHROME;
import static org.openqa.selenium.testing.drivers.Browser.EDGE;
import static org.openqa.selenium.testing.drivers.Browser.FIREFOX;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.IE;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
@@ -409,7 +408,6 @@ void shouldTreatContenteditableAsEnumeratedButNotBoolean() {
@NotYetImplemented(CHROME)
@NotYetImplemented(EDGE)
@NotYetImplemented(FIREFOX)
- @NotYetImplemented(HTMLUNIT)
@NotYetImplemented(SAFARI)
public void shouldTreatDraggableAsEnumeratedButNotBoolean() {
checkEnumeratedAttribute("draggable", "true", "false", "yes", "no", "", "blabla");
diff --git a/java/test/org/openqa/selenium/ElementDomAttributeTest.java b/java/test/org/openqa/selenium/ElementDomAttributeTest.java
index f030c8286151f..bc5134ef45a86 100644
--- a/java/test/org/openqa/selenium/ElementDomAttributeTest.java
+++ b/java/test/org/openqa/selenium/ElementDomAttributeTest.java
@@ -23,7 +23,6 @@
import static org.openqa.selenium.testing.drivers.Browser.CHROME;
import static org.openqa.selenium.testing.drivers.Browser.EDGE;
import static org.openqa.selenium.testing.drivers.Browser.FIREFOX;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.IE;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
@@ -351,7 +350,6 @@ void shouldTreatContenteditableAsEnumeratedButNotBoolean() {
@Test
@NotYetImplemented(IE)
- @NotYetImplemented(HTMLUNIT)
@NotYetImplemented(SAFARI)
public void shouldTreatDraggableAsEnumeratedButNotBoolean() {
checkEnumeratedAttribute("draggable", "true", "false", "yes", "no", "", "blabla");
diff --git a/java/test/org/openqa/selenium/ElementFindingTest.java b/java/test/org/openqa/selenium/ElementFindingTest.java
index 7b32887b44db4..e41878802fdf9 100644
--- a/java/test/org/openqa/selenium/ElementFindingTest.java
+++ b/java/test/org/openqa/selenium/ElementFindingTest.java
@@ -21,7 +21,6 @@
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.openqa.selenium.testing.drivers.Browser.CHROME;
import static org.openqa.selenium.testing.drivers.Browser.FIREFOX;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.IE;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
@@ -107,7 +106,6 @@ void testFindingASingleElementByEmptyIdShouldThrow() {
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void testFindingMultipleElementsByEmptyIdShouldThrow() {
driver.get(pages.formPage);
assertThatExceptionOfType(InvalidSelectorException.class)
@@ -345,7 +343,6 @@ void testFindingMultipleElementsByCompoundClassNameShouldThrow() {
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void testShouldBeAbleToFindASingleElementByAWeirdLookingClassName() {
driver.get(pages.xhtmlTestPage);
WebElement element = driver.findElement(By.className("cls-!@#$%^&*"));
@@ -353,7 +350,6 @@ public void testShouldBeAbleToFindASingleElementByAWeirdLookingClassName() {
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void testShouldBeAbleToFindMultipleElementsByAWeirdLookingClassName() {
driver.get(pages.xhtmlTestPage);
List elements = driver.findElements(By.className("cls-!@#$%^&*"));
diff --git a/java/test/org/openqa/selenium/ExecutingAsyncJavascriptTest.java b/java/test/org/openqa/selenium/ExecutingAsyncJavascriptTest.java
index b2e6cfd53cfbe..a8a0052adc78b 100644
--- a/java/test/org/openqa/selenium/ExecutingAsyncJavascriptTest.java
+++ b/java/test/org/openqa/selenium/ExecutingAsyncJavascriptTest.java
@@ -24,7 +24,6 @@
import static org.openqa.selenium.testing.drivers.Browser.CHROME;
import static org.openqa.selenium.testing.drivers.Browser.EDGE;
import static org.openqa.selenium.testing.drivers.Browser.FIREFOX;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.IE;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
@@ -231,7 +230,6 @@ void shouldNotTimeoutWithMultipleCallsTheFirstOneBeingSynchronous() {
@Ignore(IE)
@NotYetImplemented(SAFARI)
@Ignore(FIREFOX)
- @NotYetImplemented(HTMLUNIT)
public void shouldCatchErrorsWithMessageAndStacktraceWhenExecutingInitialScript() {
driver.get(pages.ajaxyPage);
String js =
diff --git a/java/test/org/openqa/selenium/ExecutingJavascriptTest.java b/java/test/org/openqa/selenium/ExecutingJavascriptTest.java
index 0e55c93a43b6a..1b7b9dda62dc6 100644
--- a/java/test/org/openqa/selenium/ExecutingJavascriptTest.java
+++ b/java/test/org/openqa/selenium/ExecutingJavascriptTest.java
@@ -27,7 +27,6 @@
import static org.openqa.selenium.testing.drivers.Browser.CHROME;
import static org.openqa.selenium.testing.drivers.Browser.EDGE;
import static org.openqa.selenium.testing.drivers.Browser.FIREFOX;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.IE;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
@@ -251,7 +250,6 @@ void testShouldThrowAnExceptionWhenTheJavascriptIsBad() {
@Ignore(IE)
@NotYetImplemented(SAFARI)
@Ignore(FIREFOX)
- @NotYetImplemented(HTMLUNIT)
public void testShouldThrowAnExceptionWithMessageAndStacktraceWhenTheJavascriptIsBad() {
driver.get(pages.xhtmlTestPage);
@@ -430,9 +428,6 @@ void testShouldBeAbleToExecuteScriptAndReturnElementsList() {
@NeedsFreshDriver
@Test
- @NotYetImplemented(
- value = HTMLUNIT,
- reason = "HtmlUnit: can't execute JavaScript before a page is loaded")
@Ignore(SAFARI)
public void testShouldBeAbleToExecuteScriptOnNoPage() {
String text = (String) executeScript("return 'test';");
@@ -525,7 +520,6 @@ public void shouldReturnDocumentElementIfDocumentIsReturned() {
@Test
@Timeout(10)
@Ignore(value = IE, reason = "returns WebElement")
- @Ignore(HTMLUNIT)
public void shouldHandleObjectThatThatHaveToJSONMethod() {
driver.get(pages.simpleTestPage);
@@ -536,7 +530,6 @@ public void shouldHandleObjectThatThatHaveToJSONMethod() {
@Test
@Timeout(10)
- @Ignore(HTMLUNIT)
public void shouldHandleRecursiveStructures() {
driver.get(pages.simpleTestPage);
diff --git a/java/test/org/openqa/selenium/FrameSwitchingTest.java b/java/test/org/openqa/selenium/FrameSwitchingTest.java
index 37da10f44911a..04f91d8450184 100644
--- a/java/test/org/openqa/selenium/FrameSwitchingTest.java
+++ b/java/test/org/openqa/selenium/FrameSwitchingTest.java
@@ -26,7 +26,6 @@
import static org.openqa.selenium.support.ui.ExpectedConditions.titleIs;
import static org.openqa.selenium.testing.drivers.Browser.CHROME;
import static org.openqa.selenium.testing.drivers.Browser.EDGE;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.IE;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
@@ -454,7 +453,6 @@ public void testShouldBeAbleToSwitchToTheTopIfTheFrameIsDeletedFromUnderUsWithWe
@NotYetImplemented(value = CHROME, reason = "Throws NoSuchElementException")
@NotYetImplemented(value = EDGE, reason = "Throws NoSuchElementException")
@Ignore(IE)
- @NotYetImplemented(HTMLUNIT)
@Ignore(SAFARI)
public void testShouldNotBeAbleToDoAnythingTheFrameIsDeletedFromUnderUs() {
driver.get(appServer.whereIs("frame_switching_tests/deletingFrame.html"));
diff --git a/java/test/org/openqa/selenium/HistoryNavigationTest.java b/java/test/org/openqa/selenium/HistoryNavigationTest.java
index 196d1a220be09..1c6e213dd161a 100644
--- a/java/test/org/openqa/selenium/HistoryNavigationTest.java
+++ b/java/test/org/openqa/selenium/HistoryNavigationTest.java
@@ -22,22 +22,17 @@
import static org.openqa.selenium.support.ui.ExpectedConditions.not;
import static org.openqa.selenium.support.ui.ExpectedConditions.titleIs;
import static org.openqa.selenium.support.ui.ExpectedConditions.visibilityOfElementLocated;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.testing.Ignore;
import org.openqa.selenium.testing.JupiterTestBase;
import org.openqa.selenium.testing.NeedsFreshDriver;
-import org.openqa.selenium.testing.NotYetImplemented;
public class HistoryNavigationTest extends JupiterTestBase {
@NeedsFreshDriver
@Test
- @NotYetImplemented(
- value = HTMLUNIT,
- reason = "HtmlUnit: can't execute JavaScript before a page is loaded")
@Ignore(value = SAFARI, reason = "Hanging")
public void testShouldDoNothingIfThereIsNothingToGoBackTo() {
((JavascriptExecutor) driver)
diff --git a/java/test/org/openqa/selenium/PageLoadTimeOutTest.java b/java/test/org/openqa/selenium/PageLoadTimeOutTest.java
index a97f100ef91dc..3b80d0c0b8e8c 100644
--- a/java/test/org/openqa/selenium/PageLoadTimeOutTest.java
+++ b/java/test/org/openqa/selenium/PageLoadTimeOutTest.java
@@ -24,7 +24,6 @@
import static org.openqa.selenium.support.ui.ExpectedConditions.visibilityOfElementLocated;
import static org.openqa.selenium.testing.drivers.Browser.CHROME;
import static org.openqa.selenium.testing.drivers.Browser.EDGE;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
import java.time.Duration;
@@ -70,7 +69,6 @@ void testShouldTimeoutIfAPageTakesTooLongToLoad() {
}
@Test
- @Ignore(HTMLUNIT)
@Ignore(value = SAFARI, reason = "Flaky")
public void testShouldTimeoutIfAPageTakesTooLongToLoadAfterClick() {
driver.manage().timeouts().pageLoadTimeout(Duration.ofSeconds(2));
@@ -136,7 +134,6 @@ public void testShouldTimeoutIfAPageTakesTooLongToRefresh() {
@NotYetImplemented(CHROME)
@NotYetImplemented(EDGE)
@NotYetImplemented(value = SAFARI)
- @NotYetImplemented(HTMLUNIT)
public void testShouldNotStopLoadingPageAfterTimeout() {
try {
testPageLoadTimeoutIsEnforced(1);
diff --git a/java/test/org/openqa/selenium/PositionAndSizeTest.java b/java/test/org/openqa/selenium/PositionAndSizeTest.java
index 987923e9e70c1..9121c98d21be9 100644
--- a/java/test/org/openqa/selenium/PositionAndSizeTest.java
+++ b/java/test/org/openqa/selenium/PositionAndSizeTest.java
@@ -21,7 +21,6 @@
import static org.openqa.selenium.testing.drivers.Browser.CHROME;
import static org.openqa.selenium.testing.drivers.Browser.EDGE;
import static org.openqa.selenium.testing.drivers.Browser.FIREFOX;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.IE;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
@@ -32,7 +31,6 @@
import org.openqa.selenium.testing.NotYetImplemented;
import org.openqa.selenium.testing.SwitchToTopAfterTest;
-@Ignore(value = HTMLUNIT, reason = "Getting coordinates requires rendering, others: not tested")
class PositionAndSizeTest extends JupiterTestBase {
@Test
diff --git a/java/test/org/openqa/selenium/SelectElementHandlingTest.java b/java/test/org/openqa/selenium/SelectElementHandlingTest.java
index 37bc4c0c94d8d..9eca53a2510e8 100644
--- a/java/test/org/openqa/selenium/SelectElementHandlingTest.java
+++ b/java/test/org/openqa/selenium/SelectElementHandlingTest.java
@@ -18,12 +18,10 @@
package org.openqa.selenium;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import java.util.List;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.testing.JupiterTestBase;
-import org.openqa.selenium.testing.NotYetImplemented;
class SelectElementHandlingTest extends JupiterTestBase {
@@ -135,7 +133,6 @@ void testCannotSetDisabledOption() {
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void testCanSetHiddenOption() {
driver.get(pages.selectPage);
WebElement element = driver.findElement(By.cssSelector("#visibility .hidden"));
@@ -144,7 +141,6 @@ public void testCanSetHiddenOption() {
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void testCanSetInvisibleOption() {
driver.get(pages.selectPage);
WebElement element = driver.findElement(By.cssSelector("#visibility .invisible"));
diff --git a/java/test/org/openqa/selenium/SvgDocumentTest.java b/java/test/org/openqa/selenium/SvgDocumentTest.java
index 8f9911c1aa7bc..2a8a9d60b855c 100644
--- a/java/test/org/openqa/selenium/SvgDocumentTest.java
+++ b/java/test/org/openqa/selenium/SvgDocumentTest.java
@@ -18,18 +18,15 @@
package org.openqa.selenium;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
import org.junit.jupiter.api.Test;
-import org.openqa.selenium.testing.Ignore;
import org.openqa.selenium.testing.JupiterTestBase;
import org.openqa.selenium.testing.NotYetImplemented;
class SvgDocumentTest extends JupiterTestBase {
@Test
- @Ignore(value = HTMLUNIT, reason = "test should enable JavaScript")
@NotYetImplemented(SAFARI)
public void testClickOnSvgElement() {
driver.get(pages.svgTestPage);
@@ -41,7 +38,6 @@ public void testClickOnSvgElement() {
}
@Test
- @Ignore(value = HTMLUNIT, reason = "test should enable JavaScript")
public void testExecuteScriptInSvgDocument() {
driver.get(pages.svgTestPage);
WebElement rect = driver.findElement(By.id("rect"));
diff --git a/java/test/org/openqa/selenium/SvgElementTest.java b/java/test/org/openqa/selenium/SvgElementTest.java
index 56eba0115903a..a54689d87ed59 100644
--- a/java/test/org/openqa/selenium/SvgElementTest.java
+++ b/java/test/org/openqa/selenium/SvgElementTest.java
@@ -20,19 +20,16 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.openqa.selenium.WaitingConditions.elementTextToEqual;
import static org.openqa.selenium.testing.drivers.Browser.FIREFOX;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
import java.util.List;
import org.junit.jupiter.api.Test;
-import org.openqa.selenium.testing.Ignore;
import org.openqa.selenium.testing.JupiterTestBase;
import org.openqa.selenium.testing.NotYetImplemented;
class SvgElementTest extends JupiterTestBase {
@Test
- @Ignore(value = HTMLUNIT, reason = "test should enable JavaScript")
@NotYetImplemented(
value = FIREFOX,
reason = "https://bugzilla.mozilla.org/show_bug.cgi?id=1428780")
@@ -68,7 +65,6 @@ private static WebElement findAppleElement(List textElements) {
}
@Test
- @Ignore(value = HTMLUNIT, reason = "test should enable JavaScript")
void testShouldClickOnGraphTextElements() {
driver.get(pages.svgPage);
WebElement svg = driver.findElement(By.cssSelector("svg"));
diff --git a/java/test/org/openqa/selenium/TextHandlingTest.java b/java/test/org/openqa/selenium/TextHandlingTest.java
index a03b9ecced339..e43d3b501f343 100644
--- a/java/test/org/openqa/selenium/TextHandlingTest.java
+++ b/java/test/org/openqa/selenium/TextHandlingTest.java
@@ -19,7 +19,6 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.openqa.selenium.testing.drivers.Browser.ALL;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.IE;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
@@ -377,7 +376,6 @@ void testShouldGetTextWhichIsAValidComplexJSONObject() {
}
@Test
- @NotYetImplemented(HTMLUNIT)
@NotYetImplemented(SAFARI)
public void testShouldNotReturnLtrMarks() {
driver.get(pages.unicodeLtrPage);
@@ -418,7 +416,6 @@ void canHandleTextThatLooksLikeANumber() {
}
@Test
- @NotYetImplemented(HTMLUNIT)
@NotYetImplemented(value = SAFARI, reason = "getText does not normalize spaces")
public void canHandleTextTransformProperty() {
driver.get(pages.simpleTestPage);
diff --git a/java/test/org/openqa/selenium/UnexpectedAlertBehaviorTest.java b/java/test/org/openqa/selenium/UnexpectedAlertBehaviorTest.java
index 3fc087d254f0a..2126d99aa3415 100644
--- a/java/test/org/openqa/selenium/UnexpectedAlertBehaviorTest.java
+++ b/java/test/org/openqa/selenium/UnexpectedAlertBehaviorTest.java
@@ -23,7 +23,6 @@
import static org.openqa.selenium.remote.CapabilityType.UNHANDLED_PROMPT_BEHAVIOUR;
import static org.openqa.selenium.testing.drivers.Browser.CHROME;
import static org.openqa.selenium.testing.drivers.Browser.EDGE;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
import java.time.Duration;
@@ -40,7 +39,6 @@ class UnexpectedAlertBehaviorTest extends JupiterTestBase {
@Test
@Ignore(value = CHROME, reason = "Legacy behaviour, not W3C conformance")
@Ignore(value = EDGE, reason = "Legacy behaviour, not W3C conformant")
- @Ignore(value = HTMLUNIT, reason = "Legacy behaviour, not W3C conformant")
@NoDriverBeforeTest
public void canAcceptUnhandledAlert() {
runScenarioWithUnhandledAlert(
@@ -50,7 +48,6 @@ public void canAcceptUnhandledAlert() {
@Test
@Ignore(value = CHROME, reason = "Legacy behaviour, not W3C conformant")
@Ignore(value = EDGE, reason = "Legacy behaviour, not W3C conformant")
- @Ignore(value = HTMLUNIT, reason = "Legacy behaviour, not W3C conformant")
@NoDriverBeforeTest
public void canSilentlyAcceptUnhandledAlert() {
runScenarioWithUnhandledAlert(UnexpectedAlertBehaviour.ACCEPT, "This is a default value", true);
@@ -59,7 +56,6 @@ public void canSilentlyAcceptUnhandledAlert() {
@Test
@Ignore(value = CHROME, reason = "Unstable Chrome behavior")
@Ignore(value = EDGE, reason = "Unstable Chrome behavior")
- @Ignore(value = HTMLUNIT, reason = "Legacy behaviour, not W3C conformant")
@NoDriverBeforeTest
public void canDismissUnhandledAlert() {
runScenarioWithUnhandledAlert(UnexpectedAlertBehaviour.DISMISS_AND_NOTIFY, "null", false);
@@ -68,7 +64,6 @@ public void canDismissUnhandledAlert() {
@Test
@Ignore(value = CHROME, reason = "Legacy behaviour, not W3C conformant")
@Ignore(value = EDGE, reason = "Legacy behaviour, not W3C conformant")
- @Ignore(value = HTMLUNIT, reason = "Legacy behaviour, not W3C conformant")
@NoDriverBeforeTest
public void canSilentlyDismissUnhandledAlert() {
runScenarioWithUnhandledAlert(UnexpectedAlertBehaviour.DISMISS, "null", true);
diff --git a/java/test/org/openqa/selenium/UploadTest.java b/java/test/org/openqa/selenium/UploadTest.java
index e1d50b6997904..ae67b01aa3613 100644
--- a/java/test/org/openqa/selenium/UploadTest.java
+++ b/java/test/org/openqa/selenium/UploadTest.java
@@ -24,7 +24,6 @@
import static org.openqa.selenium.WaitingConditions.elementTextToEqual;
import static org.openqa.selenium.support.ui.ExpectedConditions.not;
import static org.openqa.selenium.support.ui.ExpectedConditions.visibilityOf;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
import java.io.File;
@@ -121,7 +120,6 @@ void testCleanFileInput() {
}
@Test
- @Ignore(HTMLUNIT)
public void testClickFileInput() {
driver.get(pages.uploadPage);
WebElement element = driver.findElement(By.id("upload"));
@@ -147,7 +145,6 @@ public void testUploadingWithHiddenFileInput() {
@Test
@Ignore(value = SAFARI, reason = "Hangs forever in sendKeys")
- @Ignore(HTMLUNIT)
@NeedsFreshDriver
public void testUploadingWithInvisibleFileInput() {
driver.get(appServer.whereIs("upload_invisible.html"));
@@ -165,7 +162,6 @@ public void testUploadingWithInvisibleFileInput() {
}
@Test
- @Ignore(HTMLUNIT)
@NoDriverBeforeTest
@NoDriverAfterTest
public void testUploadingWithInvisibleFileInputWhenStrictFileInteractabilityIsOn() {
diff --git a/java/test/org/openqa/selenium/VisibilityTest.java b/java/test/org/openqa/selenium/VisibilityTest.java
index 0e9969cbca830..7733b6dcda25d 100644
--- a/java/test/org/openqa/selenium/VisibilityTest.java
+++ b/java/test/org/openqa/selenium/VisibilityTest.java
@@ -23,7 +23,6 @@
import static org.openqa.selenium.Platform.ANDROID;
import static org.openqa.selenium.support.ui.ExpectedConditions.not;
import static org.openqa.selenium.support.ui.ExpectedConditions.visibilityOf;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
import java.util.List;
@@ -130,7 +129,6 @@ void parentNodeVisibleWhenAllChildrenAreAbsolutelyPositionedAndOverflowIsHidden(
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void testElementHiddenByOverflowXIsNotVisible() {
String[] pages =
new String[] {
@@ -148,7 +146,6 @@ public void testElementHiddenByOverflowXIsNotVisible() {
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void testElementHiddenByOverflowYIsNotVisible() {
String[] pages =
new String[] {
diff --git a/java/test/org/openqa/selenium/WindowSwitchingTest.java b/java/test/org/openqa/selenium/WindowSwitchingTest.java
index 50f0f3b1d909f..757bd2c369c61 100644
--- a/java/test/org/openqa/selenium/WindowSwitchingTest.java
+++ b/java/test/org/openqa/selenium/WindowSwitchingTest.java
@@ -26,7 +26,6 @@
import static org.openqa.selenium.testing.TestUtilities.isInternetExplorer;
import static org.openqa.selenium.testing.drivers.Browser.CHROME;
import static org.openqa.selenium.testing.drivers.Browser.FIREFOX;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.IE;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
@@ -338,7 +337,6 @@ public void testShouldFocusOnTheTopMostFrameAfterSwitchingToAWindow() {
@NoDriverAfterTest(failedOnly = true)
@Test
- @NotYetImplemented(HTMLUNIT)
public void canOpenANewWindow() {
driver.get(pages.xhtmlTestPage);
diff --git a/java/test/org/openqa/selenium/interactions/CombinedInputActionsTest.java b/java/test/org/openqa/selenium/interactions/CombinedInputActionsTest.java
index d4e0e7d868680..d2c985681bda5 100644
--- a/java/test/org/openqa/selenium/interactions/CombinedInputActionsTest.java
+++ b/java/test/org/openqa/selenium/interactions/CombinedInputActionsTest.java
@@ -28,7 +28,6 @@
import static org.openqa.selenium.testing.TestUtilities.isInternetExplorer;
import static org.openqa.selenium.testing.drivers.Browser.CHROME;
import static org.openqa.selenium.testing.drivers.Browser.FIREFOX;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.IE;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
@@ -258,7 +257,6 @@ void testCanClickOnLinks() {
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void testCanClickOnLinksWithAnOffset() {
driver.get(pages.clicksPage);
@@ -271,7 +269,6 @@ public void testCanClickOnLinksWithAnOffset() {
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void testClickAfterMoveToAnElementWithAnOffsetShouldUseLastMousePosition() {
driver.get(pages.clickEventPage);
@@ -311,7 +308,6 @@ private boolean fuzzyPositionMatching(int expectedX, int expectedY, int actualX,
* driver keeps the wrong state, mouse movement will end up at the wrong coordinates.
*/
@Test
- @NotYetImplemented(HTMLUNIT)
public void testMouseMovementWorksWhenNavigatingToAnotherPage() {
navigateToClicksPageAndClickLink();
diff --git a/java/test/org/openqa/selenium/interactions/DefaultKeyboardTest.java b/java/test/org/openqa/selenium/interactions/DefaultKeyboardTest.java
index 36bacbdd152c3..6d0703eb0ea0b 100644
--- a/java/test/org/openqa/selenium/interactions/DefaultKeyboardTest.java
+++ b/java/test/org/openqa/selenium/interactions/DefaultKeyboardTest.java
@@ -22,7 +22,6 @@
import static org.junit.jupiter.api.Assumptions.assumeFalse;
import static org.openqa.selenium.testing.TestUtilities.getEffectivePlatform;
import static org.openqa.selenium.testing.drivers.Browser.FIREFOX;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.IE;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
@@ -160,7 +159,6 @@ public void testBasicKeyboardInputOnActiveElement() {
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void testThrowsIllegalArgumentExceptionWithNoParameters() {
driver.get(pages.javascriptPage);
assertThatExceptionOfType(IllegalArgumentException.class)
@@ -168,7 +166,6 @@ public void testThrowsIllegalArgumentExceptionWithNoParameters() {
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void testThrowsIllegalArgumentExceptionWithNullParameter() {
driver.get(pages.javascriptPage);
assertThatExceptionOfType(IllegalArgumentException.class)
@@ -176,7 +173,6 @@ public void testThrowsIllegalArgumentExceptionWithNullParameter() {
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void testThrowsIllegalArgumentExceptionWithNullInParameters() {
driver.get(pages.javascriptPage);
assertThatExceptionOfType(IllegalArgumentException.class)
@@ -184,7 +180,6 @@ public void testThrowsIllegalArgumentExceptionWithNullInParameters() {
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void testThrowsIllegalArgumentExceptionWithCharSequenceThatContainsNull() {
driver.get(pages.javascriptPage);
assertThatExceptionOfType(IllegalArgumentException.class)
@@ -192,7 +187,6 @@ public void testThrowsIllegalArgumentExceptionWithCharSequenceThatContainsNull()
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void testThrowsIllegalArgumentExceptionWithCharSequenceThatContainsNullOnly() {
driver.get(pages.javascriptPage);
assertThatExceptionOfType(IllegalArgumentException.class)
diff --git a/java/test/org/openqa/selenium/interactions/DefaultMouseTest.java b/java/test/org/openqa/selenium/interactions/DefaultMouseTest.java
index a932f583f8bf9..e03bd370f24ad 100644
--- a/java/test/org/openqa/selenium/interactions/DefaultMouseTest.java
+++ b/java/test/org/openqa/selenium/interactions/DefaultMouseTest.java
@@ -28,7 +28,6 @@
import static org.openqa.selenium.testing.drivers.Browser.CHROME;
import static org.openqa.selenium.testing.drivers.Browser.EDGE;
import static org.openqa.selenium.testing.drivers.Browser.FIREFOX;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.IE;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
@@ -98,12 +97,10 @@ public void testDraggingElementWithMouseMovesItToAnotherList() {
// This test is very similar to testDraggingElementWithMouse. The only
// difference is that this test also verifies the correct events were fired.
@Test
- @NotYetImplemented(HTMLUNIT)
@NotYetImplemented(SAFARI)
public void testDraggingElementWithMouseFiresEvents() {
performDragAndDropWithMouse();
WebElement dragReporter = driver.findElement(By.id("dragging_reports"));
- // This is failing under HtmlUnit. A bug was filed.
String text = dragReporter.getText();
assertThat(text).matches("Nothing happened. (?:DragOut *)+DropIn RightItem 3");
}
@@ -226,7 +223,6 @@ void testCannotMoveToANullLocator() {
}
@Test
- @Ignore(value = HTMLUNIT, reason = "test should enable JavaScript")
@NotYetImplemented(SAFARI)
public void testMovingPastViewPortThrowsException() {
assertThatExceptionOfType(MoveTargetOutOfBoundsException.class)
@@ -286,7 +282,6 @@ public void testHoverPersists() throws Exception {
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void testMovingMouseByRelativeOffset() {
driver.get(pages.mouseTrackerPage);
@@ -303,7 +298,6 @@ public void testMovingMouseByRelativeOffset() {
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void testMovingMouseToRelativeElementOffset() {
driver.get(pages.mouseTrackerPage);
@@ -319,7 +313,6 @@ public void testMovingMouseToRelativeElementOffset() {
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void testMovingMouseToRelativeZeroElementOffset() {
driver.get(pages.mouseTrackerPage);
@@ -334,7 +327,6 @@ public void testMovingMouseToRelativeZeroElementOffset() {
@NeedsFreshDriver({IE, CHROME, FIREFOX, EDGE})
@Test
- @NotYetImplemented(HTMLUNIT)
@NotYetImplemented(SAFARI)
public void testMoveRelativeToBody() {
try {
@@ -352,7 +344,6 @@ public void testMoveRelativeToBody() {
@Test
@Ignore(value = FIREFOX, issue = "https://github.com/mozilla/geckodriver/issues/789")
- @NotYetImplemented(HTMLUNIT)
@NotYetImplemented(SAFARI)
public void testMoveMouseByOffsetOverAndOutOfAnElement() {
driver.get(pages.mouseOverPage);
@@ -391,7 +382,6 @@ public void testMoveMouseByOffsetOverAndOutOfAnElement() {
@Test
@Ignore(value = FIREFOX, issue = "https://github.com/mozilla/geckodriver/issues/789")
- @NotYetImplemented(HTMLUNIT)
@NotYetImplemented(SAFARI)
public void testCanMoveOverAndOutOfAnElement() {
driver.get(pages.mouseOverPage);
diff --git a/java/test/org/openqa/selenium/interactions/DragAndDropTest.java b/java/test/org/openqa/selenium/interactions/DragAndDropTest.java
index b154f18361610..b61d4aa5ef3db 100644
--- a/java/test/org/openqa/selenium/interactions/DragAndDropTest.java
+++ b/java/test/org/openqa/selenium/interactions/DragAndDropTest.java
@@ -22,7 +22,6 @@
import static org.openqa.selenium.WaitingConditions.elementLocationToBe;
import static org.openqa.selenium.testing.drivers.Browser.CHROME;
import static org.openqa.selenium.testing.drivers.Browser.FIREFOX;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.IE;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
@@ -38,7 +37,6 @@
import org.openqa.selenium.testing.NotYetImplemented;
import org.openqa.selenium.testing.SwitchToTopAfterTest;
-@Ignore(value = HTMLUNIT, reason = "Advanced mouse actions only implemented in rendered browsers")
class DragAndDropTest extends JupiterTestBase {
private static void sleep(int ms) {
diff --git a/java/test/org/openqa/selenium/interactions/PenPointerTest.java b/java/test/org/openqa/selenium/interactions/PenPointerTest.java
index 0a7311d655981..ad26947242920 100644
--- a/java/test/org/openqa/selenium/interactions/PenPointerTest.java
+++ b/java/test/org/openqa/selenium/interactions/PenPointerTest.java
@@ -28,7 +28,6 @@
import static org.openqa.selenium.testing.drivers.Browser.CHROME;
import static org.openqa.selenium.testing.drivers.Browser.EDGE;
import static org.openqa.selenium.testing.drivers.Browser.FIREFOX;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.IE;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
@@ -106,12 +105,10 @@ public void testDraggingElementWithPenMovesItToAnotherList() {
// This test is very similar to testDraggingElementWithPen. The only
// difference is that this test also verifies the correct events were fired.
@Test
- @NotYetImplemented(HTMLUNIT)
@NotYetImplemented(SAFARI)
public void testDraggingElementWithPenFiresEvents() {
performDragAndDropWithPen();
WebElement dragReporter = driver.findElement(By.id("dragging_reports"));
- // This is failing under HtmlUnit. A bug was filed.
String text = dragReporter.getText();
assertThat(text).matches("Nothing happened. (?:DragOut *)+DropIn RightItem 3");
}
@@ -179,7 +176,6 @@ void testCannotMoveToANullLocator() {
}
@Test
- @Ignore(value = HTMLUNIT, reason = "test should enable JavaScript")
@NotYetImplemented(SAFARI)
public void testMovingPastViewPortThrowsException() {
assertThatExceptionOfType(MoveTargetOutOfBoundsException.class)
@@ -244,7 +240,6 @@ public void testHoverPersists() throws Exception {
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void testMovingPenByRelativeOffset() {
driver.get(pages.mouseTrackerPage);
@@ -262,7 +257,6 @@ public void testMovingPenByRelativeOffset() {
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void testMovingPenToRelativeElementOffset() {
driver.get(pages.mouseTrackerPage);
@@ -278,7 +272,6 @@ public void testMovingPenToRelativeElementOffset() {
}
@Test
- @NotYetImplemented(HTMLUNIT)
public void testMovingPenToRelativeZeroElementOffset() {
driver.get(pages.mouseTrackerPage);
@@ -293,7 +286,6 @@ public void testMovingPenToRelativeZeroElementOffset() {
@NeedsFreshDriver({IE, CHROME, FIREFOX, EDGE})
@Test
- @NotYetImplemented(HTMLUNIT)
@NotYetImplemented(SAFARI)
public void testMoveRelativeToBody() {
try {
@@ -316,7 +308,6 @@ public void testMoveRelativeToBody() {
@Test
@Ignore(value = FIREFOX, issue = "https://github.com/mozilla/geckodriver/issues/789")
- @NotYetImplemented(HTMLUNIT)
@NotYetImplemented(SAFARI)
public void testMovePenByOffsetOverAndOutOfAnElement() {
driver.get(pages.mouseOverPage);
@@ -355,7 +346,6 @@ public void testMovePenByOffsetOverAndOutOfAnElement() {
@Test
@Ignore(value = FIREFOX, issue = "https://github.com/mozilla/geckodriver/issues/789")
- @NotYetImplemented(HTMLUNIT)
@NotYetImplemented(SAFARI)
public void testCanMoveOverAndOutOfAnElement() {
driver.get(pages.mouseOverPage);
diff --git a/java/test/org/openqa/selenium/logging/AvailableLogsTest.java b/java/test/org/openqa/selenium/logging/AvailableLogsTest.java
index 299c7c869047f..ef472e9d7a4e6 100644
--- a/java/test/org/openqa/selenium/logging/AvailableLogsTest.java
+++ b/java/test/org/openqa/selenium/logging/AvailableLogsTest.java
@@ -20,7 +20,6 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assumptions.assumeTrue;
import static org.openqa.selenium.testing.drivers.Browser.FIREFOX;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.IE;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
@@ -31,7 +30,6 @@
import org.openqa.selenium.testing.Ignore;
import org.openqa.selenium.testing.JupiterTestBase;
-@Ignore(HTMLUNIT)
@Ignore(IE)
@Ignore(FIREFOX)
@Ignore(SAFARI)
diff --git a/java/test/org/openqa/selenium/logging/GetLogsTest.java b/java/test/org/openqa/selenium/logging/GetLogsTest.java
index 58a99d867d2e7..ce57aaf728d03 100644
--- a/java/test/org/openqa/selenium/logging/GetLogsTest.java
+++ b/java/test/org/openqa/selenium/logging/GetLogsTest.java
@@ -19,7 +19,6 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.openqa.selenium.testing.drivers.Browser.FIREFOX;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.IE;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
@@ -33,7 +32,6 @@
import org.openqa.selenium.testing.Ignore;
import org.openqa.selenium.testing.JupiterTestBase;
-@Ignore(HTMLUNIT)
@Ignore(IE)
@Ignore(FIREFOX)
@Ignore(SAFARI)
diff --git a/java/test/org/openqa/selenium/logging/PerformanceLogTypeTest.java b/java/test/org/openqa/selenium/logging/PerformanceLogTypeTest.java
index 13a5ae63370e4..8398e6b7f9eb4 100644
--- a/java/test/org/openqa/selenium/logging/PerformanceLogTypeTest.java
+++ b/java/test/org/openqa/selenium/logging/PerformanceLogTypeTest.java
@@ -19,7 +19,6 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.openqa.selenium.testing.drivers.Browser.FIREFOX;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.IE;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
@@ -30,7 +29,6 @@
import org.openqa.selenium.testing.Ignore;
import org.openqa.selenium.testing.JupiterTestBase;
-@Ignore(HTMLUNIT)
@Ignore(IE)
@Ignore(FIREFOX)
@Ignore(SAFARI)
diff --git a/java/test/org/openqa/selenium/logging/PerformanceLoggingTest.java b/java/test/org/openqa/selenium/logging/PerformanceLoggingTest.java
index 6072ffee7a667..64ff8bd1b5eec 100644
--- a/java/test/org/openqa/selenium/logging/PerformanceLoggingTest.java
+++ b/java/test/org/openqa/selenium/logging/PerformanceLoggingTest.java
@@ -19,7 +19,6 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.openqa.selenium.testing.drivers.Browser.FIREFOX;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import static org.openqa.selenium.testing.drivers.Browser.IE;
import static org.openqa.selenium.testing.drivers.Browser.SAFARI;
@@ -29,7 +28,6 @@
import org.openqa.selenium.testing.Ignore;
import org.openqa.selenium.testing.JupiterTestBase;
-@Ignore(HTMLUNIT)
@Ignore(IE)
@Ignore(SAFARI)
@Ignore(FIREFOX)
diff --git a/java/test/org/openqa/selenium/remote/RemoteWebDriverScreenshotTest.java b/java/test/org/openqa/selenium/remote/RemoteWebDriverScreenshotTest.java
index 9d85fb3a3299e..40936e1b597ca 100644
--- a/java/test/org/openqa/selenium/remote/RemoteWebDriverScreenshotTest.java
+++ b/java/test/org/openqa/selenium/remote/RemoteWebDriverScreenshotTest.java
@@ -20,7 +20,6 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.openqa.selenium.OutputType.BASE64;
-import static org.openqa.selenium.testing.drivers.Browser.HTMLUNIT;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
@@ -30,7 +29,6 @@
import org.openqa.selenium.testing.Ignore;
import org.openqa.selenium.testing.JupiterTestBase;
-@Ignore(HTMLUNIT)
class RemoteWebDriverScreenshotTest extends JupiterTestBase {
@Test
diff --git a/java/test/org/openqa/selenium/testing/BUILD.bazel b/java/test/org/openqa/selenium/testing/BUILD.bazel
index 04b6a55f62a53..9bc398860502a 100644
--- a/java/test/org/openqa/selenium/testing/BUILD.bazel
+++ b/java/test/org/openqa/selenium/testing/BUILD.bazel
@@ -65,7 +65,6 @@ java_library(
artifact("org.junit.platform:junit-platform-commons"),
artifact("org.eclipse.mylyn.github:org.eclipse.egit.github.core"),
artifact("org.assertj:assertj-core"),
- artifact("org.seleniumhq.selenium:htmlunit-driver"),
] + JUNIT5_DEPS,
)
diff --git a/java/test/org/openqa/selenium/testing/TestUtilities.java b/java/test/org/openqa/selenium/testing/TestUtilities.java
index f1bc57265c482..3cbe9971a7526 100644
--- a/java/test/org/openqa/selenium/testing/TestUtilities.java
+++ b/java/test/org/openqa/selenium/testing/TestUtilities.java
@@ -30,7 +30,6 @@
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Platform;
import org.openqa.selenium.WebDriver;
-import org.openqa.selenium.htmlunit.HtmlUnitDriver;
public class TestUtilities {
@@ -40,9 +39,6 @@ public static String getUserAgent(WebDriver driver) {
} catch (Throwable e) {
// Some drivers will only execute JS once a page has been loaded. Since those
// drivers aren't Firefox or IE, we don't worry about that here.
- //
- // Non-javascript-enabled HtmlUnit throws an UnsupportedOperationException here.
- // Let's just ignore that.
return "";
}
}
@@ -61,7 +57,7 @@ public static boolean isInternetExplorer(WebDriver driver) {
}
public static boolean isChrome(WebDriver driver) {
- return !(driver instanceof HtmlUnitDriver) && getUserAgent(driver).contains("Chrome");
+ return getUserAgent(driver).contains("Chrome");
}
public static int getChromeVersion(WebDriver driver) {
diff --git a/java/test/org/openqa/selenium/testing/drivers/BUILD.bazel b/java/test/org/openqa/selenium/testing/drivers/BUILD.bazel
index afa80c5fa2069..cd53ff5a7b1ff 100644
--- a/java/test/org/openqa/selenium/testing/drivers/BUILD.bazel
+++ b/java/test/org/openqa/selenium/testing/drivers/BUILD.bazel
@@ -55,6 +55,5 @@ java_library(
"//java/test/org/openqa/selenium/build",
artifact("com.google.guava:guava"),
artifact("org.junit.jupiter:junit-jupiter-api"),
- artifact("org.seleniumhq.selenium:htmlunit-driver"),
] + JUNIT5_DEPS,
)
diff --git a/java/test/org/openqa/selenium/testing/drivers/DefaultDriverSupplier.java b/java/test/org/openqa/selenium/testing/drivers/DefaultDriverSupplier.java
index 757ee03e8073f..2bd5cdcb99d58 100644
--- a/java/test/org/openqa/selenium/testing/drivers/DefaultDriverSupplier.java
+++ b/java/test/org/openqa/selenium/testing/drivers/DefaultDriverSupplier.java
@@ -25,7 +25,6 @@
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverInfo;
-import org.openqa.selenium.htmlunit.HtmlUnitDriver;
class DefaultDriverSupplier implements Supplier {
@@ -40,10 +39,6 @@ public WebDriver get() {
Function driverConstructor;
if (capabilities != null) {
- if (org.openqa.selenium.remote.Browser.HTMLUNIT.is(capabilities)) {
- return new HtmlUnitDriver();
- }
-
return ServiceLoader.load(WebDriverInfo.class).stream()
.map(ServiceLoader.Provider::get)
.filter(info -> info.isSupporting(capabilities))
From 2e5cec5da5629e6f422f79edd5a457fd772bd286 Mon Sep 17 00:00:00 2001
From: titusfortner
Date: Thu, 5 Oct 2023 08:13:25 -0500
Subject: [PATCH 49/90] [rb] make it easier in ruby remote tests to specify a
grid jar
---
.../selenium/webdriver/spec_support/test_environment.rb | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/rb/spec/integration/selenium/webdriver/spec_support/test_environment.rb b/rb/spec/integration/selenium/webdriver/spec_support/test_environment.rb
index 3dff99e42081f..15787b2b5235d 100644
--- a/rb/spec/integration/selenium/webdriver/spec_support/test_environment.rb
+++ b/rb/spec/integration/selenium/webdriver/spec_support/test_environment.rb
@@ -106,9 +106,9 @@ def remote_server?
end
def remote_server_jar
- jar = 'java/src/org/openqa/selenium/grid/selenium_server_deploy.jar'
+ jar = 'selenium_server_deploy.jar'
test_jar = Pathname.new(Dir.pwd).join(jar)
- built_jar = root.join("bazel-bin/#{jar}")
+ built_jar = root.join("bazel-bin/java/src/org/openqa/selenium/grid/#{jar}")
jar = if File.exist?(test_jar) && ENV['DOWNLOAD_SERVER'].nil?
test_jar
elsif File.exist?(built_jar) && ENV['DOWNLOAD_SERVER'].nil?
From 9bf2950ced56caa7532849505153c2ca6aae5f33 Mon Sep 17 00:00:00 2001
From: Alexey Pelykh
Date: Thu, 5 Oct 2023 15:56:23 +0200
Subject: [PATCH 50/90] Fix dangling log_output in Service (#12871)
The isinstance check was faulty and checked wrong type
Fixes #12870
---
py/selenium/webdriver/common/service.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/py/selenium/webdriver/common/service.py b/py/selenium/webdriver/common/service.py
index 395a098155c53..6a2eeea87e316 100644
--- a/py/selenium/webdriver/common/service.py
+++ b/py/selenium/webdriver/common/service.py
@@ -21,10 +21,10 @@
import typing
from abc import ABC
from abc import abstractmethod
+from io import IOBase
from platform import system
from subprocess import PIPE
from time import sleep
-from typing import TextIO
from urllib import request
from urllib.error import URLError
@@ -136,7 +136,7 @@ def stop(self) -> None:
"""Stops the service."""
if self.log_output != PIPE:
- if isinstance(self.log_output, TextIO):
+ if isinstance(self.log_output, IOBase):
self.log_output.close()
elif isinstance(self.log_output, int):
os.close(self.log_output)
From 87dcb366646fa938c6323c3a17b454eb84201e6a Mon Sep 17 00:00:00 2001
From: Nikolay Borisenko
Date: Thu, 5 Oct 2023 19:28:00 +0300
Subject: [PATCH 51/90] [dotnet] Make bazel + nuget work on GitHub actions
(Linux and MacOS)
---
dotnet/private/dotnet_utils.bzl | 3 +++
1 file changed, 3 insertions(+)
diff --git a/dotnet/private/dotnet_utils.bzl b/dotnet/private/dotnet_utils.bzl
index 066d6cac47fa3..afd72bee99007 100644
--- a/dotnet/private/dotnet_utils.bzl
+++ b/dotnet/private/dotnet_utils.bzl
@@ -21,6 +21,9 @@ export CWD=$(pwd)
export APPDATA="$(pwd)"
export PROGRAMFILES="$(pwd)"
+# Required to make NuGet tool work on non-writable home path like GitHub actions
+export XDG_DATA_HOME=$(mktemp -d)
+
# Create `global.json` to trick .Net into using the hermetic toolchain
# https://learn.microsoft.com/en-us/dotnet/core/tools/global-json
echo '{{"sdk": {{"version": "{version}"}} }}' >$(pwd)/global.json
From d13ac3307f475a96c06538cde9a31263ce398c79 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Boni=20Garc=C3=ADa?=
Date: Thu, 5 Oct 2023 21:43:43 +0200
Subject: [PATCH 52/90] [rust] Avoids resolving symbolic links and consider the
cache might not be writable (#12877)
* [rust] Canonicalize paths only in Windows
* [rust] Warning if writing metadata is not possible
* [rust] Fix condition for displaying warning due to incompatible version
* [rust] Warning when cache path cannot be created
* [rust] Make metadata optional
* [rust] Improve warning messages
* [rust] Clean function to write metadata
* [rust] Rename path buf function
* [rust] Fix logic related to checking driver version (broken in 5e2972e)
---
rust/src/chrome.rs | 16 +++++----
rust/src/config.rs | 6 ++--
rust/src/edge.rs | 7 ++--
rust/src/files.rs | 21 ++++++-----
rust/src/firefox.rs | 16 +++++----
rust/src/grid.rs | 6 ++--
rust/src/iexplorer.rs | 7 ++--
rust/src/lib.rs | 83 +++++++++++++++++++++++++------------------
rust/src/metadata.rs | 61 +++++++++++++++++--------------
rust/tests/common.rs | 4 +--
10 files changed, 129 insertions(+), 98 deletions(-)
diff --git a/rust/src/chrome.rs b/rust/src/chrome.rs
index 6a1fe5822ac9f..80601856e41c5 100644
--- a/rust/src/chrome.rs
+++ b/rust/src/chrome.rs
@@ -26,7 +26,7 @@ use std::path::PathBuf;
use crate::config::ARCH::{ARM64, X32};
use crate::config::OS::{LINUX, MACOS, WINDOWS};
use crate::downloads::{parse_json_from_url, read_version_from_link};
-use crate::files::{compose_driver_path_in_cache, path_buf_to_string, BrowserPath};
+use crate::files::{compose_driver_path_in_cache, path_to_string, BrowserPath};
use crate::logger::Logger;
use crate::metadata::{
create_driver_metadata, get_driver_version_from_metadata, get_metadata, write_metadata,
@@ -277,7 +277,8 @@ impl SeleniumManager for ChromeManager {
fn request_driver_version(&mut self) -> Result> {
let major_browser_version_binding = self.get_major_browser_version();
let major_browser_version = major_browser_version_binding.as_str();
- let mut metadata = get_metadata(self.get_logger(), self.get_cache_path()?);
+ let cache_path = self.get_cache_path()?;
+ let mut metadata = get_metadata(self.get_logger(), &cache_path);
match get_driver_version_from_metadata(
&metadata.drivers,
@@ -326,7 +327,7 @@ impl SeleniumManager for ChromeManager {
&driver_version,
driver_ttl,
));
- write_metadata(&metadata, self.get_logger(), self.get_cache_path()?);
+ write_metadata(&metadata, self.get_logger(), cache_path);
}
Ok(driver_version)
}
@@ -381,7 +382,7 @@ impl SeleniumManager for ChromeManager {
fn get_driver_path_in_cache(&self) -> Result> {
Ok(compose_driver_path_in_cache(
- self.get_cache_path()?,
+ self.get_cache_path()?.unwrap_or_default(),
self.driver_name,
self.get_os(),
self.get_platform_label(),
@@ -412,7 +413,8 @@ impl SeleniumManager for ChromeManager {
fn download_browser(&mut self) -> Result