diff --git a/AUTHORS b/AUTHORS index b3a31ee441c17..13cd94023d7d2 100644 --- a/AUTHORS +++ b/AUTHORS @@ -413,6 +413,7 @@ jkohls jmuramatsu Joaquín Romero jochenberger +Joe Bandenburg Joe Lencioni Joe Schulte Joe Walnes @@ -640,6 +641,7 @@ nvonop Oboleninov Anton Oleg Höfling Oleg Ridchenko <73664101+oleg-rd@users.noreply.github.com> +Oleksandr Kulychok Oleksii Olivier SCHNEIDER Olle Jonsson diff --git a/MODULE.bazel b/MODULE.bazel index da4d5903b7f23..2e2041ba4c4bd 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -156,10 +156,10 @@ maven.install( artifacts = [ "com.beust:jcommander:1.82", "com.github.javaparser:javaparser-core:3.25.10", - "com.github.spotbugs:spotbugs:4.8.4", + "com.github.spotbugs:spotbugs:4.8.5", "com.github.stephenc.jcip:jcip-annotations:1.0-1", "com.google.code.gson:gson:2.10.1", - "com.google.guava:guava:33.1.0-jre", + "com.google.guava:guava:33.2.0-jre", "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", @@ -167,7 +167,7 @@ maven.install( "com.graphql-java:graphql-java:20.2", "com.graphql-java:java-dataloader:3.2.0", "dev.failsafe:failsafe:3.3.2", - "io.grpc:grpc-context:1.63.0", + "io.grpc:grpc-context:1.64.0", "io.lettuce:lettuce-core:6.3.2.RELEASE", "io.netty:netty-buffer:4.1.109.Final", "io.netty:netty-codec-http:4.1.109.Final", @@ -176,20 +176,20 @@ maven.install( "io.netty:netty-handler:4.1.109.Final", "io.netty:netty-handler-proxy:4.1.109.Final", "io.netty:netty-transport:4.1.109.Final", - "io.opentelemetry:opentelemetry-api:1.37.0", - "io.opentelemetry:opentelemetry-context:1.37.0", - "io.opentelemetry:opentelemetry-exporter-logging:1.37.0", - "io.opentelemetry:opentelemetry-sdk:1.37.0", - "io.opentelemetry:opentelemetry-sdk-common:1.37.0", - "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.37.0", - "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.37.0", - "io.opentelemetry:opentelemetry-sdk-testing:1.37.0", - "io.opentelemetry:opentelemetry-sdk-trace:1.37.0", + "io.opentelemetry:opentelemetry-api:1.38.0", + "io.opentelemetry:opentelemetry-context:1.38.0", + "io.opentelemetry:opentelemetry-exporter-logging:1.38.0", + "io.opentelemetry:opentelemetry-sdk:1.38.0", + "io.opentelemetry:opentelemetry-sdk-common:1.38.0", + "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.38.0", + "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.38.0", + "io.opentelemetry:opentelemetry-sdk-testing:1.38.0", + "io.opentelemetry:opentelemetry-sdk-trace:1.38.0", "io.opentelemetry.semconv:opentelemetry-semconv:1.25.0-alpha", "io.ous:jtoml:2.0.0", "it.ozimov:embedded-redis:0.7.3", - "net.bytebuddy:byte-buddy:1.14.14", - "org.htmlunit:htmlunit-core-js:4.0.0", + "net.bytebuddy:byte-buddy:1.14.15", + "org.htmlunit:htmlunit-core-js:4.1.0", "org.apache.commons:commons-exec:1.4.0", "org.apache.logging.log4j:log4j-core:2.23.1", "org.assertj:assertj-core:3.25.3", @@ -203,8 +203,8 @@ maven.install( "org.junit.platform:junit-platform-reporting:1.10.2", "org.junit.platform:junit-platform-commons:1.10.2", "org.junit.platform:junit-platform-engine:1.10.2", - "org.mockito:mockito-core:5.11.0", - "org.redisson:redisson:3.29.0", + "org.mockito:mockito-core:5.12.0", + "org.redisson:redisson:3.30.0", "org.slf4j:slf4j-api:2.0.13", "org.slf4j:slf4j-jdk14:2.0.13", "org.zeromq:jeromq:0.6.0", diff --git a/Rakefile b/Rakefile index 436e99c572d63..eca0b215c5eeb 100644 --- a/Rakefile +++ b/Rakefile @@ -99,7 +99,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/v122:v122.publish + //java/src/org/openqa/selenium/devtools/v125:v125.publish //java/src/org/openqa/selenium/devtools/v123:v123.publish //java/src/org/openqa/selenium/devtools/v124:v124.publish //java/src/org/openqa/selenium/devtools/v85:v85.publish diff --git a/common/devtools/chromium/v122/BUILD.bazel b/common/devtools/chromium/v125/BUILD.bazel similarity index 100% rename from common/devtools/chromium/v122/BUILD.bazel rename to common/devtools/chromium/v125/BUILD.bazel diff --git a/common/devtools/chromium/v122/browser_protocol.pdl b/common/devtools/chromium/v125/browser_protocol.pdl similarity index 95% rename from common/devtools/chromium/v122/browser_protocol.pdl rename to common/devtools/chromium/v125/browser_protocol.pdl index 7a332989332e5..162eeacc25478 100644 --- a/common/devtools/chromium/v122/browser_protocol.pdl +++ b/common/devtools/chromium/v125/browser_protocol.pdl @@ -217,7 +217,7 @@ experimental domain Accessibility # If omitted, the full tree is returned. optional integer depth # The frame for whose document the AX tree should be retrieved. - # If omited, the root frame is used. + # If omitted, the root frame is used. optional Page.FrameId frameId returns array of AXNode nodes @@ -258,7 +258,7 @@ experimental domain Accessibility # Query a DOM node's accessibility subtree for accessible name and role. # This command computes the name and role for all nodes in the subtree, including those that are - # ignored for accessibility, and returns those that mactch the specified name and role. If no DOM + # ignored for accessibility, and returns those that match the specified name and role. If no DOM # node is specified, or the DOM node does not exist, the command returns an error. If neither # `accessibleName` or `role` is specified, it returns all the accessibility nodes in the subtree. experimental command queryAXTree @@ -309,6 +309,9 @@ experimental domain Animation # `Animation`'s playback rate. number playbackRate # `Animation`'s start time. + # Milliseconds for time based animations and + # percentage [0 - 100] for scroll driven animations + # (i.e. when viewOrScrollTimeline exists). number startTime # `Animation`'s current time. number currentTime @@ -322,6 +325,26 @@ experimental domain Animation # A unique ID for `Animation` representing the sources that triggered this CSS # animation/transition. optional string cssId + # View or scroll timeline + optional ViewOrScrollTimeline viewOrScrollTimeline + + # Timeline instance + type ViewOrScrollTimeline extends object + properties + # Scroll container node + optional DOM.BackendNodeId sourceNodeId + # Represents the starting scroll position of the timeline + # as a length offset in pixels from scroll origin. + optional number startOffset + # Represents the ending scroll position of the timeline + # as a length offset in pixels from scroll origin. + optional number endOffset + # The element whose principal box's visibility in the + # scrollport defined the progress of the timeline. + # Does not exist for animations with ScrollTimeline + optional DOM.BackendNodeId subjectNodeId + # Orientation of the scroll + DOM.ScrollOrientation axis # AnimationEffect instance type AnimationEffect extends object @@ -335,6 +358,9 @@ experimental domain Animation # `AnimationEffect`'s iterations. number iterations # `AnimationEffect`'s iteration duration. + # Milliseconds for time based animations and + # percentage [0 - 100] for scroll driven animations + # (i.e. when viewOrScrollTimeline exists). number duration # `AnimationEffect`'s playback direction. string direction @@ -449,6 +475,12 @@ experimental domain Animation # Animation that was started. Animation animation + # Event for animation that has been updated. + event animationUpdated + parameters + # Animation that was updated. + Animation animation + # Audits domain allows investigation of page violations and possible improvements. experimental domain Audits depends on Network @@ -703,6 +735,11 @@ experimental domain Audits WebAndOsHeaders NoWebOrOsSupport NavigationRegistrationWithoutTransientUserActivation + InvalidInfoHeader + NoRegisterSourceHeader + NoRegisterTriggerHeader + NoRegisterOsSourceHeader + NoRegisterOsTriggerHeader # Details for issues around "Attribution Reporting API" usage. # Explainer: https://github.com/WICG/attribution-reporting-api @@ -839,6 +876,8 @@ experimental domain Audits SilentMediationFailure ThirdPartyCookiesBlocked NotSignedInWithIdp + MissingTransientUserActivation + ReplacedByButtonMode type FederatedAuthUserInfoRequestIssueDetails extends object properties @@ -1061,7 +1100,7 @@ experimental domain Autofill # Munich 81456 type AddressUI extends object properties - # A two dimension array containing the repesentation of values from an address profile. + # A two dimension array containing the representation of values from an address profile. array of AddressFields addressFields # Specified whether a filled field was done so by using the html autocomplete attribute or autofill heuristics. @@ -1084,6 +1123,8 @@ experimental domain Autofill string autofillType # The filling strategy FillingStrategy fillingStrategy + # The frame the field belongs to + Page.FrameId frameId # The form field's DOM node DOM.BackendNodeId fieldId @@ -1242,6 +1283,7 @@ domain Browser protectedMediaIdentifier sensors storageAccess + speakerSelection topLevelStorageAccess videoCapture videoCapturePanTiltZoom @@ -1310,7 +1352,7 @@ domain Browser parameters # Whether to allow all or deny all download requests, or use default Chrome behavior if # available (otherwise deny). |allowAndName| allows download and names files according to - # their dowmload guids. + # their download guids. enum behavior deny allow @@ -1577,7 +1619,7 @@ experimental domain CSS # Owner frame identifier. Page.FrameId frameId # Stylesheet resource URL. Empty if this is a constructed stylesheet created using - # new CSSStyleSheet() (but non-empty if this is a constructed sylesheet imported + # new CSSStyleSheet() (but non-empty if this is a constructed stylesheet imported # as a CSS module script). string sourceURL # URL of source map associated with the stylesheet (if any). @@ -1910,12 +1952,25 @@ experimental domain CSS CSSStyle style # CSS position-fallback rule representation. - type CSSPositionFallbackRule extends object + deprecated type CSSPositionFallbackRule extends object properties Value name # List of keyframes. array of CSSTryRule tryRules + # CSS @position-try rule representation. + type CSSPositionTryRule extends object + properties + # The prelude dashed-ident name + Value name + # The css style sheet identifier (absent for user agent stylesheet and user-specified + # stylesheet rules) this rule came from. + optional StyleSheetId styleSheetId + # Parent stylesheet's origin. + StyleSheetOrigin origin + # Associated style declaration. + CSSStyle style + # CSS keyframes rule representation. type CSSKeyframesRule extends object properties @@ -2089,7 +2144,9 @@ experimental domain CSS # A list of CSS keyframed animations matching this node. optional array of CSSKeyframesRule cssKeyframesRules # A list of CSS position fallbacks matching this node. - optional array of CSSPositionFallbackRule cssPositionFallbackRules + deprecated optional array of CSSPositionFallbackRule cssPositionFallbackRules + # A list of CSS @position-try rules matching this node, based on the position-try-options property. + optional array of CSSPositionTryRule cssPositionTryRules # A list of CSS at-property rules matching this node. optional array of CSSPropertyRule cssPropertyRules # A list of CSS property registrations matching this node. @@ -2131,6 +2188,15 @@ experimental domain CSS returns CSSLayerData rootLayer + # Given a CSS selector text and a style sheet ID, getLocationForSelector + # returns an array of locations of the CSS selector in the style sheet. + experimental command getLocationForSelector + parameters + StyleSheetId styleSheetId + string selectorText + returns + array of SourceRange ranges + # Starts tracking the given computed styles for updates. The specified array of properties # replaces the one previously specified. Pass empty array to disable tracking. # Use takeComputedStyleUpdates to retrieve the list of nodes that had properties modified. @@ -2517,6 +2583,8 @@ domain DOM grammar-error highlight first-line-inherited + scroll-marker + scroll-markers scrollbar scrollbar-thumb scrollbar-button @@ -2559,6 +2627,12 @@ domain DOM Block Both + # Physical scroll orientation + type ScrollOrientation extends string + enum + horizontal + vertical + # DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes. # DOMNode is a base node mirror type. type Node extends object @@ -2783,7 +2857,7 @@ domain DOM # Returns attributes for the specified node. command getAttributes parameters - # Id of the node to retrieve attibutes for. + # Id of the node to retrieve attributes for. NodeId nodeId returns # An interleaved array of node attribute names and values. @@ -3951,13 +4025,13 @@ domain Emulation pause pauseIfNetworkFetchesPending - # Used to specify User Agent Cient Hints to emulate. See https://wicg.github.io/ua-client-hints + # Used to specify User Agent Client Hints to emulate. See https://wicg.github.io/ua-client-hints experimental type UserAgentBrandVersion extends object properties string brand string version - # Used to specify User Agent Cient Hints to emulate. See https://wicg.github.io/ua-client-hints + # Used to specify User Agent Client Hints to emulate. See https://wicg.github.io/ua-client-hints # Missing optional values will be filled in by the target with what it would normally use. experimental type UserAgentMetadata extends object properties @@ -4018,7 +4092,7 @@ domain Emulation optional SensorReadingQuaternion quaternion # Tells whether emulation is supported. - command canEmulate + deprecated command canEmulate returns # True if emulation is supported. boolean result @@ -4095,7 +4169,20 @@ domain Emulation experimental optional DisplayFeature displayFeature # If set, the posture of a foldable device. If not set the posture is set # to continuous. - experimental optional DevicePosture devicePosture + # Deprecated, use Emulation.setDevicePostureOverride. + experimental deprecated optional DevicePosture devicePosture + + # Start reporting the given posture value to the Device Posture API. + # This override can also be set in setDeviceMetricsOverride(). + experimental command setDevicePostureOverride + parameters + DevicePosture posture + + # Clears a device posture override set with either setDeviceMetricsOverride() + # or setDevicePostureOverride() and starts using posture information from the + # platform again. + # Does nothing if no override is set. + experimental command clearDevicePostureOverride experimental command setScrollbarsHidden parameters @@ -4166,7 +4253,7 @@ domain Emulation SensorType type optional SensorMetadata metadata - # Updates the sensor readings reported by a sensor type previously overriden + # Updates the sensor readings reported by a sensor type previously overridden # by setSensorOverrideEnabled. experimental command setSensorOverrideReadings parameters @@ -4237,8 +4324,9 @@ domain Emulation # Overrides default host system timezone with the specified one. command setTimezoneOverride parameters - # The timezone identifier. If empty, disables the override and - # restores default host system timezone. + # The timezone identifier. List of supported timezones: + # https://source.chromium.org/chromium/chromium/deps/icu.git/+/faee8bc70570192d82d2978a71e2a615788597d1:source/data/misc/metaZones.txt + # If empty, disables the override and restores default host system timezone. string timezoneId # Resizes the frame/viewport of the page. Note that this does not affect the frame's container @@ -4271,6 +4359,7 @@ domain Emulation integer hardwareConcurrency # Allows overriding user agent with the given string. + # `userAgentMetadata` must be set for Client Hint headers to be sent. command setUserAgentOverride parameters # User agent to use. @@ -4357,7 +4446,7 @@ domain IO parameters # Handle of the stream to read. StreamHandle handle - # Seek to the specified offset before reading (if not specificed, proceed with offset + # Seek to the specified offset before reading (if not specified, proceed with offset # following the last read). Some types of streams may only support sequential reads. optional integer offset # Maximum number of bytes to read (left upon the agent discretion if not specified). @@ -4741,7 +4830,7 @@ domain Input # The text to insert. string text - # This method sets the current candidate text for ime. + # This method sets the current candidate text for IME. # Use imeCommitComposition to commit the final text. # Use imeSetComposition with empty string as text to cancel composition. experimental command imeSetComposition @@ -5121,7 +5210,7 @@ experimental domain LayerTree event layerTreeDidChange parameters - # Layer tree, absent if not in the comspositing mode. + # Layer tree, absent if not in the compositing mode. optional array of Layer layers # Provides access to log entries. @@ -5473,10 +5562,11 @@ domain Network # HTTP request headers. Headers headers # HTTP POST request data. - optional string postData + # Use postDataEntries instead. + deprecated optional string postData # True when the request has POST data. Note that postData might still be omitted when this flag is true when the data is too long. optional boolean hasPostData - # Request body elements. This will be converted from base64 to binary + # Request body elements (post data broken into individual entries). experimental optional array of PostDataEntry postDataEntries # The mixed content type of the request. optional Security.MixedContentType mixedContentType @@ -5498,7 +5588,7 @@ domain Network # passed by the developer (e.g. via "fetch") as understood by the backend. experimental optional TrustTokenParams trustTokenParams # True if this resource request is considered to be the 'same site' as the - # request correspondinfg to the main frame. + # request corresponding to the main frame. experimental optional boolean isSameSite # Details of a signed certificate timestamp (SCT). @@ -5702,9 +5792,18 @@ domain Network # This value is used when the reason is unknown. unspecifiedReason + # Source of service worker router. + type ServiceWorkerRouterSource extends string + enum + network + cache + fetch-event + race-network-and-fetch-handler + experimental type ServiceWorkerRouterInfo extends object properties integer ruleIdMatched + ServiceWorkerRouterSource matchedSourceType # HTTP response data. type Response extends object @@ -5741,7 +5840,9 @@ domain Network optional boolean fromServiceWorker # Specifies that the request was served from the prefetch cache. optional boolean fromPrefetchCache - # Infomation about how Service Worker Static Router was used. + # Specifies that the request was served from the prefetch cache. + optional boolean fromEarlyHints + # Information about how Service Worker Static Router was used. experimental optional ServiceWorkerRouterInfo serviceWorkerRouterInfo # Total number of bytes received for this request so far. number encodedDataLength @@ -5877,7 +5978,7 @@ domain Network # The cookie had the "Secure" attribute but was not received over a secure connection. SecureOnly # The cookie had the "SameSite=Strict" attribute but came from a cross-origin response. - # This includes navigation requests intitiated by other origins. + # This includes navigation requests initiated by other origins. SameSiteStrict # The cookie had the "SameSite=Lax" attribute but came from a cross-origin response. SameSiteLax @@ -5911,7 +6012,7 @@ domain Network UnknownError # The cookie had the "SameSite=Strict" attribute but came from a response # with the same registrable domain but a different scheme. - # This includes navigation requests intitiated by other origins. + # This includes navigation requests initiated by other origins. # This is the "Schemeful Same-Site" version of the blocked reason. SchemefulSameSiteStrict # The cookie had the "SameSite=Lax" attribute but came from a response @@ -5973,7 +6074,7 @@ domain Network UnknownError # The cookie had the "SameSite=Strict" attribute but came from a response # with the same registrable domain but a different scheme. - # This includes navigation requests intitiated by other origins. + # This includes navigation requests initiated by other origins. # This is the "Schemeful Same-Site" version of the blocked reason. SchemefulSameSiteStrict # The cookie had the "SameSite=Lax" attribute but came from a response @@ -5991,6 +6092,28 @@ domain Network # RFC6265bis. NameValuePairExceedsMaxSize + # Types of reasons why a cookie should have been blocked by 3PCD but is exempted for the request. + experimental type CookieExemptionReason extends string + enum + # The default value. Cookie with this reason could either be blocked or included. + None + # The cookie should have been blocked by 3PCD but is exempted by explicit user setting. + UserSetting + # The cookie should have been blocked by 3PCD but is exempted by metadata mitigation. + TPCDMetadata + # The cookie should have been blocked by 3PCD but is exempted by Deprecation Trial mitigation. + TPCDDeprecationTrial + # The cookie should have been blocked by 3PCD but is exempted by heuristics mitigation. + TPCDHeuristics + # The cookie should have been blocked by 3PCD but is exempted by Enterprise Policy. + EnterprisePolicy + # The cookie should have been blocked by 3PCD but is exempted by Storage Access API. + StorageAccess + # The cookie should have been blocked by 3PCD but is exempted by Top-level Storage Access API. + TopLevelStorageAccess + # The cookie should have been blocked by 3PCD but is exempted by CORS opt-in. + CorsOptIn + # A cookie which was not stored from a response with the corresponding reason. experimental type BlockedSetCookieWithReason extends object properties @@ -6004,13 +6127,28 @@ domain Network # errors. optional Cookie cookie - # A cookie with was not sent with a request with the corresponding reason. - experimental type BlockedCookieWithReason extends object + # A cookie should have been blocked by 3PCD but is exempted and stored from a response with the + # corresponding reason. A cookie could only have at most one exemption reason. + experimental type ExemptedSetCookieWithReason extends object + properties + # The reason the cookie was exempted. + CookieExemptionReason exemptionReason + # The string representing this individual cookie as it would appear in the header. + string cookieLine + # The cookie object representing the cookie. + Cookie cookie + + # A cookie associated with the request which may or may not be sent with it. + # Includes the cookies itself and reasons for blocking or exemption. + experimental type AssociatedCookie extends object properties - # The reason(s) the cookie was blocked. - array of CookieBlockedReason blockedReasons # The cookie object representing the cookie which was not sent. Cookie cookie + # The reason(s) the cookie was blocked. If empty means the cookie is included. + array of CookieBlockedReason blockedReasons + # The reason the cookie should have been blocked by 3PCD but is exempted. A cookie could + # only have at most one exemption reason. + optional CookieExemptionReason exemptionReason # Cookie parameter object type CookieParam extends object @@ -6165,7 +6303,7 @@ domain Network optional SignedExchangeHeader header # Security details for the signed exchange header. optional SecurityDetails securityDetails - # Errors occurred while handling the signed exchagne. + # Errors occurred while handling the signed exchange. optional array of SignedExchangeError errors # List of content encodings supported by the backend. @@ -6238,7 +6376,7 @@ domain Network # Response to a requestIntercepted with an authChallenge. Must not be set otherwise. optional AuthChallengeResponse authChallengeResponse - # Deletes browser cookies with matching name and url or domain/path pair. + # Deletes browser cookies with matching name and url or domain/path/partitionKey pair. command deleteCookies parameters # Name of the cookies to remove. @@ -6250,6 +6388,9 @@ domain Network optional string domain # If specified, deletes only cookies with the exact path. optional string path + # If specified, deletes only cookies with the the given name and partitionKey where domain + # matches provided URL. + optional string partitionKey # Disables network tracking, prevents network events from being sent to the client. command disable @@ -6267,6 +6408,12 @@ domain Network number uploadThroughput # Connection type if known. optional ConnectionType connectionType + # WebRTC packet loss (percent, 0-100). 0 disables packet loss emulation, 100 drops all the packets. + experimental optional number packetLoss + # WebRTC packet queue length (packet). 0 removes any queue length limitations. + experimental optional integer packetQueueLength + # WebRTC packetReordering feature. + experimental optional boolean packetReordering # Enables network tracking, network events will now be delivered to the client. command enable @@ -6515,7 +6662,7 @@ domain Network MonotonicTime timestamp # Resource type. ResourceType type - # User friendly error message. + # Error message. List of network errors: https://cs.chromium.org/chromium/src/net/base/net_error_list.h string errorText # True if loading was canceled. optional boolean canceled @@ -6779,8 +6926,8 @@ domain Network # Request identifier. Used to match this information to an existing requestWillBeSent event. RequestId requestId # A list of cookies potentially associated to the requested URL. This includes both cookies sent with - # the request and the ones not sent; the latter are distinguished by having blockedReason field set. - array of BlockedCookieWithReason associatedCookies + # the request and the ones not sent; the latter are distinguished by having blockedReasons field set. + array of AssociatedCookie associatedCookies # Raw request headers as they will be sent over the wire. Headers headers # Connection timing information for the request. @@ -6816,8 +6963,21 @@ domain Network # The cookie partition key that will be used to store partitioned cookies set in this response. # Only sent when partitioned cookies are enabled. optional string cookiePartitionKey - # True if partitioned cookies are enabled, but the partition key is not serializeable to string. + # True if partitioned cookies are enabled, but the partition key is not serializable to string. optional boolean cookiePartitionKeyOpaque + # A list of cookies which should have been blocked by 3PCD but are exempted and stored from + # the response with the corresponding reason. + optional array of ExemptedSetCookieWithReason exemptedCookies + + # Fired when 103 Early Hints headers is received in addition to the common response. + # Not every responseReceived event will have an responseReceivedEarlyHints fired. + # Only one responseReceivedEarlyHints may be fired for eached responseReceived event. + experimental event responseReceivedEarlyHints + parameters + # Request identifier. Used to match this information to another responseReceived event. + RequestId requestId + # Raw response headers as they were received over the wire. + Headers headers # Fired exactly once for each Trust Token operation. Depending on # the type of the operation and whether the operation succeeded or @@ -7057,7 +7217,7 @@ experimental domain Overlay # Configuration data for drawing the source order of an elements children. type SourceOrderConfig extends object properties - # the color to outline the givent element in. + # the color to outline the given element in. DOM.RGBA parentOutlineColor # the color to outline the child elements in. DOM.RGBA childOutlineColor @@ -7257,7 +7417,7 @@ experimental domain Overlay properties # Whether the title bar CSS should be shown when emulating the Window Controls Overlay. boolean showCSS - # Seleted platforms to show the overlay. + # Selected platforms to show the overlay. string selectedPlatform # The theme color defined in app manifest. string themeColor @@ -7345,8 +7505,8 @@ experimental domain Overlay command hideHighlight # Highlights owner element of the frame with given id. - # Deprecated: Doesn't work reliablity and cannot be fixed due to process - # separatation (the owner node might be in a different process). Determine + # Deprecated: Doesn't work reliably and cannot be fixed due to process + # separation (the owner node might be in a different process). Determine # the owner node in the client and use highlightNode. deprecated command highlightFrame parameters @@ -7637,7 +7797,7 @@ domain Page ch-ua-platform ch-ua-model ch-ua-mobile - ch-ua-form-factor + ch-ua-form-factors ch-ua-full-version ch-ua-full-version-list ch-ua-platform-version @@ -7686,6 +7846,7 @@ domain Page shared-storage shared-storage-select-url smart-card + speaker-selection storage-access sub-apps sync-xhr @@ -7912,7 +8073,7 @@ domain Page properties # Error message. string message - # If criticial, this is a non-recoverable parse error. + # If critical, this is a non-recoverable parse error. integer critical # Error line. integer line @@ -8166,15 +8327,132 @@ domain Page # Enables page domain notifications. command enable + # The manifest of a webapp, see + # https://www.w3.org/TR/appmanifest/#dfn-manifest. + # Some fields do not appear in the standard since the API is designed to + # expose more browser internal states. + + experimental type FileFilter extends object + properties + optional string name + optional array of string accepts + + experimental type FileHandler extends object + properties + string action + string name + optional array of ImageResource icons + # Mimic a map, name is the key, accepts is the value. + optional array of FileFilter accepts + # Won't repeat the enums, using string for easy comparison. Same as the + # other enums below. + string launchType + + # The image definition used in both icon and screenshot. + experimental type ImageResource extends object + properties + # The src field in the definition, but changing to url in favor of + # consistency. + string url + optional string sizes + optional string type + + experimental type LaunchHandler extends object + properties + string clientMode + + experimental type ProtocolHandler extends object + properties + string protocol + string url + + experimental type RelatedApplication extends object + properties + optional string id + string url + + experimental type ScopeExtension extends object + properties + # Instead of using tuple, this field always returns the serialized string + # for easy understanding and comparison. + string origin + boolean hasOriginWildcard + + experimental type Screenshot extends object + properties + ImageResource image + string formFactor + optional string label + + experimental type ShareTarget extends object + properties + string action + string method + string enctype + # Embed the ShareTargetParams + optional string title + optional string text + optional string url + optional array of FileFilter files + + experimental type Shortcut extends object + properties + string name + string url + + experimental type WebAppManifest extends object + properties + optional string backgroundColor + # The extra description provided by the manifest. + optional string description + optional string dir + optional string display + # The overrided display mode controlled by the user. + optional array of string displayOverrides + # The handlers to open files. + optional array of FileHandler fileHandlers + optional array of ImageResource icons + optional string id + optional string lang + # TODO(crbug.com/1231886): This field is non-standard and part of a Chrome + # experiment. See: + # https://github.com/WICG/web-app-launch/blob/main/launch_handler.md + optional LaunchHandler launchHandler + optional string name + optional string orientation + optional boolean preferRelatedApplications + # The handlers to open protocols. + optional array of ProtocolHandler protocolHandlers + optional array of RelatedApplication relatedApplications + optional string scope + # Non-standard, see + # https://github.com/WICG/manifest-incubations/blob/gh-pages/scope_extensions-explainer.md + optional array of ScopeExtension scopeExtensions + # The screenshots used by chromium. + optional array of Screenshot screenshots + optional ShareTarget shareTarget + optional string shortName + optional array of Shortcut shortcuts + optional string startUrl + optional string themeColor + + # Gets the processed manifest for this current document. + # This API always waits for the manifest to be loaded. + # If manifestId is provided, and it does not match the manifest of the + # current document, this API errors out. + # If there isn’t a loaded page, this API errors out immediately. command getAppManifest + parameters + optional string manifestId returns # Manifest location. string url array of AppManifestError errors # Manifest content. optional string data - # Parsed manifest properties - experimental optional AppManifestParsedProperties parsed + # Parsed manifest properties. Deprecated, use manifest instead. + experimental deprecated optional AppManifestParsedProperties parsed + experimental WebAppManifest manifest experimental command getInstallabilityErrors returns @@ -8569,7 +8847,7 @@ domain Page experimental command stopScreencast # Requests backend to produce compilation cache for the specified scripts. - # `scripts` are appeneded to the list of scripts for which the cache + # `scripts` are appended to the list of scripts for which the cache # would be produced. The list may be reset during page navigation. # When script with a matching URL is encountered, the cache is optionally # produced upon backend discretion, based on internal heuristics. @@ -8589,7 +8867,7 @@ domain Page # Clears seeded compilation cache. experimental command clearCompilationCache - # Enum of possible auto-reponse for permisison / prompt dialogs. + # Enum of possible auto-response for permission / prompt dialogs. experimental type AutoResponseMode extends string enum none @@ -8860,6 +9138,7 @@ domain Page CookieDisabled HTTPAuthRequired CookieFlushed + BroadcastChannelOnMessage #Blocklisted features WebSocket WebTransport @@ -8870,7 +9149,6 @@ domain Page SubresourceHasCacheControlNoCache ContainsPlugins DocumentLoaded - DedicatedWorkerOrWorklet OutstandingNetworkRequestOthers RequestedMIDIPermission RequestedAudioCapturePermission @@ -8911,6 +9189,7 @@ domain Page SmartCard LiveMediaStreamTrack UnloadHandler + ParserAborted # Disabled for RenderFrameHost reasons # See content/browser/renderer_host/back_forward_cache_disable.h for explanations. ContentSecurityHandler @@ -8987,7 +9266,7 @@ domain Page # when bfcache navigation fails. experimental event backForwardCacheNotUsed parameters - # The loader id for the associated navgation. + # The loader id for the associated navigation. Network.LoaderId loaderId # The frame id of the associated frame. FrameId frameId @@ -9144,7 +9423,7 @@ experimental domain PerformanceTimeline # Identifies the frame that this event is related to. Empty for non-frame targets. Page.FrameId frameId # The event type, as specified in https://w3c.github.io/performance-timeline/#dom-performanceentry-entrytype - # This determines which of the optional "details" fiedls is present. + # This determines which of the optional "details" fields is present. string type # Name may be empty depending on the type. string name @@ -9220,7 +9499,7 @@ domain Security Network.TimeSinceEpoch validTo # The highest priority network error code, if the certificate has an error. optional string certificateNetworkError - # True if the certificate uses a weak signature aglorithm. + # True if the certificate uses a weak signature algorithm. boolean certificateHasWeakSignature # True if the certificate has a SHA1 signature in the chain. boolean certificateHasSha1Signature @@ -9546,27 +9825,14 @@ experimental domain Storage started configResolved - # Ad advertising element inside an interest group. - type InterestGroupAd extends object - properties - string renderURL - optional string metadata - - # The full details of an interest group. - type InterestGroupDetails extends object - properties - string ownerOrigin - string name - Network.TimeSinceEpoch expirationTime - string joiningOrigin - optional string biddingLogicURL - optional string biddingWasmHelperURL - optional string updateURL - optional string trustedBiddingSignalsURL - array of string trustedBiddingSignalsKeys - optional string userBiddingSignals - array of InterestGroupAd ads - array of InterestGroupAd adComponents + # Enum of network fetches auctions can do. + type InterestGroupAuctionFetchType extends string + enum + bidderJs + bidderWasm + sellerJs + bidderTrustedSignals + sellerTrustedSignals # Enum of shared storage access types. type SharedStorageAccessType extends string @@ -9578,6 +9844,7 @@ experimental domain Storage documentAppend documentDelete documentClear + documentGet workletSet workletAppend workletDelete @@ -9587,6 +9854,10 @@ experimental domain Storage workletEntries workletLength workletRemainingBudget + headerSet + headerAppend + headerDelete + headerClear # Struct for a single key-value pair in an origin's shared storage. type SharedStorageEntry extends object @@ -9597,9 +9868,15 @@ experimental domain Storage # Details for an origin's shared storage. type SharedStorageMetadata extends object properties + # Time when the origin's shared storage was last created. Network.TimeSinceEpoch creationTime + # Number of key-value pairs stored in origin's shared storage. integer length + # Current amount of bits of entropy remaining in the navigation budget. number remainingBudget + # Total number of bytes stored as key-value pairs in origin's shared + # storage. + integer bytesUsed # Pair of reporting metadata details for a candidate URL for `selectURL()`. type SharedStorageReportingMetadata extends object @@ -9639,18 +9916,24 @@ experimental domain Storage # SharedStorageAccessType.documentDelete, # SharedStorageAccessType.workletSet, # SharedStorageAccessType.workletAppend, - # SharedStorageAccessType.workletDelete, and - # SharedStorageAccessType.workletGet. + # SharedStorageAccessType.workletDelete, + # SharedStorageAccessType.workletGet, + # SharedStorageAccessType.headerSet, + # SharedStorageAccessType.headerAppend, and + # SharedStorageAccessType.headerDelete. optional string key # Value for a specific entry in an origin's shared storage. # Present only for SharedStorageAccessType.documentSet, # SharedStorageAccessType.documentAppend, - # SharedStorageAccessType.workletSet, and - # SharedStorageAccessType.workletAppend. + # SharedStorageAccessType.workletSet, + # SharedStorageAccessType.workletAppend, + # SharedStorageAccessType.headerSet, and + # SharedStorageAccessType.headerAppend. optional string value # Whether or not to set an entry for a key if that key is already present. - # Present only for SharedStorageAccessType.documentSet and - # SharedStorageAccessType.workletSet. + # Present only for SharedStorageAccessType.documentSet, + # SharedStorageAccessType.workletSet, and + # SharedStorageAccessType.headerSet. optional boolean ignoreIfPresent type StorageBucketsDurability extends string @@ -9818,14 +10101,19 @@ experimental domain Storage string ownerOrigin string name returns - InterestGroupDetails details + # This largely corresponds to: + # https://wicg.github.io/turtledove/#dictdef-generatebidinterestgroup + # but has absolute expirationTime instead of relative lifetimeMs and + # also adds joiningOrigin. + object details # Enables/Disables issuing of interestGroupAccessed events. experimental command setInterestGroupTracking parameters boolean enable - # Enables/Disables issuing of interestGroupAuctionEvent events. + # Enables/Disables issuing of interestGroupAuctionEventOccurred and + # interestGroupAuctionNetworkRequestCreated. experimental command setInterestGroupAuctionTracking parameters boolean enable @@ -9966,6 +10254,19 @@ experimental domain Storage # Set for started and configResolved optional object auctionConfig + # Specifies which auctions a particular network fetch may be related to, and + # in what role. Note that it is not ordered with respect to + # Network.requestWillBeSent (but will happen before loadingFinished + # loadingFailed). + event interestGroupAuctionNetworkRequestCreated + parameters + InterestGroupAuctionFetchType type + Network.RequestId requestId + # This is the set of the auctions using the worklet that issued this + # request. In the case of trusted signals, it's possible that only some of + # them actually care about the keys being queried. + array of InterestGroupAuctionId auctions + # Shared storage was accessed by the associated page. # The following parameters are included in all events. event sharedStorageAccessed @@ -9978,7 +10279,7 @@ experimental domain Storage Page.FrameId mainFrameId # Serialized origin for the context that invoked the Shared Storage API. string ownerOrigin - # The sub-parameters warapped by `params` are all optional and their + # The sub-parameters wrapped by `params` are all optional and their # presence/absence depends on `type`. SharedStorageAccessParams params @@ -10001,6 +10302,13 @@ experimental domain Storage parameters boolean enable + # Sends all pending Attribution Reports immediately, regardless of their + # scheduled report time. + experimental command sendPendingAttributionReports + returns + # The number of reports that were sent. + integer numSent + experimental type AttributionReportingSourceType extends string enum navigation @@ -10083,6 +10391,7 @@ experimental domain Storage destinationBothLimitsReached reportingOriginsPerSiteLimitReached exceedsMaxChannelCapacity + exceedsMaxTriggerStateCardinality experimental event attributionReportingSourceRegistered parameters @@ -10094,13 +10403,18 @@ experimental domain Storage include exclude - experimental type AttributionReportingAggregatableValueEntry extends object + experimental type AttributionReportingAggregatableValueDictEntry extends object properties string key # number instead of integer because not all uint32 can be represented by # int number value + experimental type AttributionReportingAggregatableValueEntry extends object + properties + array of AttributionReportingAggregatableValueDictEntry values + AttributionReportingFilterPair filters + experimental type AttributionReportingEventTriggerData extends object properties UnsignedInt64AsBase10 data @@ -10177,6 +10491,22 @@ experimental domain Storage AttributionReportingEventLevelResult eventLevel AttributionReportingAggregatableResult aggregatable + # A single Related Website Set object. + experimental type RelatedWebsiteSet extends object + properties + # The primary site of this set, along with the ccTLDs if there is any. + array of string primarySites + # The associated sites of this set, along with the ccTLDs if there is any. + array of string associatedSites + # The service sites of this set, along with the ccTLDs if there is any. + array of string serviceSites + + # Returns the effective Related Website Sets in use by this profile for the browser + # session. The effective Related Website Sets will not change during a browser session. + experimental command getRelatedWebsiteSets + returns + array of RelatedWebsiteSet sets + # The SystemInfo domain defines methods and events for querying low-level system information. experimental domain SystemInfo @@ -10328,6 +10658,7 @@ domain Target type TargetInfo extends object properties TargetID targetId + # List of types: https://source.chromium.org/chromium/chromium/src/+/main:content/browser/devtools/devtools_agent_host_impl.cc?ss=chromium&q=f:devtools%20-f:out%20%22::kTypeTab%5B%5D%22 string type string title string url @@ -10347,7 +10678,7 @@ domain Target # A filter used by target query/discovery/auto-attach operations. experimental type FilterEntry extends object properties - # If set, causes exclusion of mathcing targets from the list. + # If set, causes exclusion of matching targets from the list. optional boolean exclude # If not present, matches any type. optional string type @@ -10401,7 +10732,7 @@ domain Target # # Injected object will be available as `window[bindingName]`. # - # The object has the follwing API: + # The object has the following API: # - `binding.send(json)` - a method to send messages over the remote debugging protocol # - `binding.onmessage = json => handleMessage(json)` - a callback that will be called for the protocol notifications and command responses. experimental command exposeDevToolsProtocol @@ -10626,47 +10957,47 @@ experimental domain Tethering # Connection id to be used. string connectionId -experimental domain Tracing +domain Tracing depends on IO # Configuration for memory dump. Used only when "memory-infra" category is enabled. - type MemoryDumpConfig extends object + experimental type MemoryDumpConfig extends object type TraceConfig extends object properties # Controls how the trace buffer stores data. - optional enum recordMode + experimental optional enum recordMode recordUntilFull recordContinuously recordAsMuchAsPossible echoToConsole # Size of the trace buffer in kilobytes. If not specified or zero is passed, a default value # of 200 MB would be used. - optional number traceBufferSizeInKb + experimental optional number traceBufferSizeInKb # Turns on JavaScript stack sampling. - optional boolean enableSampling + experimental optional boolean enableSampling # Turns on system tracing. - optional boolean enableSystrace + experimental optional boolean enableSystrace # Turns on argument filter. - optional boolean enableArgumentFilter + experimental optional boolean enableArgumentFilter # Included category filters. optional array of string includedCategories # Excluded category filters. optional array of string excludedCategories # Configuration to synthesize the delays in tracing. - optional array of string syntheticDelays + experimental optional array of string syntheticDelays # Configuration for memory dump triggers. Used only when "memory-infra" category is enabled. - optional MemoryDumpConfig memoryDumpConfig + experimental optional MemoryDumpConfig memoryDumpConfig # Data format of a trace. Can be either the legacy JSON format or the # protocol buffer format. Note that the JSON format will be deprecated soon. - type StreamFormat extends string + experimental type StreamFormat extends string enum json proto # Compression type to use for traces returned via streams. - type StreamCompression extends string + experimental type StreamCompression extends string enum none gzip @@ -10674,7 +11005,7 @@ experimental domain Tracing # Details exposed when memory request explicitly declared. # Keep consistent with memory_dump_request_args.h and # memory_instrumentation.mojom - type MemoryDumpLevelOfDetail extends string + experimental type MemoryDumpLevelOfDetail extends string enum background light @@ -10685,7 +11016,7 @@ experimental domain Tracing # supported on Chrome OS and uses the Perfetto system tracing service. # `auto` chooses `system` when the perfettoConfig provided to Tracing.start # specifies at least one non-Chrome data source; otherwise uses `chrome`. - type TracingBackend extends string + experimental type TracingBackend extends string enum auto chrome @@ -10695,19 +11026,19 @@ experimental domain Tracing command end # Gets supported tracing categories. - command getCategories + experimental command getCategories returns # A list of supported tracing categories. array of string categories # Record a clock sync marker in the trace. - command recordClockSyncMarker + experimental command recordClockSyncMarker parameters # The ID of this clock sync marker string syncId # Request a global memory dump. - command requestMemoryDump + experimental command requestMemoryDump parameters # Enables more deterministic results by forcing garbage collection optional boolean deterministic @@ -10723,11 +11054,11 @@ experimental domain Tracing command start parameters # Category/tag filter - deprecated optional string categories + experimental deprecated optional string categories # Tracing options - deprecated optional string options + experimental deprecated optional string options # If set, the agent will issue bufferUsage events at this interval, specified in milliseconds - optional number bufferUsageReportingInterval + experimental optional number bufferUsageReportingInterval # Whether to report trace events as series of dataCollected events or to save trace to a # stream (defaults to `ReportEvents`). optional enum transferMode @@ -10738,16 +11069,16 @@ experimental domain Tracing optional StreamFormat streamFormat # Compression format to use. This only applies when using `ReturnAsStream` # transfer mode (defaults to `none`) - optional StreamCompression streamCompression + experimental optional StreamCompression streamCompression optional TraceConfig traceConfig # Base64-encoded serialized perfetto.protos.TraceConfig protobuf message # When specified, the parameters `categories`, `options`, `traceConfig` # are ignored. - optional binary perfettoConfig + experimental optional binary perfettoConfig # Backend type (defaults to `auto`) - optional TracingBackend tracingBackend + experimental optional TracingBackend tracingBackend - event bufferUsage + experimental event bufferUsage parameters # A number in range [0..1] that indicates the used size of event buffer as a fraction of its # total size. @@ -10760,7 +11091,7 @@ experimental domain Tracing # Contains a bucket of collected trace events. When tracing is stopped collected events will be # sent as a sequence of dataCollected events followed by tracingComplete event. - event dataCollected + experimental event dataCollected parameters array of object value @@ -11308,6 +11639,14 @@ experimental domain WebAuthn # The large blob associated with the credential. # See https://w3c.github.io/webauthn/#sctn-large-blob-extension optional binary largeBlob + # Assertions returned by this credential will have the backup eligibility + # (BE) flag set to this value. Defaults to the authenticator's + # defaultBackupEligibility value. + optional boolean backupEligibility + # Assertions returned by this credential will have the backup state (BS) + # flag set to this value. Defaults to the authenticator's + # defaultBackupState value. + optional boolean backupState # Enable the WebAuthn domain and start intercepting credential storage and # retrieval with a virtual authenticator. @@ -11396,6 +11735,15 @@ experimental domain WebAuthn AuthenticatorId authenticatorId boolean enabled + # Allows setting credential properties. + # https://w3c.github.io/webauthn/#sctn-automation-set-credential-properties + command setCredentialProperties + parameters + AuthenticatorId authenticatorId + binary credentialId + optional boolean backupEligibility + optional boolean backupState + # Triggered when a credential is added to an authenticator. event credentialAdded parameters @@ -11621,7 +11969,7 @@ experimental domain Preload # that had a speculation rule that triggered the attempt, and the # BackendNodeIds of or elements that triggered the # attempt (in the case of attempts triggered by a document rule). It is - # possible for mulitple rule sets and links to trigger a single attempt. + # possible for multiple rule sets and links to trigger a single attempt. type PreloadingAttemptSource extends object properties PreloadingAttemptKey key @@ -11902,3 +12250,33 @@ experimental domain FedCm # Resets the cooldown time, if any, to allow the next FedCM call to show # a dialog even if one was recently dismissed by the user. command resetCooldown + +# This domain allows interacting with the browser to control PWAs. +experimental domain PWA + + # The following types are the replica of + # https://crsrc.org/c/chrome/browser/web_applications/proto/web_app_os_integration_state.proto;drc=9910d3be894c8f142c977ba1023f30a656bc13fc;l=67 + type FileHandlerAccept extends object + properties + # New name of the mimetype according to + # https://www.iana.org/assignments/media-types/media-types.xhtml + string mediaType + array of string fileExtensions + + type FileHandler extends object + properties + string action + array of FileHandlerAccept accepts + string displayName + + # Returns the following OS state for the given manifest id. + command getOsAppState + parameters + # The id from the webapp's manifest file, commonly it's the url of the + # site installing the webapp. See + # https://web.dev/learn/pwa/web-app-manifest. + string manifestId + returns + integer badgeCount + array of FileHandler fileHandlers + diff --git a/common/devtools/chromium/v122/js_protocol.pdl b/common/devtools/chromium/v125/js_protocol.pdl similarity index 100% rename from common/devtools/chromium/v122/js_protocol.pdl rename to common/devtools/chromium/v125/js_protocol.pdl diff --git a/common/repositories.bzl b/common/repositories.bzl index 2fcaf067d0b5b..fe920538c58f4 100644 --- a/common/repositories.bzl +++ b/common/repositories.bzl @@ -11,8 +11,8 @@ def pin_browsers(): http_archive( name = "linux_firefox", - url = "https://ftp.mozilla.org/pub/firefox/releases/125.0.3/linux-x86_64/en-US/firefox-125.0.3.tar.bz2", - sha256 = "2fb91b8dd196a8ee47238d82d6b7afef3dd1bb3212b29122ab1c3897052d8a49", + url = "https://ftp.mozilla.org/pub/firefox/releases/126.0/linux-x86_64/en-US/firefox-126.0.tar.bz2", + sha256 = "f029b9dd18e1955fa1391cfaac2fdbe338343ddff59eeb1f4b2f509cc01b4584", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -33,8 +33,8 @@ js_library( dmg_archive( name = "mac_firefox", - url = "https://ftp.mozilla.org/pub/firefox/releases/125.0.3/mac/en-US/Firefox%20125.0.3.dmg", - sha256 = "a9b0903aaba0f2b4b79026f2ff1ef0ee3b4628469d674318d192af604aa2b0a0", + url = "https://ftp.mozilla.org/pub/firefox/releases/126.0/mac/en-US/Firefox%20126.0.dmg", + sha256 = "7fdf67bd49d4e9f3a2f34aadc5d03b7d9558d153c63a4f212c08100237589685", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -50,8 +50,8 @@ js_library( http_archive( name = "linux_beta_firefox", - url = "https://ftp.mozilla.org/pub/firefox/releases/126.0b9/linux-x86_64/en-US/firefox-126.0b9.tar.bz2", - sha256 = "053e60089c6ab85507dca96ad8c9d32e3fc6d21ac5bdf7e616c673327804565f", + url = "https://ftp.mozilla.org/pub/firefox/releases/127.0b2/linux-x86_64/en-US/firefox-127.0b2.tar.bz2", + sha256 = "91bfda5ff421d6db1577990555c2da4096c18ea7d7e4faa626bef572b75bd463", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -72,8 +72,8 @@ js_library( dmg_archive( name = "mac_beta_firefox", - url = "https://ftp.mozilla.org/pub/firefox/releases/126.0b9/mac/en-US/Firefox%20126.0b9.dmg", - sha256 = "67806b532db26059fbe747ec3fc2f6306d9bb4b09e1b264c49461c4d613b5366", + url = "https://ftp.mozilla.org/pub/firefox/releases/127.0b2/mac/en-US/Firefox%20127.0b2.dmg", + sha256 = "6ab8f5dfe3f5c15f56e0a7860ed3286f4d84e925609538419eae5abe32be8026", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -123,10 +123,10 @@ js_library( pkg_archive( name = "mac_edge", - url = "https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/f12b802a-7a08-47df-b40e-04570cf4e133/MicrosoftEdge-124.0.2478.97.pkg", - sha256 = "a1c9df556e158a2564e3f8238082ea724ea4a2585b4b543376d0f0e4bc389749", + url = "https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/8cea311c-9c6b-4fb4-89fe-4761ab7f4161/MicrosoftEdge-124.0.2478.105.pkg", + sha256 = "3d9088b570c62725f77469372d16e98023ccd35c59f6e8979adac33d82757c9c", move = { - "MicrosoftEdge-124.0.2478.97.pkg/Payload/Microsoft Edge.app": "Edge.app", + "MicrosoftEdge-124.0.2478.105.pkg/Payload/Microsoft Edge.app": "Edge.app", }, build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") @@ -143,8 +143,8 @@ js_library( deb_archive( name = "linux_edge", - url = "https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/microsoft-edge-stable_124.0.2478.97-1_amd64.deb", - sha256 = "85d0ad1d63847b3dd54f0f214d18a2b54462bb43291536e773ad1b8b29bbf799", + url = "https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/microsoft-edge-stable_124.0.2478.105-1_amd64.deb", + sha256 = "fdcff7bbd8a3bd4e043514cc22735b358c8fafe2ae92e4c374634918df35c4a5", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -165,8 +165,8 @@ js_library( http_archive( name = "linux_edgedriver", - url = "https://msedgedriver.azureedge.net/124.0.2478.97/edgedriver_linux64.zip", - sha256 = "b8c2b6c20c1669240ef601939a3097f3b704d062215ee5bd98cb6415f5a7c907", + url = "https://msedgedriver.azureedge.net/124.0.2478.105/edgedriver_linux64.zip", + sha256 = "e093022f67895f0c4053e3415bf279a2304c5fef042524f242ec92acf9571c47", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -182,8 +182,8 @@ js_library( http_archive( name = "mac_edgedriver", - url = "https://msedgedriver.azureedge.net/124.0.2478.97/edgedriver_mac64.zip", - sha256 = "8c70da916d7a040a90949a6dcb9c4bf9717d5d7daffeb7a4ca9304327c3ad199", + url = "https://msedgedriver.azureedge.net/124.0.2478.105/edgedriver_mac64.zip", + sha256 = "57379705717af8c0b608e6ce544ddc686957f83a884ad381bcc692a4a622bba4", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -199,8 +199,8 @@ js_library( http_archive( name = "linux_chrome", - url = "https://storage.googleapis.com/chrome-for-testing-public/124.0.6367.207/linux64/chrome-linux64.zip", - sha256 = "22ac5d13b0bcbe1e7a454714421ab2448f8f8568ad3954cb4a87750bd70336c2", + url = "https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.41/linux64/chrome-linux64.zip", + sha256 = "3e0158298a75418e2c4a631625c0e423c04e2e87eb54126584aaae505ba32a9b", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -221,8 +221,8 @@ js_library( http_archive( name = "mac_chrome", - url = "https://storage.googleapis.com/chrome-for-testing-public/124.0.6367.207/mac-x64/chrome-mac-x64.zip", - sha256 = "67d8b832c49c0afc96f2b3f3480acae270293f097c162ef2805cead51694b870", + url = "https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.41/mac-x64/chrome-mac-x64.zip", + sha256 = "2143ce460365946fb21ac7c394321e10f5e25ee04fddfd98d1540b6996f190d1", strip_prefix = "chrome-mac-x64", patch_cmds = [ "mv 'Google Chrome for Testing.app' Chrome.app", @@ -243,8 +243,8 @@ js_library( http_archive( name = "linux_chromedriver", - url = "https://storage.googleapis.com/chrome-for-testing-public/124.0.6367.207/linux64/chromedriver-linux64.zip", - sha256 = "c428b34691e071e9eddc3fed3012be0ad5e2c2d4dd1fad5f8dad6ef10c840820", + url = "https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.41/linux64/chromedriver-linux64.zip", + sha256 = "939621e733f994cff1fe1ef2f2e1635d9da47a08dd9120a264c476110eab8089", strip_prefix = "chromedriver-linux64", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") @@ -261,8 +261,8 @@ js_library( http_archive( name = "mac_chromedriver", - url = "https://storage.googleapis.com/chrome-for-testing-public/124.0.6367.207/mac-x64/chromedriver-mac-x64.zip", - sha256 = "d34e7cda39e5024564a85b329599d359f1e1e53264cfe9bd5bc4025d829eadfa", + url = "https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.41/mac-x64/chromedriver-mac-x64.zip", + sha256 = "d679e26fae392e673cdf7a0c6d753a995791c6a421ff3a263de5bd08887753cc", strip_prefix = "chromedriver-mac-x64", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") diff --git a/common/selenium_manager.bzl b/common/selenium_manager.bzl index 8fbce1e256056..04ed12e08de16 100644 --- a/common/selenium_manager.bzl +++ b/common/selenium_manager.bzl @@ -6,22 +6,22 @@ def selenium_manager(): http_file( name = "download_sm_linux", executable = True, - sha256 = "3a458df47a90f5be91007ddbaaae27a9fe0f75666a4400363bc3ae7f66e510a2", - url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-b565162/selenium-manager-linux", + sha256 = "e63ebc4ff14e307c6b50b21ca8623c99bb73ccd65397bbd66fb7ea2d23bb120a", + url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-54c0a69/selenium-manager-linux", ) http_file( name = "download_sm_macos", executable = True, - sha256 = "cab10dfad2750f82eacfce9deb7c5efbf7068da03eb19f80ea5d3882a45a8f9e", - url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-b565162/selenium-manager-macos", + sha256 = "9b890f4757141ffd7bd1ed0c49c5ba06d1d1171f6ae19b03c96ad1368f0e7368", + url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-54c0a69/selenium-manager-macos", ) http_file( name = "download_sm_windows", executable = True, - sha256 = "2d2978aab283b1606363941471a5f825d98f6a26edc9130f47d3eb3441dad8b8", - url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-b565162/selenium-manager-windows.exe", + sha256 = "b7b27c6dfe6f1d30bb63a3038c799e2c8e9e801c0aee4528c7541d93f70dfddb", + url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-54c0a69/selenium-manager-windows.exe", ) def _selenium_manager_artifacts_impl(_ctx): diff --git a/dotnet/CHANGELOG b/dotnet/CHANGELOG index 688eccb730373..60c22295cdee4 100644 --- a/dotnet/CHANGELOG +++ b/dotnet/CHANGELOG @@ -1,3 +1,10 @@ +v4.21.0 +====== + +* Add CDP for Chrome 125 and remove 122 +* Overwrite internal log file if it already exists (#13900) +* Align binary location property for FirefoxOptions with other options (#13901) + v4.20.0 ====== diff --git a/dotnet/selenium-dotnet-version.bzl b/dotnet/selenium-dotnet-version.bzl index 58079d01b5826..312dfc17c7463 100644 --- a/dotnet/selenium-dotnet-version.bzl +++ b/dotnet/selenium-dotnet-version.bzl @@ -1,12 +1,12 @@ # BUILD FILE SYNTAX: STARLARK -SE_VERSION = "4.21.0-nightly202404242344" +SE_VERSION = "4.21.0" ASSEMBLY_VERSION = "4.0.0.0" SUPPORTED_NET_STANDARD_VERSIONS = ["netstandard2.0"] SUPPORTED_DEVTOOLS_VERSIONS = [ "v85", - "v122", + "v125", "v123", "v124", ] diff --git a/dotnet/src/webdriver/DevTools/DevToolsDomains.cs b/dotnet/src/webdriver/DevTools/DevToolsDomains.cs index ffcc1b08e5af0..8386606950322 100644 --- a/dotnet/src/webdriver/DevTools/DevToolsDomains.cs +++ b/dotnet/src/webdriver/DevTools/DevToolsDomains.cs @@ -37,7 +37,7 @@ public abstract class DevToolsDomains { { 124, typeof(V124.V124Domains) }, { 123, typeof(V123.V123Domains) }, - { 122, typeof(V122.V122Domains) }, + { 125, typeof(V125.V125Domains) }, { 85, typeof(V85.V85Domains) } }; diff --git a/dotnet/src/webdriver/DevTools/v122/V122Domains.cs b/dotnet/src/webdriver/DevTools/v125/V125Domains.cs similarity index 78% rename from dotnet/src/webdriver/DevTools/v122/V122Domains.cs rename to dotnet/src/webdriver/DevTools/v125/V125Domains.cs index fe3b1909902fc..21d17afe50cc0 100644 --- a/dotnet/src/webdriver/DevTools/v122/V122Domains.cs +++ b/dotnet/src/webdriver/DevTools/v125/V125Domains.cs @@ -1,4 +1,4 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information @@ -15,20 +15,20 @@ // See the License for the specific language governing permissions and // limitations under the License. -namespace OpenQA.Selenium.DevTools.V122 +namespace OpenQA.Selenium.DevTools.V125 { /// - /// Class containing the domain implementation for version 122 of the DevTools Protocol. + /// Class containing the domain implementation for version 125 of the DevTools Protocol. /// - public class V122Domains : DevToolsDomains + public class V125Domains : DevToolsDomains { private DevToolsSessionDomains domains; /// - /// Initializes a new instance of the V122Domains class. + /// Initializes a new instance of the V125Domains class. /// /// The DevToolsSession to use with this set of domains. - public V122Domains(DevToolsSession session) + public V125Domains(DevToolsSession session) { this.domains = new DevToolsSessionDomains(session); } @@ -36,7 +36,7 @@ public V122Domains(DevToolsSession session) /// /// Gets the DevTools Protocol version for which this class is valid. /// - public static int DevToolsVersion => 122; + public static int DevToolsVersion => 125; /// /// Gets the version-specific domains for the DevTools session. This value must be cast to a version specific type to be at all useful. @@ -46,21 +46,21 @@ public V122Domains(DevToolsSession session) /// /// Gets the object used for manipulating network information in the browser. /// - public override DevTools.Network Network => new V122Network(domains.Network, domains.Fetch); + public override DevTools.Network Network => new V125Network(domains.Network, domains.Fetch); /// /// Gets the object used for manipulating the browser's JavaScript execution. /// - public override JavaScript JavaScript => new V122JavaScript(domains.Runtime, domains.Page); + public override JavaScript JavaScript => new V125JavaScript(domains.Runtime, domains.Page); /// /// Gets the object used for manipulating DevTools Protocol targets. /// - public override DevTools.Target Target => new V122Target(domains.Target); + public override DevTools.Target Target => new V125Target(domains.Target); /// /// Gets the object used for manipulating the browser's logs. /// - public override DevTools.Log Log => new V122Log(domains.Log); + public override DevTools.Log Log => new V125Log(domains.Log); } } diff --git a/dotnet/src/webdriver/DevTools/v122/V122JavaScript.cs b/dotnet/src/webdriver/DevTools/v125/V125JavaScript.cs similarity index 94% rename from dotnet/src/webdriver/DevTools/v122/V122JavaScript.cs rename to dotnet/src/webdriver/DevTools/v125/V125JavaScript.cs index 26e0baaa55842..df058a91627b5 100644 --- a/dotnet/src/webdriver/DevTools/v122/V122JavaScript.cs +++ b/dotnet/src/webdriver/DevTools/v125/V125JavaScript.cs @@ -1,4 +1,4 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information @@ -15,28 +15,28 @@ // See the License for the specific language governing permissions and // limitations under the License. -using OpenQA.Selenium.DevTools.V122.Page; -using OpenQA.Selenium.DevTools.V122.Runtime; +using OpenQA.Selenium.DevTools.V125.Page; +using OpenQA.Selenium.DevTools.V125.Runtime; using System; using System.Collections.Generic; using System.Threading.Tasks; -namespace OpenQA.Selenium.DevTools.V122 +namespace OpenQA.Selenium.DevTools.V125 { /// - /// Class containing the JavaScript implementation for version 122 of the DevTools Protocol. + /// Class containing the JavaScript implementation for version 125 of the DevTools Protocol. /// - public class V122JavaScript : JavaScript + public class V125JavaScript : JavaScript { private RuntimeAdapter runtime; private PageAdapter page; /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// The DevTools Protocol adapter for the Runtime domain. /// The DevTools Protocol adapter for the Page domain. - public V122JavaScript(RuntimeAdapter runtime, PageAdapter page) + public V125JavaScript(RuntimeAdapter runtime, PageAdapter page) { this.runtime = runtime; this.page = page; diff --git a/dotnet/src/webdriver/DevTools/v122/V122Log.cs b/dotnet/src/webdriver/DevTools/v125/V125Log.cs similarity index 88% rename from dotnet/src/webdriver/DevTools/v122/V122Log.cs rename to dotnet/src/webdriver/DevTools/v125/V125Log.cs index fa17dbe1e2b80..27dd35205b37c 100644 --- a/dotnet/src/webdriver/DevTools/v122/V122Log.cs +++ b/dotnet/src/webdriver/DevTools/v125/V125Log.cs @@ -1,4 +1,4 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information @@ -15,23 +15,23 @@ // See the License for the specific language governing permissions and // limitations under the License. -using OpenQA.Selenium.DevTools.V122.Log; +using OpenQA.Selenium.DevTools.V125.Log; using System.Threading.Tasks; -namespace OpenQA.Selenium.DevTools.V122 +namespace OpenQA.Selenium.DevTools.V125 { /// - /// Class containing the browser's log as referenced by version 122 of the DevTools Protocol. + /// Class containing the browser's log as referenced by version 125 of the DevTools Protocol. /// - public class V122Log : DevTools.Log + public class V125Log : DevTools.Log { private LogAdapter adapter; /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// The adapter for the Log domain. - public V122Log(LogAdapter adapter) + public V125Log(LogAdapter adapter) { this.adapter = adapter; this.adapter.EntryAdded += OnAdapterEntryAdded; diff --git a/dotnet/src/webdriver/DevTools/v122/V122Network.cs b/dotnet/src/webdriver/DevTools/v125/V125Network.cs similarity index 95% rename from dotnet/src/webdriver/DevTools/v122/V122Network.cs rename to dotnet/src/webdriver/DevTools/v125/V125Network.cs index 83c40c7883df7..4ba5fd9662196 100644 --- a/dotnet/src/webdriver/DevTools/v122/V122Network.cs +++ b/dotnet/src/webdriver/DevTools/v125/V125Network.cs @@ -1,4 +1,4 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information @@ -16,29 +16,29 @@ // limitations under the License. // -using OpenQA.Selenium.DevTools.V122.Fetch; -using OpenQA.Selenium.DevTools.V122.Network; +using OpenQA.Selenium.DevTools.V125.Fetch; +using OpenQA.Selenium.DevTools.V125.Network; using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; -namespace OpenQA.Selenium.DevTools.V122 +namespace OpenQA.Selenium.DevTools.V125 { /// - /// Class providing functionality for manipulating network calls using version 122 of the DevTools Protocol + /// Class providing functionality for manipulating network calls using version 125 of the DevTools Protocol /// - public class V122Network : DevTools.Network + public class V125Network : DevTools.Network { private FetchAdapter fetch; private NetworkAdapter network; /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// The adapter for the Network domain. /// The adapter for the Fetch domain. - public V122Network(NetworkAdapter network, FetchAdapter fetch) + public V125Network(NetworkAdapter network, FetchAdapter fetch) { this.network = network; this.fetch = fetch; @@ -216,9 +216,9 @@ public override async Task ContinueWithAuth(string requestId, string userName, s await fetch.ContinueWithAuth(new ContinueWithAuthCommandSettings() { RequestId = requestId, - AuthChallengeResponse = new V122.Fetch.AuthChallengeResponse() + AuthChallengeResponse = new V125.Fetch.AuthChallengeResponse() { - Response = V122.Fetch.AuthChallengeResponseResponseValues.ProvideCredentials, + Response = V125.Fetch.AuthChallengeResponseResponseValues.ProvideCredentials, Username = userName, Password = password } @@ -235,9 +235,9 @@ public override async Task CancelAuth(string requestId) await fetch.ContinueWithAuth(new ContinueWithAuthCommandSettings() { RequestId = requestId, - AuthChallengeResponse = new OpenQA.Selenium.DevTools.V122.Fetch.AuthChallengeResponse() + AuthChallengeResponse = new OpenQA.Selenium.DevTools.V125.Fetch.AuthChallengeResponse() { - Response = V122.Fetch.AuthChallengeResponseResponseValues.CancelAuth + Response = V125.Fetch.AuthChallengeResponseResponseValues.CancelAuth } }).ConfigureAwait(false); } diff --git a/dotnet/src/webdriver/DevTools/v122/V122Target.cs b/dotnet/src/webdriver/DevTools/v125/V125Target.cs similarity index 94% rename from dotnet/src/webdriver/DevTools/v122/V122Target.cs rename to dotnet/src/webdriver/DevTools/v125/V125Target.cs index a2f9416eb8564..dcb2c1df94ccd 100644 --- a/dotnet/src/webdriver/DevTools/v122/V122Target.cs +++ b/dotnet/src/webdriver/DevTools/v125/V125Target.cs @@ -1,4 +1,4 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information @@ -16,26 +16,26 @@ // limitations under the License. // -using OpenQA.Selenium.DevTools.V122.Target; +using OpenQA.Selenium.DevTools.V125.Target; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Threading.Tasks; -namespace OpenQA.Selenium.DevTools.V122 +namespace OpenQA.Selenium.DevTools.V125 { /// - /// Class providing functionality for manipulating targets for version 122 of the DevTools Protocol + /// Class providing functionality for manipulating targets for version 125 of the DevTools Protocol /// - public class V122Target : DevTools.Target + public class V125Target : DevTools.Target { private TargetAdapter adapter; /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// The adapter for the Target domain. - public V122Target(TargetAdapter adapter) + public V125Target(TargetAdapter adapter) { this.adapter = adapter; adapter.DetachedFromTarget += OnDetachedFromTarget; diff --git a/dotnet/src/webdriver/WebDriver.csproj b/dotnet/src/webdriver/WebDriver.csproj index a306444bda510..354284b328755 100644 --- a/dotnet/src/webdriver/WebDriver.csproj +++ b/dotnet/src/webdriver/WebDriver.csproj @@ -106,7 +106,7 @@ - + diff --git a/dotnet/test/common/CustomDriverConfigs/StableChannelChromeDriver.cs b/dotnet/test/common/CustomDriverConfigs/StableChannelChromeDriver.cs index 53a38c92f578d..3eeace7e773df 100644 --- a/dotnet/test/common/CustomDriverConfigs/StableChannelChromeDriver.cs +++ b/dotnet/test/common/CustomDriverConfigs/StableChannelChromeDriver.cs @@ -20,7 +20,7 @@ public StableChannelChromeDriver(ChromeDriverService service, ChromeOptions opti public static ChromeOptions DefaultOptions { - get { return new ChromeOptions() { BrowserVersion = "124" }; } + get { return new ChromeOptions() { BrowserVersion = "125" }; } } } } diff --git a/dotnet/test/common/DevTools/DevToolsConsoleTest.cs b/dotnet/test/common/DevTools/DevToolsConsoleTest.cs index e7b07d47ca3cd..cfee42a2d2713 100644 --- a/dotnet/test/common/DevTools/DevToolsConsoleTest.cs +++ b/dotnet/test/common/DevTools/DevToolsConsoleTest.cs @@ -6,9 +6,10 @@ namespace OpenQA.Selenium.DevTools { - using CurrentCdpVersion = V124; + using CurrentCdpVersion = V125; [TestFixture] + [IgnoreBrowser(Selenium.Browser.Edge, "While CDP 125 is released for Edge")] public class DevToolsConsoleTest : DevToolsTestFixture { [Test] diff --git a/dotnet/test/common/DevTools/DevToolsLogTest.cs b/dotnet/test/common/DevTools/DevToolsLogTest.cs index 3fb7d5bcf6776..fc60d80d3e8bc 100644 --- a/dotnet/test/common/DevTools/DevToolsLogTest.cs +++ b/dotnet/test/common/DevTools/DevToolsLogTest.cs @@ -6,7 +6,7 @@ namespace OpenQA.Selenium.DevTools { - using CurrentCdpVersion = V124; + using CurrentCdpVersion = V125; [TestFixture] public class DevToolsLogTest : DevToolsTestFixture diff --git a/dotnet/test/common/DevTools/DevToolsNetworkTest.cs b/dotnet/test/common/DevTools/DevToolsNetworkTest.cs index f41c19fa828c0..f603c8757a412 100644 --- a/dotnet/test/common/DevTools/DevToolsNetworkTest.cs +++ b/dotnet/test/common/DevTools/DevToolsNetworkTest.cs @@ -6,9 +6,10 @@ namespace OpenQA.Selenium.DevTools { - using CurrentCdpVersion = V124; + using CurrentCdpVersion = V125; [TestFixture] + [IgnoreBrowser(Selenium.Browser.Edge, "While CDP 125 is released for Edge")] public class DevToolsNetworkTest : DevToolsTestFixture { [Test] diff --git a/dotnet/test/common/DevTools/DevToolsPerformanceTest.cs b/dotnet/test/common/DevTools/DevToolsPerformanceTest.cs index af4958a498c9e..65926854fb122 100644 --- a/dotnet/test/common/DevTools/DevToolsPerformanceTest.cs +++ b/dotnet/test/common/DevTools/DevToolsPerformanceTest.cs @@ -3,9 +3,10 @@ namespace OpenQA.Selenium.DevTools { - using CurrentCdpVersion = V124; + using CurrentCdpVersion = V125; [TestFixture] + [IgnoreBrowser(Selenium.Browser.Edge, "While CDP 125 is released for Edge")] public class DevToolsPerformanceTest : DevToolsTestFixture { [Test] diff --git a/dotnet/test/common/DevTools/DevToolsProfilerTest.cs b/dotnet/test/common/DevTools/DevToolsProfilerTest.cs index 8913d741e6234..0730685cd5c7c 100644 --- a/dotnet/test/common/DevTools/DevToolsProfilerTest.cs +++ b/dotnet/test/common/DevTools/DevToolsProfilerTest.cs @@ -5,9 +5,10 @@ namespace OpenQA.Selenium.DevTools { - using CurrentCdpVersion = V124; + using CurrentCdpVersion = V125; [TestFixture] + [IgnoreBrowser(Selenium.Browser.Edge, "While CDP 125 is released for Edge")] public class DevToolsProfilerTest : DevToolsTestFixture { [Test] diff --git a/dotnet/test/common/DevTools/DevToolsSecurityTest.cs b/dotnet/test/common/DevTools/DevToolsSecurityTest.cs index d97c87ceb58a5..dfa5524ee88ca 100644 --- a/dotnet/test/common/DevTools/DevToolsSecurityTest.cs +++ b/dotnet/test/common/DevTools/DevToolsSecurityTest.cs @@ -6,9 +6,10 @@ namespace OpenQA.Selenium.DevTools { - using CurrentCdpVersion = V124; + using CurrentCdpVersion = V125; [TestFixture] + [IgnoreBrowser(Selenium.Browser.Edge, "While CDP 125 is released for Edge")] public class DevToolsSecurityTest : DevToolsTestFixture { //[Test] diff --git a/dotnet/test/common/DevTools/DevToolsTabsTest.cs b/dotnet/test/common/DevTools/DevToolsTabsTest.cs index 9a434ec76d706..2f5061a049ccc 100644 --- a/dotnet/test/common/DevTools/DevToolsTabsTest.cs +++ b/dotnet/test/common/DevTools/DevToolsTabsTest.cs @@ -3,9 +3,10 @@ namespace OpenQA.Selenium.DevTools { - using CurrentCdpVersion = V124; + using CurrentCdpVersion = V125; [TestFixture] + [IgnoreBrowser(Selenium.Browser.Edge, "While CDP 125 is released for Edge")] public class DevToolsTabsTest : DevToolsTestFixture { diff --git a/dotnet/test/common/DevTools/DevToolsTargetTest.cs b/dotnet/test/common/DevTools/DevToolsTargetTest.cs index 5eda7874ce5e8..fa275517b6842 100644 --- a/dotnet/test/common/DevTools/DevToolsTargetTest.cs +++ b/dotnet/test/common/DevTools/DevToolsTargetTest.cs @@ -6,12 +6,13 @@ namespace OpenQA.Selenium.DevTools { - using CurrentCdpVersion = V124; + using CurrentCdpVersion = V125; [TestFixture] + [IgnoreBrowser(Selenium.Browser.Edge, "While CDP 125 is released for Edge")] public class DevToolsTargetTest : DevToolsTestFixture { - private int id = 124; + private int id = 125; [Test] [IgnoreBrowser(Selenium.Browser.IE, "IE does not support Chrome DevTools Protocol")] diff --git a/java/CHANGELOG b/java/CHANGELOG index 71a9dd18c09b8..5c3fb8324ac81 100644 --- a/java/CHANGELOG +++ b/java/CHANGELOG @@ -1,3 +1,23 @@ +v4.21.0 +====== + +* Add CDP for Chrome 125 and remove 122 +* [bidi]Add methods to allow all parameters for script callFunction and evaluate method (#13873) +* Setting a connection timeout for the WebSocket connections +* [grid] flatten combined routes to improve routing (#13856) +* Java language level aids (#13834) +* [grid] apply protocol version in relay session factory (#13880) +* Configure Selenium Manager environment from System Properties (#13858) +* [grid] Set test name to video file name in dynamic grid (#13907) +* [grid] Set connection timeout to session-timeout in RemoteNode (#13854) +* Type casting and numeric improvements (#13909) +* Allow filters to recover from failed requests in NetworkInterceptor (#13847) +* Allow a DevTools listener to determinate the order of handler calls (#13921) +* Read selenium manager output as UTF-8 #13653 +* Reduce redundant toString() calls (#13932) +* Fixed format of expires in Cookie.toString #13927 +* [bidi] Remove root ownership parameter due to update in BiDi spec + v4.20.0 ====== diff --git a/java/maven_install.json b/java/maven_install.json index b920bafd56650..d82181950ca14 100644 --- a/java/maven_install.json +++ b/java/maven_install.json @@ -1,13 +1,13 @@ { "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL", - "__INPUT_ARTIFACTS_HASH": 804245233, - "__RESOLVED_ARTIFACTS_HASH": 375527245, + "__INPUT_ARTIFACTS_HASH": -532827998, + "__RESOLVED_ARTIFACTS_HASH": 1400411909, "conflict_resolution": { "com.google.code.gson:gson:2.8.9": "com.google.code.gson:gson:2.10.1", "com.google.errorprone:error_prone_annotations:2.3.2": "com.google.errorprone:error_prone_annotations:2.26.1", - "com.google.guava:guava:31.1-jre": "com.google.guava:guava:33.1.0-jre", + "com.google.guava:guava:31.1-jre": "com.google.guava:guava:33.2.0-jre", "com.google.j2objc:j2objc-annotations:1.3": "com.google.j2objc:j2objc-annotations:3.0.0", - "org.mockito:mockito-core:4.3.1": "org.mockito:mockito-core:5.11.0" + "org.mockito:mockito-core:4.3.1": "org.mockito:mockito-core:5.12.0" }, "artifacts": { "com.beust:jcommander": { @@ -75,17 +75,17 @@ }, "com.github.spotbugs:spotbugs": { "shasums": { - "jar": "1ca27492ff249922c8a0df73d3bad3551fad860ee2333d52fcd6d7ca05e48312", - "sources": "8b1bcd6d4f885e39140f13cd03636e6598d6e58f224f1ebc6ce691ce586c9c13" + "jar": "4b0809797d9e05685ef97ec92c9ae1fdabf9e63368948a66badd934183b807d0", + "sources": "c21daa57e931c0ea342de685884251e198ea3a48993a6d4c0ac8a9513fc8dd89" }, - "version": "4.8.4" + "version": "4.8.5" }, "com.github.spotbugs:spotbugs-annotations": { "shasums": { - "jar": "baa8208c3a16d4bc08eb3717e295604154f1c12bf9fe547799ed8bae325f2718", + "jar": "6e63acb693f156e4fb79151b88f9eebe731b4da65fe12843503613e0d6e6f68d", "sources": "b5d0110b70b9c44915f2c3375d1b700acb6d409152baf70030787d17a684469b" }, - "version": "4.8.4" + "version": "4.8.5" }, "com.github.stephenc.jcip:jcip-annotations": { "shasums": { @@ -159,10 +159,10 @@ }, "com.google.guava:guava": { "shasums": { - "jar": "346aec0eb8c8987360c8a264e70ff10c2fba760446eb27e8ab07e78e787a75fe", - "sources": "fe357db754046d94b79a0392c523c44671e71c1ac7b6e289bc0382a06bd5cd51" + "jar": "99f491e86262ce38d13b3581d40f77acdb4696a9505447c3154474c3192908dd", + "sources": "eb5b759b6296141cb7dfce6f53105a3b9a64c98e6f9f3704ddea40f159cca466" }, - "version": "33.1.0-jre" + "version": "33.2.0-jre" }, "com.google.guava:guava-testlib": { "shasums": { @@ -243,17 +243,17 @@ }, "io.grpc:grpc-api": { "shasums": { - "jar": "21d747911e1e5931004f1b058417f3c3f72f1fbf8aea16f5fc6af7a3f0caf35a", - "sources": "7ff367383a7e67241d72404f584a73d47d8f0a6b4c0bdf8aca4170f6475e58a3" + "jar": "553be881946618be53621ba06f184bb71e5b1beeb692e7c62b7999a7acb29e6a", + "sources": "a88d9405958c08b834e9b5b9494a5bb453ecd4eb9bf6c2c93dd47d4789113efa" }, - "version": "1.63.0" + "version": "1.64.0" }, "io.grpc:grpc-context": { "shasums": { - "jar": "d7f50185bb858131d02314de23ea3cc797131ed98b215e845429f45a81dd5fed", - "sources": "a9032f8d2f795247bef60b45ee5fc3eb4693c705c05818cc12e9ed1deba440d4" + "jar": "a2c4f8cedb3fd8a6b873d93804cc044c4ef9d7ff95276fc5500b38f27e8c92a1", + "sources": "77205a7c2b4e17bf7705cd518b8f995b532f830f9ed7275bf07e217e4b063b22" }, - "version": "1.63.0" + "version": "1.64.0" }, "io.lettuce:lettuce-core": { "shasums": { @@ -362,87 +362,87 @@ }, "io.opentelemetry:opentelemetry-api": { "shasums": { - "jar": "35976d45acb98fb3fb527c3aced3e3398443e8664fccd069ea4bd2eca0c294ed", - "sources": "0349f3dfcf5b80907254cc56769544d04ddb4ce613e2273bc3f089b86f7f13e4" + "jar": "9ad8961eafe71ec50917fb80afecfa55f1e59b263363dc8083279b05be59f04f", + "sources": "4169aadc735fa8a8604d5d5811ac2823e3a08a8f557dfb23df58db952f1aa7b5" }, - "version": "1.37.0" + "version": "1.38.0" }, "io.opentelemetry:opentelemetry-api-incubator": { "shasums": { - "jar": "037cdd200d917190e6774029676017fa5ec27e5a5af938dcb97adc75132eda48", - "sources": "f58fe23924f3efc6f447b016c7bbf77e6e0fa400a146e65d7906ffb4079b1731" + "jar": "8123710d899fbd5b4a87e4ccbd0782239895883c2aeedb345a6c0b80bef2b44b", + "sources": "0f3df97c2a237793d3c1f612d277e1059d4ab9ca384569d401556064c9d727dd" }, - "version": "1.37.0-alpha" + "version": "1.38.0-alpha" }, "io.opentelemetry:opentelemetry-context": { "shasums": { - "jar": "98071a718fdb48a493460685660ba92074e0dcea01c545109894d3137df3b6f0", - "sources": "a1098a82e2c7f1e0e70faafbc303d4490418e329674249865bc323956f1b526a" + "jar": "f49c2f9d02adf163ad940113b7aefdd8b9e7528a06eb56ec27a9db38d672e37b", + "sources": "b166c68f2acdd618b9e2c699f835c915ca9e9af8691df14fbf65101663b86b83" }, - "version": "1.37.0" + "version": "1.38.0" }, "io.opentelemetry:opentelemetry-exporter-logging": { "shasums": { - "jar": "4f5a877b4f003f6effb8bcbe9c89c2692fc681c26004a79c8dac915b494e0cff", - "sources": "e3fdb3ab32a2a7d5d59e0a3d095e1b564e4e91b790f6dd96c158184797de910b" + "jar": "0fb6ad0a8a4b3a4bd081244a264385d5a73f43179da366a3496f6b6335522509", + "sources": "e67ca5751f7ffa169960f4697d957641a8e8fd94fd059af31c9f4b00b4ca6c74" }, - "version": "1.37.0" + "version": "1.38.0" }, "io.opentelemetry:opentelemetry-sdk": { "shasums": { - "jar": "937c7cb743dab7aa566949166462493323683c188e2201a66aa6c2c59bf7dc23", - "sources": "4760eca7b00fe1644473e8e8bf9c91cc953663522148afa77a550e2806b16dcc" + "jar": "b226ebfde98a545efda110b4d49c97855788da35a3e23ae58b1c03642276d502", + "sources": "5d7a3b7ce1c4cf33641070cf338d4428db38a6f75537afea7e007efe189e155e" }, - "version": "1.37.0" + "version": "1.38.0" }, "io.opentelemetry:opentelemetry-sdk-common": { "shasums": { - "jar": "1f28165898fecdba9ff9534b86a4ac6da2faa731bc0a59f1e40c116b72c90bd7", - "sources": "6d409ac226b00056de324d71c959d17a2532975c109e94fb009d64e12b9b0149" + "jar": "d1f78bfbe3d2ad2a340eac3de9613c17fde778fa92ac0d07506b4e1d06b7b72e", + "sources": "4237e5c74656b9515fa289e54076e5cb240094502173c474c54638f1df63f618" }, - "version": "1.37.0" + "version": "1.38.0" }, "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure": { "shasums": { - "jar": "beff51c798ec99d9bc3764c1273f47181869b94f34566431291c66c47166bb87", - "sources": "194c8335433bf0fb5d3b5a2557869cc3828147cf3d79f6ac01165735ea2e1aef" + "jar": "4f62f83b20dcd531756ed2aa3fba5a316feac571344a6fa4a9dcfe6c31fe23d3", + "sources": "2ebb02ab6d51b37b9ea98cf01a99619ddfd6baeadc02d7f2184cc81437cd5998" }, - "version": "1.37.0" + "version": "1.38.0" }, "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi": { "shasums": { - "jar": "d72d47544856baf5be86cbe402531bb7b27ce0ce9708c305dc7cbca0ca8f1ea2", - "sources": "348863e8b08cc0b555e5e7c4e88643dbb0917b23d692a08361df7de88c4e6b59" + "jar": "56ded7ef0b6d56e5df7578d86ab9b4e2986a70ca48c562b8e6d719aa1acfcf0f", + "sources": "25e6bd51a27f5f84629fa7f1340bc81e2b5672347f162f759aa29d6521a5ad6b" }, - "version": "1.37.0" + "version": "1.38.0" }, "io.opentelemetry:opentelemetry-sdk-logs": { "shasums": { - "jar": "d3490b686b64528ffb0ef345ada0a25af68dba658810ada25e7b127ceb98cf5c", - "sources": "a338abdde42b099b2be3583e7cc0b841cef89567eaed1e47c251742033a1e28c" + "jar": "1994538ab817b7712946b53ed6b74ee26e62b0810495f173e083b435d1e13662", + "sources": "56f172d2da692128ff72a89262e75c76f038e2b5a0f19a0173e2eac5486f90f8" }, - "version": "1.37.0" + "version": "1.38.0" }, "io.opentelemetry:opentelemetry-sdk-metrics": { "shasums": { - "jar": "50d129d9a15b691f806533f8edaf6c01f2e1e1e1825c93984ad75006aea2522f", - "sources": "70cf4731372f572e4a5a5a6727bb0a223235d2cbf53f58e6d31308fb7e0a6717" + "jar": "6f4b3c993d01223d47fad3dfbe430f314338ea54eed2e39104da1358be2c63dd", + "sources": "2d45b039cbc6be14015b36bd9091dc45af10c17984c73250887b4a2dee5a0d43" }, - "version": "1.37.0" + "version": "1.38.0" }, "io.opentelemetry:opentelemetry-sdk-testing": { "shasums": { - "jar": "88948d1f2b8213368be6014e3409a6e7356c934c2b8d04d31d31151a9dc3f850", - "sources": "022ae8aa78b9a96863fd4983e990a019ea56c718d0182aebfd3e7d42fd1f42e4" + "jar": "4cbc9a435d67b95e410adf641a90be6493989b0397e9ef5811a41ffeadb0f513", + "sources": "3ab1da150ee95a101d92b666d5792532b609fab17584ad5a7e8ecc9bd3664bf2" }, - "version": "1.37.0" + "version": "1.38.0" }, "io.opentelemetry:opentelemetry-sdk-trace": { "shasums": { - "jar": "5743bc33f9f046a86c8d827e4c4e321c2224ec69f72e09153232148186f2c77b", - "sources": "f22039b046e6f5acd3c73fbed27c9c1b2a2cd654bf64830462f5622140f3946f" + "jar": "e8e8a398ec7569e5d8b4a72cb3c676ac9bb507f01b95f80d69c00753ca3b0210", + "sources": "177a3cfb9be401b8ca163058fa9654626dbf710970d473fff5c83daa9ebc40af" }, - "version": "1.37.0" + "version": "1.38.0" }, "io.ous:jtoml": { "shasums": { @@ -495,17 +495,17 @@ }, "net.bytebuddy:byte-buddy": { "shasums": { - "jar": "e28fbba2a91ed5ad0a19aa196ae906344842d31ce662741c8a11c55ba97f2a26", - "sources": "47eb3800ce632ce619047c3e95f52415c966b2f2482ae5d4007002b5733f63ce" + "jar": "7472e3961992c12a9fd4f6d67c21de4280abe18f292704dd49d7338289f8acf5", + "sources": "234c4bf7ee7596a7d7b668e41f9c90830fdfbbc86d4c84d01b1db6ce22fb3fe6" }, - "version": "1.14.14" + "version": "1.14.15" }, "net.bytebuddy:byte-buddy-agent": { "shasums": { - "jar": "2b309a9300092e0b696f7c471fd51d9969001df784c8ab9f07997437d757ad6d", - "sources": "4973308b6309e6ce0e98223a38c1c123c8b2429d1f1b68dea286d3c06e50a73b" + "jar": "3ef6ec7175801361170067cc6902969f966d37c72bf9353d9cd282263b184064", + "sources": "ba7ead86f342cb392c3a910c4eeffd8f66274481e8a613cd2a9a59c456d08fac" }, - "version": "1.14.12" + "version": "1.14.15" }, "net.sf.saxon:Saxon-HE": { "shasums": { @@ -516,10 +516,10 @@ }, "org.apache.bcel:bcel": { "shasums": { - "jar": "b656cc4b9a3d11ed1a4f820d10e71926a1e653ded309f657893a52639f9beb1a", - "sources": "51234df288aa5352f25aac4d59715b7ea6dc6c10824e2e04c4d94bb320cbb6a3" + "jar": "a119a4420350dea669acfd84120ecc7e5742dcabcc82b0b9f9755dc692335aa2", + "sources": "24c89d96db8f1ca89a4e545c3eebb8990f542fe3812ce3f5057074cc80981931" }, - "version": "6.8.2" + "version": "6.9.0" }, "org.apache.commons:commons-exec": { "shasums": { @@ -642,10 +642,10 @@ }, "org.htmlunit:htmlunit-core-js": { "shasums": { - "jar": "e295311ad1cb37cd0d11ec2fc2940962d073efe556084eaa83462f4a7fc555ab", - "sources": "18a119917c2380c9648bbc6cfaba428df795d2a193dd7c3a4e07403cbde75925" + "jar": "6e1b0314a99ee6b65377ca956e2694ba05d9a4d5a35da10a189a60f1f897531d", + "sources": "8a6848311b54010352e45e8a971c614e0f2781cba8680a0da307c9babf2b1def" }, - "version": "4.0.0" + "version": "4.1.0" }, "org.jodd:jodd-util": { "shasums": { @@ -705,10 +705,10 @@ }, "org.mockito:mockito-core": { "shasums": { - "jar": "f076c96b1f49b8d9bc42e46b0969aaf5684c40c8b5b679d400e5d880073a0e00", - "sources": "83df46b0b44f232d76b40e46583334eaf2dfbe1699174bb8e76376b96cbac709" + "jar": "4a2eb29237050da749e90a46f948bce7e26ec22b671e41f59b1ac6f4b6408229", + "sources": "8d109e7f4eed8c92f00842554e664060097995fc575a11e57381551182f5432a" }, - "version": "5.11.0" + "version": "5.12.0" }, "org.objenesis:objenesis": { "shasums": { @@ -768,10 +768,10 @@ }, "org.redisson:redisson": { "shasums": { - "jar": "d1d7714f4e791ce22c67aa27d67c44c64afd2da69aa0cebc660fa6e5fe6020df", - "sources": "3e1b4c1d305b2bad1b51f9b8dbf7931033206df8084dd2002ecca7fcddf2d5a7" + "jar": "6620632491ba4b87ec2d175f5ad545f404268de559ba993599838db0e6e05596", + "sources": "86575d835d99e5ae9235d5e2bd45af936475392a8b80c3a22da2835b07b6b4cd" }, - "version": "3.29.0" + "version": "3.30.0" }, "org.slf4j:slf4j-api": { "shasums": { diff --git a/java/src/org/openqa/selenium/bidi/browsingcontext/LocateNodeParameters.java b/java/src/org/openqa/selenium/bidi/browsingcontext/LocateNodeParameters.java index cbaf450a710bd..d6a87e3fbe021 100644 --- a/java/src/org/openqa/selenium/bidi/browsingcontext/LocateNodeParameters.java +++ b/java/src/org/openqa/selenium/bidi/browsingcontext/LocateNodeParameters.java @@ -38,7 +38,6 @@ public class LocateNodeParameters { private LocateNodeParameters(Builder builder) { this.locator = builder.locator; this.maxNodeCount = Optional.ofNullable(builder.maxNodeCount); - this.ownership = Optional.ofNullable(builder.ownership); this.sandbox = Optional.ofNullable(builder.sandbox); this.serializationOptions = Optional.ofNullable(builder.serializationOptions); this.startNodes = Optional.ofNullable(builder.startNodes); @@ -53,11 +52,6 @@ public LocateNodeParameters setMaxNodeCount(long maxNodeCount) { return this; } - public LocateNodeParameters setOwnership(ResultOwnership ownership) { - this.ownership = Optional.of(ownership); - return this; - } - public LocateNodeParameters setSandbox(String sandbox) { this.sandbox = Optional.of(sandbox); return this; @@ -78,7 +72,6 @@ public Map toMap() { map.put("locator", locator.toMap()); maxNodeCount.ifPresent(value -> map.put("maxNodeCount", value)); - ownership.ifPresent(value -> map.put("ownership", value.toString())); sandbox.ifPresent(value -> map.put("sandbox", value)); serializationOptions.ifPresent(value -> map.put("serializationOptions", value.toJson())); startNodes.ifPresent( @@ -101,7 +94,6 @@ public static class Builder { private final Locator locator; private Long maxNodeCount = null; - private ResultOwnership ownership; private String sandbox; private SerializationOptions serializationOptions; private List startNodes; @@ -115,11 +107,6 @@ public Builder setMaxNodeCount(long maxNodeCount) { return this; } - public Builder setOwnership(ResultOwnership ownership) { - this.ownership = ownership; - return this; - } - public Builder setSandbox(String sandbox) { this.sandbox = sandbox; return this; diff --git a/java/src/org/openqa/selenium/devtools/v122/BUILD.bazel b/java/src/org/openqa/selenium/devtools/v125/BUILD.bazel similarity index 98% rename from java/src/org/openqa/selenium/devtools/v122/BUILD.bazel rename to java/src/org/openqa/selenium/devtools/v125/BUILD.bazel index 1435a2c368ece..a83f5fc59c688 100644 --- a/java/src/org/openqa/selenium/devtools/v122/BUILD.bazel +++ b/java/src/org/openqa/selenium/devtools/v125/BUILD.bazel @@ -2,7 +2,7 @@ load("//common:defs.bzl", "copy_file") load("//java:defs.bzl", "java_export", "java_library") load("//java:version.bzl", "SE_VERSION") -cdp_version = "v122" +cdp_version = "v125" java_export( name = cdp_version, diff --git a/java/src/org/openqa/selenium/devtools/v122/v122CdpInfo.java b/java/src/org/openqa/selenium/devtools/v125/v125CdpInfo.java similarity index 86% rename from java/src/org/openqa/selenium/devtools/v122/v122CdpInfo.java rename to java/src/org/openqa/selenium/devtools/v125/v125CdpInfo.java index 2185e7a484771..2c4aedc21b7c0 100644 --- a/java/src/org/openqa/selenium/devtools/v122/v122CdpInfo.java +++ b/java/src/org/openqa/selenium/devtools/v125/v125CdpInfo.java @@ -15,15 +15,15 @@ // specific language governing permissions and limitations // under the License. -package org.openqa.selenium.devtools.v122; +package org.openqa.selenium.devtools.v125; import com.google.auto.service.AutoService; import org.openqa.selenium.devtools.CdpInfo; @AutoService(CdpInfo.class) -public class v122CdpInfo extends CdpInfo { +public class v125CdpInfo extends CdpInfo { - public v122CdpInfo() { - super(122, v122Domains::new); + public v125CdpInfo() { + super(125, v125Domains::new); } } diff --git a/java/src/org/openqa/selenium/devtools/v122/v122Domains.java b/java/src/org/openqa/selenium/devtools/v125/v125Domains.java similarity index 77% rename from java/src/org/openqa/selenium/devtools/v122/v122Domains.java rename to java/src/org/openqa/selenium/devtools/v125/v125Domains.java index cba8352459be8..369c8c9d69965 100644 --- a/java/src/org/openqa/selenium/devtools/v122/v122Domains.java +++ b/java/src/org/openqa/selenium/devtools/v125/v125Domains.java @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -package org.openqa.selenium.devtools.v122; +package org.openqa.selenium.devtools.v125; import org.openqa.selenium.devtools.DevTools; import org.openqa.selenium.devtools.idealized.Domains; @@ -26,21 +26,21 @@ import org.openqa.selenium.devtools.idealized.target.Target; import org.openqa.selenium.internal.Require; -public class v122Domains implements Domains { +public class v125Domains implements Domains { - private final v122Javascript js; - private final v122Events events; - private final v122Log log; - private final v122Network network; - private final v122Target target; + private final v125Javascript js; + private final v125Events events; + private final v125Log log; + private final v125Network network; + private final v125Target target; - public v122Domains(DevTools devtools) { + public v125Domains(DevTools devtools) { Require.nonNull("DevTools", devtools); - events = new v122Events(devtools); - js = new v122Javascript(devtools); - log = new v122Log(); - network = new v122Network(devtools); - target = new v122Target(); + events = new v125Events(devtools); + js = new v125Javascript(devtools); + log = new v125Log(); + network = new v125Network(devtools); + target = new v125Target(); } @Override diff --git a/java/src/org/openqa/selenium/devtools/v122/v122Events.java b/java/src/org/openqa/selenium/devtools/v125/v125Events.java similarity index 86% rename from java/src/org/openqa/selenium/devtools/v122/v122Events.java rename to java/src/org/openqa/selenium/devtools/v125/v125Events.java index 845d5963bac4e..f9ca7fdc7af94 100644 --- a/java/src/org/openqa/selenium/devtools/v122/v122Events.java +++ b/java/src/org/openqa/selenium/devtools/v125/v125Events.java @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -package org.openqa.selenium.devtools.v122; +package org.openqa.selenium.devtools.v125; import java.time.Instant; import java.util.List; @@ -28,15 +28,15 @@ import org.openqa.selenium.devtools.events.ConsoleEvent; import org.openqa.selenium.devtools.idealized.Events; import org.openqa.selenium.devtools.idealized.runtime.model.RemoteObject; -import org.openqa.selenium.devtools.v122.runtime.Runtime; -import org.openqa.selenium.devtools.v122.runtime.model.ConsoleAPICalled; -import org.openqa.selenium.devtools.v122.runtime.model.ExceptionDetails; -import org.openqa.selenium.devtools.v122.runtime.model.ExceptionThrown; -import org.openqa.selenium.devtools.v122.runtime.model.StackTrace; +import org.openqa.selenium.devtools.v125.runtime.Runtime; +import org.openqa.selenium.devtools.v125.runtime.model.ConsoleAPICalled; +import org.openqa.selenium.devtools.v125.runtime.model.ExceptionDetails; +import org.openqa.selenium.devtools.v125.runtime.model.ExceptionThrown; +import org.openqa.selenium.devtools.v125.runtime.model.StackTrace; -public class v122Events extends Events { +public class v125Events extends Events { - public v122Events(DevTools devtools) { + public v125Events(DevTools devtools) { super(devtools); } @@ -77,7 +77,7 @@ protected ConsoleEvent toConsoleEvent(ConsoleAPICalled event) { protected JavascriptException toJsException(ExceptionThrown event) { ExceptionDetails details = event.getExceptionDetails(); Optional maybeTrace = details.getStackTrace(); - Optional maybeException = + Optional maybeException = details.getException(); String message = diff --git a/java/src/org/openqa/selenium/devtools/v122/v122Javascript.java b/java/src/org/openqa/selenium/devtools/v125/v125Javascript.java similarity index 85% rename from java/src/org/openqa/selenium/devtools/v122/v122Javascript.java rename to java/src/org/openqa/selenium/devtools/v125/v125Javascript.java index 5491170c54cbe..84587fe0f5aa4 100644 --- a/java/src/org/openqa/selenium/devtools/v122/v122Javascript.java +++ b/java/src/org/openqa/selenium/devtools/v125/v125Javascript.java @@ -15,21 +15,21 @@ // specific language governing permissions and limitations // under the License. -package org.openqa.selenium.devtools.v122; +package org.openqa.selenium.devtools.v125; import java.util.Optional; import org.openqa.selenium.devtools.Command; import org.openqa.selenium.devtools.DevTools; import org.openqa.selenium.devtools.Event; import org.openqa.selenium.devtools.idealized.Javascript; -import org.openqa.selenium.devtools.v122.page.Page; -import org.openqa.selenium.devtools.v122.page.model.ScriptIdentifier; -import org.openqa.selenium.devtools.v122.runtime.Runtime; -import org.openqa.selenium.devtools.v122.runtime.model.BindingCalled; +import org.openqa.selenium.devtools.v125.page.Page; +import org.openqa.selenium.devtools.v125.page.model.ScriptIdentifier; +import org.openqa.selenium.devtools.v125.runtime.Runtime; +import org.openqa.selenium.devtools.v125.runtime.model.BindingCalled; -public class v122Javascript extends Javascript { +public class v125Javascript extends Javascript { - public v122Javascript(DevTools devtools) { + public v125Javascript(DevTools devtools) { super(devtools); } diff --git a/java/src/org/openqa/selenium/devtools/v122/v122Log.java b/java/src/org/openqa/selenium/devtools/v125/v125Log.java similarity index 89% rename from java/src/org/openqa/selenium/devtools/v122/v122Log.java rename to java/src/org/openqa/selenium/devtools/v125/v125Log.java index a44c1c84cdb67..91ea8dc4348c4 100644 --- a/java/src/org/openqa/selenium/devtools/v122/v122Log.java +++ b/java/src/org/openqa/selenium/devtools/v125/v125Log.java @@ -15,19 +15,19 @@ // specific language governing permissions and limitations // under the License. -package org.openqa.selenium.devtools.v122; +package org.openqa.selenium.devtools.v125; import java.util.function.Function; import java.util.logging.Level; import org.openqa.selenium.devtools.Command; import org.openqa.selenium.devtools.ConverterFunctions; import org.openqa.selenium.devtools.Event; -import org.openqa.selenium.devtools.v122.log.Log; -import org.openqa.selenium.devtools.v122.log.model.LogEntry; -import org.openqa.selenium.devtools.v122.runtime.model.Timestamp; +import org.openqa.selenium.devtools.v125.log.Log; +import org.openqa.selenium.devtools.v125.log.model.LogEntry; +import org.openqa.selenium.devtools.v125.runtime.model.Timestamp; import org.openqa.selenium.json.JsonInput; -public class v122Log implements org.openqa.selenium.devtools.idealized.log.Log { +public class v125Log implements org.openqa.selenium.devtools.idealized.log.Log { @Override public Command enable() { diff --git a/java/src/org/openqa/selenium/devtools/v122/v122Network.java b/java/src/org/openqa/selenium/devtools/v125/v125Network.java similarity index 92% rename from java/src/org/openqa/selenium/devtools/v122/v122Network.java rename to java/src/org/openqa/selenium/devtools/v125/v125Network.java index ea368fd7dab0b..2f72e00acd801 100644 --- a/java/src/org/openqa/selenium/devtools/v122/v122Network.java +++ b/java/src/org/openqa/selenium/devtools/v125/v125Network.java @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -package org.openqa.selenium.devtools.v122; +package org.openqa.selenium.devtools.v125; import static java.net.HttpURLConnection.HTTP_OK; @@ -30,35 +30,35 @@ import org.openqa.selenium.devtools.DevToolsException; import org.openqa.selenium.devtools.Event; import org.openqa.selenium.devtools.idealized.Network; -import org.openqa.selenium.devtools.v122.fetch.Fetch; -import org.openqa.selenium.devtools.v122.fetch.model.*; -import org.openqa.selenium.devtools.v122.network.model.Request; +import org.openqa.selenium.devtools.v125.fetch.Fetch; +import org.openqa.selenium.devtools.v125.fetch.model.*; +import org.openqa.selenium.devtools.v125.network.model.Request; import org.openqa.selenium.internal.Either; import org.openqa.selenium.remote.http.HttpRequest; import org.openqa.selenium.remote.http.HttpResponse; -public class v122Network extends Network { +public class v125Network extends Network { - private static final Logger LOG = Logger.getLogger(v122Network.class.getName()); + private static final Logger LOG = Logger.getLogger(v125Network.class.getName()); - public v122Network(DevTools devTools) { + public v125Network(DevTools devTools) { super(devTools); } @Override protected Command setUserAgentOverride(UserAgent userAgent) { - return org.openqa.selenium.devtools.v122.network.Network.setUserAgentOverride( + return org.openqa.selenium.devtools.v125.network.Network.setUserAgentOverride( userAgent.userAgent(), userAgent.acceptLanguage(), userAgent.platform(), Optional.empty()); } @Override protected Command enableNetworkCaching() { - return org.openqa.selenium.devtools.v122.network.Network.setCacheDisabled(false); + return org.openqa.selenium.devtools.v125.network.Network.setCacheDisabled(false); } @Override protected Command disableNetworkCaching() { - return org.openqa.selenium.devtools.v122.network.Network.setCacheDisabled(true); + return org.openqa.selenium.devtools.v125.network.Network.setCacheDisabled(true); } @Override diff --git a/java/src/org/openqa/selenium/devtools/v122/v122Target.java b/java/src/org/openqa/selenium/devtools/v125/v125Target.java similarity index 83% rename from java/src/org/openqa/selenium/devtools/v122/v122Target.java rename to java/src/org/openqa/selenium/devtools/v125/v125Target.java index 1140c96a9510a..9700463fdba6c 100644 --- a/java/src/org/openqa/selenium/devtools/v122/v122Target.java +++ b/java/src/org/openqa/selenium/devtools/v125/v125Target.java @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -package org.openqa.selenium.devtools.v122; +package org.openqa.selenium.devtools.v125; import java.util.List; import java.util.Map; @@ -28,21 +28,21 @@ import org.openqa.selenium.devtools.idealized.browser.model.BrowserContextID; import org.openqa.selenium.devtools.idealized.target.model.SessionID; import org.openqa.selenium.devtools.idealized.target.model.TargetID; -import org.openqa.selenium.devtools.v122.target.Target; -import org.openqa.selenium.devtools.v122.target.model.TargetInfo; +import org.openqa.selenium.devtools.v125.target.Target; +import org.openqa.selenium.devtools.v125.target.model.TargetInfo; import org.openqa.selenium.json.JsonInput; import org.openqa.selenium.json.TypeToken; -public class v122Target implements org.openqa.selenium.devtools.idealized.target.Target { +public class v125Target implements org.openqa.selenium.devtools.idealized.target.Target { @Override public Command detachFromTarget( Optional sessionId, Optional targetId) { return Target.detachFromTarget( sessionId.map( - id -> new org.openqa.selenium.devtools.v122.target.model.SessionID(id.toString())), + id -> new org.openqa.selenium.devtools.v125.target.model.SessionID(id.toString())), targetId.map( - id -> new org.openqa.selenium.devtools.v122.target.model.TargetID(id.toString()))); + id -> new org.openqa.selenium.devtools.v125.target.model.TargetID(id.toString()))); } @Override @@ -74,19 +74,19 @@ public Command detachFromTarget( @Override public Command attachToTarget(TargetID targetId) { - Function mapper = + Function mapper = ConverterFunctions.map( - "sessionId", org.openqa.selenium.devtools.v122.target.model.SessionID.class); + "sessionId", org.openqa.selenium.devtools.v125.target.model.SessionID.class); return new Command<>( "Target.attachToTarget", Map.of( "targetId", - new org.openqa.selenium.devtools.v122.target.model.TargetID(targetId.toString()), + new org.openqa.selenium.devtools.v125.target.model.TargetID(targetId.toString()), "flatten", true), input -> { - org.openqa.selenium.devtools.v122.target.model.SessionID id = mapper.apply(input); + org.openqa.selenium.devtools.v125.target.model.SessionID id = mapper.apply(input); return new SessionID(id.toString()); }); } @@ -101,9 +101,9 @@ public Event detached() { return new Event<>( "Target.detachedFromTarget", input -> { - Function converter = + Function converter = ConverterFunctions.map( - "targetId", org.openqa.selenium.devtools.v122.target.model.TargetID.class); + "targetId", org.openqa.selenium.devtools.v125.target.model.TargetID.class); return new TargetID(converter.apply(input).toString()); }); } diff --git a/java/src/org/openqa/selenium/devtools/versions.bzl b/java/src/org/openqa/selenium/devtools/versions.bzl index 6289bf0315ad1..4bc879c2e00f9 100644 --- a/java/src/org/openqa/selenium/devtools/versions.bzl +++ b/java/src/org/openqa/selenium/devtools/versions.bzl @@ -1,6 +1,6 @@ CDP_VERSIONS = [ "v85", # Required by Firefox - "v122", + "v125", "v123", "v124", ] diff --git a/java/test/org/openqa/selenium/bidi/browsingcontext/LocateNodesTest.java b/java/test/org/openqa/selenium/bidi/browsingcontext/LocateNodesTest.java index 8a11d5ecc03f0..2f4a3a8150923 100644 --- a/java/test/org/openqa/selenium/bidi/browsingcontext/LocateNodesTest.java +++ b/java/test/org/openqa/selenium/bidi/browsingcontext/LocateNodesTest.java @@ -57,7 +57,6 @@ public void setUp() { @Test @NotYetImplemented(SAFARI) @NotYetImplemented(IE) - @NotYetImplemented(CHROME) @NotYetImplemented(EDGE) void canLocateNodes() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); @@ -74,7 +73,6 @@ void canLocateNodes() { @Test @NotYetImplemented(SAFARI) @NotYetImplemented(IE) - @NotYetImplemented(CHROME) @NotYetImplemented(EDGE) void canLocateNodesWithJustLocator() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); @@ -89,7 +87,6 @@ void canLocateNodesWithJustLocator() { @Test @NotYetImplemented(SAFARI) @NotYetImplemented(IE) - @NotYetImplemented(CHROME) @NotYetImplemented(EDGE) void canLocateNode() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); @@ -104,7 +101,6 @@ void canLocateNode() { @Test @NotYetImplemented(SAFARI) @NotYetImplemented(IE) - @NotYetImplemented(CHROME) @NotYetImplemented(EDGE) void canLocateNodesWithCSSLocator() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); @@ -130,7 +126,6 @@ void canLocateNodesWithCSSLocator() { @Test @NotYetImplemented(SAFARI) @NotYetImplemented(IE) - @NotYetImplemented(CHROME) @NotYetImplemented(EDGE) void canLocateNodesWithXPathLocator() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); @@ -156,7 +151,6 @@ void canLocateNodesWithXPathLocator() { @Test @NotYetImplemented(SAFARI) @NotYetImplemented(IE) - @NotYetImplemented(CHROME) @NotYetImplemented(EDGE) @NotYetImplemented(FIREFOX) void canLocateNodesWithInnerText() { @@ -179,7 +173,6 @@ void canLocateNodesWithInnerText() { @Test @NotYetImplemented(SAFARI) @NotYetImplemented(IE) - @NotYetImplemented(CHROME) @NotYetImplemented(EDGE) void canLocateNodesWithMaxNodeCount() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); @@ -194,44 +187,6 @@ void canLocateNodesWithMaxNodeCount() { assertThat(elements.size()).isEqualTo(4); } - @Test - @NotYetImplemented(SAFARI) - @NotYetImplemented(IE) - @NotYetImplemented(CHROME) - @NotYetImplemented(EDGE) - void canLocateNodesWithNoneOwnershipParameter() { - BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); - assertThat(browsingContext.getId()).isNotEmpty(); - - driver.get(pages.xhtmlTestPage); - - LocateNodeParameters parameters = - new LocateNodeParameters(Locator.css("div")).setOwnership(ResultOwnership.NONE); - - List elements = browsingContext.locateNodes(parameters); - assertThat(elements.size()).isEqualTo(13); - assertThat(elements.get(0).getHandle().isPresent()).isFalse(); - } - - @Test - @NotYetImplemented(SAFARI) - @NotYetImplemented(IE) - @NotYetImplemented(CHROME) - @NotYetImplemented(EDGE) - void canLocateNodesWithRootOwnershipParameter() { - BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); - assertThat(browsingContext.getId()).isNotEmpty(); - - driver.get(pages.xhtmlTestPage); - - LocateNodeParameters parameters = - new LocateNodeParameters(Locator.css("div")).setOwnership(ResultOwnership.ROOT); - - List elements = browsingContext.locateNodes(parameters); - assertThat(elements.size()).isEqualTo(13); - assertThat(elements.get(0).getHandle().isPresent()).isTrue(); - } - @Test @NotYetImplemented(SAFARI) @NotYetImplemented(IE) @@ -277,7 +232,6 @@ void canLocateNodesGivenStartNodes() { @Test @NotYetImplemented(SAFARI) @NotYetImplemented(IE) - @NotYetImplemented(CHROME) @NotYetImplemented(EDGE) void canLocateNodesInAGivenSandbox() { String sandbox = "sandbox"; @@ -324,7 +278,6 @@ void canLocateNodesInAGivenSandbox() { @Test @NotYetImplemented(SAFARI) @NotYetImplemented(IE) - @NotYetImplemented(CHROME) @NotYetImplemented(EDGE) void canFindElement() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); diff --git a/java/test/org/openqa/selenium/bidi/storage/StorageCommandsTest.java b/java/test/org/openqa/selenium/bidi/storage/StorageCommandsTest.java index b491ee392fe85..c0359e4c89887 100644 --- a/java/test/org/openqa/selenium/bidi/storage/StorageCommandsTest.java +++ b/java/test/org/openqa/selenium/bidi/storage/StorageCommandsTest.java @@ -250,7 +250,6 @@ public void canGetAllCookies() { @NotYetImplemented(SAFARI) @NotYetImplemented(IE) @NotYetImplemented(EDGE) - @NotYetImplemented(CHROME) public void canDeleteAllCookies() { addCookieOnServerSide(new Cookie("foo", "set")); assertSomeCookiesArePresent(); @@ -267,7 +266,6 @@ public void canDeleteAllCookies() { @NotYetImplemented(SAFARI) @NotYetImplemented(IE) @NotYetImplemented(EDGE) - @NotYetImplemented(CHROME) public void canDeleteCookieWithName() { String key1 = generateUniqueKey(); String key2 = generateUniqueKey(); diff --git a/java/version.bzl b/java/version.bzl index 84652c8472fa7..a1513b1db28ae 100644 --- a/java/version.bzl +++ b/java/version.bzl @@ -1,2 +1,2 @@ -SE_VERSION = "4.21.0-SNAPSHOT" +SE_VERSION = "4.21.0" TOOLS_JAVA_VERSION = "17" diff --git a/javascript/node/selenium-webdriver/BUILD.bazel b/javascript/node/selenium-webdriver/BUILD.bazel index e55b852f53f2e..714a2ebfb4e39 100644 --- a/javascript/node/selenium-webdriver/BUILD.bazel +++ b/javascript/node/selenium-webdriver/BUILD.bazel @@ -10,11 +10,11 @@ load("//javascript:defs.bzl", "mocha_test") npm_link_all_packages(name = "node_modules") -VERSION = "4.21.0-nightly202404242350" +VERSION = "4.21.0" BROWSER_VERSIONS = [ "v85", - "v122", + "v125", "v123", "v124", ] diff --git a/javascript/node/selenium-webdriver/CHANGES.md b/javascript/node/selenium-webdriver/CHANGES.md index dea4b231d4275..7a214ecc0c9a2 100644 --- a/javascript/node/selenium-webdriver/CHANGES.md +++ b/javascript/node/selenium-webdriver/CHANGES.md @@ -1,3 +1,9 @@ +## 4.21.0 + +- Add CDP for Chrome 125 and remove 122 +- Ensure 'selectVisibleByText' method is same as other languages (#13899) +- Ensure parity in the locators used by methods (#13902) + ## 4.20.0 - Add CDP for Chrome 124 and remove 121 diff --git a/javascript/node/selenium-webdriver/bidi/browsingContext.js b/javascript/node/selenium-webdriver/bidi/browsingContext.js index 1acf5a933e819..eeba70ff7153f 100644 --- a/javascript/node/selenium-webdriver/bidi/browsingContext.js +++ b/javascript/node/selenium-webdriver/bidi/browsingContext.js @@ -500,21 +500,18 @@ class BrowsingContext { * * @param {Locator} locator - The locator object used to locate the nodes. * @param {number} [maxNodeCount] - The maximum number of nodes to locate (optional). - * @param {string} [ownership] - The ownership type of the nodes (optional). * @param {string} [sandbox] - The sandbox name for locating nodes (optional). * @param {SerializationOptions} [serializationOptions] - The serialization options for locating nodes (optional). * @param {ReferenceValue[]} [startNodes] - The array of start nodes for locating nodes (optional). * @returns {Promise} - A promise that resolves to the arrays of located nodes. * @throws {Error} - If the locator is not an instance of Locator. * @throws {Error} - If the serializationOptions is provided but not an instance of SerializationOptions. - * @throws {Error} - If the ownership is provided but not 'root' or 'none'. * @throws {Error} - If the startNodes is provided but not an array of ReferenceValue objects. * @throws {Error} - If any of the startNodes is not an instance of ReferenceValue. */ async locateNodes( locator, maxNodeCount = undefined, - ownership = undefined, sandbox = undefined, serializationOptions = undefined, startNodes = undefined, @@ -527,10 +524,6 @@ class BrowsingContext { throw Error(`Pass in SerializationOptions object. Received: ${serializationOptions} `) } - if (ownership !== undefined && !['root', 'none'].includes(ownership)) { - throw Error(`Valid types are 'root' and 'none. Received: ${ownership}`) - } - if (startNodes !== undefined && !Array.isArray(startNodes)) { throw Error(`Pass in an array of ReferenceValue objects. Received: ${startNodes}`) } @@ -549,7 +542,6 @@ class BrowsingContext { context: this._id, locator: Object.fromEntries(locator.toMap()), maxNodeCount: maxNodeCount, - ownership: ownership, sandbox: sandbox, serializationOptions: serializationOptions, startNodes: startNodes, @@ -574,20 +566,13 @@ class BrowsingContext { * Locates a single node in the browsing context. * * @param {Locator} locator - The locator used to find the node. - * @param {string} [ownership] - The ownership of the node (optional). * @param {string} [sandbox] - The sandbox of the node (optional). * @param {SerializationOptions} [serializationOptions] - The serialization options for the node (optional). * @param {Array} [startNodes] - The starting nodes for the search (optional). * @returns {Promise} - A promise that resolves to the located node. */ - async locateNode( - locator, - ownership = undefined, - sandbox = undefined, - serializationOptions = undefined, - startNodes = undefined, - ) { - const elements = await this.locateNodes(locator, 1, ownership, sandbox, serializationOptions, startNodes) + async locateNode(locator, sandbox = undefined, serializationOptions = undefined, startNodes = undefined) { + const elements = await this.locateNodes(locator, 1, sandbox, serializationOptions, startNodes) return elements[0] } diff --git a/javascript/node/selenium-webdriver/package.json b/javascript/node/selenium-webdriver/package.json index d48c4ed5f3e55..71e0e23fb635b 100644 --- a/javascript/node/selenium-webdriver/package.json +++ b/javascript/node/selenium-webdriver/package.json @@ -1,6 +1,6 @@ { "name": "selenium-webdriver", - "version": "4.21.0-nightly202404242350", + "version": "4.21.0", "description": "The official WebDriver JavaScript bindings from the Selenium project", "license": "Apache-2.0", "keywords": [ diff --git a/javascript/node/selenium-webdriver/test/bidi/locate_nodes_test.js b/javascript/node/selenium-webdriver/test/bidi/locate_nodes_test.js index 737bf862952ca..c9d4c67c8795d 100644 --- a/javascript/node/selenium-webdriver/test/bidi/locate_nodes_test.js +++ b/javascript/node/selenium-webdriver/test/bidi/locate_nodes_test.js @@ -128,32 +128,6 @@ suite( assert.strictEqual(elements.length, 4) }) - it('can locate node with none ownership value', async function () { - const id = await driver.getWindowHandle() - const browsingContext = await BrowsingContext(driver, { - browsingContextId: id, - }) - - await driver.get(Pages.xhtmlTestPage) - - const elements = await browsingContext.locateNodes(Locator.css('div'), undefined, 'none') - assert.strictEqual(elements.length, 13) - assert.strictEqual(elements[0].handle, null) - }) - - it('can locate node with root ownership value', async function () { - const id = await driver.getWindowHandle() - const browsingContext = await BrowsingContext(driver, { - browsingContextId: id, - }) - - await driver.get(Pages.xhtmlTestPage) - - const elements = await browsingContext.locateNodes(Locator.css('div'), undefined, 'root') - assert.strictEqual(elements.length, 13) - assert.notEqual(elements[0].handle, null) - }) - xit('can locate node with given start nodes', async function () { const id = await driver.getWindowHandle() const browsingContext = await BrowsingContext(driver, { diff --git a/package-lock.json b/package-lock.json index 82f036fee7fe6..991c9ed1b04ae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1874,7 +1874,7 @@ "license": "ISC" }, "javascript/node/selenium-webdriver": { - "version": "4.21.0-nightly202404242350", + "version": "4.21.0", "license": "Apache-2.0", "dependencies": { "jszip": "^3.10.1", diff --git a/py/BUILD.bazel b/py/BUILD.bazel index 746e5eaa4a80b..e1816a517f397 100644 --- a/py/BUILD.bazel +++ b/py/BUILD.bazel @@ -40,11 +40,11 @@ compile_pip_requirements( ], ) -SE_VERSION = "4.21.0.dev202404242345" +SE_VERSION = "4.21.0" BROWSER_VERSIONS = [ "v85", - "v122", + "v125", "v123", "v124", ] diff --git a/py/CHANGES b/py/CHANGES index 90e63496b8d08..f983af161fd3d 100644 --- a/py/CHANGES +++ b/py/CHANGES @@ -1,3 +1,8 @@ +Selenium 4.21.0 + +* Add CDP for Chrome 125 and remove 122 +* Moving ignore_local_proxy_environment_variables to BaseOptions (#13926) + Selenium 4.20.0 * Add CDP for Chrome 124 and remove 121 diff --git a/py/docs/source/conf.py b/py/docs/source/conf.py index d2bdb487c0a70..a3c3c65d5f57d 100644 --- a/py/docs/source/conf.py +++ b/py/docs/source/conf.py @@ -58,7 +58,7 @@ # The short X.Y version. version = '4.21' # The full version, including alpha/beta/rc tags. -release = '4.21.0.dev202404242345' +release = '4.21.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/py/selenium/__init__.py b/py/selenium/__init__.py index bc9c37bd212e5..74cb2777367c6 100644 --- a/py/selenium/__init__.py +++ b/py/selenium/__init__.py @@ -16,4 +16,4 @@ # under the License. -__version__ = "4.21.0.dev202404242345" +__version__ = "4.21.0" diff --git a/py/selenium/webdriver/__init__.py b/py/selenium/webdriver/__init__.py index f9304b14f5aa0..dd31331a2f45d 100644 --- a/py/selenium/webdriver/__init__.py +++ b/py/selenium/webdriver/__init__.py @@ -44,7 +44,7 @@ from .wpewebkit.service import Service as WPEWebKitService # noqa from .wpewebkit.webdriver import WebDriver as WPEWebKit # noqa -__version__ = "4.21.0.dev202404242345" +__version__ = "4.21.0" # We need an explicit __all__ because the above won't otherwise be exported. __all__ = [ diff --git a/py/setup.py b/py/setup.py index 14f86dcaa53ba..697301d371927 100755 --- a/py/setup.py +++ b/py/setup.py @@ -27,7 +27,7 @@ setup_args = { 'cmdclass': {'install': install}, 'name': 'selenium', - 'version': "4.21.0.dev202404242345", + 'version': "4.21.0", 'license': 'Apache 2.0', 'description': 'Python bindings for Selenium', 'long_description': open(join(abspath(dirname(__file__)), "README.rst")).read(), diff --git a/rb/CHANGES b/rb/CHANGES index aa272a7036a90..36f3d8f4a16b7 100644 --- a/rb/CHANGES +++ b/rb/CHANGES @@ -1,3 +1,15 @@ +4.21.0 (2024-05-16) +========================= + +* Add CDP for Chrome 125 and remove 122 +* Initial extensibility points for Appium + * Support registering extra headers in HTTP client + * Support overriding User-Agent in HTTP client + * Support registering extra bridge commands + * Support overriding default locator conversion + * Support registering custom finders for SearchContext + * Support using custom element classes + 4.20.1 (2024-04-25) ========================= diff --git a/rb/Gemfile.lock b/rb/Gemfile.lock index f6ee830661149..dd9cdc6ce3238 100644 --- a/rb/Gemfile.lock +++ b/rb/Gemfile.lock @@ -1,9 +1,9 @@ PATH remote: . specs: - selenium-devtools (0.124.0) + selenium-devtools (0.125.0) selenium-webdriver (~> 4.2) - selenium-webdriver (4.21.0.nightly) + selenium-webdriver (4.21.0) base64 (~> 0.2) rexml (~> 3.2, >= 3.2.5) rubyzip (>= 1.2.2, < 3.0) @@ -27,8 +27,8 @@ GEM public_suffix (>= 2.0.2, < 6.0) ast (2.4.2) base64 (0.2.0) - bigdecimal (3.1.7) - bigdecimal (3.1.7-java) + bigdecimal (3.1.8) + bigdecimal (3.1.8-java) concurrent-ruby (1.2.3) connection_pool (2.4.1) crack (1.0.0) @@ -41,19 +41,17 @@ GEM diff-lcs (1.5.1) drb (2.2.1) ffi (1.16.3) - ffi (1.16.3-java) - ffi (1.16.3-x64-mingw32) fileutils (1.7.2) git (1.19.1) addressable (~> 2.8) rchardet (~> 1.8) hashdiff (1.1.0) - i18n (1.14.4) + i18n (1.14.5) concurrent-ruby (~> 1.0) io-console (0.7.2) io-console (0.7.2-java) - irb (1.12.0) - rdoc + irb (1.13.1) + rdoc (>= 4.0.0) reline (>= 0.4.2) jar-dependencies (0.4.1) json (2.7.2) @@ -66,7 +64,7 @@ GEM minitest (5.22.3) mutex_m (0.2.0) parallel (1.24.0) - parser (3.3.0.5) + parser (3.3.1.0) ast (~> 2.4.1) racc psych (5.1.2) @@ -87,8 +85,8 @@ GEM rchardet (1.8.0) rdoc (6.6.3.1) psych (>= 4.0.0) - regexp_parser (2.9.0) - reline (0.5.3) + regexp_parser (2.9.1) + reline (0.5.7) io-console (~> 0.5) rexml (3.2.6) rspec (3.13.0) @@ -100,11 +98,11 @@ GEM rspec-expectations (3.13.0) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-mocks (3.13.0) + rspec-mocks (3.13.1) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-support (3.13.1) - rubocop (1.63.3) + rubocop (1.63.5) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) @@ -115,8 +113,8 @@ GEM rubocop-ast (>= 1.31.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.31.2) - parser (>= 3.3.0.4) + rubocop-ast (1.31.3) + parser (>= 3.3.1.0) rubocop-capybara (2.20.0) rubocop (~> 1.41) rubocop-factory_bot (2.25.1) @@ -124,7 +122,7 @@ GEM rubocop-performance (1.21.0) rubocop (>= 1.48.1, < 2.0) rubocop-ast (>= 1.31.1, < 2.0) - rubocop-rspec (2.29.1) + rubocop-rspec (2.29.2) rubocop (~> 1.40) rubocop-capybara (~> 2.17) rubocop-factory_bot (~> 2.22) diff --git a/rb/lib/selenium/devtools/BUILD.bazel b/rb/lib/selenium/devtools/BUILD.bazel index 5037696293790..f5e20451d6123 100644 --- a/rb/lib/selenium/devtools/BUILD.bazel +++ b/rb/lib/selenium/devtools/BUILD.bazel @@ -5,7 +5,7 @@ package(default_visibility = ["//rb:__subpackages__"]) CDP_VERSIONS = [ "v85", - "v122", + "v125", "v123", "v124", ] diff --git a/rb/lib/selenium/devtools/version.rb b/rb/lib/selenium/devtools/version.rb index cb61be0e8d570..2349154205de3 100644 --- a/rb/lib/selenium/devtools/version.rb +++ b/rb/lib/selenium/devtools/version.rb @@ -19,6 +19,6 @@ module Selenium module DevTools - VERSION = '0.124.0' + VERSION = '0.125.0' end # DevTools end # Selenium diff --git a/rb/lib/selenium/webdriver/version.rb b/rb/lib/selenium/webdriver/version.rb index 7dab164bc68b8..ae5674c3ea5df 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.21.0.nightly' + VERSION = '4.21.0' end # WebDriver end # Selenium diff --git a/rb/spec/integration/selenium/webdriver/bidi_spec.rb b/rb/spec/integration/selenium/webdriver/bidi_spec.rb index 39b9fb032c82b..1f56fcfe7a783 100644 --- a/rb/spec/integration/selenium/webdriver/bidi_spec.rb +++ b/rb/spec/integration/selenium/webdriver/bidi_spec.rb @@ -30,7 +30,7 @@ module WebDriver # do nothing end - it 'gets session status', except: {browser: %i[chrome edge], + it 'gets session status', except: {browser: %i[edge], reason: 'https://bugs.chromium.org/p/chromedriver/issues/detail?id=4676'} do status = driver.bidi.session.status expect(status).to respond_to(:ready) @@ -62,7 +62,7 @@ module WebDriver end it 'does not close BiDi session if at least one window is opened', - except: {browser: %i[chrome edge], + except: {browser: %i[edge], reason: 'https://bugs.chromium.org/p/chromedriver/issues/detail?id=4676'} do status = driver.bidi.session.status expect(status.ready).to be false @@ -80,7 +80,7 @@ module WebDriver end it 'closes BiDi session if last window is closed', - except: {browser: %i[chrome edge], + except: {browser: %i[edge], reason: 'https://bugs.chromium.org/p/chromedriver/issues/detail?id=4676'} do status = driver.bidi.session.status expect(status.ready).to be false diff --git a/rust/BUILD.bazel b/rust/BUILD.bazel index 64876ee30a420..6523c20747e5f 100644 --- a/rust/BUILD.bazel +++ b/rust/BUILD.bazel @@ -77,7 +77,7 @@ rust_binary( name = "selenium-manager", srcs = ["src/main.rs"], edition = "2021", - version = "0.4.21-nightly", + version = "0.4.21", visibility = ["//visibility:public"], deps = [ ":selenium_manager", diff --git a/rust/CHANGELOG.md b/rust/CHANGELOG.md index a8927558bc665..5f949097de10b 100644 --- a/rust/CHANGELOG.md +++ b/rust/CHANGELOG.md @@ -1,3 +1,8 @@ +0.4.21 +====== + +* No logical changes in this release. + 0.4.20 ====== diff --git a/rust/Cargo.Bazel.lock b/rust/Cargo.Bazel.lock index 4d98b8e7f60fa..2210d513f14d8 100644 --- a/rust/Cargo.Bazel.lock +++ b/rust/Cargo.Bazel.lock @@ -1,5 +1,5 @@ { - "checksum": "2f7c3f35f4299e58cd1e9b9db2b4fdd7d6dd0a5b8a05cf2376ec8805e6a0a87e", + "checksum": "c0105830eebfd11a03106ad66e58620e6231a3659bcee6bf5fdc9005efe6923c", "crates": { "addr2line 0.19.0": { "name": "addr2line", @@ -12083,9 +12083,9 @@ ], "license_file": "LICENSE" }, - "selenium-manager 0.4.21-nightly": { + "selenium-manager 0.4.21": { "name": "selenium-manager", - "version": "0.4.21-nightly", + "version": "0.4.21", "package_url": "https://github.com/SeleniumHQ/selenium", "repository": null, "targets": [ @@ -12218,7 +12218,7 @@ "selects": {} }, "edition": "2021", - "version": "0.4.21-nightly" + "version": "0.4.21" }, "license": "Apache-2.0", "license_ids": [ @@ -19277,7 +19277,7 @@ }, "binary_crates": [], "workspace_members": { - "selenium-manager 0.4.21-nightly": "rust" + "selenium-manager 0.4.21": "rust" }, "conditions": { "aarch64-apple-darwin": [ diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 703229702070f..bcdde1593c0af 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -1871,7 +1871,7 @@ dependencies = [ [[package]] name = "selenium-manager" -version = "0.4.21-nightly" +version = "0.4.21" dependencies = [ "anyhow", "apple-flat-package", diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 5f9e453dc44ae..ec24e988efa00 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "selenium-manager" -version = "0.4.21-nightly" # don't forget to update rust/BUILD.bazel +version = "0.4.21" # don't forget to update rust/BUILD.bazel edition = "2021" authors = ["Selenium