From 8ff5a11f7385d56463d1de3995dd08dbe1e6346e Mon Sep 17 00:00:00 2001 From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com> Date: Mon, 14 Jul 2025 09:08:03 -0400 Subject: [PATCH 1/7] [py] WIP - Support ARM binary selection for Selenium Manager --- py/selenium/webdriver/common/selenium_manager.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/py/selenium/webdriver/common/selenium_manager.py b/py/selenium/webdriver/common/selenium_manager.py index 9caec37e10c7f..4e40a80e1fb48 100644 --- a/py/selenium/webdriver/common/selenium_manager.py +++ b/py/selenium/webdriver/common/selenium_manager.py @@ -14,6 +14,7 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. + import json import logging import os @@ -77,14 +78,19 @@ def _get_binary() -> Path: else: allowed = { ("darwin", "any"): "macos/selenium-manager", - ("win32", "any"): "windows/selenium-manager.exe", - ("cygwin", "any"): "windows/selenium-manager.exe", + ("win32", "amd64"): "windows/selenium-manager.exe", + ("win32", "arm64"): "windows/selenium-manager-arm64.exe", + ("cygwin", "amd64"): "windows/selenium-manager.exe", + ("cygwin", "arm64"): "windows/selenium-manager-arm64.exe", ("linux", "x86_64"): "linux/selenium-manager", + ("linux", "arm64"): "linux/selenium-manager-arm64", ("freebsd", "x86_64"): "linux/selenium-manager", + ("freebsd", "arm64"): "linux/selenium-manager-arm64", ("openbsd", "x86_64"): "linux/selenium-manager", + ("openbsd", "arm64"): "linux/selenium-manager-arm64", } - arch = platform.machine() if sys.platform in ("linux", "freebsd", "openbsd") else "any" + arch = "any" if sys.platform == "darwin" else platform.machine().lower() if sys.platform in ["freebsd", "openbsd"]: logger.warning("Selenium Manager binary may not be compatible with %s; verify settings", sys.platform) From 39832012be4f0bb307cd4ff6022c85622a9000b7 Mon Sep 17 00:00:00 2001 From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com> Date: Mon, 14 Jul 2025 09:19:12 -0400 Subject: [PATCH 2/7] [py] Update build files --- py/BUILD.bazel | 12 ++++++++++++ py/pyproject.toml | 2 ++ 2 files changed, 14 insertions(+) diff --git a/py/BUILD.bazel b/py/BUILD.bazel index 37ace3ea3399c..d0fb7d3c0c918 100644 --- a/py/BUILD.bazel +++ b/py/BUILD.bazel @@ -100,6 +100,12 @@ copy_file( out = "selenium/webdriver/common/linux/selenium-manager", ) +copy_file( + name = "manager-linux-arm64", + src = "//common/manager:selenium-manager-linux-arm64", + out = "selenium/webdriver/common/linux/selenium-manager-arm64", +) + copy_file( name = "manager-macos", src = "//common/manager:selenium-manager-macos", @@ -112,6 +118,12 @@ copy_file( out = "selenium/webdriver/common/windows/selenium-manager.exe", ) +copy_file( + name = "manager-windows-arm64", + src = "//common/manager:selenium-manager-windows-arm64", + out = "selenium/webdriver/common/windows/selenium-manager-arm64.exe", +) + copy_file( name = "get-attribute", src = "//javascript/webdriver/atoms:get-attribute.js", diff --git a/py/pyproject.toml b/py/pyproject.toml index 948d5a5a49857..08ffc68b36a1c 100644 --- a/py/pyproject.toml +++ b/py/pyproject.toml @@ -64,7 +64,9 @@ target = "selenium.webdriver.common.selenium-manager" "prune*", "selenium.egg-info*", "selenium-manager", + "selenium-manager-arm64", "selenium-manager.exe", + "selenium-manager-arm64.exe", "CHANGES", "LICENSE" ] From eb8e67386429bb93e6fedbae8390fdbe1be17b34 Mon Sep 17 00:00:00 2001 From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com> Date: Mon, 14 Jul 2025 10:20:44 -0400 Subject: [PATCH 3/7] [py] Update tests and add aarch64 --- .../webdriver/common/selenium_manager.py | 3 ++ .../common/selenium_manager_tests.py | 30 ++++++++++++++----- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/py/selenium/webdriver/common/selenium_manager.py b/py/selenium/webdriver/common/selenium_manager.py index 4e40a80e1fb48..0fb7d8a91a04a 100644 --- a/py/selenium/webdriver/common/selenium_manager.py +++ b/py/selenium/webdriver/common/selenium_manager.py @@ -84,10 +84,13 @@ def _get_binary() -> Path: ("cygwin", "arm64"): "windows/selenium-manager-arm64.exe", ("linux", "x86_64"): "linux/selenium-manager", ("linux", "arm64"): "linux/selenium-manager-arm64", + ("linux", "aarch64"): "linux/selenium-manager-arm64", ("freebsd", "x86_64"): "linux/selenium-manager", ("freebsd", "arm64"): "linux/selenium-manager-arm64", + ("freebsd", "aarch64"): "linux/selenium-manager-arm64", ("openbsd", "x86_64"): "linux/selenium-manager", ("openbsd", "arm64"): "linux/selenium-manager-arm64", + ("openbsd", "aarch64"): "linux/selenium-manager-arm64", } arch = "any" if sys.platform == "darwin" else platform.machine().lower() diff --git a/py/test/selenium/webdriver/common/selenium_manager_tests.py b/py/test/selenium/webdriver/common/selenium_manager_tests.py index 9195badf0ed21..49e1f1dc6594f 100644 --- a/py/test/selenium/webdriver/common/selenium_manager_tests.py +++ b/py/test/selenium/webdriver/common/selenium_manager_tests.py @@ -53,22 +53,38 @@ def test_uses_environment_variable(monkeypatch): def test_uses_windows(monkeypatch): monkeypatch.setattr(sys, "platform", "win32") + monkeypatch.setattr("platform.machine", lambda: "AMD64") binary = SeleniumManager()._get_binary() project_root = Path(selenium.__file__).parent.parent assert binary == project_root.joinpath("selenium/webdriver/common/windows/selenium-manager.exe") +def test_uses_windows_arm(monkeypatch): + monkeypatch.setattr(sys, "platform", "win32") + monkeypatch.setattr("platform.machine", lambda: "arm64") + binary = SeleniumManager()._get_binary() + + project_root = Path(selenium.__file__).parent.parent + assert binary == project_root.joinpath("selenium/webdriver/common/windows/selenium-manager-arm64.exe") + + def test_uses_linux(monkeypatch): monkeypatch.setattr(sys, "platform", "linux") + monkeypatch.setattr("platform.machine", lambda: "x86_64") - if platform.machine() == "arm64": - with pytest.raises(WebDriverException, match="Unsupported platform/architecture combination: linux/arm64"): - SeleniumManager()._get_binary() - else: - binary = SeleniumManager()._get_binary() - project_root = Path(selenium.__file__).parent.parent - assert binary == project_root.joinpath("selenium/webdriver/common/linux/selenium-manager") + binary = SeleniumManager()._get_binary() + project_root = Path(selenium.__file__).parent.parent + assert binary == project_root.joinpath("selenium/webdriver/common/linux/selenium-manager") + + +def test_uses_linux(monkeypatch): + monkeypatch.setattr(sys, "platform", "linux") + monkeypatch.setattr("platform.machine", lambda: "arm64") + + binary = SeleniumManager()._get_binary() + project_root = Path(selenium.__file__).parent.parent + assert binary == project_root.joinpath("selenium/webdriver/common/linux/selenium-manager-arm64") def test_uses_mac(monkeypatch): From 469f91b5d366b3b65c9bbdaf6b9fdc823e89072c Mon Sep 17 00:00:00 2001 From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com> Date: Mon, 14 Jul 2025 10:25:20 -0400 Subject: [PATCH 4/7] [py] Update supported architectures --- py/selenium/webdriver/common/selenium_manager.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/py/selenium/webdriver/common/selenium_manager.py b/py/selenium/webdriver/common/selenium_manager.py index 0fb7d8a91a04a..e19623b4f6453 100644 --- a/py/selenium/webdriver/common/selenium_manager.py +++ b/py/selenium/webdriver/common/selenium_manager.py @@ -79,15 +79,20 @@ def _get_binary() -> Path: allowed = { ("darwin", "any"): "macos/selenium-manager", ("win32", "amd64"): "windows/selenium-manager.exe", + ("win32", "x86_64"): "windows/selenium-manager.exe", ("win32", "arm64"): "windows/selenium-manager-arm64.exe", ("cygwin", "amd64"): "windows/selenium-manager.exe", + ("cygwin", "x86_64"): "windows/selenium-manager.exe", ("cygwin", "arm64"): "windows/selenium-manager-arm64.exe", + ("linux", "amd64"): "linux/selenium-manager", ("linux", "x86_64"): "linux/selenium-manager", ("linux", "arm64"): "linux/selenium-manager-arm64", ("linux", "aarch64"): "linux/selenium-manager-arm64", + ("freebsd", "amd64"): "linux/selenium-manager", ("freebsd", "x86_64"): "linux/selenium-manager", ("freebsd", "arm64"): "linux/selenium-manager-arm64", ("freebsd", "aarch64"): "linux/selenium-manager-arm64", + ("openbsd", "amd64"): "linux/selenium-manager", ("openbsd", "x86_64"): "linux/selenium-manager", ("openbsd", "arm64"): "linux/selenium-manager-arm64", ("openbsd", "aarch64"): "linux/selenium-manager-arm64", From 2674d49e8d4fc26f699848efd6bfed8b275d3a10 Mon Sep 17 00:00:00 2001 From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com> Date: Mon, 14 Jul 2025 10:32:56 -0400 Subject: [PATCH 5/7] [py] Add aarch64 for win32 --- py/selenium/webdriver/common/selenium_manager.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/py/selenium/webdriver/common/selenium_manager.py b/py/selenium/webdriver/common/selenium_manager.py index e19623b4f6453..b4d85acee449d 100644 --- a/py/selenium/webdriver/common/selenium_manager.py +++ b/py/selenium/webdriver/common/selenium_manager.py @@ -81,9 +81,11 @@ def _get_binary() -> Path: ("win32", "amd64"): "windows/selenium-manager.exe", ("win32", "x86_64"): "windows/selenium-manager.exe", ("win32", "arm64"): "windows/selenium-manager-arm64.exe", + ("win32", "aarch64"): "windows/selenium-manager-arm64.exe", ("cygwin", "amd64"): "windows/selenium-manager.exe", ("cygwin", "x86_64"): "windows/selenium-manager.exe", ("cygwin", "arm64"): "windows/selenium-manager-arm64.exe", + ("cygwin", "aarch64"): "windows/selenium-manager-arm64.exe", ("linux", "amd64"): "linux/selenium-manager", ("linux", "x86_64"): "linux/selenium-manager", ("linux", "arm64"): "linux/selenium-manager-arm64", From cee55254669346dbf5f16c7ff2edf051326b4d2b Mon Sep 17 00:00:00 2001 From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com> Date: Mon, 14 Jul 2025 10:36:49 -0400 Subject: [PATCH 6/7] [py] Fix duplicate test name and remove unused import --- py/test/selenium/webdriver/common/selenium_manager_tests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/py/test/selenium/webdriver/common/selenium_manager_tests.py b/py/test/selenium/webdriver/common/selenium_manager_tests.py index 49e1f1dc6594f..1bc0aec9b8731 100644 --- a/py/test/selenium/webdriver/common/selenium_manager_tests.py +++ b/py/test/selenium/webdriver/common/selenium_manager_tests.py @@ -14,8 +14,8 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. + import json -import platform import sys from pathlib import Path from unittest import mock @@ -78,7 +78,7 @@ def test_uses_linux(monkeypatch): assert binary == project_root.joinpath("selenium/webdriver/common/linux/selenium-manager") -def test_uses_linux(monkeypatch): +def test_uses_linux_arm(monkeypatch): monkeypatch.setattr(sys, "platform", "linux") monkeypatch.setattr("platform.machine", lambda: "arm64") From 6f52ee7c08ac0f85a833c1c8bb36e3f2b436b79a Mon Sep 17 00:00:00 2001 From: Corey Goldberg <1113081+cgoldberg@users.noreply.github.com> Date: Wed, 15 Oct 2025 14:16:06 -0400 Subject: [PATCH 7/7] Merge trunk and fix conflicts --- .github/ISSUE_TEMPLATE/bug-report.yml | 2 +- .github/workflows/bazel.yml | 10 + .github/workflows/ci-python.yml | 79 +- .github/workflows/ci-ruby.yml | 2 +- .github/workflows/update-documentation.yml | 4 +- AUTHORS | 8 + MODULE.bazel | 114 +- Rakefile | 2 +- WORKSPACE | 10 +- .../chromium/{v137 => v140}/BUILD.bazel | 0 .../{v137 => v140}/browser_protocol.pdl | 434 +- .../chromium/{v137 => v140}/js_protocol.pdl | 0 common/mirror/selenium | 70 +- common/repositories.bzl | 66 +- common/selenium_manager.bzl | 12 +- dotnet/CHANGELOG | 24 + dotnet/selenium-dotnet-version.bzl | 4 +- dotnet/src/webdriver/BiDi/BiDi.cs | 171 +- .../webdriver/BiDi/Browser/BrowserModule.cs | 42 +- .../webdriver/BiDi/Browser/ClientWindow.cs | 4 + .../BiDi/Browser/ClientWindowInfo.cs | 4 + .../webdriver/BiDi/Browser/CloseCommand.cs | 4 +- .../BiDi/Browser/CreateUserContextCommand.cs | 4 +- .../BiDi/Browser/GetClientWindowsCommand.cs | 21 +- .../BiDi/Browser/GetUserContextsCommand.cs | 19 +- .../BiDi/Browser/RemoveUserContextCommand.cs | 4 +- .../Browser/SetDownloadBehaviorCommand.cs | 45 + .../webdriver/BiDi/Browser/UserContextInfo.cs | 2 +- .../BiDi/BrowsingContext/ActivateCommand.cs | 4 +- .../BiDi/BrowsingContext/BrowsingContext.cs | 24 +- .../BrowsingContextInputModule.cs | 7 +- .../BrowsingContext/BrowsingContextModule.cs | 106 +- .../BrowsingContextNetworkModule.cs | 3 +- .../BrowsingContextScriptModule.cs | 5 +- .../CaptureScreenshotCommand.cs | 2 + .../BiDi/BrowsingContext/CloseCommand.cs | 4 +- .../BiDi/BrowsingContext/CreateCommand.cs | 3 + .../BrowsingContext/DownloadEndEventArgs.cs | 38 + .../DownloadWillBeginEventArgs.cs | 25 + .../BiDi/BrowsingContext/GetTreeCommand.cs | 19 +- .../HandleUserPromptCommand.cs | 4 +- .../IBaseNavigationInfo.cs} | 19 +- .../BrowsingContext/LocateNodesCommand.cs | 19 +- .../webdriver/BiDi/BrowsingContext/Locator.cs | 2 + .../BiDi/BrowsingContext/NavigateCommand.cs | 5 +- .../BiDi/BrowsingContext/Navigation.cs | 4 + .../BiDi/BrowsingContext/NavigationInfo.cs | 2 +- .../BiDi/BrowsingContext/PrintCommand.cs | 4 + .../BiDi/BrowsingContext/ReloadCommand.cs | 4 +- .../BrowsingContext/SetViewportCommand.cs | 4 +- .../UserPromptOpenedEventArgs.cs | 2 + .../webdriver/BiDi/Communication/Broker.cs | 162 +- .../webdriver/BiDi/Communication/Command.cs | 2 +- .../BiDi/Communication/EventHandler.cs | 14 +- .../Json/BiDiJsonSerializerContext.cs | 55 +- ...Converter.cs => CamelCaseEnumConverter.cs} | 24 +- ...sultConverter.cs => CollectorConverter.cs} | 28 +- .../GetClientWindowsResultConverter.cs | 43 - .../Enumerable/GetCookiesResultConverter.cs | 45 - .../Enumerable/LocateNodesResultConverter.cs | 44 - .../Json/Converters/KebabCaseEnumConverter.cs | 27 + .../DownloadEndEventArgsConverter.cs} | 24 +- .../Json/Converters/RealmTypeConverter.cs | 64 - .../Json/Converters/SpecialNumberConverter.cs | 97 + .../BiDi/Emulation/EmulationModule.cs | 91 + ...SetForcedColorsModeThemeOverrideCommand.cs | 46 + .../SetGeolocationOverrideCommand.cs | 63 + .../Emulation/SetLocaleOverrideCommand.cs | 38 + .../SetScreenOrientationOverrideCommand.cs | 57 + .../Emulation/SetScriptingEnabledCommand.cs | 38 + .../Emulation/SetTimezoneOverrideCommand.cs | 38 + .../Emulation/SetUserAgentOverrideCommand.cs | 38 + .../src/webdriver/BiDi/Input/InputModule.cs | 14 +- dotnet/src/webdriver/BiDi/Input/Origin.cs | 4 + .../BiDi/Input/PerformActionsCommand.cs | 4 +- .../BiDi/Input/ReleaseActionsCommand.cs | 4 +- .../webdriver/BiDi/Input/SetFilesCommand.cs | 4 +- .../src/webdriver/BiDi/Input/SourceActions.cs | 4 + dotnet/src/webdriver/BiDi/Log/LogEntry.cs | 5 + dotnet/src/webdriver/BiDi/Log/LogModule.cs | 6 +- dotnet/src/webdriver/BiDi/Module.cs | 24 +- .../BiDi/Network/AddDataCollectorCommand.cs | 53 + .../BiDi/Network/AddInterceptCommand.cs | 5 +- .../src/webdriver/BiDi/Network/BytesValue.cs | 10 + .../src/webdriver/BiDi/Network/Collector.cs | 58 + .../BiDi/Network/ContinueRequestCommand.cs | 4 +- .../BiDi/Network/ContinueResponseCommand.cs | 4 +- .../BiDi/Network/ContinueWithAuthCommand.cs | 3 +- dotnet/src/webdriver/BiDi/Network/Cookie.cs | 1 + .../BiDi/Network/FailRequestCommand.cs | 4 +- .../webdriver/BiDi/Network/GetDataCommand.cs | 36 + .../src/webdriver/BiDi/Network/Initiator.cs | 4 + .../webdriver/BiDi/Network/NetworkModule.cs | 92 +- .../BiDi/Network/ProvideResponseCommand.cs | 4 +- .../Network/RemoveDataCollectorCommand.cs | 31 + .../BiDi/Network/RemoveInterceptCommand.cs | 4 +- dotnet/src/webdriver/BiDi/Network/Request.cs | 4 + .../BiDi/Network/SetCacheBehaviorCommand.cs | 9 +- .../BiDi/Network/SetExtraHeadersCommand.cs | 37 + .../BiDi/Script/AddPreloadScriptCommand.cs | 2 +- dotnet/src/webdriver/BiDi/Script/Channel.cs | 4 + .../webdriver/BiDi/Script/DisownCommand.cs | 6 +- .../webdriver/BiDi/Script/EvaluateCommand.cs | 3 + .../webdriver/BiDi/Script/GetRealmsCommand.cs | 19 +- .../src/webdriver/BiDi/Script/LocalValue.cs | 3 +- dotnet/src/webdriver/BiDi/Script/RealmInfo.cs | 3 + dotnet/src/webdriver/BiDi/Script/RealmType.cs | 4 + .../src/webdriver/BiDi/Script/RemoteValue.cs | 6 +- .../BiDi/Script/RemovePreloadScriptCommand.cs | 4 +- .../webdriver/BiDi/Script/ResultOwnership.cs | 4 + .../src/webdriver/BiDi/Script/ScriptModule.cs | 38 +- .../BiDi/Script/SerializationOptions.cs | 4 + .../src/webdriver/BiDi/Session/EndCommand.cs | 4 +- .../webdriver/BiDi/Session/SessionModule.cs | 23 +- .../webdriver/BiDi/Session/Subscription.cs | 4 + .../BiDi/Session/UnsubscribeCommand.cs | 17 +- .../BiDi/Session/UserPromptHandler.cs | 4 + .../BiDi/Storage/GetCookiesCommand.cs | 22 +- .../webdriver/BiDi/Storage/StorageModule.cs | 8 +- .../BiDi/WebExtension/UninstallCommand.cs | 4 +- .../BiDi/WebExtension/WebExtensionModule.cs | 8 +- .../Chromium/ChromiumDriverService.cs | 2 + .../src/webdriver/DevTools/DevToolsDomains.cs | 4 +- .../V137Domains.cs => v140/V140Domains.cs} | 22 +- .../V140JavaScript.cs} | 16 +- .../{v137/V137Log.cs => v140/V140Log.cs} | 14 +- .../V137Network.cs => v140/V140Network.cs} | 24 +- .../V137Target.cs => v140/V140Target.cs} | 14 +- dotnet/src/webdriver/DriverService.cs | 26 +- .../webdriver/Firefox/FirefoxDriverService.cs | 5 + dotnet/src/webdriver/Proxy.cs | 29 - .../nuget/build/Selenium.WebDriver.targets | 2 +- dotnet/test/common/BiDi/BiDiFixture.cs | 2 +- .../test/common/BiDi/Browser/BrowserTest.cs | 58 +- .../BrowsingContextEventsTest.cs | 67 + .../BrowsingContext/BrowsingContextTest.cs | 28 +- .../common/BiDi/Emulation/EmulationTest.cs | 200 + dotnet/test/common/BiDi/Input/SetFilesTest.cs | 4 +- .../test/common/BiDi/Network/NetworkTest.cs | 46 + .../BiDi/Script/CallFunctionLocalValueTest.cs | 2 - .../BiDi/Script/CallFunctionParameterTest.cs | 10 +- .../BiDi/Script/EvaluateParametersTest.cs | 10 +- .../common/BiDi/Script/ScriptCommandsTest.cs | 42 +- .../common/BiDi/Script/ScriptEventsTest.cs | 2 +- .../test/common/BiDi/Storage/StorageTest.cs | 48 +- .../BiDi/WebExtension/WebExtensionTest.cs | 18 +- .../StableChannelChromeDriver.cs | 2 +- .../common/DevTools/DevToolsConsoleTest.cs | 2 +- .../test/common/DevTools/DevToolsLogTest.cs | 2 +- .../common/DevTools/DevToolsNetworkTest.cs | 2 +- .../DevTools/DevToolsPerformanceTest.cs | 2 +- .../common/DevTools/DevToolsProfilerTest.cs | 2 +- .../common/DevTools/DevToolsSecurityTest.cs | 2 +- .../test/common/DevTools/DevToolsTabsTest.cs | 2 +- .../common/DevTools/DevToolsTargetTest.cs | 4 +- dotnet/test/common/ProxyTest.cs | 13 - java/BUILD.bazel | 35 + java/CHANGELOG | 18 + java/maven_install.json | 445 +- java/private/export.bzl | 2 +- java/private/java_library.bzl | 49 + java/private/library.bzl | 2 +- java/src/org/openqa/selenium/bidi/BUILD.bazel | 1 + .../openqa/selenium/bidi/BiDiProvider.java | 28 +- .../openqa/selenium/concurrent/BUILD.bazel | 4 + .../org/openqa/selenium/concurrent/Lazy.java | 53 + .../selenium/concurrent/package-info.java | 21 + .../org/openqa/selenium/devtools/BUILD.bazel | 3 + .../selenium/devtools/DevToolsProvider.java | 34 +- .../devtools/RequestFailedException.java | 2 + .../devtools/{v137 => v140}/BUILD.bazel | 2 +- .../v140CdpInfo.java} | 8 +- .../v140Domains.java} | 26 +- .../v137Events.java => v140/v140Events.java} | 18 +- .../v140Javascript.java} | 14 +- .../{v137/v137Log.java => v140/v140Log.java} | 10 +- .../v140Network.java} | 20 +- .../v137Target.java => v140/v140Target.java} | 24 +- .../org/openqa/selenium/devtools/versions.bzl | 2 +- .../grid/distributor/NodeRegistry.java | 9 +- .../distributor/local/LocalDistributor.java | 40 +- .../distributor/local/LocalNodeRegistry.java | 11 +- .../selenium/grid/sessionmap/jdbc/BUILD.bazel | 1 + .../grid/sessionmap/jdbc/JdbcException.java | 9 +- .../grid/web/RoutableHttpClientFactory.java | 15 + .../selenium/manager/SeleniumManager.java | 3 +- .../openqa/selenium/remote/DriverCommand.java | 2 +- .../remote/NoSuchDriverException.java | 7 +- .../selenium/remote/RemoteWebDriver.java | 6 +- .../remote/RemoteWebDriverBuilder.java | 17 + .../remote/UnreachableBrowserException.java | 7 +- .../openqa/selenium/remote/http/BUILD.bazel | 1 + .../http/ConnectionFailedException.java | 7 +- .../selenium/remote/http/HttpClient.java | 25 + .../remote/http/jdk/JdkHttpClient.java | 13 + .../remote/tracing/TracedHttpClient.java | 13 + .../safari/ConnectionClosedException.java | 5 +- .../openqa/selenium/concurrent/BUILD.bazel | 14 + .../openqa/selenium/concurrent/LazyTest.java | 66 + .../local/LocalDistributorTest.java | 134 + .../openqa/selenium/grid/router/BUILD.bazel | 38 +- .../grid/testing/PassthroughHttpClient.java | 13 + .../remote/ProtocolHandshakeTest.java | 14 + .../http/NativeHttpClientMethodsTest.java | 303 + java/version.bzl | 2 +- .../components/ThemeToggle/ThemeToggle.tsx | 54 + .../grid-ui/src/components/TopBar/TopBar.tsx | 5 +- .../grid-ui/src/contexts/ThemeContext.tsx | 76 + javascript/grid-ui/src/index.tsx | 10 +- .../grid-ui/src/tests/__mocks__/useTheme.tsx | 25 + .../src/tests/components/ThemeToggle.test.tsx | 85 + .../src/tests/components/TopBar.test.tsx | 52 +- javascript/grid-ui/src/theme/theme.tsx | 23 +- javascript/grid-ui/src/theme/themes.tsx | 72 + javascript/selenium-webdriver/BUILD.bazel | 4 +- javascript/selenium-webdriver/CHANGES.md | 4 + javascript/selenium-webdriver/package.json | 2 +- multitool.lock.json | 20 +- py/BUILD.bazel | 14 +- py/CHANGES | 18 + py/conftest.py | 16 +- py/docs/requirements.txt | 2 +- py/docs/source/conf.py | 4 +- py/docs/source/index.rst | 2 +- py/pyproject.toml | 12 +- py/requirements.txt | 14 +- py/requirements_lock.txt | 191 +- py/selenium/__init__.py | 2 +- py/selenium/types.py | 1 + py/selenium/webdriver/__init__.py | 2 +- py/selenium/webdriver/chrome/service.py | 19 +- py/selenium/webdriver/chromium/service.py | 18 +- py/selenium/webdriver/chromium/webdriver.py | 15 +- .../webdriver/common/virtual_authenticator.py | 4 +- py/selenium/webdriver/firefox/webdriver.py | 3 + py/selenium/webdriver/ie/webdriver.py | 3 + py/selenium/webdriver/remote/client_config.py | 19 +- py/selenium/webdriver/remote/webdriver.py | 12 +- .../webdriver/remote/websocket_connection.py | 23 +- py/selenium/webdriver/safari/webdriver.py | 3 + py/selenium/webdriver/webkitgtk/service.py | 18 +- py/selenium/webdriver/webkitgtk/webdriver.py | 3 + py/selenium/webdriver/wpewebkit/service.py | 18 +- py/selenium/webdriver/wpewebkit/webdriver.py | 3 + .../webdriver/chrome/chrome_service_tests.py | 44 +- .../selenium/webdriver/common/alerts_tests.py | 8 +- .../common/bidi_browsing_context_tests.py | 43 + .../webdriver/common/bidi_network_tests.py | 30 +- .../selenium/webdriver/common/fedcm_tests.py | 1 - .../common/selenium_manager_tests.py | 10 +- .../webdriver/common/w3c_interaction_tests.py | 2 - .../selenium/webdriver/common/window_tests.py | 7 - .../webdriver/edge/edge_service_tests.py | 44 +- .../remote/remote_connection_tests.py | 30 +- .../webdriver/remote/new_session_tests.py | 1 - .../remote/remote_connection_tests.py | 8 +- .../webdriver/remote/subtyping_tests.py | 1 - .../virtual_authenticator_options_tests.py | 1 + py/tox.ini | 4 +- rb/CHANGES | 8 + rb/Gemfile.lock | 42 +- rb/lib/selenium/devtools/BUILD.bazel | 2 +- rb/lib/selenium/devtools/version.rb | 2 +- rb/lib/selenium/webdriver/version.rb | 2 +- rb/selenium-webdriver.gemspec | 2 + .../selenium/webdriver/fedcm_spec.rb | 4 +- .../selenium/webdriver/firefox/driver_spec.rb | 4 +- .../spec_support/test_environment.rb | 6 +- .../webdriver/takes_screenshot_spec.rb | 4 +- .../selenium/webdriver/window_spec.rb | 4 +- rust/BUILD.bazel | 8 +- rust/CHANGELOG.md | 4 + rust/Cargo.Bazel.lock | 12381 +++++++--------- rust/Cargo.lock | 1284 +- rust/Cargo.toml | 24 +- rust/private/rustfmt_wrapper.bzl | 2 +- rust/src/chrome.rs | 18 +- rust/src/config.rs | 6 +- rust/src/downloads.rs | 8 +- rust/src/edge.rs | 22 +- rust/src/electron.rs | 6 +- rust/src/files.rs | 14 +- rust/src/firefox.rs | 148 +- rust/src/grid.rs | 6 +- rust/src/iexplorer.rs | 10 +- rust/src/lib.rs | 155 +- rust/src/lock.rs | 12 +- rust/src/logger.rs | 2 +- rust/src/main.rs | 62 +- rust/src/metadata.rs | 2 +- rust/src/safari.rs | 4 +- rust/src/safaritp.rs | 4 +- rust/src/stats.rs | 2 +- rust/tests/BUILD.bazel | 2 +- rust/tests/browser_download_tests.rs | 4 +- rust/tests/browser_tests.rs | 5 +- rust/tests/common.rs | 14 +- rust/tests/output_tests.rs | 2 +- 298 files changed, 11105 insertions(+), 9749 deletions(-) rename common/devtools/chromium/{v137 => v140}/BUILD.bazel (100%) rename common/devtools/chromium/{v137 => v140}/browser_protocol.pdl (97%) rename common/devtools/chromium/{v137 => v140}/js_protocol.pdl (100%) create mode 100644 dotnet/src/webdriver/BiDi/Browser/SetDownloadBehaviorCommand.cs create mode 100644 dotnet/src/webdriver/BiDi/BrowsingContext/DownloadEndEventArgs.cs create mode 100644 dotnet/src/webdriver/BiDi/BrowsingContext/DownloadWillBeginEventArgs.cs rename dotnet/src/webdriver/BiDi/{Communication/Message.cs => BrowsingContext/IBaseNavigationInfo.cs} (66%) rename dotnet/src/webdriver/BiDi/Communication/Json/Converters/{Enumerable/GetTreeResultConverter.cs => CamelCaseEnumConverter.cs} (50%) rename dotnet/src/webdriver/BiDi/Communication/Json/Converters/{Enumerable/GetRealmsResultConverter.cs => CollectorConverter.cs} (52%) delete mode 100644 dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetClientWindowsResultConverter.cs delete mode 100644 dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetCookiesResultConverter.cs delete mode 100644 dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/LocateNodesResultConverter.cs create mode 100644 dotnet/src/webdriver/BiDi/Communication/Json/Converters/KebabCaseEnumConverter.cs rename dotnet/src/webdriver/BiDi/Communication/Json/Converters/{Enumerable/GetUserContextsResultConverter.cs => Polymorphic/DownloadEndEventArgsConverter.cs} (56%) delete mode 100644 dotnet/src/webdriver/BiDi/Communication/Json/Converters/RealmTypeConverter.cs create mode 100644 dotnet/src/webdriver/BiDi/Communication/Json/Converters/SpecialNumberConverter.cs create mode 100644 dotnet/src/webdriver/BiDi/Emulation/EmulationModule.cs create mode 100644 dotnet/src/webdriver/BiDi/Emulation/SetForcedColorsModeThemeOverrideCommand.cs create mode 100644 dotnet/src/webdriver/BiDi/Emulation/SetGeolocationOverrideCommand.cs create mode 100644 dotnet/src/webdriver/BiDi/Emulation/SetLocaleOverrideCommand.cs create mode 100644 dotnet/src/webdriver/BiDi/Emulation/SetScreenOrientationOverrideCommand.cs create mode 100644 dotnet/src/webdriver/BiDi/Emulation/SetScriptingEnabledCommand.cs create mode 100644 dotnet/src/webdriver/BiDi/Emulation/SetTimezoneOverrideCommand.cs create mode 100644 dotnet/src/webdriver/BiDi/Emulation/SetUserAgentOverrideCommand.cs create mode 100644 dotnet/src/webdriver/BiDi/Network/AddDataCollectorCommand.cs create mode 100644 dotnet/src/webdriver/BiDi/Network/Collector.cs create mode 100644 dotnet/src/webdriver/BiDi/Network/GetDataCommand.cs create mode 100644 dotnet/src/webdriver/BiDi/Network/RemoveDataCollectorCommand.cs create mode 100644 dotnet/src/webdriver/BiDi/Network/SetExtraHeadersCommand.cs rename dotnet/src/webdriver/DevTools/{v137/V137Domains.cs => v140/V140Domains.cs} (78%) rename dotnet/src/webdriver/DevTools/{v137/V137JavaScript.cs => v140/V140JavaScript.cs} (94%) rename dotnet/src/webdriver/DevTools/{v137/V137Log.cs => v140/V140Log.cs} (88%) rename dotnet/src/webdriver/DevTools/{v137/V137Network.cs => v140/V140Network.cs} (95%) rename dotnet/src/webdriver/DevTools/{v137/V137Target.cs => v140/V140Target.cs} (94%) create mode 100644 dotnet/test/common/BiDi/BrowsingContext/BrowsingContextEventsTest.cs create mode 100644 dotnet/test/common/BiDi/Emulation/EmulationTest.cs create mode 100644 java/private/java_library.bzl create mode 100644 java/src/org/openqa/selenium/concurrent/Lazy.java create mode 100644 java/src/org/openqa/selenium/concurrent/package-info.java rename java/src/org/openqa/selenium/devtools/{v137 => v140}/BUILD.bazel (98%) rename java/src/org/openqa/selenium/devtools/{v137/v137CdpInfo.java => v140/v140CdpInfo.java} (86%) rename java/src/org/openqa/selenium/devtools/{v137/v137Domains.java => v140/v140Domains.java} (77%) rename java/src/org/openqa/selenium/devtools/{v137/v137Events.java => v140/v140Events.java} (86%) rename java/src/org/openqa/selenium/devtools/{v137/v137Javascript.java => v140/v140Javascript.java} (85%) rename java/src/org/openqa/selenium/devtools/{v137/v137Log.java => v140/v140Log.java} (89%) rename java/src/org/openqa/selenium/devtools/{v137/v137Network.java => v140/v140Network.java} (92%) rename java/src/org/openqa/selenium/devtools/{v137/v137Target.java => v140/v140Target.java} (83%) create mode 100644 java/test/org/openqa/selenium/concurrent/BUILD.bazel create mode 100644 java/test/org/openqa/selenium/concurrent/LazyTest.java create mode 100644 java/test/org/openqa/selenium/remote/http/NativeHttpClientMethodsTest.java create mode 100644 javascript/grid-ui/src/components/ThemeToggle/ThemeToggle.tsx create mode 100644 javascript/grid-ui/src/contexts/ThemeContext.tsx create mode 100644 javascript/grid-ui/src/tests/__mocks__/useTheme.tsx create mode 100644 javascript/grid-ui/src/tests/components/ThemeToggle.test.tsx create mode 100644 javascript/grid-ui/src/theme/themes.tsx diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index cb4556e52d4d4..6efc3fe23f50f 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -50,7 +50,7 @@ body: id: selenium-version attributes: label: What version of Selenium are you currently using? - description: Important! The latest released version of Selenium is 4.35 and we can't fix old versions. + description: Important! The latest released version of Selenium is 4.36 and we can't fix old versions. placeholder: e.g., 4.17.0 validations: required: true diff --git a/.github/workflows/bazel.yml b/.github/workflows/bazel.yml index 017ab6fa92eea..f216d8c0da41b 100644 --- a/.github/workflows/bazel.yml +++ b/.github/workflows/bazel.yml @@ -51,6 +51,11 @@ on: required: false type: string default: '' + python-version: + description: Custom Python version to use + required: false + type: string + default: '' ruby-version: description: Custom Ruby version to use required: false @@ -101,6 +106,9 @@ jobs: if: inputs.os != 'windows' run: | sudo rm -rf "$CHROMEWEBDRIVER" "$EDGEWEBDRIVER" "$GECKOWEBDRIVER" + - name: Set Python version + if: inputs.python-version != '' + run: echo '${{ inputs.python-version }}' > py/.python-version - name: Set Ruby version if: inputs.ruby-version != '' run: echo '${{ inputs.ruby-version }}' > rb/.ruby-version @@ -126,6 +134,8 @@ jobs: with: bazelisk-cache: true bazelrc: common --color=yes + # Workaround for long path issues: https://github.com/bazelbuild/bazel/pull/22532 + output-base: ${{ inputs.os == 'windows' && 'D://b' || '' }} cache-version: 2 disk-cache: ${{ inputs.cache-key }} external-cache: | diff --git a/.github/workflows/ci-python.yml b/.github/workflows/ci-python.yml index 173cf2fa64613..e2a192a81a666 100644 --- a/.github/workflows/ci-python.yml +++ b/.github/workflows/ci-python.yml @@ -11,49 +11,73 @@ jobs: with: name: Build cache-key: py-build - run: bazel build //py:selenium-wheel //py:selenium-sdist + run: | + bazel build //py:selenium-wheel //py:selenium-sdist docs: name: Documentation - needs: build runs-on: ubuntu-latest steps: - name: Checkout source tree uses: actions/checkout@v4 - - name: Set up Python 3.9 + - name: Set up Python 3.10 uses: actions/setup-python@v6 with: - python-version: 3.9 + python-version: '3.10' - name: Install dependencies run: | python -m pip install --upgrade pip - pip install tox==4.30.2 + pip install tox - name: Generate docs - run: tox -c py/tox.ini + run: | + tox -c py/tox.ini env: TOXENV: docs - mypy: - name: Mypy - needs: build + typing: + name: Type Checker runs-on: ubuntu-latest steps: - name: Checkout source tree uses: actions/checkout@v4 - - name: Set up Python 3.9 + - name: Set up Python 3.10 uses: actions/setup-python@v6 with: - python-version: 3.9 + python-version: '3.10' - name: Install dependencies run: | python -m pip install --upgrade pip - pip install tox==4.30.2 + pip install tox - name: Run type checking run: | tox -c py/tox.ini || true env: TOXENV: mypy + unit-tests: + name: Unit Tests + needs: build + uses: ./.github/workflows/bazel.yml + strategy: + fail-fast: false + matrix: + include: + - python-version: '3.10' + os: ubuntu + - python-version: '3.10' + os: macos + - python-version: '3.14' + os: ubuntu + - python-version: '3.14' + os: macos + with: + name: Unit Tests (${{ matrix.python-version }}, ${{ matrix.os }}) + os: ${{ matrix.os }} + python-version: ${{ matrix.python-version }} + cache-key: python-unit-test-${{ matrix.python-version }} + run: | + bazel test //py:unit + remote-tests: name: Remote Tests needs: build @@ -67,7 +91,8 @@ jobs: name: Integration Tests (remote, ${{ matrix.browser }}) browser: ${{ matrix.browser }} cache-key: py-remote-${{ matrix.browser }} - run: bazel test --local_test_jobs 1 --flaky_test_attempts 3 //py:test-remote + run: | + bazel test --local_test_jobs 1 --flaky_test_attempts 3 //py:test-remote browser-tests: name: Browser Tests @@ -89,10 +114,30 @@ jobs: os: ${{ matrix.os }} cache-key: py-browser-${{ matrix.browser }} run: | - bazel test --local_test_jobs 1 --flaky_test_attempts 3 --pin_browsers=true //py:common-${{ matrix.browser }}-bidi - bazel test --local_test_jobs 1 --flaky_test_attempts 3 --pin_browsers=true //py:test-${{ matrix.browser }} + bazel test --local_test_jobs 1 --flaky_test_attempts 3 --pin_browsers=true //py:common-${{ matrix.browser }}-bidi //py:test-${{ matrix.browser }} + + browser-tests-windows: + name: Browser Tests + needs: build + uses: ./.github/workflows/bazel.yml + strategy: + fail-fast: false + matrix: + include: + - browser: chrome + os: windows + - browser: edge + os: windows + with: + name: Integration Tests (${{ matrix.browser }}, ${{ matrix.os }}) + browser: ${{ matrix.browser }} + os: ${{ matrix.os }} + cache-key: py-browser-${{ matrix.browser }} + run: | + fsutil 8dot3name set 0 + bazel test --local_test_jobs 1 --flaky_test_attempts 3 --pin_browsers=true //py:common-${{ matrix.browser }}-bidi //py:test-${{ matrix.browser }} - safari-tests: + browser-tests-macos: name: Browser Tests needs: build uses: ./.github/workflows/bazel.yml @@ -108,4 +153,4 @@ jobs: os: ${{ matrix.os }} cache-key: py-browser-${{ matrix.browser }} run: | - bazel test --local_test_jobs 1 --flaky_test_attempts 3 --pin_browsers=true //py:test-${{ matrix.browser }} + bazel test --local_test_jobs 1 --flaky_test_attempts 3 --pin_browsers=true //py:common-${{ matrix.browser }} //py:test-${{ matrix.browser }} diff --git a/.github/workflows/ci-ruby.yml b/.github/workflows/ci-ruby.yml index 91bfc322ab9b4..08cff26a7eda3 100644 --- a/.github/workflows/ci-ruby.yml +++ b/.github/workflows/ci-ruby.yml @@ -96,7 +96,7 @@ jobs: matrix: include: - browser: edge - os: windows + os: macos with: name: Remote Tests (${{ matrix.browser }}, ${{ matrix.os }}) browser: ${{ matrix.browser }} diff --git a/.github/workflows/update-documentation.yml b/.github/workflows/update-documentation.yml index d9d1ff83f197f..5ec9389fb1dc7 100644 --- a/.github/workflows/update-documentation.yml +++ b/.github/workflows/update-documentation.yml @@ -66,11 +66,11 @@ jobs: with: java-version: 17 distribution: 'temurin' - - name: Set up Python 3.9 + - name: Set up Python 3.10 if: ${{ inputs.language == 'py' || inputs.language == 'all' }} uses: actions/setup-python@v6 with: - python-version: 3.9 + python-version: '3.10' - name: Install dependencies if: ${{ inputs.language == 'py' || inputs.language == 'all' }} run: | diff --git a/AUTHORS b/AUTHORS index c2caea885e760..131093bad398f 100644 --- a/AUTHORS +++ b/AUTHORS @@ -78,6 +78,7 @@ Andrii Rohovets Andy Duncan Angie Jones anonymous_sdet +Anthony Richardson <26676+Osseta@users.noreply.github.com> Anthony Sottile Anton Usmansky Anton Velma @@ -318,6 +319,7 @@ GFHuang <4510984+GF-Huang@users.noreply.github.com> ggkiokas <115367874+ggkiokas@users.noreply.github.com> Ghjuvan Lacambre Giorgos Tzampanakis +Giulio Longfils glaszig Glib Briia Godefroid Chapelle @@ -367,6 +369,7 @@ Iain Dawson Ian Lesperance ian zhang Iaroslav Naidon +iDONi <30952073+Aidoni0797@users.noreply.github.com> ifland Ilya Kozhevnikov Ilyas Bayraktar @@ -681,6 +684,7 @@ Nirantak Raghav Nitish Noel Gordon Noritaka Kobayashi +NoStory-py Nowell Strite Nozomi Ito no_author @@ -703,6 +707,7 @@ Outsider Paladin Wang <49390614+eversoutheast@users.noreply.github.com> Pallavi Palmer Bandy <37938675+palmermbandy@users.noreply.github.com> +Paresh Gupta <123556346+Paresh-0007@users.noreply.github.com> Pat Tullmann Patrice Jaton Patrick Beart @@ -900,6 +905,7 @@ Ulf Adams Ulrich Buchgraber User253489 V24 <55334829+umarfarouk98@users.noreply.github.com> +Vaibhav Gupta Valery Yatsynovich Varun Menon varunsurapaneni <67070327+varunsurapaneni@users.noreply.github.com> @@ -908,6 +914,8 @@ vedanthvdev <61700595+vedanthvdev@users.noreply.github.com> vergiliu vflame <0x484x0@gmail.com> Victor Tang +Victoria Ivanova +Victoria Ivanova Viet Nguyen Duc Vijay Singh Vijendarn Selvarajah <11275608+vijay44@users.noreply.github.com> diff --git a/MODULE.bazel b/MODULE.bazel index 9fa05793a9b8d..06c95459d1152 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -24,7 +24,7 @@ bazel_dep(name = "rules_multitool", version = "1.3.0") bazel_dep(name = "rules_nodejs", version = "6.3.2") bazel_dep(name = "rules_oci", version = "1.8.0") bazel_dep(name = "rules_pkg", version = "1.0.1") -bazel_dep(name = "rules_python", version = "1.5.0") +bazel_dep(name = "rules_python", version = "1.6.3") bazel_dep(name = "rules_proto", version = "7.0.2") bazel_dep(name = "rules_ruby", version = "0.19.0") @@ -123,12 +123,12 @@ use_repo(oci, "chrome_standalone", "firefox_standalone", "java_image_base") python = use_extension("@rules_python//python/extensions:python.bzl", "python") python.toolchain( is_default = True, - python_version = "3.9", + python_version = "3.10", ) -python.toolchain(python_version = "3.10") python.toolchain(python_version = "3.11") python.toolchain(python_version = "3.12") python.toolchain(python_version = "3.13") +python.toolchain(python_version = "3.14") use_repo(python, "pythons_hub") pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip") @@ -140,11 +140,11 @@ pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip") requirements_lock = "//py:requirements_lock.txt", ) for version in [ - "3.9", "3.10", "3.11", "3.12", "3.13", + "3.14", ] ] @@ -173,23 +173,25 @@ maven.install( name = "maven", artifacts = [ "com.beust:jcommander:1.82", + "org.checkerframework:checker-qual:3.49.2", "com.github.javaparser:javaparser-core:3.27.0", - "com.github.spotbugs:spotbugs:4.9.4", + "com.github.spotbugs:spotbugs:4.9.6", "com.github.stephenc.jcip:jcip-annotations:1.0-1", "com.google.code.findbugs:jsr305:3.0.2", - "com.google.code.gson:gson:2.13.1", - "com.google.guava:guava:33.4.8-jre", + "com.google.code.gson:gson:2.13.2", + "com.google.guava:guava:33.5.0-jre", "com.github.ben-manes.caffeine:caffeine:3.2.2", "com.google.auto:auto-common:1.2.2", "com.google.auto.service:auto-service:1.1.1", "com.google.auto.service:auto-service-annotations:1.1.1", "com.google.googlejavaformat:google-java-format:1.28.0", - "com.google.protobuf:protobuf-java:3.25.5", + "com.google.protobuf:protobuf-java:4.32.1", "com.google.protobuf.nano:protobuf-javanano:3.1.0", "com.graphql-java:graphql-java:24.1", + "com.uber.nullaway:nullaway:0.12.10", "dev.failsafe:failsafe:3.3.2", - "io.grpc:grpc-context:1.74.0", - "io.lettuce:lettuce-core:6.8.0.RELEASE", + "io.grpc:grpc-context:1.75.0", + "io.lettuce:lettuce-core:6.8.1.RELEASE", "io.netty:netty-buffer", "io.netty:netty-codec-http", "io.netty:netty-codec-http2", @@ -208,11 +210,11 @@ maven.install( "io.opentelemetry:opentelemetry-sdk-trace", "it.ozimov:embedded-redis:0.7.3", "net.bytebuddy:byte-buddy:1.17.7", - "org.htmlunit:htmlunit-core-js:4.14.0", + "org.htmlunit:htmlunit-core-js:4.16.0", "org.apache.commons:commons-exec:1.5.0", "org.apache.logging.log4j:log4j-core:2.25.1", "org.assertj:assertj-core:3.27.4", - "org.bouncycastle:bcpkix-jdk18on:1.81", + "org.bouncycastle:bcpkix-jdk18on:1.82", "org.eclipse.mylyn.github:org.eclipse.egit.github.core:2.1.5", "org.hsqldb:hsqldb:2.7.4", "org.jboss.marshalling:jboss-marshalling:2.2.3.Final", @@ -224,8 +226,8 @@ maven.install( "org.junit.platform:junit-platform-reporting", "org.junit.platform:junit-platform-commons", "org.junit.platform:junit-platform-engine", - "org.mockito:mockito-core:5.18.0", - "org.redisson:redisson:3.50.0", + "org.mockito:mockito-core:5.19.0", + "org.redisson:redisson:3.51.0", "org.slf4j:slf4j-api:2.0.17", "org.slf4j:slf4j-jdk14:2.0.17", "org.tomlj:tomlj:1.1.1", @@ -234,8 +236,8 @@ maven.install( "uk.org.webcompere:system-stubs-core:2.1.8", ], boms = [ - "io.opentelemetry:opentelemetry-bom:1.53.0", - "io.netty:netty-bom:4.2.4.Final", + "io.opentelemetry:opentelemetry-bom:1.54.0", + "io.netty:netty-bom:4.2.6.Final", "org.junit:junit-bom:5.13.4", ], excluded_artifacts = [ @@ -273,23 +275,25 @@ ruby.bundle_fetch( "//:rb/selenium-webdriver.gemspec", ], gem_checksums = { - "activesupport-7.2.2.1": "842bcbf8a92977f80fb4750661a237cf5dd4fdd442066b3c35e88afb488647f5", + "activesupport-7.2.2.2": "c54e84bb3d9027f1f372fb8f68203538fcfe0d5ff42801774c03974daa15bef0", "addressable-2.8.7": "462986537cf3735ab5f3c0f557f14155d778f4b43ea4f485a9deb9c8f7c58232", "ast-2.4.3": "954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383", - "base64-0.2.0": "0f25e9b21a02a0cc0cea8ef92b2041035d39350946e8789c562b2d1a3da01507", - "benchmark-0.4.0": "0f12f8c495545e3710c3e4f0480f63f06b4c842cc94cec7f33a956f5180e874a", - "bigdecimal-3.1.9": "2ffc742031521ad69c2dfc815a98e426a230a3d22aeac1995826a75dabfad8cc", - "bigdecimal-3.1.9-java": "dd9b8f7c870664cd9538a1325ce385ba57a6627969177258c4f0e661a7be4456", + "base64-0.3.0": "27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b", + "benchmark-0.4.1": "d4ef40037bba27f03b28013e219b950b82bace296549ec15a78016552f8d2cce", + "bigdecimal-3.2.3": "ffd11d1ac67a0d3b2f44aec0a6487210b3f813f363dd11f1fcccf5ba00da4e1b", + "bigdecimal-3.2.3-java": "7293e87efd050feac875bff1c62335dd5e8ce65d86ad22d7a4a3b5ed4f0ab48d", "concurrent-ruby-1.3.5": "813b3e37aca6df2a21a3b9f1d497f8cbab24a2b94cab325bffe65ee0f6cbebc6", - "connection_pool-2.5.3": "cfd74a82b9b094d1ce30c4f1a346da23ee19dc8a062a16a85f58eab1ced4305b", + "connection_pool-2.5.4": "e9e1922327416091f3f6542f5f4446c2a20745276b9aa796dd0bb2fd0ea1e70a", "crack-1.0.0": "c83aefdb428cdc7b66c7f287e488c796f055c0839e6e545fec2c7047743c4a49", - "csv-3.3.4": "e96ecd5a8c3494aa5b596282249daba5c6033203c199248e6146e36d2a78d8cd", + "csv-3.3.5": "6e5134ac3383ef728b7f02725d9872934f523cb40b961479f69cf3afa6c8e73f", "curb-1.0.9": "07e5b74a4836103ce186827528f76a22d3991a9b7c45f5c10ee18ee7b03feb0d", "date-3.4.1": "bf268e14ef7158009bfeaec40b5fa3c7271906e88b196d958a89d4b408abe64f", "date-3.4.1-java": "74740d914c65a922a15657c25ff0e203c16f1d0f7aa910a9ebed712afe9819c4", - "debug-1.10.0": "11e28ca74875979e612444104f3972bd5ffb9e79179907d7ad46dba44bd2e7a4", - "diff-lcs-1.6.1": "12a5a83f3e37a8e2f4427268e305914d5f1879f22b4e73bb1a09f76a3dd86cd4", - "drb-2.2.1": "e9d472bf785f558b96b25358bae115646da0dbfd45107ad858b0bc0d935cb340", + "debug-1.11.0": "1425db64cfa0130c952684e3dc974985be201dd62899bf4bbe3f8b5d6cf1aef2", + "diff-lcs-1.6.2": "9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962", + "drb-2.2.3": "0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373", + "erb-5.0.2": "d30f258143d4300fb4ecf430042ac12970c9bb4b33c974a545b8f58c1ec26c0f", + "erb-5.0.2-java": "d000d963afebc166ec7f2499b2b3198d526790cf962c37514d7a85843a60423c", "ffi-1.17.2": "297235842e5947cc3036ebe64077584bff583cd7a4e94e9a02fdec399ef46da6", "ffi-1.17.2-java": "94c8516d7c97b21915497b994e41f69e7e8e21d5fc085c498b68e52044e191ec", "ffi-1.17.2-x64-mingw-ucrt": "15d2da54ee578657a333a6059ed16eaba1cbd794ceecd15944825b65c8381ac0", @@ -297,57 +301,57 @@ ruby.bundle_fetch( "ffi-1.17.2-x86_64-linux-gnu": "05d2026fc9dbb7cfd21a5934559f16293815b7ce0314846fee2ac8efbdb823ea", "fileutils-1.7.3": "57271e854b694a87755d76f836f5c57b2c9538ebbaf4b2154bb66addf15eb5da", "git-1.19.1": "b0a422d9f6517353c48a330d6114de4db9e0c82dbe7202964a1d9f1fbc827d70", - "hashdiff-1.1.2": "2c30eeded6ed3dce8401d2b5b99e6963fe5f14ed85e60dd9e33c545a44b71a77", + "hashdiff-1.2.1": "9c079dbc513dfc8833ab59c0c2d8f230fa28499cc5efb4b8dd276cf931457cd1", "i18n-1.14.7": "ceba573f8138ff2c0915427f1fc5bdf4aa3ab8ae88c8ce255eb3ecf0a11a5d0f", - "io-console-0.8.0": "cd6a9facbc69871d69b2cb8b926fc6ea7ef06f06e505e81a64f14a470fddefa2", - "io-console-0.8.0-java": "3cc6fd5c66e587145c1fdf8dc40c2e3d851e90722a5d0cc3f38da352f06fe1bd", + "io-console-0.8.1": "1e15440a6b2f67b6ea496df7c474ed62c860ad11237f29b3bd187f054b925fcb", + "io-console-0.8.1-java": "9457a61a7b23aab11e9e9ff67f71ae81d7f1a6a2e582bb5d65d754cbb546c06f", "irb-1.15.2": "222f32952e278da34b58ffe45e8634bf4afc2dc7aa9da23fed67e581aa50fdba", "jar-dependencies-0.5.5": "2972b9fcba4b014e6446a84b5c09674a3e8648b95b71768e729f0e8e40568059", - "json-2.11.3": "9a10f658a2de67c0eb837eb795dd48132ce797c403e52b5ebef87dcdc7f9ccc1", - "json-2.11.3-java": "cfe8db24e49073c5bcd93699d106a1c1c9e5bc301fcc0de05965e72fad999a34", - "language_server-protocol-3.17.0.4": "c484626478664fd13482d8180947c50a8590484b1258b99b7aedb3b69df89669", + "json-2.13.2": "02e1f118d434c6b230a64ffa5c8dee07e3ec96244335c392eaed39e1199dbb68", + "json-2.13.2-java": "2e1292c45598a3642216820a821cba89c623f99387b8cb90adb345878f4e5c7d", + "language_server-protocol-3.17.0.5": "fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc", "lint_roller-1.1.0": "2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87", "listen-3.9.0": "db9e4424e0e5834480385197c139cb6b0ae0ef28cc13310cfd1ca78377d59c67", "logger-1.7.0": "196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203", "minitest-5.25.5": "391b6c6cb43a4802bfb7c93af1ebe2ac66a210293f4a3fb7db36f2fc7dc2c756", "parallel-1.27.0": "4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130", - "parser-3.3.8.0": "2476364142b307fa5a1b1ece44f260728be23858a9c71078e956131a75453c45", + "parser-3.3.9.0": "94d6929354b1a6e3e1f89d79d4d302cc8f5aa814431a6c9c7e0623335d7687f2", "pp-0.6.2": "947ec3120c6f92195f8ee8aa25a7b2c5297bb106d83b41baa02983686577b6ff", "prettyprint-0.2.0": "2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193", "prism-1.4.0": "dc0e3e00e93160213dc2a65519d9002a4a1e7b962db57d444cf1a71565bb703e", - "psych-5.2.4": "f2d9810f7f383a6b0fbc705202851e1a55b236bcb8e168ab5dfa5741842ec7c5", - "psych-5.2.4-java": "a3ae584e85e11fd069f17a563ef18f204d3df0fde0c093d35ae494fd64164664", + "psych-5.2.6": "814328aa5dcb6d604d32126a20bc1cbcf05521a5b49dbb1a8b30a07e580f316e", + "psych-5.2.6-java": "0a5f65d47ed1ae3475d062b254e7b2035a259eac578038016d62172dd4cfbd91", "public_suffix-6.0.2": "bfa7cd5108066f8c9602e0d6d4114999a5df5839a63149d3e8b0f9c1d3558394", "racc-1.8.1": "4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f", "racc-1.8.1-java": "54f2e6d1e1b91c154013277d986f52a90e5ececbe91465d29172e49342732b98", - "rack-2.2.13": "ccee101719696a5da12ee9da6fb3b1d20cb329939e089e0e458be6e93667f0fb", + "rack-2.2.17": "5fe02a1ca80d6fb2271dba00985ee2962d6f5620b6f46dfed89f5301ac4699dd", "rainbow-3.1.1": "039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a", - "rake-13.2.1": "46cb38dae65d7d74b6020a4ac9d48afed8eb8149c040eccf0523bec91907059d", + "rake-13.3.0": "96f5092d786ff412c62fde76f793cc0541bd84d2eb579caa529aa8a059934493", "rb-fsevent-0.11.2": "43900b972e7301d6570f64b850a5aa67833ee7d87b458ee92805d56b7318aefe", "rb-inotify-0.11.1": "a0a700441239b0ff18eb65e3866236cd78613d6b9f78fea1f9ac47a85e47be6e", - "rbs-3.9.2": "873b5d01a11f3dc15a7cc3bd66d9d50c3d05fad4fbb73b47704eb96f0ba6faf2", - "rchardet-1.9.0": "26889486cdd83b378652baf7603f71d93e431bb11bc237b4cd8c65151af4a590", - "rdoc-6.13.1": "62a0dac99493c94e8eb7a3fb44e55aefcb4cecb119f7991f25bddc5ed8d472f7", - "regexp_parser-2.10.0": "cb6f0ddde88772cd64bff1dbbf68df66d376043fe2e66a9ef77fcb1b0c548c61", - "reline-0.6.1": "1afcc9d7cb1029cdbe780d72f2f09251ce46d3780050f3ec39c3ccc6b60675fb", - "rexml-3.4.1": "c74527a9a0a04b4ec31dbe0dc4ed6004b960af943d8db42e539edde3a871abca", - "rspec-3.13.0": "d490914ac1d5a5a64a0e1400c1d54ddd2a501324d703b8cfe83f458337bab993", - "rspec-core-3.13.3": "25136507f4f9cf2e8977a2851e64e438b4331646054e345998714108745cdfe4", - "rspec-expectations-3.13.4": "4e43459765dfee900b25aa1361e106ab0799895ede65fc57872069feb559ecd8", - "rspec-mocks-3.13.3": "be08abadfe28e932d03b8e70215cd5972bd7693e0f1a45c7479b11e9a773c3c2", - "rspec-support-3.13.3": "2a61e393f6e18b7228726e0c6869c5d5a1419d37206116c4d917d145276b3f43", - "rubocop-1.75.4": "e0656af44d0811bb40f6d0bd4ed6c8d80c0f05f3444f0e8f0839833dd46d18c6", - "rubocop-ast-1.44.1": "e3cc04203b2ef04f6d6cf5f85fe6d643f442b18cc3b23e3ada0ce5b6521b8e92", - "rubocop-performance-1.25.0": "6f7d03568a770054117a78d0a8e191cefeffb703b382871ca7743831b1a52ec1", + "rbs-3.9.5": "eabaaf60aee84e38cbf94839c6e1b9cd145c7295fc3cc0e88c92e4069b1119b0", + "rchardet-1.10.0": "d5ea2ed61a720a220f1914778208e718a0c7ed2a484b6d357ba695aa7001390f", + "rdoc-6.14.2": "9fdd44df130f856ae70cc9a264dfd659b9b40de369b16581f4ab746e42439226", + "regexp_parser-2.11.3": "ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4", + "reline-0.6.2": "1dad26a6008872d59c8e05244b119347c9f2ddaf4a53dce97856cd5f30a02846", + "rexml-3.4.4": "19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142", + "rspec-3.13.1": "b9f9a58fa915b8d94a1d6b3195fe6dd28c4c34836a6097015142c4a9ace72140", + "rspec-core-3.13.5": "ab3f682897c6131c67f9a17cfee5022a597f283aebe654d329a565f9937a4fa3", + "rspec-expectations-3.13.5": "33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836", + "rspec-mocks-3.13.5": "e4338a6f285ada9fe56f5893f5457783af8194f5d08884d17a87321d5195ea81", + "rspec-support-3.13.6": "2e8de3702427eab064c9352fe74488cc12a1bfae887ad8b91cba480ec9f8afb2", + "rubocop-1.81.1": "352a9a6f314a4312f6c305f1f72bc466254d221c95445cd49e1b65d1f9411635", + "rubocop-ast-1.47.1": "592682017855408b046a8190689490763aecea175238232b1b526826349d01ae", + "rubocop-performance-1.26.0": "7bb0d9d9fb2ea122bf6f9a596dd7cf9dc93ab4950923d26c4ae4f328cef71ca9", "rubocop-rake-0.7.1": "3797f2b6810c3e9df7376c26d5f44f3475eda59eb1adc38e6f62ecf027cbae4d", - "rubocop-rspec-3.6.0": "c0e4205871776727e54dee9cc91af5fd74578001551ba40e1fe1a1ab4b404479", + "rubocop-rspec-3.7.0": "b7b214da112034db9c6d00f2d811a354847e870f7b6ed2482b29649c3d42058f", "ruby-progressbar-1.13.0": "80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33", - "rubyzip-2.4.1": "8577c88edc1fde8935eb91064c5cb1aef9ad5494b940cf19c775ee833e075615", + "rubyzip-3.1.1": "54c97dd156437018c6914d76df52d10560a3b7784de36b1551e4a0709f958273", "securerandom-0.4.1": "cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1", "steep-1.5.3": "7c6302a4d5932d0a46176ebc79766e52b853c223a85525aa2f8911e345123b85", "stringio-3.1.7": "5b78b7cb242a315fb4fca61a8255d62ec438f58da2b90be66048546ade4507fa", - "strscan-3.1.4": "8e130a503aa6c79352c6ac02a9819507c8b8720c174ce8335e3eb2c8cc2ae042", - "strscan-3.1.4-java": "5551e01d215ba8ac7dadb6dab46b9fb4c33303ba63eaf3e1b0496c078b8d3fb8", + "strscan-3.1.5": "f8413b90ea9395a69609a4414a8c88551bcda64337e234272c24fcd4c83e5947", + "strscan-3.1.5-java": "84805eaad025f64854376608a6dbd49d4a22740ec3f21ba880434a6641621f1e", "terminal-table-3.0.2": "f951b6af5f3e00203fb290a669e0a85c5dd5b051b3b023392ccfd67ba5abae91", "tzinfo-2.0.6": "8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b", "unicode-display_width-2.6.0": "12279874bba6d5e4d2728cef814b19197dbb10d7a7837a869bab65da943b7f5a", diff --git a/Rakefile b/Rakefile index ec93558514cb2..73936caa4ff04 100644 --- a/Rakefile +++ b/Rakefile @@ -96,7 +96,7 @@ task '//java/test/org/openqa/selenium/environment/webserver:webserver:uber' => [ JAVA_RELEASE_TARGETS = %w[ //java/src/org/openqa/selenium/chrome:chrome.publish //java/src/org/openqa/selenium/chromium:chromium.publish - //java/src/org/openqa/selenium/devtools/v137:v137.publish + //java/src/org/openqa/selenium/devtools/v140:v140.publish //java/src/org/openqa/selenium/devtools/v138:v138.publish //java/src/org/openqa/selenium/devtools/v139:v139.publish //java/src/org/openqa/selenium/edge:edge.publish diff --git a/WORKSPACE b/WORKSPACE index e82b52f11fa56..151d0438675ff 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -26,15 +26,15 @@ rules_closure_toolchains() http_archive( name = "rules_rust", - integrity = "sha256-eEXiHXSGUH6qD1bdI5KXZ/B04m0wIUeoyM7pmujzbbQ=", - urls = ["https://github.com/bazelbuild/rules_rust/releases/download/0.55.5/rules_rust-0.55.5.tar.gz"], + integrity = "sha256-YrnH/f8jCpEqGAU+keNqauc+QSde9egtcFXqPtJuee4=", + urls = ["https://github.com/bazelbuild/rules_rust/releases/download/0.65.0/rules_rust-0.65.0.tar.gz"], ) load("@rules_rust//rust:repositories.bzl", "rules_rust_dependencies", "rust_register_toolchains") rules_rust_dependencies() -rust_register_toolchains() +rust_register_toolchains(versions = ["1.89.0"]) load("@rules_rust//crate_universe:defs.bzl", "crates_repository") @@ -48,3 +48,7 @@ crates_repository( load("@crates//:defs.bzl", "crate_repositories") crate_repositories() + +load("@rules_rust//cargo:deps.bzl", "cargo_dependencies") + +cargo_dependencies() diff --git a/common/devtools/chromium/v137/BUILD.bazel b/common/devtools/chromium/v140/BUILD.bazel similarity index 100% rename from common/devtools/chromium/v137/BUILD.bazel rename to common/devtools/chromium/v140/BUILD.bazel diff --git a/common/devtools/chromium/v137/browser_protocol.pdl b/common/devtools/chromium/v140/browser_protocol.pdl similarity index 97% rename from common/devtools/chromium/v137/browser_protocol.pdl rename to common/devtools/chromium/v140/browser_protocol.pdl index db00f32e16afa..64b9c19d9a2fe 100644 --- a/common/devtools/chromium/v137/browser_protocol.pdl +++ b/common/devtools/chromium/v140/browser_protocol.pdl @@ -825,6 +825,13 @@ experimental domain Audits ValidationFailedSignatureMismatch ValidationFailedIntegrityMismatch + type UnencodedDigestError extends string + enum + MalformedDictionary + UnknownAlgorithm + IncorrectDigestType + IncorrectDigestLength + # Details for issues around "Attribution Reporting API" usage. # Explainer: https://github.com/WICG/attribution-reporting-api type AttributionReportingIssueDetails extends object @@ -863,6 +870,11 @@ experimental domain Audits array of string integrityAssertions AffectedRequest request + type UnencodedDigestIssueDetails extends object + properties + UnencodedDigestError error + AffectedRequest request + type GenericIssueErrorType extends string enum FormLabelForNameError @@ -1031,19 +1043,20 @@ experimental domain Audits # Additional information about the Partitioning Blob URL issue. PartitioningBlobURLInfo partitioningBlobURLInfo - type SelectElementAccessibilityIssueReason extends string + type ElementAccessibilityIssueReason extends string enum DisallowedSelectChild DisallowedOptGroupChild NonPhrasingContentOptionChild InteractiveContentOptionChild InteractiveContentLegendChild + InteractiveContentSummaryDescendant - # This issue warns about errors in the select element content model. - type SelectElementAccessibilityIssueDetails extends object + # This issue warns about errors in the select or summary element content model. + type ElementAccessibilityIssueDetails extends object properties DOM.BackendNodeId nodeId - SelectElementAccessibilityIssueReason selectElementAccessibilityIssueReason + ElementAccessibilityIssueReason elementAccessibilityIssueReason boolean hasDisallowedAttributes type StyleSheetLoadingIssueReason extends string @@ -1079,6 +1092,19 @@ experimental domain Audits # The value of the property rule property that failed to parse optional string propertyValue + type UserReidentificationIssueType extends string + enum + BlockedFrameNavigation + BlockedSubresource + + # This issue warns about uses of APIs that may be considered misuse to + # re-identify users. + type UserReidentificationIssueDetails extends object + properties + UserReidentificationIssueType type + # Applies to BlockedFrameNavigation and BlockedSubresource issue types. + optional AffectedRequest request + # A unique identifier for the type of issue. Each type may use one of the # optional fields in InspectorIssueDetails to convey more specific # information about the kind of issue. @@ -1107,8 +1133,10 @@ experimental domain Audits FederatedAuthUserInfoRequestIssue PropertyRuleIssue SharedDictionaryIssue - SelectElementAccessibilityIssue + ElementAccessibilityIssue SRIMessageSignatureIssue + UnencodedDigestIssue + UserReidentificationIssue # This struct holds a list of optional fields with additional information # specific to the kind of issue. When adding a new issue code, please also @@ -1137,8 +1165,10 @@ experimental domain Audits optional PropertyRuleIssueDetails propertyRuleIssueDetails optional FederatedAuthUserInfoRequestIssueDetails federatedAuthUserInfoRequestIssueDetails optional SharedDictionaryIssueDetails sharedDictionaryIssueDetails - optional SelectElementAccessibilityIssueDetails selectElementAccessibilityIssueDetails + optional ElementAccessibilityIssueDetails elementAccessibilityIssueDetails optional SRIMessageSignatureIssueDetails sriMessageSignatureIssueDetails + optional UnencodedDigestIssueDetails unencodedDigestIssueDetails + optional UserReidentificationIssueDetails userReidentificationIssueDetails # A unique id for a DevTools inspector issue. Allows other entities (e.g. # exceptions, CDP message, console messages, etc.) to reference an issue. @@ -1619,6 +1649,10 @@ domain Browser inProgress completed canceled + # If download is "completed", provides the path of the downloaded file. + # Depending on the platform, it is not guaranteed to be set, nor the file + # is guaranteed to exist. + experimental optional string filePath # Close browser gracefully. command close @@ -1728,6 +1762,18 @@ domain Browser # with 'left', 'top', 'width' or 'height'. Leaves unspecified fields unchanged. Bounds bounds + # Set size of the browser contents resizing browser window as necessary. + experimental command setContentsSize + parameters + # Browser window id. + WindowID windowId + # The window contents width in DIP. Assumes current width if omitted. + # Must be specified if 'height' is omitted. + optional integer width + # The window contents height in DIP. Assumes current height if omitted. + # Must be specified if 'width' is omitted. + optional integer height + # Set dock tile details, platform-specific. experimental command setDockTile parameters @@ -2102,6 +2148,8 @@ experimental domain CSS optional DOM.LogicalAxes logicalAxes # true if the query contains scroll-state() queries. optional boolean queriesScrollState + # true if the query contains anchored() queries. + optional boolean queriesAnchored # CSS Supports at-rule descriptor. experimental type CSSSupports extends object @@ -2527,6 +2575,11 @@ experimental domain CSS # A list of CSS at-function rules referenced by styles of this node. experimental optional array of CSSFunctionRule cssFunctionRules + # Returns the values of the default UA-defined environment variables used in env() + experimental command getEnvironmentVariables + returns + object environmentVariables + # Returns all media queries parsed by the rendering engine. command getMediaQueries returns @@ -2987,12 +3040,14 @@ domain DOM view-transition view-transition-group view-transition-image-pair + view-transition-group-children view-transition-old view-transition-new placeholder file-selector-button details-content picker + permission-icon # Shadow root type. type ShadowRootType extends string @@ -3364,6 +3419,8 @@ domain DOM optional BackendNodeId backendNodeId # JavaScript object id of the node wrapper. optional Runtime.RemoteObjectId objectId + # Include all shadow roots. Equals to false if not specified. + experimental optional boolean includeShadowDOM returns # Outer HTML markup. string outerHTML @@ -3496,8 +3553,12 @@ domain DOM # Get the popover target for a given element. In this case, this given # element can only be an HTMLFormControlElement (,