diff --git a/rb/lib/selenium/webdriver/bidi/protocol/bluetooth.rb b/rb/lib/selenium/webdriver/bidi/protocol/bluetooth.rb index 6a9ccd81438cc..5005403ffefcc 100644 --- a/rb/lib/selenium/webdriver/bidi/protocol/bluetooth.rb +++ b/rb/lib/selenium/webdriver/bidi/protocol/bluetooth.rb @@ -150,6 +150,9 @@ class HandleRequestDevicePromptParameters < Serialization::Union context: {wire_key: 'context', primitive: 'string'}, prompt: {wire_key: 'prompt', primitive: 'string'} ) + + def self.true(**) = Bluetooth::HandleRequestDevicePromptParameters::AcceptParameters.new(**) + def self.false(**) = Bluetooth::HandleRequestDevicePromptParameters::CancelParameters.new(**) end # @api private @@ -325,6 +328,11 @@ class HandleRequestDevicePromptParameters < Serialization::Union 'bluetooth.gattConnectionAttempted' => Bluetooth::GattConnectionAttemptedParameters }.freeze + def bluetooth_manufacturer_data(**) = BluetoothManufacturerData.new(**) + def characteristic_properties(**) = CharacteristicProperties.new(**) + def scan_record(**) = ScanRecord.new(**) + def simulate_advertisement_scan_entry_parameters(**) = SimulateAdvertisementScanEntryParameters.new(**) + # @api private # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/ def handle_request_device_prompt(context:, prompt:, accept:, device: Serialization::UNSET) diff --git a/rb/lib/selenium/webdriver/bidi/protocol/browser.rb b/rb/lib/selenium/webdriver/bidi/protocol/browser.rb index ef1fa7c6e0ffd..6cd864bd544d6 100644 --- a/rb/lib/selenium/webdriver/bidi/protocol/browser.rb +++ b/rb/lib/selenium/webdriver/bidi/protocol/browser.rb @@ -121,6 +121,8 @@ class SetClientWindowStateParameters < Serialization::Union x: {wire_key: 'x', required: false, primitive: 'integer'}, y: {wire_key: 'y', required: false, primitive: 'integer'} ) + + def self.normal(**) = Browser::SetClientWindowStateParameters::ClientWindowRectState.new(**) end # @api private @@ -152,8 +154,13 @@ class DownloadBehavior < Serialization::Union # @api private # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/ Denied = Serialization::Record.define(type: {fixed: 'denied'}) + + def self.allowed(**) = Browser::DownloadBehavior::Allowed.new(**) + def self.denied(**) = Browser::DownloadBehavior::Denied.new(**) end + def download_behavior = DownloadBehavior + # @api private # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/ # @see https://w3c.github.io/webdriver-bidi/#command-browser-close diff --git a/rb/lib/selenium/webdriver/bidi/protocol/browsing_context.rb b/rb/lib/selenium/webdriver/bidi/protocol/browsing_context.rb index 859a8d6c71b12..443c062985f88 100644 --- a/rb/lib/selenium/webdriver/bidi/protocol/browsing_context.rb +++ b/rb/lib/selenium/webdriver/bidi/protocol/browsing_context.rb @@ -113,6 +113,12 @@ class Locator < Serialization::Union xpath: 'BrowsingContext::XPathLocator' ) object_only + + def self.accessibility(**) = BrowsingContext::AccessibilityLocator.new(**) + def self.css(**) = BrowsingContext::CssLocator.new(**) + def self.context(**) = BrowsingContext::ContextLocator.new(**) + def self.inner_text(**) = BrowsingContext::InnerTextLocator.new(**) + def self.xpath(**) = BrowsingContext::XPathLocator.new(**) end # @api private @@ -224,6 +230,9 @@ class ClipRectangle < Serialization::Union element: 'BrowsingContext::ElementClipRectangle' ) object_only + + def self.box(**) = BrowsingContext::BoxClipRectangle.new(**) + def self.element(**) = BrowsingContext::ElementClipRectangle.new(**) end # @api private @@ -524,6 +533,9 @@ class DownloadEndParams < Serialization::Union url: {wire_key: 'url', primitive: 'string'}, user_context: {wire_key: 'userContext', required: false, primitive: 'string'} ) + + def self.canceled(**) = BrowsingContext::DownloadEndParams::CanceledParams.new(**) + def self.complete(**) = BrowsingContext::DownloadEndParams::CompleteParams.new(**) end # @api private @@ -566,6 +578,23 @@ class DownloadEndParams < Serialization::Union 'browsingContext.userPromptOpened' => BrowsingContext::UserPromptOpenedParameters }.freeze + def locator = Locator + def accessibility_locator(**) = AccessibilityLocator.new(**) + def css_locator(**) = CssLocator.new(**) + def context_locator(**) = ContextLocator.new(**) + def inner_text_locator(**) = InnerTextLocator.new(**) + def x_path_locator(**) = XPathLocator.new(**) + def image_format(**) = ImageFormat.new(**) + def clip_rectangle = ClipRectangle + def element_clip_rectangle(**) = ElementClipRectangle.new(**) + def box_clip_rectangle(**) = BoxClipRectangle.new(**) + def print_margin_parameters(**) = PrintMarginParameters.new(**) + def print_page_parameters(**) = PrintPageParameters.new(**) + def viewport(**) = Viewport.new(**) + def media_track_constraints(**) = MediaTrackConstraints.new(**) + def accessibility_locator_value(**) = AccessibilityLocator::Value.new(**) + def context_locator_value(**) = ContextLocator::Value.new(**) + # @api private # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/ # @see https://w3c.github.io/webdriver-bidi/#command-browsingContext-activate diff --git a/rb/lib/selenium/webdriver/bidi/protocol/domain.rb b/rb/lib/selenium/webdriver/bidi/protocol/domain.rb index 95a06be3ff755..d3741d7b637d8 100644 --- a/rb/lib/selenium/webdriver/bidi/protocol/domain.rb +++ b/rb/lib/selenium/webdriver/bidi/protocol/domain.rb @@ -32,6 +32,10 @@ def initialize(source) private + # The connection this domain runs over, so a generated vendor accessor can build its + # sibling variant (`Moz.new(connection)`) — construction stays connection-based. + def connection = @transport.connection + def execute(cmd:, params: nil, result: nil) @transport.execute(cmd: cmd, params: params, result: result) end diff --git a/rb/lib/selenium/webdriver/bidi/protocol/emulation.rb b/rb/lib/selenium/webdriver/bidi/protocol/emulation.rb index b1680174313f0..4d51d232e6ff0 100644 --- a/rb/lib/selenium/webdriver/bidi/protocol/emulation.rb +++ b/rb/lib/selenium/webdriver/bidi/protocol/emulation.rb @@ -217,6 +217,12 @@ class SetGeolocationOverrideParameters < Serialization::Union user_contexts: {wire_key: 'userContexts', required: false, list: true} ) + def geolocation_coordinates(**) = GeolocationCoordinates.new(**) + def geolocation_position_error(**) = GeolocationPositionError.new(**) + def network_conditions_offline(**) = NetworkConditionsOffline.new(**) + def screen_area(**) = ScreenArea.new(**) + def screen_orientation(**) = ScreenOrientation.new(**) + # @api private # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/ # @see https://w3c.github.io/webdriver-bidi/#command-emulation-setForcedColorsModeThemeOverride diff --git a/rb/lib/selenium/webdriver/bidi/protocol/input.rb b/rb/lib/selenium/webdriver/bidi/protocol/input.rb index cb2fdee876fe2..c7cb971e5cf26 100644 --- a/rb/lib/selenium/webdriver/bidi/protocol/input.rb +++ b/rb/lib/selenium/webdriver/bidi/protocol/input.rb @@ -67,6 +67,11 @@ class SourceActions < Serialization::Union wheel: 'Input::WheelSourceActions' ) object_only + + def self.none(**) = Input::NoneSourceActions.new(**) + def self.key(**) = Input::KeySourceActions.new(**) + def self.pointer(**) = Input::PointerSourceActions.new(**) + def self.wheel(**) = Input::WheelSourceActions.new(**) end # @api private @@ -98,6 +103,10 @@ class KeySourceAction < Serialization::Union key_up: 'Input::KeyUpAction' ) object_only + + def self.pause(**) = Input::PauseAction.new(**) + def self.key_down(**) = Input::KeyDownAction.new(**) + def self.key_up(**) = Input::KeyUpAction.new(**) end # @api private @@ -134,6 +143,11 @@ class PointerSourceAction < Serialization::Union pointer_move: 'Input::PointerMoveAction' ) object_only + + def self.pause(**) = Input::PauseAction.new(**) + def self.pointer_down(**) = Input::PointerDownAction.new(**) + def self.pointer_up(**) = Input::PointerUpAction.new(**) + def self.pointer_move(**) = Input::PointerMoveAction.new(**) end # @api private @@ -155,6 +169,9 @@ class WheelSourceAction < Serialization::Union scroll: 'Input::WheelScrollAction' ) object_only + + def self.pause(**) = Input::PauseAction.new(**) + def self.scroll(**) = Input::WheelScrollAction.new(**) end # @api private @@ -257,6 +274,8 @@ class Origin < Serialization::Union element: 'Input::ElementOrigin' ) scalar_values 'viewport', 'pointer' + + def self.element(**) = Input::ElementOrigin.new(**) end # @api private @@ -287,6 +306,24 @@ class Origin < Serialization::Union 'input.fileDialogOpened' => Input::FileDialogInfo }.freeze + def element_origin(**) = ElementOrigin.new(**) + def source_actions = SourceActions + def none_source_actions(**) = NoneSourceActions.new(**) + def key_source_actions(**) = KeySourceActions.new(**) + def key_source_action = KeySourceAction + def pointer_source_actions(**) = PointerSourceActions.new(**) + def pointer_parameters(**) = PointerParameters.new(**) + def pointer_source_action = PointerSourceAction + def wheel_source_actions(**) = WheelSourceActions.new(**) + def wheel_source_action = WheelSourceAction + def pause_action(**) = PauseAction.new(**) + def key_down_action(**) = KeyDownAction.new(**) + def key_up_action(**) = KeyUpAction.new(**) + def pointer_up_action(**) = PointerUpAction.new(**) + def pointer_down_action(**) = PointerDownAction.new(**) + def pointer_move_action(**) = PointerMoveAction.new(**) + def wheel_scroll_action(**) = WheelScrollAction.new(**) + # @api private # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/ # @see https://w3c.github.io/webdriver-bidi/#command-input-performActions diff --git a/rb/lib/selenium/webdriver/bidi/protocol/log.rb b/rb/lib/selenium/webdriver/bidi/protocol/log.rb index 033ec77040221..3ec6d22b328aa 100644 --- a/rb/lib/selenium/webdriver/bidi/protocol/log.rb +++ b/rb/lib/selenium/webdriver/bidi/protocol/log.rb @@ -51,6 +51,9 @@ class Entry < Serialization::Union ) fallback 'Log::GenericLogEntry' object_only + + def self.console(**) = Log::ConsoleLogEntry.new(**) + def self.javascript(**) = Log::JavascriptLogEntry.new(**) end # @api private diff --git a/rb/lib/selenium/webdriver/bidi/protocol/network.rb b/rb/lib/selenium/webdriver/bidi/protocol/network.rb index 07d6ba14c8abe..7c5db700363e4 100644 --- a/rb/lib/selenium/webdriver/bidi/protocol/network.rb +++ b/rb/lib/selenium/webdriver/bidi/protocol/network.rb @@ -120,6 +120,9 @@ class BytesValue < Serialization::Union base64: 'Network::Base64Value' ) object_only + + def self.string(**) = Network::StringValue.new(**) + def self.base64(**) = Network::Base64Value.new(**) end # @api private @@ -264,6 +267,9 @@ class UrlPattern < Serialization::Union string: 'Network::UrlPatternString' ) object_only + + def self.pattern(**) = Network::UrlPatternPattern.new(**) + def self.string(**) = Network::UrlPatternString.new(**) end # @api private @@ -365,6 +371,8 @@ class ContinueWithAuthParameters < Serialization::Union request: {wire_key: 'request', primitive: 'string'}, action: {wire_key: 'action', enum: 'Network::CONTINUE_WITH_AUTH_NO_CREDENTIALS_ACTION'} ) + + def self.provide_credentials(**) = Network::ContinueWithAuthParameters::Credentials.new(**) end # @api private @@ -522,6 +530,17 @@ class ContinueWithAuthParameters < Serialization::Union 'network.responseStarted' => Network::ResponseStartedParameters }.freeze + def auth_credentials(**) = AuthCredentials.new(**) + def bytes_value = BytesValue + def string_value(**) = StringValue.new(**) + def base64_value(**) = Base64Value.new(**) + def cookie_header(**) = CookieHeader.new(**) + def header(**) = Header.new(**) + def set_cookie_header(**) = SetCookieHeader.new(**) + def url_pattern = UrlPattern + def url_pattern_pattern(**) = UrlPatternPattern.new(**) + def url_pattern_string(**) = UrlPatternString.new(**) + # @api private # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/ # @see https://w3c.github.io/webdriver-bidi/#command-network-addDataCollector diff --git a/rb/lib/selenium/webdriver/bidi/protocol/permissions.rb b/rb/lib/selenium/webdriver/bidi/protocol/permissions.rb index 500265c68b6c6..877141934fcd8 100644 --- a/rb/lib/selenium/webdriver/bidi/protocol/permissions.rb +++ b/rb/lib/selenium/webdriver/bidi/protocol/permissions.rb @@ -47,6 +47,8 @@ class Permissions < Domain user_context: {wire_key: 'userContext', required: false, primitive: 'string'} ) + def permission_descriptor(**) = PermissionDescriptor.new(**) + # @api private # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/ def set_permission( diff --git a/rb/lib/selenium/webdriver/bidi/protocol/script.rb b/rb/lib/selenium/webdriver/bidi/protocol/script.rb index ed05cc601c9af..975634cb590bc 100644 --- a/rb/lib/selenium/webdriver/bidi/protocol/script.rb +++ b/rb/lib/selenium/webdriver/bidi/protocol/script.rb @@ -102,6 +102,9 @@ class EvaluateResult < Serialization::Union exception: 'Script::EvaluateResultException' ) object_only + + def self.success(**) = Script::EvaluateResultSuccess.new(**) + def self.exception(**) = Script::EvaluateResultException.new(**) end # @api private @@ -169,6 +172,20 @@ class LocalValue < Serialization::Union ) fallback 'Script::RemoteReference' object_only + + def self.undefined(**) = Script::UndefinedValue.new(**) + def self.null(**) = Script::NullValue.new(**) + def self.string(**) = Script::StringValue.new(**) + def self.number(**) = Script::NumberValue.new(**) + def self.boolean(**) = Script::BooleanValue.new(**) + def self.bigint(**) = Script::BigIntValue.new(**) + def self.channel(**) = Script::ChannelValue.new(**) + def self.array(**) = Script::ArrayLocalValue.new(**) + def self.date(**) = Script::DateLocalValue.new(**) + def self.map(**) = Script::MapLocalValue.new(**) + def self.object(**) = Script::ObjectLocalValue.new(**) + def self.regexp(**) = Script::RegExpLocalValue.new(**) + def self.set(**) = Script::SetLocalValue.new(**) end # @api private @@ -248,6 +265,13 @@ class PrimitiveProtocolValue < Serialization::Union bigint: 'Script::BigIntValue' ) object_only + + def self.undefined(**) = Script::UndefinedValue.new(**) + def self.null(**) = Script::NullValue.new(**) + def self.string(**) = Script::StringValue.new(**) + def self.number(**) = Script::NumberValue.new(**) + def self.boolean(**) = Script::BooleanValue.new(**) + def self.bigint(**) = Script::BigIntValue.new(**) end # @api private @@ -314,6 +338,15 @@ class RealmInfo < Serialization::Union worklet: 'Script::WorkletRealmInfo' ) object_only + + def self.window(**) = Script::WindowRealmInfo.new(**) + def self.dedicated_worker(**) = Script::DedicatedWorkerRealmInfo.new(**) + def self.shared_worker(**) = Script::SharedWorkerRealmInfo.new(**) + def self.service_worker(**) = Script::ServiceWorkerRealmInfo.new(**) + def self.worker(**) = Script::WorkerRealmInfo.new(**) + def self.paint_worklet(**) = Script::PaintWorkletRealmInfo.new(**) + def self.audio_worklet(**) = Script::AudioWorkletRealmInfo.new(**) + def self.worklet(**) = Script::WorkletRealmInfo.new(**) end # @api private @@ -490,6 +523,33 @@ class RemoteValue < Serialization::Union window: 'Script::WindowProxyRemoteValue' ) object_only + + def self.undefined(**) = Script::UndefinedValue.new(**) + def self.null(**) = Script::NullValue.new(**) + def self.string(**) = Script::StringValue.new(**) + def self.number(**) = Script::NumberValue.new(**) + def self.boolean(**) = Script::BooleanValue.new(**) + def self.bigint(**) = Script::BigIntValue.new(**) + def self.symbol(**) = Script::SymbolRemoteValue.new(**) + def self.array(**) = Script::ArrayRemoteValue.new(**) + def self.object(**) = Script::ObjectRemoteValue.new(**) + def self.function(**) = Script::FunctionRemoteValue.new(**) + def self.regexp(**) = Script::RegExpRemoteValue.new(**) + def self.date(**) = Script::DateRemoteValue.new(**) + def self.map(**) = Script::MapRemoteValue.new(**) + def self.set(**) = Script::SetRemoteValue.new(**) + def self.weakmap(**) = Script::WeakMapRemoteValue.new(**) + def self.weakset(**) = Script::WeakSetRemoteValue.new(**) + def self.generator(**) = Script::GeneratorRemoteValue.new(**) + def self.error(**) = Script::ErrorRemoteValue.new(**) + def self.proxy(**) = Script::ProxyRemoteValue.new(**) + def self.promise(**) = Script::PromiseRemoteValue.new(**) + def self.typedarray(**) = Script::TypedArrayRemoteValue.new(**) + def self.arraybuffer(**) = Script::ArrayBufferRemoteValue.new(**) + def self.nodelist(**) = Script::NodeListRemoteValue.new(**) + def self.htmlcollection(**) = Script::HTMLCollectionRemoteValue.new(**) + def self.node(**) = Script::NodeRemoteValue.new(**) + def self.window(**) = Script::WindowProxyRemoteValue.new(**) end # @api private @@ -866,6 +926,31 @@ class Target < Serialization::Union 'script.realmDestroyed' => Script::RealmDestroyedParameters }.freeze + def channel_value(**) = ChannelValue.new(**) + def channel_properties(**) = ChannelProperties.new(**) + def local_value = LocalValue + def array_local_value(**) = ArrayLocalValue.new(**) + def date_local_value(**) = DateLocalValue.new(**) + def map_local_value(**) = MapLocalValue.new(**) + def object_local_value(**) = ObjectLocalValue.new(**) + def reg_exp_value(**) = RegExpValue.new(**) + def reg_exp_local_value(**) = RegExpLocalValue.new(**) + def set_local_value(**) = SetLocalValue.new(**) + def primitive_protocol_value = PrimitiveProtocolValue + def undefined_value(**) = UndefinedValue.new(**) + def null_value(**) = NullValue.new(**) + def string_value(**) = StringValue.new(**) + def number_value(**) = NumberValue.new(**) + def boolean_value(**) = BooleanValue.new(**) + def big_int_value(**) = BigIntValue.new(**) + def remote_reference = RemoteReference + def shared_reference(**) = SharedReference.new(**) + def remote_object_reference(**) = RemoteObjectReference.new(**) + def serialization_options(**) = SerializationOptions.new(**) + def realm_target(**) = RealmTarget.new(**) + def context_target(**) = ContextTarget.new(**) + def target = Target + # @api private # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/ # @see https://w3c.github.io/webdriver-bidi/#command-script-addPreloadScript diff --git a/rb/lib/selenium/webdriver/bidi/protocol/session.rb b/rb/lib/selenium/webdriver/bidi/protocol/session.rb index ac6021349168a..8378d829ac11f 100644 --- a/rb/lib/selenium/webdriver/bidi/protocol/session.rb +++ b/rb/lib/selenium/webdriver/bidi/protocol/session.rb @@ -79,6 +79,12 @@ class ProxyConfiguration < Serialization::Union system: 'Session::SystemProxyConfiguration' ) object_only + + def self.autodetect(**) = Session::AutodetectProxyConfiguration.new(**) + def self.direct(**) = Session::DirectProxyConfiguration.new(**) + def self.manual(**) = Session::ManualProxyConfiguration.new(**) + def self.pac(**) = Session::PacProxyConfiguration.new(**) + def self.system(**) = Session::SystemProxyConfiguration.new(**) end # @api private @@ -224,6 +230,18 @@ class UnsubscribeParameters < Serialization::Union object_only end + def capabilities_request(**) = CapabilitiesRequest.new(**) + def capability_request(**) = CapabilityRequest.new(**) + def proxy_configuration = ProxyConfiguration + def autodetect_proxy_configuration(**) = AutodetectProxyConfiguration.new(**) + def direct_proxy_configuration(**) = DirectProxyConfiguration.new(**) + def manual_proxy_configuration(**) = ManualProxyConfiguration.new(**) + def pac_proxy_configuration(**) = PacProxyConfiguration.new(**) + def system_proxy_configuration(**) = SystemProxyConfiguration.new(**) + def user_prompt_handler(**) = UserPromptHandler.new(**) + def unsubscribe_by_id_request(**) = UnsubscribeByIDRequest.new(**) + def unsubscribe_by_attributes_request(**) = UnsubscribeByAttributesRequest.new(**) + # @api private # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/ # @see https://w3c.github.io/webdriver-bidi/#command-session-end diff --git a/rb/lib/selenium/webdriver/bidi/protocol/storage.rb b/rb/lib/selenium/webdriver/bidi/protocol/storage.rb index 35ecb16a384b1..5be1c20e0e12c 100644 --- a/rb/lib/selenium/webdriver/bidi/protocol/storage.rb +++ b/rb/lib/selenium/webdriver/bidi/protocol/storage.rb @@ -81,6 +81,9 @@ class PartitionDescriptor < Serialization::Union storage_key: 'Storage::StorageKeyPartitionDescriptor' ) object_only + + def self.context(**) = Storage::BrowsingContextPartitionDescriptor.new(**) + def self.storage_key(**) = Storage::StorageKeyPartitionDescriptor.new(**) end # @api private @@ -144,6 +147,12 @@ class PartitionDescriptor < Serialization::Union partition_key: {wire_key: 'partitionKey', ref: 'Storage::PartitionKey'} ) + def cookie_filter(**) = CookieFilter.new(**) + def browsing_context_partition_descriptor(**) = BrowsingContextPartitionDescriptor.new(**) + def storage_key_partition_descriptor(**) = StorageKeyPartitionDescriptor.new(**) + def partition_descriptor = PartitionDescriptor + def partial_cookie(**) = PartialCookie.new(**) + # @api private # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/ # @see https://w3c.github.io/webdriver-bidi/#command-storage-deleteCookies diff --git a/rb/lib/selenium/webdriver/bidi/protocol/user_agent_client_hints.rb b/rb/lib/selenium/webdriver/bidi/protocol/user_agent_client_hints.rb index 098b17cd341e6..a74c09a50a2bc 100644 --- a/rb/lib/selenium/webdriver/bidi/protocol/user_agent_client_hints.rb +++ b/rb/lib/selenium/webdriver/bidi/protocol/user_agent_client_hints.rb @@ -64,6 +64,9 @@ class UserAgentClientHints < Domain user_contexts: {wire_key: 'userContexts', required: false, list: true} ) + def client_hints_metadata(**) = ClientHintsMetadata.new(**) + def brand_version(**) = BrandVersion.new(**) + # @api private # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/ def set_client_hints_override( diff --git a/rb/lib/selenium/webdriver/bidi/protocol/web_extension.rb b/rb/lib/selenium/webdriver/bidi/protocol/web_extension.rb index 825dcd6424308..a18126a50bf2e 100644 --- a/rb/lib/selenium/webdriver/bidi/protocol/web_extension.rb +++ b/rb/lib/selenium/webdriver/bidi/protocol/web_extension.rb @@ -39,6 +39,10 @@ class ExtensionData < Serialization::Union path: 'WebExtension::ExtensionPath' ) object_only + + def self.archive_path(**) = WebExtension::ExtensionArchivePath.new(**) + def self.base64(**) = WebExtension::ExtensionBase64Encoded.new(**) + def self.path(**) = WebExtension::ExtensionPath.new(**) end # @api private @@ -83,6 +87,12 @@ class ExtensionData < Serialization::Union extensible: true ) + def extension_data = ExtensionData + def extension_path(**) = ExtensionPath.new(**) + def extension_archive_path(**) = ExtensionArchivePath.new(**) + def extension_base64_encoded(**) = ExtensionBase64Encoded.new(**) + def moz = Moz.new(connection) + # @api private # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/ # @see https://w3c.github.io/webdriver-bidi/#command-webExtension-install diff --git a/rb/lib/selenium/webdriver/bidi/support/bidi_generate.rb b/rb/lib/selenium/webdriver/bidi/support/bidi_generate.rb index 5cd71cfdd9b01..bff300ba3703b 100644 --- a/rb/lib/selenium/webdriver/bidi/support/bidi_generate.rb +++ b/rb/lib/selenium/webdriver/bidi/support/bidi_generate.rb @@ -374,8 +374,8 @@ def rbs_reader # baked variant tag {ruby_name:, wire:, value:} or nil; schema_name/synthetic/owner/ # nested drive owner-nesting (see nest_synthetic). spec_href links to the type's # definition in the live spec (nil when the schema has none, e.g. a synthetic type). - TypeClass = Struct.new(:ruby_name, :fields, :discriminator, :extensible, - :schema_name, :synthetic, :owner, :label, :nested, :spec_href, keyword_init: true) do + TypeClass = Struct.new(:ruby_name, :fields, :discriminator, :extensible, :schema_name, :synthetic, + :owner, :label, :nested, :spec_href, :outbound, :inbound, keyword_init: true) do def union? = false def nested_types = nested || [] @@ -458,14 +458,48 @@ def discriminator_pair # rather than passed through (every arm is an object, so it can match no variant). # scalar_values mirrors the schema's `scalarValues` signal: the exact literals a bare-scalar # arm admits (input.Origin's "viewport" / "pointer"), so outbound rejects any other scalar. - UnionClass = Struct.new(:ruby_name, :discriminator_wire, :variants, :schema_name, :nested, :spec_href, :object_only, - :scalar_values, keyword_init: true) do + UnionClass = Struct.new(:ruby_name, :discriminator_wire, :variants, :schema_name, :nested, :spec_href, + :object_only, :scalar_values, :outbound, :inbound, :variant_arg_sigs, + keyword_init: true) do def union? = true def value_variants = variants.select { |v| v.mode == :value } def presence_variants = variants.select { |v| v.mode == :presence } def fallback_variant = variants.find { |v| v.mode == :fallback } def nested_types = nested || [] + # A class-method factory per discriminated variant, so a caller builds the right + # variant record without naming its class or repeating the discriminator: + # `ExtensionData.path(path: '/x')` returns `ExtensionPath.new(path: '/x')`. The method + # name is the variant's discriminator symbol; every value variant's ref is a record, so + # `.new` is always defined. Presence/fallback arms are omitted (no single tag to name). + def variant_factories + value_variants.map do |variant| + "def self.#{BiDiGenerate.enum_key(variant.value)}(**) = #{variant.ref}.new(**)" + end + end + + # RBS for variant_factories: the variant record's own typed `new` signature (threaded in + # as variant_arg_sigs at build time), so a call is checked against the record's fields + # rather than an opaque splat; the return type pins the concrete variant. + def rbs_variant_factories + value_variants.map do |variant| + args = (variant_arg_sigs || {})[BiDiGenerate.enum_key(variant.value)] || '**untyped' + "def self.#{BiDiGenerate.enum_key(variant.value)}: (#{args}) " \ + "-> ::Selenium::WebDriver::BiDi::Protocol::#{variant.ref}" + end + end + + # The union's RBS *value* type — the concrete types a value of this union can actually be: + # each variant record, plus any bare-scalar arm (input.Origin's "viewport"/"pointer"). The + # union class itself has no instances, so this alias (not the class) is what a field, param, + # or result of the union is typed to, letting a variant pass where the union is expected. + def rbs_value_type + refs = (value_variants + presence_variants + [fallback_variant].compact).map(&:ref).uniq + parts = refs.map { |ref| "::Selenium::WebDriver::BiDi::Protocol::#{ref}" } + parts += Array(scalar_values).map { |value| value.is_a?(::String) ? value.inspect : value.to_s } + parts.empty? ? 'untyped' : parts.join(' | ') + end + # `discriminator 'wire'`, or `discriminator 'wire', {sym: 'token', …}` (wrapped when # long) carrying the inbound wire->symbol map for string-tagged variants. def discriminator_decl(indent) @@ -484,9 +518,20 @@ def scalar_values_decl end end + # A prefix-free accessor emitted on the Domain subclass. method_name is the snake_case + # accessor; type_name is the local class it fronts. Three kinds route rendering: a union + # accessor returns the class so its variant factories dispatch; a record accessor + # constructs the instance directly; a vendor accessor returns a sibling vendor domain + # (`Moz.new(connection)`). rbs_args is the record's typed `new` signature (nil otherwise). + # See build_accessors / vendor_accessors. + Accessor = Struct.new(:method_name, :type_name, :union, :vendor, :rbs_args, keyword_init: true) do + def union? = union + def vendor? = vendor + end + # spec_href links the domain's module section in the live spec (nil when unknown). - Module = Struct.new(:name, :ruby_class, :filename, :commands, :events, :enums, :types, :vendor_modules, - :spec_href, keyword_init: true) + Module = Struct.new(:name, :ruby_class, :filename, :commands, :events, :enums, :types, :accessors, + :vendor_modules, :spec_href, keyword_init: true) class Schema def initialize(schema) @@ -539,6 +584,33 @@ def commands_for(domain) @commands.select { |c| c['domain'] == domain } end + # The domain's command param/result wrapper type names — the classes a command + # constructs (`params`) or parses its result into. They are reachable (so tagged + # outbound/inbound) but are the message wrappers a command method already builds, + # not data a caller composes, so they are excluded from the type accessors. + def command_wrapper_refs(domain) + commands_for(domain).flat_map { |c| [c.dig('params', 'ref'), c.dig('result', 'ref')] }.compact.to_set + end + + # Type names reached by at least one non-union-arm reference: used as a record field, + # list element, map value, or alias target somewhere — not solely as a named union's + # variant. A type reached only as a union arm is built through its union (a variant + # factory or the command's flattened dispatch), so a nested one needs no accessor; one + # reached as a plain field ref (browsingContext.AccessibilityLocator's `value`) does. + def plainly_reached_types + @plainly_reached_types ||= @types.each_value.with_object(Set.new) do |node, reached| + plain_refs(node).each { |ref| reached << ref } + end + end + + # The class path to a type relative to its domain class (an accessor body resolves in + # the Domain subclass scope): "ExtensionData", or "AccessibilityLocator::Value" for a + # synthetic nested under its owner. + def domain_relative_path(name) + prefix = "#{BiDiGenerate.snake_to_class_name(BiDiGenerate.camel_to_snake(name.split('.', 2).first))}::" + ruby_path(name).sub(/\A#{Regexp.escape(prefix)}/, '') + end + # The vendor modules a domain carries, one per namespace (`moz` → module `Moz`). The # schema's `vendor` section names, per namespace, which shared type each vendor extends; # we map that type back to the command that sends it, so the vendor method mirrors the @@ -681,12 +753,43 @@ def structured_ref(name) resolved[:list] ? nil : resolved[:ref] end + # Public ruby-path resolver (`Owner::Label` for a synthetic), matching how a variant's + # ref is emitted — so a caller can map a variant ref back to its emitted record. + def ruby_path_for(name) = ruby_path(name) + private def domain_path(name) name.include?('.') ? ruby_path(name) : nil end + # The refs a node exposes through a NON-arm position: a record's fields and map value, + # or an alias's target. A named union contributes none — its variants are arm positions + # (built through the union), so they do not count toward plainly_reached_types. + def plain_refs(node) + case node['kind'] + when 'record' + refs = node['fields'].flat_map { |f| refs_in_type(f['type']) } + node['map'] ? refs + refs_in_type(node['map']) : refs + when 'alias' then refs_in_type(node['type']) + else [] + end + end + + # Every type name a *type expression* references (mirrors the projector's refsInType), + # descending list element, map value, inline union arms, and inline record fields. An + # inline union arm inside a field is a plain position — the field is filled with it. + def refs_in_type(node) + return [] unless node + return [node['ref']] if node['ref'] + return refs_in_type(node['list']) if node['list'] + return refs_in_type(node['map']) if node['map'] + return node['union'].flat_map { |arm| refs_in_type(arm) } if node['union'] + return node['record'].flat_map { |f| refs_in_type(f['type']) } if node['record'] + + [] + end + # Class path, nesting a synthetic type under its owner as `Owner::Label` so a ref # resolves to the same nested constant the type is emitted as. def ruby_path(name) @@ -760,7 +863,7 @@ def resolve_named(name, seen = {}) case type['kind'] when 'record' then type['fields'].empty? ? OPAQUE : named_type(name) - when 'union' then named_type(name) + when 'union' then named_union(name) when 'enum' then {ref: nil, list: false, rbs: 'Symbol'} when 'alias' then resolve_named_alias(name, type['type'], seen) else OPAQUE @@ -774,8 +877,24 @@ def named_type(name) {ref: domain_path(name), list: false, rbs: rbs_abs(ruby_path(name))} end + # Like named_type, but a union is typed to its value alias (variant | variant | …), not + # its class — the class has no instances, so a variant must be assignable where the union + # is expected. The serialization ref is unchanged (still the union that dispatches inbound). + def named_union(name) + {ref: domain_path(name), list: false, rbs: union_alias_path(name)} + end + + # Absolute RBS path of a union's value alias: its class path with the last segment + # snake-cased (WebExtension::ExtensionData -> ...::WebExtension::extension_data), matching + # the `type` alias emitted alongside the class. + def union_alias_path(name) + segments = ruby_path(name).split('::') + segments[-1] = BiDiGenerate.camel_to_snake(segments[-1]) + rbs_abs(segments.join('::')) + end + def resolve_named_alias(name, inner, seen) - return named_type(name) if inner.key?('union') + return named_union(name) if inner.key?('union') return resolve_named(inner['ref'], seen) if inner.key?('ref') if inner.key?('list') @@ -790,6 +909,13 @@ def nilable(type, flag) flag ? BiDiGenerate.rbs_nilable(type) : type end + # The type's send/receive tags (schema `outbound`/`inbound`) as constructor kwargs, + # coerced to plain booleans — shared by every structured-type builder. + def directionality(name) + node = @types[name] + {outbound: node['outbound'] ? true : false, inbound: node['inbound'] ? true : false} + end + def record_class(name, type) const = type['fields'].find { |f| baked_discriminator?(f) } discriminator = const && {ruby_name: BiDiGenerate.safe_field_name(BiDiGenerate.camel_to_snake(const['name'])), @@ -802,7 +928,8 @@ def record_class(name, type) TypeClass.new(ruby_name: BiDiGenerate.type_class_name(name), fields: fields, discriminator: discriminator, extensible: type['extensible'] ? true : false, schema_name: name, synthetic: type['synthetic'] ? true : false, - owner: type['owner'], label: type['label'], spec_href: type['specHref']) + owner: type['owner'], label: type['label'], spec_href: type['specHref'], + **directionality(name)) end # A const field is a baked discriminator tag, unless it is also nullable: the spec's @@ -895,7 +1022,8 @@ def union_from_selector(name, selector) UnionClass.new(ruby_name: BiDiGenerate.type_class_name(name), discriminator_wire: selector['by'], variants: variants, schema_name: name, - spec_href: @types[name]['specHref'], object_only: @types[name]['objectOnly'] ? true : false) + spec_href: @types[name]['specHref'], object_only: @types[name]['objectOnly'] ? true : false, + **directionality(name)) end def discriminated_variants(selector) @@ -934,7 +1062,7 @@ def union_from_alias(name) UnionClass.new(ruby_name: BiDiGenerate.type_class_name(name), discriminator_wire: consts.values.first['wire'], variants: variants, schema_name: name, spec_href: spec['specHref'], object_only: spec['objectOnly'] ? true : false, - scalar_values: spec['type']['scalarValues']) + scalar_values: spec['type']['scalarValues'], **directionality(name)) end def record_params(fields) @@ -1074,17 +1202,95 @@ def guard_union_dispatch_keys_simple!(selector, ref) def self.build_ir(schema) schema.domains.map do |domain| - Module.new( + types = schema.types_for(domain) + thread_variant_arg_sigs(schema, types) + vendor_modules = schema.vendor_modules_for(domain) + mod = Module.new( name: domain, ruby_class: snake_to_class_name(camel_to_snake(domain)), filename: camel_to_snake(domain), commands: schema.commands_for(domain).map { |cmd| build_command(schema, cmd) }, events: schema.events_for(domain).map { |ev| build_event(schema, ev) }, enums: schema.enums_for(domain), - types: nest_synthetic(schema.types_for(domain)), - vendor_modules: schema.vendor_modules_for(domain), + accessors: build_accessors(schema, domain, types) + vendor_accessors(vendor_modules), + types: nest_synthetic(types), + vendor_modules: vendor_modules, spec_href: schema.domain_href(domain) ) + check_accessor_collisions!(mod) + mod + end + end + + # An accessor per vendor variant, returning a sibling vendor domain over the same connection + # (`web_extension.moz` -> `Moz.new(connection)`). Named after the vendor namespace. + def self.vendor_accessors(vendor_modules) + vendor_modules.map do |vendor_module| + Accessor.new(method_name: safe_method_name(vendor_module.namespace), type_name: vendor_module.name, + union: false, vendor: true) + end + end + + # Give each union its variants' typed `new` signatures, keyed by factory method name, so + # rbs_variant_factories can emit a checked signature instead of a splat. Keyed by ruby + # path (the form a variant ref carries); a cross-module variant not in this list falls + # back to `**untyped`. + def self.thread_variant_arg_sigs(schema, types) + record_sigs = types.reject(&:union?).to_h { |t| [schema.ruby_path_for(t.schema_name), t.rbs_new_args] } + types.select(&:union?).each do |union| + union.variant_arg_sigs = union.value_variants.to_h do |variant| + [BiDiGenerate.enum_key(variant.value), record_sigs[variant.ref]] + end + end + end + + # Outbound-scoped domain accessors: for every emitted type a caller constructs to send, + # a prefix-free constructor on the Domain subclass. Built from the pre-nesting type list + # so a nested synthetic (referenced by a Ruby-relative `Owner::Label` path) is reachable. + def self.build_accessors(schema, domain, types) + wrappers = schema.command_wrapper_refs(domain) + plainly_reached = schema.plainly_reached_types + types.select { |t| accessor?(t, wrappers, plainly_reached) }.map do |t| + Accessor.new(method_name: safe_method_name(camel_to_snake(type_class_name(t.schema_name))), + type_name: schema.domain_relative_path(t.schema_name), union: t.union?, + rbs_args: t.union? ? nil : t.rbs_new_args) + end + end + + # A type earns a send-side accessor when it is outbound and not a command param/result + # wrapper (a command method already builds those). A nested-away synthetic reached only + # as a union arm is excluded — it is built through its union (a variant factory or the + # command's flattened dispatch), never standalone. A top-level union variant record keeps + # its accessor (the plan constructs it directly, e.g. extension_path), as does a synthetic + # reached by a plain field ref (browsingContext.AccessibilityLocator's `value`). + def self.accessor?(type, wrappers, plainly_reached) + return false unless type.outbound + return false if wrappers.include?(type.schema_name) + + nested_synthetic = !type.union? && type.synthetic + !nested_synthetic || plainly_reached.include?(type.schema_name) + end + + # Public instance methods every accessor would shadow if it reused their name: + # Domain's own (`execute`/`initialize`) plus everything Object/Kernel expose. The + # collision guard fails generation before a schema-driven shadow can ship. + INHERITED_INSTANCE_METHODS = (%w[execute initialize].to_set + Object.instance_methods.to_set(&:to_s)).freeze + + # Fail generation if an accessor name would collide with a command method, an + # inherited method, or another accessor — turning a future shadow into a build error + # rather than a silently overridden method. + def self.check_accessor_collisions!(mod) + commands = mod.commands.to_set(&:method_name) + seen = {} + mod.accessors.each do |accessor| + name = accessor.method_name + clash = if commands.include?(name) then 'a command method' + elsif INHERITED_INSTANCE_METHODS.include?(name) then 'an inherited method' + elsif seen[name] then "the accessor for #{seen[name]}" + end + raise "accessor #{mod.ruby_class}##{name} collides with #{clash}" if clash + + seen[name] = accessor.type_name end end diff --git a/rb/lib/selenium/webdriver/bidi/support/templates/module.rb.erb b/rb/lib/selenium/webdriver/bidi/support/templates/module.rb.erb index ccf75ab8c4e69..3534410f61eaf 100644 --- a/rb/lib/selenium/webdriver/bidi/support/templates/module.rb.erb +++ b/rb/lib/selenium/webdriver/bidi/support/templates/module.rb.erb @@ -77,6 +77,12 @@ module Selenium # @api private # @see <%= BiDiGenerate::BIDI_DOC_URL %> <%= nested.define_assignment(nested.ruby_name, 12) %> +<%- end -%> +<%- unless type.variant_factories.empty? -%> + +<%- type.variant_factories.each do |factory| -%> + <%= factory %> +<%- end -%> <%- end -%> end @@ -100,9 +106,21 @@ module Selenium EVENT_TYPES = { <%= mod.events.map(&:type_entry).join(",\n ") %> }.freeze -<%- unless mod.commands.empty? -%> +<%- if !mod.commands.empty? || !mod.accessors.empty? -%> <%- end -%> +<%- end -%> +<%- mod.accessors.each do |accessor| -%> +<%- if accessor.vendor? -%> + def <%= accessor.method_name %> = <%= accessor.type_name %>.new(connection) +<%- elsif accessor.union? -%> + def <%= accessor.method_name %> = <%= accessor.type_name %> +<%- else -%> + def <%= accessor.method_name %>(**) = <%= accessor.type_name %>.new(**) +<%- end -%> +<%- end -%> +<%- if !mod.accessors.empty? && !mod.commands.empty? -%> + <%- end -%> <%- mod.commands.each_with_index do |cmd, index| -%> <%- unless index.zero? -%> diff --git a/rb/lib/selenium/webdriver/bidi/support/templates/module.rbs.erb b/rb/lib/selenium/webdriver/bidi/support/templates/module.rbs.erb index 3d4b6711cef44..04166aeb676e5 100644 --- a/rb/lib/selenium/webdriver/bidi/support/templates/module.rbs.erb +++ b/rb/lib/selenium/webdriver/bidi/support/templates/module.rbs.erb @@ -29,6 +29,12 @@ module Selenium <%- mod.enums.each do |enum| -%> <%= enum.constant_name %>: Hash[Symbol, String] +<%- end -%> +<%- mod.types.select(&:union?).each do |union| -%> + type <%= BiDiGenerate.camel_to_snake(union.ruby_name) %> = <%= union.rbs_value_type %> +<%- end -%> +<%- if mod.types.any?(&:union?) -%> + <%- end -%> <%- mod.types.each do |type| -%> <%- if type.union? -%> @@ -40,6 +46,9 @@ module Selenium <%- end -%> def self.new: (<%= nested.rbs_new_args %>) -> instance end +<%- end -%> +<%- type.rbs_variant_factories.each do |factory| -%> + <%= factory %> <%- end -%> end @@ -65,6 +74,15 @@ module Selenium <%- unless mod.events.empty? -%> EVENT_TYPES: Hash[String, untyped] +<%- end -%> +<%- mod.accessors.each do |accessor| -%> +<%- if accessor.vendor? -%> + def <%= accessor.method_name %>: () -> <%= accessor.type_name %> +<%- elsif accessor.union? -%> + def <%= accessor.method_name %>: () -> singleton(<%= accessor.type_name %>) +<%- else -%> + def <%= accessor.method_name %>: (<%= accessor.rbs_args %>) -> <%= accessor.type_name %> +<%- end -%> <%- end -%> <%- mod.commands.each do |cmd| -%> def <%= cmd.method_name %>: <%= cmd.rbs_signature %> diff --git a/rb/lib/selenium/webdriver/bidi/transport.rb b/rb/lib/selenium/webdriver/bidi/transport.rb index ef1d34c14d7f0..41d7aee519331 100644 --- a/rb/lib/selenium/webdriver/bidi/transport.rb +++ b/rb/lib/selenium/webdriver/bidi/transport.rb @@ -25,6 +25,11 @@ class BiDi # # @api private class Transport + # The websocket the transport sends over. Exposed so a domain can build a sibling + # domain (e.g. a vendor variant) over the same connection without Transport ever + # becoming a public constructor argument. + attr_reader :connection + def initialize(connection) @connection = connection end diff --git a/rb/sig/lib/selenium/webdriver/bidi/protocol/bluetooth.rbs b/rb/sig/lib/selenium/webdriver/bidi/protocol/bluetooth.rbs index c27629d6c0add..7e04b5b59b252 100644 --- a/rb/sig/lib/selenium/webdriver/bidi/protocol/bluetooth.rbs +++ b/rb/sig/lib/selenium/webdriver/bidi/protocol/bluetooth.rbs @@ -41,6 +41,8 @@ module Selenium DESCRIPTOR_EVENT_GENERATED_PARAMETERS_TYPE: Hash[Symbol, String] + type handle_request_device_prompt_parameters = ::Selenium::WebDriver::BiDi::Protocol::Bluetooth::HandleRequestDevicePromptParameters::AcceptParameters | ::Selenium::WebDriver::BiDi::Protocol::Bluetooth::HandleRequestDevicePromptParameters::CancelParameters + class BluetoothManufacturerData < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader key: Integer attr_reader data: String @@ -87,6 +89,8 @@ module Selenium attr_reader prompt: String def self.new: (?accept: bool, context: String, prompt: String) -> instance end + def self.true: (?accept: bool, context: String, prompt: String, device: String) -> ::Selenium::WebDriver::BiDi::Protocol::Bluetooth::HandleRequestDevicePromptParameters::AcceptParameters + def self.false: (?accept: bool, context: String, prompt: String) -> ::Selenium::WebDriver::BiDi::Protocol::Bluetooth::HandleRequestDevicePromptParameters::CancelParameters end class SimulateAdapterParameters < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -223,6 +227,10 @@ module Selenium EVENT_TYPES: Hash[String, untyped] + def bluetooth_manufacturer_data: (key: Integer, data: String) -> BluetoothManufacturerData + def characteristic_properties: (?broadcast: bool, ?read: bool, ?write_without_response: bool, ?write: bool, ?notify: bool, ?indicate: bool, ?authenticated_signed_writes: bool, ?extended_properties: bool) -> CharacteristicProperties + def scan_record: (?name: String, ?uuids: Array[String], ?appearance: Numeric, ?manufacturer_data: Array[::Selenium::WebDriver::BiDi::Protocol::Bluetooth::BluetoothManufacturerData]) -> ScanRecord + def simulate_advertisement_scan_entry_parameters: (device_address: String, rssi: Numeric, scan_record: ::Selenium::WebDriver::BiDi::Protocol::Bluetooth::ScanRecord) -> SimulateAdvertisementScanEntryParameters def handle_request_device_prompt: (context: String, prompt: String, accept: bool, ?device: String) -> untyped def simulate_adapter: (context: String, state: Symbol, ?le_supported: bool) -> untyped def disable_simulation: (context: String) -> untyped diff --git a/rb/sig/lib/selenium/webdriver/bidi/protocol/browser.rbs b/rb/sig/lib/selenium/webdriver/bidi/protocol/browser.rbs index 3a2ea487b11ec..9c3a69a563662 100644 --- a/rb/sig/lib/selenium/webdriver/bidi/protocol/browser.rbs +++ b/rb/sig/lib/selenium/webdriver/bidi/protocol/browser.rbs @@ -27,6 +27,9 @@ module Selenium CLIENT_WINDOW_NAMED_STATE_STATE: Hash[Symbol, String] + type set_client_window_state_parameters = ::Selenium::WebDriver::BiDi::Protocol::Browser::SetClientWindowStateParameters::ClientWindowRectState | ::Selenium::WebDriver::BiDi::Protocol::Browser::SetClientWindowStateParameters::ClientWindowNamedState + type download_behavior = ::Selenium::WebDriver::BiDi::Protocol::Browser::DownloadBehavior::Allowed | ::Selenium::WebDriver::BiDi::Protocol::Browser::DownloadBehavior::Denied + class ClientWindowInfo < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader active: bool attr_reader client_window: String @@ -47,7 +50,7 @@ module Selenium attr_reader accept_insecure_certs: untyped attr_reader proxy: untyped attr_reader unhandled_prompt_behavior: untyped - def self.new: (?accept_insecure_certs: bool, ?proxy: ::Selenium::WebDriver::BiDi::Protocol::Session::ProxyConfiguration, ?unhandled_prompt_behavior: ::Selenium::WebDriver::BiDi::Protocol::Session::UserPromptHandler) -> instance + def self.new: (?accept_insecure_certs: bool, ?proxy: ::Selenium::WebDriver::BiDi::Protocol::Session::proxy_configuration, ?unhandled_prompt_behavior: ::Selenium::WebDriver::BiDi::Protocol::Session::UserPromptHandler) -> instance end class GetClientWindowsResult < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -80,12 +83,13 @@ module Selenium attr_reader y: untyped def self.new: (?state: String, client_window: String, ?width: Integer, ?height: Integer, ?x: Integer, ?y: Integer) -> instance end + def self.normal: (?state: String, client_window: String, ?width: Integer, ?height: Integer, ?x: Integer, ?y: Integer) -> ::Selenium::WebDriver::BiDi::Protocol::Browser::SetClientWindowStateParameters::ClientWindowRectState end class SetDownloadBehaviorParameters < ::Selenium::WebDriver::BiDi::Serialization::Record - attr_reader download_behavior: ::Selenium::WebDriver::BiDi::Protocol::Browser::DownloadBehavior? + attr_reader download_behavior: ::Selenium::WebDriver::BiDi::Protocol::Browser::download_behavior? attr_reader user_contexts: untyped - def self.new: (download_behavior: ::Selenium::WebDriver::BiDi::Protocol::Browser::DownloadBehavior?, ?user_contexts: Array[String]) -> instance + def self.new: (download_behavior: ::Selenium::WebDriver::BiDi::Protocol::Browser::download_behavior?, ?user_contexts: Array[String]) -> instance end class DownloadBehavior < ::Selenium::WebDriver::BiDi::Serialization::Union @@ -98,15 +102,18 @@ module Selenium attr_reader type: String def self.new: (?type: String) -> instance end + def self.allowed: (?type: String, destination_folder: String) -> ::Selenium::WebDriver::BiDi::Protocol::Browser::DownloadBehavior::Allowed + def self.denied: (?type: String) -> ::Selenium::WebDriver::BiDi::Protocol::Browser::DownloadBehavior::Denied end + def download_behavior: () -> singleton(DownloadBehavior) def close: () -> untyped - def create_user_context: (?accept_insecure_certs: bool, ?proxy: ::Selenium::WebDriver::BiDi::Protocol::Session::ProxyConfiguration, ?unhandled_prompt_behavior: ::Selenium::WebDriver::BiDi::Protocol::Session::UserPromptHandler) -> ::Selenium::WebDriver::BiDi::Protocol::Browser::UserContextInfo + def create_user_context: (?accept_insecure_certs: bool, ?proxy: ::Selenium::WebDriver::BiDi::Protocol::Session::proxy_configuration, ?unhandled_prompt_behavior: ::Selenium::WebDriver::BiDi::Protocol::Session::UserPromptHandler) -> ::Selenium::WebDriver::BiDi::Protocol::Browser::UserContextInfo def get_client_windows: () -> ::Selenium::WebDriver::BiDi::Protocol::Browser::GetClientWindowsResult def get_user_contexts: () -> ::Selenium::WebDriver::BiDi::Protocol::Browser::GetUserContextsResult def remove_user_context: (user_context: String) -> untyped def set_client_window_state: (client_window: String, state: Symbol, ?width: Integer, ?height: Integer, ?x: Integer, ?y: Integer) -> ::Selenium::WebDriver::BiDi::Protocol::Browser::ClientWindowInfo - def set_download_behavior: (download_behavior: ::Selenium::WebDriver::BiDi::Protocol::Browser::DownloadBehavior?, ?user_contexts: Array[String]) -> untyped + def set_download_behavior: (download_behavior: ::Selenium::WebDriver::BiDi::Protocol::Browser::download_behavior?, ?user_contexts: Array[String]) -> untyped end end end diff --git a/rb/sig/lib/selenium/webdriver/bidi/protocol/browsing_context.rbs b/rb/sig/lib/selenium/webdriver/bidi/protocol/browsing_context.rbs index 13213ce399014..7d811e027a286 100644 --- a/rb/sig/lib/selenium/webdriver/bidi/protocol/browsing_context.rbs +++ b/rb/sig/lib/selenium/webdriver/bidi/protocol/browsing_context.rbs @@ -37,6 +37,10 @@ module Selenium PRINT_PARAMETERS_ORIENTATION: Hash[Symbol, String] + type locator = ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::AccessibilityLocator | ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::CssLocator | ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::ContextLocator | ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::InnerTextLocator | ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::XPathLocator + type clip_rectangle = ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::BoxClipRectangle | ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::ElementClipRectangle + type download_end_params = ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::DownloadEndParams::CanceledParams | ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::DownloadEndParams::CompleteParams + class Info < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader children: Array[::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::Info]? attr_reader client_window: String @@ -49,6 +53,11 @@ module Selenium end class Locator < ::Selenium::WebDriver::BiDi::Serialization::Union + def self.accessibility: (?type: String, value: ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::AccessibilityLocator::Value) -> ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::AccessibilityLocator + def self.css: (?type: String, value: String) -> ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::CssLocator + def self.context: (?type: String, value: ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::ContextLocator::Value) -> ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::ContextLocator + def self.inner_text: (?type: String, value: String, ?ignore_case: bool, ?match_type: Symbol, ?max_depth: Integer) -> ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::InnerTextLocator + def self.xpath: (?type: String, value: String) -> ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::XPathLocator end class AccessibilityLocator < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -123,7 +132,7 @@ module Selenium attr_reader origin: untyped attr_reader format: untyped attr_reader clip: untyped - def self.new: (context: String, ?origin: Symbol, ?format: ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::ImageFormat, ?clip: ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::ClipRectangle) -> instance + def self.new: (context: String, ?origin: Symbol, ?format: ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::ImageFormat, ?clip: ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::clip_rectangle) -> instance end class ImageFormat < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -133,6 +142,8 @@ module Selenium end class ClipRectangle < ::Selenium::WebDriver::BiDi::Serialization::Union + def self.box: (?type: String, x: Numeric, y: Numeric, width: Numeric, height: Numeric) -> ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::BoxClipRectangle + def self.element: (?type: String, element: ::Selenium::WebDriver::BiDi::Protocol::Script::SharedReference) -> ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::ElementClipRectangle end class ElementClipRectangle < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -195,11 +206,11 @@ module Selenium class LocateNodesParameters < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader context: String - attr_reader locator: ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::Locator + attr_reader locator: ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::locator attr_reader max_node_count: untyped attr_reader serialization_options: untyped attr_reader start_nodes: untyped - def self.new: (context: String, locator: ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::Locator, ?max_node_count: Integer, ?serialization_options: ::Selenium::WebDriver::BiDi::Protocol::Script::SerializationOptions, ?start_nodes: Array[::Selenium::WebDriver::BiDi::Protocol::Script::SharedReference]) -> instance + def self.new: (context: String, locator: ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::locator, ?max_node_count: Integer, ?serialization_options: ::Selenium::WebDriver::BiDi::Protocol::Script::SerializationOptions, ?start_nodes: Array[::Selenium::WebDriver::BiDi::Protocol::Script::SharedReference]) -> instance end class LocateNodesResult < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -358,6 +369,8 @@ module Selenium attr_reader user_context: untyped def self.new: (?status: String, download: String, filepath: String?, context: String, navigation: String?, timestamp: Integer, url: String, ?user_context: String) -> instance end + def self.canceled: (?status: String, download: String, context: String, navigation: String?, timestamp: Integer, url: String, ?user_context: String) -> ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::DownloadEndParams::CanceledParams + def self.complete: (?status: String, download: String, filepath: String?, context: String, navigation: String?, timestamp: Integer, url: String, ?user_context: String) -> ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::DownloadEndParams::CompleteParams end class UserPromptClosedParameters < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -381,13 +394,29 @@ module Selenium EVENT_TYPES: Hash[String, untyped] + def locator: () -> singleton(Locator) + def accessibility_locator: (?type: String, value: ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::AccessibilityLocator::Value) -> AccessibilityLocator + def css_locator: (?type: String, value: String) -> CssLocator + def context_locator: (?type: String, value: ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::ContextLocator::Value) -> ContextLocator + def inner_text_locator: (?type: String, value: String, ?ignore_case: bool, ?match_type: Symbol, ?max_depth: Integer) -> InnerTextLocator + def x_path_locator: (?type: String, value: String) -> XPathLocator + def image_format: (type: String, ?quality: Numeric) -> ImageFormat + def clip_rectangle: () -> singleton(ClipRectangle) + def element_clip_rectangle: (?type: String, element: ::Selenium::WebDriver::BiDi::Protocol::Script::SharedReference) -> ElementClipRectangle + def box_clip_rectangle: (?type: String, x: Numeric, y: Numeric, width: Numeric, height: Numeric) -> BoxClipRectangle + def print_margin_parameters: (?bottom: Numeric, ?left: Numeric, ?right: Numeric, ?top: Numeric) -> PrintMarginParameters + def print_page_parameters: (?height: Numeric, ?width: Numeric) -> PrintPageParameters + def viewport: (width: Integer, height: Integer) -> Viewport + def media_track_constraints: (?width: Integer, ?height: Integer, ?frame_rate: Integer) -> MediaTrackConstraints + def accessibility_locator_value: (?name: String, ?role: String) -> AccessibilityLocator::Value + def context_locator_value: (context: String) -> ContextLocator::Value def activate: (context: String) -> untyped - def capture_screenshot: (context: String, ?origin: Symbol, ?format: ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::ImageFormat, ?clip: ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::ClipRectangle) -> ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::CaptureScreenshotResult + def capture_screenshot: (context: String, ?origin: Symbol, ?format: ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::ImageFormat, ?clip: ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::clip_rectangle) -> ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::CaptureScreenshotResult def close: (context: String, ?prompt_unload: bool) -> untyped def create: (type: Symbol, ?reference_context: String, ?background: bool, ?user_context: String) -> ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::CreateResult def get_tree: (?max_depth: Integer, ?root: String) -> ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::GetTreeResult def handle_user_prompt: (context: String, ?accept: bool, ?user_text: String) -> untyped - def locate_nodes: (context: String, locator: ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::Locator, ?max_node_count: Integer, ?serialization_options: ::Selenium::WebDriver::BiDi::Protocol::Script::SerializationOptions, ?start_nodes: Array[::Selenium::WebDriver::BiDi::Protocol::Script::SharedReference]) -> ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::LocateNodesResult + def locate_nodes: (context: String, locator: ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::locator, ?max_node_count: Integer, ?serialization_options: ::Selenium::WebDriver::BiDi::Protocol::Script::SerializationOptions, ?start_nodes: Array[::Selenium::WebDriver::BiDi::Protocol::Script::SharedReference]) -> ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::LocateNodesResult def navigate: (context: String, url: String, ?wait: Symbol) -> ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::NavigateResult def print: (context: String, ?background: bool, ?margin: ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::PrintMarginParameters, ?orientation: Symbol, ?page: ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::PrintPageParameters, ?page_ranges: Array[untyped], ?scale: Numeric, ?shrink_to_fit: bool) -> ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::PrintResult def reload: (context: String, ?ignore_cache: bool, ?wait: Symbol) -> ::Selenium::WebDriver::BiDi::Protocol::BrowsingContext::NavigateResult diff --git a/rb/sig/lib/selenium/webdriver/bidi/protocol/domain.rbs b/rb/sig/lib/selenium/webdriver/bidi/protocol/domain.rbs index 9e805744d178b..7aa514d6eb81c 100644 --- a/rb/sig/lib/selenium/webdriver/bidi/protocol/domain.rbs +++ b/rb/sig/lib/selenium/webdriver/bidi/protocol/domain.rbs @@ -27,6 +27,8 @@ module Selenium private + def connection: () -> untyped + def execute: (cmd: String, ?params: untyped, ?result: untyped) -> untyped end end diff --git a/rb/sig/lib/selenium/webdriver/bidi/protocol/emulation.rbs b/rb/sig/lib/selenium/webdriver/bidi/protocol/emulation.rbs index d6b01bb0bc8b1..10aea78ba2e77 100644 --- a/rb/sig/lib/selenium/webdriver/bidi/protocol/emulation.rbs +++ b/rb/sig/lib/selenium/webdriver/bidi/protocol/emulation.rbs @@ -31,6 +31,8 @@ module Selenium SET_SCROLLBAR_TYPE_OVERRIDE_PARAMETERS_SCROLLBAR_TYPE: Hash[Symbol, String] + type set_geolocation_override_parameters = ::Selenium::WebDriver::BiDi::Protocol::Emulation::SetGeolocationOverrideParameters::Coordinates | ::Selenium::WebDriver::BiDi::Protocol::Emulation::SetGeolocationOverrideParameters::Error + class SetForcedColorsModeThemeOverrideParameters < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader theme: Symbol? attr_reader contexts: untyped @@ -149,6 +151,11 @@ module Selenium def self.new: (max_touch_points: Integer?, ?contexts: Array[String], ?user_contexts: Array[String]) -> instance end + def geolocation_coordinates: (latitude: Numeric, longitude: Numeric, ?accuracy: Numeric, ?altitude: Numeric?, ?altitude_accuracy: Numeric?, ?heading: Numeric?, ?speed: Numeric?) -> GeolocationCoordinates + def geolocation_position_error: (?type: String) -> GeolocationPositionError + def network_conditions_offline: (?type: String) -> NetworkConditionsOffline + def screen_area: (width: Integer, height: Integer) -> ScreenArea + def screen_orientation: (natural: Symbol, type: Symbol) -> ScreenOrientation def set_forced_colors_mode_theme_override: (theme: Symbol?, ?contexts: Array[String], ?user_contexts: Array[String]) -> untyped def set_geolocation_override: (?contexts: Array[String], ?user_contexts: Array[String], ?coordinates: ::Selenium::WebDriver::BiDi::Protocol::Emulation::GeolocationCoordinates?, ?error: ::Selenium::WebDriver::BiDi::Protocol::Emulation::GeolocationPositionError) -> untyped def set_locale_override: (locale: String?, ?contexts: Array[String], ?user_contexts: Array[String]) -> untyped diff --git a/rb/sig/lib/selenium/webdriver/bidi/protocol/input.rbs b/rb/sig/lib/selenium/webdriver/bidi/protocol/input.rbs index 57e242b4ebbe8..7413f2d31d1fd 100644 --- a/rb/sig/lib/selenium/webdriver/bidi/protocol/input.rbs +++ b/rb/sig/lib/selenium/webdriver/bidi/protocol/input.rbs @@ -27,6 +27,12 @@ module Selenium POINTER_TYPE: Hash[Symbol, String] + type source_actions = ::Selenium::WebDriver::BiDi::Protocol::Input::NoneSourceActions | ::Selenium::WebDriver::BiDi::Protocol::Input::KeySourceActions | ::Selenium::WebDriver::BiDi::Protocol::Input::PointerSourceActions | ::Selenium::WebDriver::BiDi::Protocol::Input::WheelSourceActions + type key_source_action = ::Selenium::WebDriver::BiDi::Protocol::Input::PauseAction | ::Selenium::WebDriver::BiDi::Protocol::Input::KeyDownAction | ::Selenium::WebDriver::BiDi::Protocol::Input::KeyUpAction + type pointer_source_action = ::Selenium::WebDriver::BiDi::Protocol::Input::PauseAction | ::Selenium::WebDriver::BiDi::Protocol::Input::PointerDownAction | ::Selenium::WebDriver::BiDi::Protocol::Input::PointerUpAction | ::Selenium::WebDriver::BiDi::Protocol::Input::PointerMoveAction + type wheel_source_action = ::Selenium::WebDriver::BiDi::Protocol::Input::PauseAction | ::Selenium::WebDriver::BiDi::Protocol::Input::WheelScrollAction + type origin = ::Selenium::WebDriver::BiDi::Protocol::Input::ElementOrigin | "viewport" | "pointer" + class ElementOrigin < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader type: String attr_reader element: ::Selenium::WebDriver::BiDi::Protocol::Script::SharedReference @@ -35,11 +41,15 @@ module Selenium class PerformActionsParameters < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader context: String - attr_reader actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::SourceActions] - def self.new: (context: String, actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::SourceActions]) -> instance + attr_reader actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::source_actions] + def self.new: (context: String, actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::source_actions]) -> instance end class SourceActions < ::Selenium::WebDriver::BiDi::Serialization::Union + def self.none: (?type: String, id: String, actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::PauseAction]) -> ::Selenium::WebDriver::BiDi::Protocol::Input::NoneSourceActions + def self.key: (?type: String, id: String, actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::key_source_action]) -> ::Selenium::WebDriver::BiDi::Protocol::Input::KeySourceActions + def self.pointer: (?type: String, id: String, ?parameters: ::Selenium::WebDriver::BiDi::Protocol::Input::PointerParameters, actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::pointer_source_action]) -> ::Selenium::WebDriver::BiDi::Protocol::Input::PointerSourceActions + def self.wheel: (?type: String, id: String, actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::wheel_source_action]) -> ::Selenium::WebDriver::BiDi::Protocol::Input::WheelSourceActions end class NoneSourceActions < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -52,19 +62,22 @@ module Selenium class KeySourceActions < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader type: String attr_reader id: String - attr_reader actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::KeySourceAction] - def self.new: (?type: String, id: String, actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::KeySourceAction]) -> instance + attr_reader actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::key_source_action] + def self.new: (?type: String, id: String, actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::key_source_action]) -> instance end class KeySourceAction < ::Selenium::WebDriver::BiDi::Serialization::Union + def self.pause: (?type: String, ?duration: Integer) -> ::Selenium::WebDriver::BiDi::Protocol::Input::PauseAction + def self.key_down: (?type: String, value: String) -> ::Selenium::WebDriver::BiDi::Protocol::Input::KeyDownAction + def self.key_up: (?type: String, value: String) -> ::Selenium::WebDriver::BiDi::Protocol::Input::KeyUpAction end class PointerSourceActions < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader type: String attr_reader id: String attr_reader parameters: untyped - attr_reader actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::PointerSourceAction] - def self.new: (?type: String, id: String, ?parameters: ::Selenium::WebDriver::BiDi::Protocol::Input::PointerParameters, actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::PointerSourceAction]) -> instance + attr_reader actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::pointer_source_action] + def self.new: (?type: String, id: String, ?parameters: ::Selenium::WebDriver::BiDi::Protocol::Input::PointerParameters, actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::pointer_source_action]) -> instance end class PointerParameters < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -73,16 +86,22 @@ module Selenium end class PointerSourceAction < ::Selenium::WebDriver::BiDi::Serialization::Union + def self.pause: (?type: String, ?duration: Integer) -> ::Selenium::WebDriver::BiDi::Protocol::Input::PauseAction + def self.pointer_down: (?type: String, button: Integer, ?width: Integer, ?height: Integer, ?pressure: Numeric, ?tangential_pressure: Numeric, ?twist: Integer, ?altitude_angle: Numeric, ?azimuth_angle: Numeric) -> ::Selenium::WebDriver::BiDi::Protocol::Input::PointerDownAction + def self.pointer_up: (?type: String, button: Integer) -> ::Selenium::WebDriver::BiDi::Protocol::Input::PointerUpAction + def self.pointer_move: (?type: String, x: Numeric, y: Numeric, ?duration: Integer, ?origin: ::Selenium::WebDriver::BiDi::Protocol::Input::origin, ?width: Integer, ?height: Integer, ?pressure: Numeric, ?tangential_pressure: Numeric, ?twist: Integer, ?altitude_angle: Numeric, ?azimuth_angle: Numeric) -> ::Selenium::WebDriver::BiDi::Protocol::Input::PointerMoveAction end class WheelSourceActions < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader type: String attr_reader id: String - attr_reader actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::WheelSourceAction] - def self.new: (?type: String, id: String, actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::WheelSourceAction]) -> instance + attr_reader actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::wheel_source_action] + def self.new: (?type: String, id: String, actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::wheel_source_action]) -> instance end class WheelSourceAction < ::Selenium::WebDriver::BiDi::Serialization::Union + def self.pause: (?type: String, ?duration: Integer) -> ::Selenium::WebDriver::BiDi::Protocol::Input::PauseAction + def self.scroll: (?type: String, x: Integer, y: Integer, delta_x: Integer, delta_y: Integer, ?duration: Integer, ?origin: ::Selenium::WebDriver::BiDi::Protocol::Input::origin) -> ::Selenium::WebDriver::BiDi::Protocol::Input::WheelScrollAction end class PauseAction < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -135,7 +154,7 @@ module Selenium attr_reader twist: untyped attr_reader altitude_angle: untyped attr_reader azimuth_angle: untyped - def self.new: (?type: String, x: Numeric, y: Numeric, ?duration: Integer, ?origin: ::Selenium::WebDriver::BiDi::Protocol::Input::Origin, ?width: Integer, ?height: Integer, ?pressure: Numeric, ?tangential_pressure: Numeric, ?twist: Integer, ?altitude_angle: Numeric, ?azimuth_angle: Numeric) -> instance + def self.new: (?type: String, x: Numeric, y: Numeric, ?duration: Integer, ?origin: ::Selenium::WebDriver::BiDi::Protocol::Input::origin, ?width: Integer, ?height: Integer, ?pressure: Numeric, ?tangential_pressure: Numeric, ?twist: Integer, ?altitude_angle: Numeric, ?azimuth_angle: Numeric) -> instance end class WheelScrollAction < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -146,7 +165,7 @@ module Selenium attr_reader delta_y: Integer attr_reader duration: untyped attr_reader origin: untyped - def self.new: (?type: String, x: Integer, y: Integer, delta_x: Integer, delta_y: Integer, ?duration: Integer, ?origin: ::Selenium::WebDriver::BiDi::Protocol::Input::Origin) -> instance + def self.new: (?type: String, x: Integer, y: Integer, delta_x: Integer, delta_y: Integer, ?duration: Integer, ?origin: ::Selenium::WebDriver::BiDi::Protocol::Input::origin) -> instance end class PointerCommonProperties < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -161,6 +180,7 @@ module Selenium end class Origin < ::Selenium::WebDriver::BiDi::Serialization::Union + def self.element: (?type: String, element: ::Selenium::WebDriver::BiDi::Protocol::Script::SharedReference) -> ::Selenium::WebDriver::BiDi::Protocol::Input::ElementOrigin end class ReleaseActionsParameters < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -185,7 +205,24 @@ module Selenium EVENT_TYPES: Hash[String, untyped] - def perform_actions: (context: String, actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::SourceActions]) -> untyped + def element_origin: (?type: String, element: ::Selenium::WebDriver::BiDi::Protocol::Script::SharedReference) -> ElementOrigin + def source_actions: () -> singleton(SourceActions) + def none_source_actions: (?type: String, id: String, actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::PauseAction]) -> NoneSourceActions + def key_source_actions: (?type: String, id: String, actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::key_source_action]) -> KeySourceActions + def key_source_action: () -> singleton(KeySourceAction) + def pointer_source_actions: (?type: String, id: String, ?parameters: ::Selenium::WebDriver::BiDi::Protocol::Input::PointerParameters, actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::pointer_source_action]) -> PointerSourceActions + def pointer_parameters: (?pointer_type: Symbol) -> PointerParameters + def pointer_source_action: () -> singleton(PointerSourceAction) + def wheel_source_actions: (?type: String, id: String, actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::wheel_source_action]) -> WheelSourceActions + def wheel_source_action: () -> singleton(WheelSourceAction) + def pause_action: (?type: String, ?duration: Integer) -> PauseAction + def key_down_action: (?type: String, value: String) -> KeyDownAction + def key_up_action: (?type: String, value: String) -> KeyUpAction + def pointer_up_action: (?type: String, button: Integer) -> PointerUpAction + def pointer_down_action: (?type: String, button: Integer, ?width: Integer, ?height: Integer, ?pressure: Numeric, ?tangential_pressure: Numeric, ?twist: Integer, ?altitude_angle: Numeric, ?azimuth_angle: Numeric) -> PointerDownAction + def pointer_move_action: (?type: String, x: Numeric, y: Numeric, ?duration: Integer, ?origin: ::Selenium::WebDriver::BiDi::Protocol::Input::origin, ?width: Integer, ?height: Integer, ?pressure: Numeric, ?tangential_pressure: Numeric, ?twist: Integer, ?altitude_angle: Numeric, ?azimuth_angle: Numeric) -> PointerMoveAction + def wheel_scroll_action: (?type: String, x: Integer, y: Integer, delta_x: Integer, delta_y: Integer, ?duration: Integer, ?origin: ::Selenium::WebDriver::BiDi::Protocol::Input::origin) -> WheelScrollAction + def perform_actions: (context: String, actions: Array[::Selenium::WebDriver::BiDi::Protocol::Input::source_actions]) -> untyped def release_actions: (context: String) -> untyped def set_files: (context: String, element: ::Selenium::WebDriver::BiDi::Protocol::Script::SharedReference, files: Array[String]) -> untyped end diff --git a/rb/sig/lib/selenium/webdriver/bidi/protocol/log.rbs b/rb/sig/lib/selenium/webdriver/bidi/protocol/log.rbs index c8d035539c5d5..a5d0efe60f839 100644 --- a/rb/sig/lib/selenium/webdriver/bidi/protocol/log.rbs +++ b/rb/sig/lib/selenium/webdriver/bidi/protocol/log.rbs @@ -27,7 +27,11 @@ module Selenium LEVEL: Hash[Symbol, String] + type entry = ::Selenium::WebDriver::BiDi::Protocol::Log::ConsoleLogEntry | ::Selenium::WebDriver::BiDi::Protocol::Log::JavascriptLogEntry | ::Selenium::WebDriver::BiDi::Protocol::Log::GenericLogEntry + class Entry < ::Selenium::WebDriver::BiDi::Serialization::Union + def self.console: (?type: String, level: Symbol, source: ::Selenium::WebDriver::BiDi::Protocol::Script::Source, text: String?, timestamp: Integer, ?stack_trace: ::Selenium::WebDriver::BiDi::Protocol::Script::StackTrace, method_: String, args: Array[::Selenium::WebDriver::BiDi::Protocol::Script::remote_value]) -> ::Selenium::WebDriver::BiDi::Protocol::Log::ConsoleLogEntry + def self.javascript: (?type: String, level: Symbol, source: ::Selenium::WebDriver::BiDi::Protocol::Script::Source, text: String?, timestamp: Integer, ?stack_trace: ::Selenium::WebDriver::BiDi::Protocol::Script::StackTrace) -> ::Selenium::WebDriver::BiDi::Protocol::Log::JavascriptLogEntry end class BaseLogEntry < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -57,8 +61,8 @@ module Selenium attr_reader timestamp: Integer attr_reader stack_trace: untyped attr_reader method_: String - attr_reader args: Array[::Selenium::WebDriver::BiDi::Protocol::Script::RemoteValue] - def self.new: (?type: String, level: Symbol, source: ::Selenium::WebDriver::BiDi::Protocol::Script::Source, text: String?, timestamp: Integer, ?stack_trace: ::Selenium::WebDriver::BiDi::Protocol::Script::StackTrace, method_: String, args: Array[::Selenium::WebDriver::BiDi::Protocol::Script::RemoteValue]) -> instance + attr_reader args: Array[::Selenium::WebDriver::BiDi::Protocol::Script::remote_value] + def self.new: (?type: String, level: Symbol, source: ::Selenium::WebDriver::BiDi::Protocol::Script::Source, text: String?, timestamp: Integer, ?stack_trace: ::Selenium::WebDriver::BiDi::Protocol::Script::StackTrace, method_: String, args: Array[::Selenium::WebDriver::BiDi::Protocol::Script::remote_value]) -> instance end class JavascriptLogEntry < ::Selenium::WebDriver::BiDi::Serialization::Record diff --git a/rb/sig/lib/selenium/webdriver/bidi/protocol/network.rbs b/rb/sig/lib/selenium/webdriver/bidi/protocol/network.rbs index ce3035c4807bd..a231d2437d63b 100644 --- a/rb/sig/lib/selenium/webdriver/bidi/protocol/network.rbs +++ b/rb/sig/lib/selenium/webdriver/bidi/protocol/network.rbs @@ -39,6 +39,10 @@ module Selenium SET_CACHE_BEHAVIOR_PARAMETERS_CACHE_BEHAVIOR: Hash[Symbol, String] + type bytes_value = ::Selenium::WebDriver::BiDi::Protocol::Network::StringValue | ::Selenium::WebDriver::BiDi::Protocol::Network::Base64Value + type url_pattern = ::Selenium::WebDriver::BiDi::Protocol::Network::UrlPatternPattern | ::Selenium::WebDriver::BiDi::Protocol::Network::UrlPatternString + type continue_with_auth_parameters = ::Selenium::WebDriver::BiDi::Protocol::Network::ContinueWithAuthParameters::Credentials | ::Selenium::WebDriver::BiDi::Protocol::Network::ContinueWithAuthParameters::NoCredentials + class AuthChallenge < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader scheme: String attr_reader realm: String @@ -65,6 +69,8 @@ module Selenium end class BytesValue < ::Selenium::WebDriver::BiDi::Serialization::Union + def self.string: (?type: String, value: String) -> ::Selenium::WebDriver::BiDi::Protocol::Network::StringValue + def self.base64: (?type: String, value: String) -> ::Selenium::WebDriver::BiDi::Protocol::Network::Base64Value end class StringValue < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -81,7 +87,7 @@ module Selenium class Cookie < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader name: String - attr_reader value: ::Selenium::WebDriver::BiDi::Protocol::Network::BytesValue + attr_reader value: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value attr_reader domain: String attr_reader path: String attr_reader size: Integer @@ -90,13 +96,13 @@ module Selenium attr_reader same_site: Symbol attr_reader expiry: untyped attr_reader extensions: Hash[String, untyped] - def self.new: (name: String, value: ::Selenium::WebDriver::BiDi::Protocol::Network::BytesValue, domain: String, path: String, size: Integer, http_only: bool, secure: bool, same_site: Symbol, ?expiry: Integer, ?extensions: Hash[String, untyped]) -> instance + def self.new: (name: String, value: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value, domain: String, path: String, size: Integer, http_only: bool, secure: bool, same_site: Symbol, ?expiry: Integer, ?extensions: Hash[String, untyped]) -> instance end class CookieHeader < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader name: String - attr_reader value: ::Selenium::WebDriver::BiDi::Protocol::Network::BytesValue - def self.new: (name: String, value: ::Selenium::WebDriver::BiDi::Protocol::Network::BytesValue) -> instance + attr_reader value: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value + def self.new: (name: String, value: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value) -> instance end class FetchTimingInfo < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -118,8 +124,8 @@ module Selenium class Header < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader name: String - attr_reader value: ::Selenium::WebDriver::BiDi::Protocol::Network::BytesValue - def self.new: (name: String, value: ::Selenium::WebDriver::BiDi::Protocol::Network::BytesValue) -> instance + attr_reader value: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value + def self.new: (name: String, value: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value) -> instance end class Initiator < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -168,7 +174,7 @@ module Selenium class SetCookieHeader < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader name: String - attr_reader value: ::Selenium::WebDriver::BiDi::Protocol::Network::BytesValue + attr_reader value: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value attr_reader domain: untyped attr_reader http_only: untyped attr_reader expiry: untyped @@ -176,10 +182,12 @@ module Selenium attr_reader path: untyped attr_reader same_site: untyped attr_reader secure: untyped - def self.new: (name: String, value: ::Selenium::WebDriver::BiDi::Protocol::Network::BytesValue, ?domain: String, ?http_only: bool, ?expiry: String, ?max_age: Integer, ?path: String, ?same_site: Symbol, ?secure: bool) -> instance + def self.new: (name: String, value: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value, ?domain: String, ?http_only: bool, ?expiry: String, ?max_age: Integer, ?path: String, ?same_site: Symbol, ?secure: bool) -> instance end class UrlPattern < ::Selenium::WebDriver::BiDi::Serialization::Union + def self.pattern: (?type: String, ?protocol: String, ?hostname: String, ?port: String, ?pathname: String, ?search: String) -> ::Selenium::WebDriver::BiDi::Protocol::Network::UrlPatternPattern + def self.string: (?type: String, pattern: String) -> ::Selenium::WebDriver::BiDi::Protocol::Network::UrlPatternString end class UrlPatternPattern < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -216,7 +224,7 @@ module Selenium attr_reader phases: Array[Symbol] attr_reader contexts: untyped attr_reader url_patterns: untyped - def self.new: (phases: Array[Symbol], ?contexts: Array[String], ?url_patterns: Array[::Selenium::WebDriver::BiDi::Protocol::Network::UrlPattern]) -> instance + def self.new: (phases: Array[Symbol], ?contexts: Array[String], ?url_patterns: Array[::Selenium::WebDriver::BiDi::Protocol::Network::url_pattern]) -> instance end class AddInterceptResult < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -231,7 +239,7 @@ module Selenium attr_reader headers: untyped attr_reader method_: untyped attr_reader url: untyped - def self.new: (request: String, ?body: ::Selenium::WebDriver::BiDi::Protocol::Network::BytesValue, ?cookies: Array[::Selenium::WebDriver::BiDi::Protocol::Network::CookieHeader], ?headers: Array[::Selenium::WebDriver::BiDi::Protocol::Network::Header], ?method_: String, ?url: String) -> instance + def self.new: (request: String, ?body: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value, ?cookies: Array[::Selenium::WebDriver::BiDi::Protocol::Network::CookieHeader], ?headers: Array[::Selenium::WebDriver::BiDi::Protocol::Network::Header], ?method_: String, ?url: String) -> instance end class ContinueResponseParameters < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -256,6 +264,7 @@ module Selenium attr_reader action: Symbol def self.new: (request: String, action: Symbol) -> instance end + def self.provide_credentials: (?action: String, request: String, credentials: ::Selenium::WebDriver::BiDi::Protocol::Network::AuthCredentials) -> ::Selenium::WebDriver::BiDi::Protocol::Network::ContinueWithAuthParameters::Credentials end class DisownDataParameters < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -279,8 +288,8 @@ module Selenium end class GetDataResult < ::Selenium::WebDriver::BiDi::Serialization::Record - attr_reader bytes: ::Selenium::WebDriver::BiDi::Protocol::Network::BytesValue - def self.new: (bytes: ::Selenium::WebDriver::BiDi::Protocol::Network::BytesValue) -> instance + attr_reader bytes: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value + def self.new: (bytes: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value) -> instance end class ProvideResponseParameters < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -290,7 +299,7 @@ module Selenium attr_reader headers: untyped attr_reader reason_phrase: untyped attr_reader status_code: untyped - def self.new: (request: String, ?body: ::Selenium::WebDriver::BiDi::Protocol::Network::BytesValue, ?cookies: Array[::Selenium::WebDriver::BiDi::Protocol::Network::SetCookieHeader], ?headers: Array[::Selenium::WebDriver::BiDi::Protocol::Network::Header], ?reason_phrase: String, ?status_code: Integer) -> instance + def self.new: (request: String, ?body: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value, ?cookies: Array[::Selenium::WebDriver::BiDi::Protocol::Network::SetCookieHeader], ?headers: Array[::Selenium::WebDriver::BiDi::Protocol::Network::Header], ?reason_phrase: String, ?status_code: Integer) -> instance end class RemoveDataCollectorParameters < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -383,15 +392,25 @@ module Selenium EVENT_TYPES: Hash[String, untyped] + def auth_credentials: (?type: String, username: String, password: String) -> AuthCredentials + def bytes_value: () -> singleton(BytesValue) + def string_value: (?type: String, value: String) -> StringValue + def base64_value: (?type: String, value: String) -> Base64Value + def cookie_header: (name: String, value: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value) -> CookieHeader + def header: (name: String, value: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value) -> Header + def set_cookie_header: (name: String, value: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value, ?domain: String, ?http_only: bool, ?expiry: String, ?max_age: Integer, ?path: String, ?same_site: Symbol, ?secure: bool) -> SetCookieHeader + def url_pattern: () -> singleton(UrlPattern) + def url_pattern_pattern: (?type: String, ?protocol: String, ?hostname: String, ?port: String, ?pathname: String, ?search: String) -> UrlPatternPattern + def url_pattern_string: (?type: String, pattern: String) -> UrlPatternString def add_data_collector: (data_types: Array[Symbol], max_encoded_data_size: Integer, ?collector_type: Symbol, ?contexts: Array[String], ?user_contexts: Array[String]) -> ::Selenium::WebDriver::BiDi::Protocol::Network::AddDataCollectorResult - def add_intercept: (phases: Array[Symbol], ?contexts: Array[String], ?url_patterns: Array[::Selenium::WebDriver::BiDi::Protocol::Network::UrlPattern]) -> ::Selenium::WebDriver::BiDi::Protocol::Network::AddInterceptResult - def continue_request: (request: String, ?body: ::Selenium::WebDriver::BiDi::Protocol::Network::BytesValue, ?cookies: Array[::Selenium::WebDriver::BiDi::Protocol::Network::CookieHeader], ?headers: Array[::Selenium::WebDriver::BiDi::Protocol::Network::Header], ?method_: String, ?url: String) -> untyped + def add_intercept: (phases: Array[Symbol], ?contexts: Array[String], ?url_patterns: Array[::Selenium::WebDriver::BiDi::Protocol::Network::url_pattern]) -> ::Selenium::WebDriver::BiDi::Protocol::Network::AddInterceptResult + def continue_request: (request: String, ?body: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value, ?cookies: Array[::Selenium::WebDriver::BiDi::Protocol::Network::CookieHeader], ?headers: Array[::Selenium::WebDriver::BiDi::Protocol::Network::Header], ?method_: String, ?url: String) -> untyped def continue_response: (request: String, ?cookies: Array[::Selenium::WebDriver::BiDi::Protocol::Network::SetCookieHeader], ?credentials: ::Selenium::WebDriver::BiDi::Protocol::Network::AuthCredentials, ?headers: Array[::Selenium::WebDriver::BiDi::Protocol::Network::Header], ?reason_phrase: String, ?status_code: Integer) -> untyped def continue_with_auth: (request: String, action: Symbol, ?credentials: ::Selenium::WebDriver::BiDi::Protocol::Network::AuthCredentials) -> untyped def disown_data: (data_type: Symbol, collector: String, request: String) -> untyped def fail_request: (request: String) -> untyped def get_data: (data_type: Symbol, request: String, ?collector: String, ?disown: bool) -> ::Selenium::WebDriver::BiDi::Protocol::Network::GetDataResult - def provide_response: (request: String, ?body: ::Selenium::WebDriver::BiDi::Protocol::Network::BytesValue, ?cookies: Array[::Selenium::WebDriver::BiDi::Protocol::Network::SetCookieHeader], ?headers: Array[::Selenium::WebDriver::BiDi::Protocol::Network::Header], ?reason_phrase: String, ?status_code: Integer) -> untyped + def provide_response: (request: String, ?body: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value, ?cookies: Array[::Selenium::WebDriver::BiDi::Protocol::Network::SetCookieHeader], ?headers: Array[::Selenium::WebDriver::BiDi::Protocol::Network::Header], ?reason_phrase: String, ?status_code: Integer) -> untyped def remove_data_collector: (collector: String) -> untyped def remove_intercept: (intercept: String) -> untyped def set_cache_behavior: (cache_behavior: Symbol, ?contexts: Array[String]) -> untyped diff --git a/rb/sig/lib/selenium/webdriver/bidi/protocol/permissions.rbs b/rb/sig/lib/selenium/webdriver/bidi/protocol/permissions.rbs index 6319c127c58ce..8f73d798be1c2 100644 --- a/rb/sig/lib/selenium/webdriver/bidi/protocol/permissions.rbs +++ b/rb/sig/lib/selenium/webdriver/bidi/protocol/permissions.rbs @@ -39,6 +39,7 @@ module Selenium def self.new: (descriptor: ::Selenium::WebDriver::BiDi::Protocol::Permissions::PermissionDescriptor, state: Symbol, origin: String, ?embedded_origin: String, ?user_context: String) -> instance end + def permission_descriptor: (name: String) -> PermissionDescriptor def set_permission: (descriptor: ::Selenium::WebDriver::BiDi::Protocol::Permissions::PermissionDescriptor, state: Symbol, origin: String, ?embedded_origin: String, ?user_context: String) -> untyped end end diff --git a/rb/sig/lib/selenium/webdriver/bidi/protocol/script.rbs b/rb/sig/lib/selenium/webdriver/bidi/protocol/script.rbs index 7f734e5c521df..633e063b3e2c9 100644 --- a/rb/sig/lib/selenium/webdriver/bidi/protocol/script.rbs +++ b/rb/sig/lib/selenium/webdriver/bidi/protocol/script.rbs @@ -35,6 +35,14 @@ module Selenium SERIALIZATION_OPTIONS_INCLUDE_SHADOW_TREE: Hash[Symbol, String] + type evaluate_result = ::Selenium::WebDriver::BiDi::Protocol::Script::EvaluateResultSuccess | ::Selenium::WebDriver::BiDi::Protocol::Script::EvaluateResultException + type local_value = ::Selenium::WebDriver::BiDi::Protocol::Script::UndefinedValue | ::Selenium::WebDriver::BiDi::Protocol::Script::NullValue | ::Selenium::WebDriver::BiDi::Protocol::Script::StringValue | ::Selenium::WebDriver::BiDi::Protocol::Script::NumberValue | ::Selenium::WebDriver::BiDi::Protocol::Script::BooleanValue | ::Selenium::WebDriver::BiDi::Protocol::Script::BigIntValue | ::Selenium::WebDriver::BiDi::Protocol::Script::ChannelValue | ::Selenium::WebDriver::BiDi::Protocol::Script::ArrayLocalValue | ::Selenium::WebDriver::BiDi::Protocol::Script::DateLocalValue | ::Selenium::WebDriver::BiDi::Protocol::Script::MapLocalValue | ::Selenium::WebDriver::BiDi::Protocol::Script::ObjectLocalValue | ::Selenium::WebDriver::BiDi::Protocol::Script::RegExpLocalValue | ::Selenium::WebDriver::BiDi::Protocol::Script::SetLocalValue | ::Selenium::WebDriver::BiDi::Protocol::Script::RemoteReference + type primitive_protocol_value = ::Selenium::WebDriver::BiDi::Protocol::Script::UndefinedValue | ::Selenium::WebDriver::BiDi::Protocol::Script::NullValue | ::Selenium::WebDriver::BiDi::Protocol::Script::StringValue | ::Selenium::WebDriver::BiDi::Protocol::Script::NumberValue | ::Selenium::WebDriver::BiDi::Protocol::Script::BooleanValue | ::Selenium::WebDriver::BiDi::Protocol::Script::BigIntValue + type realm_info = ::Selenium::WebDriver::BiDi::Protocol::Script::WindowRealmInfo | ::Selenium::WebDriver::BiDi::Protocol::Script::DedicatedWorkerRealmInfo | ::Selenium::WebDriver::BiDi::Protocol::Script::SharedWorkerRealmInfo | ::Selenium::WebDriver::BiDi::Protocol::Script::ServiceWorkerRealmInfo | ::Selenium::WebDriver::BiDi::Protocol::Script::WorkerRealmInfo | ::Selenium::WebDriver::BiDi::Protocol::Script::PaintWorkletRealmInfo | ::Selenium::WebDriver::BiDi::Protocol::Script::AudioWorkletRealmInfo | ::Selenium::WebDriver::BiDi::Protocol::Script::WorkletRealmInfo + type remote_reference = ::Selenium::WebDriver::BiDi::Protocol::Script::SharedReference | ::Selenium::WebDriver::BiDi::Protocol::Script::RemoteObjectReference + type remote_value = ::Selenium::WebDriver::BiDi::Protocol::Script::UndefinedValue | ::Selenium::WebDriver::BiDi::Protocol::Script::NullValue | ::Selenium::WebDriver::BiDi::Protocol::Script::StringValue | ::Selenium::WebDriver::BiDi::Protocol::Script::NumberValue | ::Selenium::WebDriver::BiDi::Protocol::Script::BooleanValue | ::Selenium::WebDriver::BiDi::Protocol::Script::BigIntValue | ::Selenium::WebDriver::BiDi::Protocol::Script::SymbolRemoteValue | ::Selenium::WebDriver::BiDi::Protocol::Script::ArrayRemoteValue | ::Selenium::WebDriver::BiDi::Protocol::Script::ObjectRemoteValue | ::Selenium::WebDriver::BiDi::Protocol::Script::FunctionRemoteValue | ::Selenium::WebDriver::BiDi::Protocol::Script::RegExpRemoteValue | ::Selenium::WebDriver::BiDi::Protocol::Script::DateRemoteValue | ::Selenium::WebDriver::BiDi::Protocol::Script::MapRemoteValue | ::Selenium::WebDriver::BiDi::Protocol::Script::SetRemoteValue | ::Selenium::WebDriver::BiDi::Protocol::Script::WeakMapRemoteValue | ::Selenium::WebDriver::BiDi::Protocol::Script::WeakSetRemoteValue | ::Selenium::WebDriver::BiDi::Protocol::Script::GeneratorRemoteValue | ::Selenium::WebDriver::BiDi::Protocol::Script::ErrorRemoteValue | ::Selenium::WebDriver::BiDi::Protocol::Script::ProxyRemoteValue | ::Selenium::WebDriver::BiDi::Protocol::Script::PromiseRemoteValue | ::Selenium::WebDriver::BiDi::Protocol::Script::TypedArrayRemoteValue | ::Selenium::WebDriver::BiDi::Protocol::Script::ArrayBufferRemoteValue | ::Selenium::WebDriver::BiDi::Protocol::Script::NodeListRemoteValue | ::Selenium::WebDriver::BiDi::Protocol::Script::HTMLCollectionRemoteValue | ::Selenium::WebDriver::BiDi::Protocol::Script::NodeRemoteValue | ::Selenium::WebDriver::BiDi::Protocol::Script::WindowProxyRemoteValue + type target = ::Selenium::WebDriver::BiDi::Protocol::Script::ContextTarget | ::Selenium::WebDriver::BiDi::Protocol::Script::RealmTarget + class ChannelValue < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader type: String attr_reader value: ::Selenium::WebDriver::BiDi::Protocol::Script::ChannelProperties @@ -49,13 +57,15 @@ module Selenium end class EvaluateResult < ::Selenium::WebDriver::BiDi::Serialization::Union + def self.success: (?type: String, result: ::Selenium::WebDriver::BiDi::Protocol::Script::remote_value, realm: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::EvaluateResultSuccess + def self.exception: (?type: String, exception_details: ::Selenium::WebDriver::BiDi::Protocol::Script::ExceptionDetails, realm: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::EvaluateResultException end class EvaluateResultSuccess < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader type: String - attr_reader result: ::Selenium::WebDriver::BiDi::Protocol::Script::RemoteValue + attr_reader result: ::Selenium::WebDriver::BiDi::Protocol::Script::remote_value attr_reader realm: String - def self.new: (?type: String, result: ::Selenium::WebDriver::BiDi::Protocol::Script::RemoteValue, realm: String) -> instance + def self.new: (?type: String, result: ::Selenium::WebDriver::BiDi::Protocol::Script::remote_value, realm: String) -> instance end class EvaluateResultException < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -67,20 +77,33 @@ module Selenium class ExceptionDetails < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader column_number: Integer - attr_reader exception: ::Selenium::WebDriver::BiDi::Protocol::Script::RemoteValue + attr_reader exception: ::Selenium::WebDriver::BiDi::Protocol::Script::remote_value attr_reader line_number: Integer attr_reader stack_trace: ::Selenium::WebDriver::BiDi::Protocol::Script::StackTrace attr_reader text: String - def self.new: (column_number: Integer, exception: ::Selenium::WebDriver::BiDi::Protocol::Script::RemoteValue, line_number: Integer, stack_trace: ::Selenium::WebDriver::BiDi::Protocol::Script::StackTrace, text: String) -> instance + def self.new: (column_number: Integer, exception: ::Selenium::WebDriver::BiDi::Protocol::Script::remote_value, line_number: Integer, stack_trace: ::Selenium::WebDriver::BiDi::Protocol::Script::StackTrace, text: String) -> instance end class LocalValue < ::Selenium::WebDriver::BiDi::Serialization::Union + def self.undefined: (?type: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::UndefinedValue + def self.null: (?type: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::NullValue + def self.string: (?type: String, value: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::StringValue + def self.number: (?type: String, value: untyped) -> ::Selenium::WebDriver::BiDi::Protocol::Script::NumberValue + def self.boolean: (?type: String, value: bool) -> ::Selenium::WebDriver::BiDi::Protocol::Script::BooleanValue + def self.bigint: (?type: String, value: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::BigIntValue + def self.channel: (?type: String, value: ::Selenium::WebDriver::BiDi::Protocol::Script::ChannelProperties) -> ::Selenium::WebDriver::BiDi::Protocol::Script::ChannelValue + def self.array: (?type: String, value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::local_value]) -> ::Selenium::WebDriver::BiDi::Protocol::Script::ArrayLocalValue + def self.date: (?type: String, value: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::DateLocalValue + def self.map: (?type: String, value: Array[Array[untyped]]) -> ::Selenium::WebDriver::BiDi::Protocol::Script::MapLocalValue + def self.object: (?type: String, value: Array[Array[untyped]]) -> ::Selenium::WebDriver::BiDi::Protocol::Script::ObjectLocalValue + def self.regexp: (?type: String, value: ::Selenium::WebDriver::BiDi::Protocol::Script::RegExpValue) -> ::Selenium::WebDriver::BiDi::Protocol::Script::RegExpLocalValue + def self.set: (?type: String, value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::local_value]) -> ::Selenium::WebDriver::BiDi::Protocol::Script::SetLocalValue end class ArrayLocalValue < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader type: String - attr_reader value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::LocalValue] - def self.new: (?type: String, value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::LocalValue]) -> instance + attr_reader value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::local_value] + def self.new: (?type: String, value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::local_value]) -> instance end class DateLocalValue < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -115,11 +138,17 @@ module Selenium class SetLocalValue < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader type: String - attr_reader value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::LocalValue] - def self.new: (?type: String, value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::LocalValue]) -> instance + attr_reader value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::local_value] + def self.new: (?type: String, value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::local_value]) -> instance end class PrimitiveProtocolValue < ::Selenium::WebDriver::BiDi::Serialization::Union + def self.undefined: (?type: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::UndefinedValue + def self.null: (?type: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::NullValue + def self.string: (?type: String, value: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::StringValue + def self.number: (?type: String, value: untyped) -> ::Selenium::WebDriver::BiDi::Protocol::Script::NumberValue + def self.boolean: (?type: String, value: bool) -> ::Selenium::WebDriver::BiDi::Protocol::Script::BooleanValue + def self.bigint: (?type: String, value: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::BigIntValue end class UndefinedValue < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -157,6 +186,14 @@ module Selenium end class RealmInfo < ::Selenium::WebDriver::BiDi::Serialization::Union + def self.window: (?type: String, realm: String, origin: String, context: String, ?user_context: String, ?sandbox: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::WindowRealmInfo + def self.dedicated_worker: (?type: String, realm: String, origin: String, owners: Array[String]) -> ::Selenium::WebDriver::BiDi::Protocol::Script::DedicatedWorkerRealmInfo + def self.shared_worker: (?type: String, realm: String, origin: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::SharedWorkerRealmInfo + def self.service_worker: (?type: String, realm: String, origin: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::ServiceWorkerRealmInfo + def self.worker: (?type: String, realm: String, origin: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::WorkerRealmInfo + def self.paint_worklet: (?type: String, realm: String, origin: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::PaintWorkletRealmInfo + def self.audio_worklet: (?type: String, realm: String, origin: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::AudioWorkletRealmInfo + def self.worklet: (?type: String, realm: String, origin: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::WorkletRealmInfo end class BaseRealmInfo < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -243,6 +280,32 @@ module Selenium end class RemoteValue < ::Selenium::WebDriver::BiDi::Serialization::Union + def self.undefined: (?type: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::UndefinedValue + def self.null: (?type: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::NullValue + def self.string: (?type: String, value: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::StringValue + def self.number: (?type: String, value: untyped) -> ::Selenium::WebDriver::BiDi::Protocol::Script::NumberValue + def self.boolean: (?type: String, value: bool) -> ::Selenium::WebDriver::BiDi::Protocol::Script::BooleanValue + def self.bigint: (?type: String, value: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::BigIntValue + def self.symbol: (?type: String, ?handle: String, ?internal_id: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::SymbolRemoteValue + def self.array: (?type: String, ?handle: String, ?internal_id: String, ?value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::remote_value]) -> ::Selenium::WebDriver::BiDi::Protocol::Script::ArrayRemoteValue + def self.object: (?type: String, ?handle: String, ?internal_id: String, ?value: Array[Array[untyped]]) -> ::Selenium::WebDriver::BiDi::Protocol::Script::ObjectRemoteValue + def self.function: (?type: String, ?handle: String, ?internal_id: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::FunctionRemoteValue + def self.regexp: (?type: String, value: ::Selenium::WebDriver::BiDi::Protocol::Script::RegExpValue, ?handle: String, ?internal_id: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::RegExpRemoteValue + def self.date: (?type: String, value: String, ?handle: String, ?internal_id: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::DateRemoteValue + def self.map: (?type: String, ?handle: String, ?internal_id: String, ?value: Array[Array[untyped]]) -> ::Selenium::WebDriver::BiDi::Protocol::Script::MapRemoteValue + def self.set: (?type: String, ?handle: String, ?internal_id: String, ?value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::remote_value]) -> ::Selenium::WebDriver::BiDi::Protocol::Script::SetRemoteValue + def self.weakmap: (?type: String, ?handle: String, ?internal_id: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::WeakMapRemoteValue + def self.weakset: (?type: String, ?handle: String, ?internal_id: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::WeakSetRemoteValue + def self.generator: (?type: String, ?handle: String, ?internal_id: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::GeneratorRemoteValue + def self.error: (?type: String, ?handle: String, ?internal_id: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::ErrorRemoteValue + def self.proxy: (?type: String, ?handle: String, ?internal_id: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::ProxyRemoteValue + def self.promise: (?type: String, ?handle: String, ?internal_id: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::PromiseRemoteValue + def self.typedarray: (?type: String, ?handle: String, ?internal_id: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::TypedArrayRemoteValue + def self.arraybuffer: (?type: String, ?handle: String, ?internal_id: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::ArrayBufferRemoteValue + def self.nodelist: (?type: String, ?handle: String, ?internal_id: String, ?value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::remote_value]) -> ::Selenium::WebDriver::BiDi::Protocol::Script::NodeListRemoteValue + def self.htmlcollection: (?type: String, ?handle: String, ?internal_id: String, ?value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::remote_value]) -> ::Selenium::WebDriver::BiDi::Protocol::Script::HTMLCollectionRemoteValue + def self.node: (?type: String, ?shared_id: String, ?handle: String, ?internal_id: String, ?value: ::Selenium::WebDriver::BiDi::Protocol::Script::NodeProperties) -> ::Selenium::WebDriver::BiDi::Protocol::Script::NodeRemoteValue + def self.window: (?type: String, value: ::Selenium::WebDriver::BiDi::Protocol::Script::WindowProxyProperties, ?handle: String, ?internal_id: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::WindowProxyRemoteValue end class SymbolRemoteValue < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -257,7 +320,7 @@ module Selenium attr_reader handle: untyped attr_reader internal_id: untyped attr_reader value: untyped - def self.new: (?type: String, ?handle: String, ?internal_id: String, ?value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::RemoteValue]) -> instance + def self.new: (?type: String, ?handle: String, ?internal_id: String, ?value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::remote_value]) -> instance end class ObjectRemoteValue < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -304,7 +367,7 @@ module Selenium attr_reader handle: untyped attr_reader internal_id: untyped attr_reader value: untyped - def self.new: (?type: String, ?handle: String, ?internal_id: String, ?value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::RemoteValue]) -> instance + def self.new: (?type: String, ?handle: String, ?internal_id: String, ?value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::remote_value]) -> instance end class WeakMapRemoteValue < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -368,7 +431,7 @@ module Selenium attr_reader handle: untyped attr_reader internal_id: untyped attr_reader value: untyped - def self.new: (?type: String, ?handle: String, ?internal_id: String, ?value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::RemoteValue]) -> instance + def self.new: (?type: String, ?handle: String, ?internal_id: String, ?value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::remote_value]) -> instance end class HTMLCollectionRemoteValue < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -376,7 +439,7 @@ module Selenium attr_reader handle: untyped attr_reader internal_id: untyped attr_reader value: untyped - def self.new: (?type: String, ?handle: String, ?internal_id: String, ?value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::RemoteValue]) -> instance + def self.new: (?type: String, ?handle: String, ?internal_id: String, ?value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::remote_value]) -> instance end class NodeRemoteValue < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -471,30 +534,30 @@ module Selenium class DisownParameters < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader handles: Array[String] - attr_reader target: ::Selenium::WebDriver::BiDi::Protocol::Script::Target - def self.new: (handles: Array[String], target: ::Selenium::WebDriver::BiDi::Protocol::Script::Target) -> instance + attr_reader target: ::Selenium::WebDriver::BiDi::Protocol::Script::target + def self.new: (handles: Array[String], target: ::Selenium::WebDriver::BiDi::Protocol::Script::target) -> instance end class CallFunctionParameters < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader function_declaration: String attr_reader await_promise: bool - attr_reader target: ::Selenium::WebDriver::BiDi::Protocol::Script::Target + attr_reader target: ::Selenium::WebDriver::BiDi::Protocol::Script::target attr_reader arguments: untyped attr_reader result_ownership: untyped attr_reader serialization_options: untyped attr_reader this: untyped attr_reader user_activation: untyped - def self.new: (function_declaration: String, await_promise: bool, target: ::Selenium::WebDriver::BiDi::Protocol::Script::Target, ?arguments: Array[::Selenium::WebDriver::BiDi::Protocol::Script::LocalValue], ?result_ownership: Symbol, ?serialization_options: ::Selenium::WebDriver::BiDi::Protocol::Script::SerializationOptions, ?this: ::Selenium::WebDriver::BiDi::Protocol::Script::LocalValue, ?user_activation: bool) -> instance + def self.new: (function_declaration: String, await_promise: bool, target: ::Selenium::WebDriver::BiDi::Protocol::Script::target, ?arguments: Array[::Selenium::WebDriver::BiDi::Protocol::Script::local_value], ?result_ownership: Symbol, ?serialization_options: ::Selenium::WebDriver::BiDi::Protocol::Script::SerializationOptions, ?this: ::Selenium::WebDriver::BiDi::Protocol::Script::local_value, ?user_activation: bool) -> instance end class EvaluateParameters < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader expression: String - attr_reader target: ::Selenium::WebDriver::BiDi::Protocol::Script::Target + attr_reader target: ::Selenium::WebDriver::BiDi::Protocol::Script::target attr_reader await_promise: bool attr_reader result_ownership: untyped attr_reader serialization_options: untyped attr_reader user_activation: untyped - def self.new: (expression: String, target: ::Selenium::WebDriver::BiDi::Protocol::Script::Target, await_promise: bool, ?result_ownership: Symbol, ?serialization_options: ::Selenium::WebDriver::BiDi::Protocol::Script::SerializationOptions, ?user_activation: bool) -> instance + def self.new: (expression: String, target: ::Selenium::WebDriver::BiDi::Protocol::Script::target, await_promise: bool, ?result_ownership: Symbol, ?serialization_options: ::Selenium::WebDriver::BiDi::Protocol::Script::SerializationOptions, ?user_activation: bool) -> instance end class GetRealmsParameters < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -504,8 +567,8 @@ module Selenium end class GetRealmsResult < ::Selenium::WebDriver::BiDi::Serialization::Record - attr_reader realms: Array[::Selenium::WebDriver::BiDi::Protocol::Script::RealmInfo] - def self.new: (realms: Array[::Selenium::WebDriver::BiDi::Protocol::Script::RealmInfo]) -> instance + attr_reader realms: Array[::Selenium::WebDriver::BiDi::Protocol::Script::realm_info] + def self.new: (realms: Array[::Selenium::WebDriver::BiDi::Protocol::Script::realm_info]) -> instance end class RemovePreloadScriptParameters < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -515,9 +578,9 @@ module Selenium class MessageParameters < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader channel: String - attr_reader data: ::Selenium::WebDriver::BiDi::Protocol::Script::RemoteValue + attr_reader data: ::Selenium::WebDriver::BiDi::Protocol::Script::remote_value attr_reader source: ::Selenium::WebDriver::BiDi::Protocol::Script::Source - def self.new: (channel: String, data: ::Selenium::WebDriver::BiDi::Protocol::Script::RemoteValue, source: ::Selenium::WebDriver::BiDi::Protocol::Script::Source) -> instance + def self.new: (channel: String, data: ::Selenium::WebDriver::BiDi::Protocol::Script::remote_value, source: ::Selenium::WebDriver::BiDi::Protocol::Script::Source) -> instance end class RealmDestroyedParameters < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -527,10 +590,34 @@ module Selenium EVENT_TYPES: Hash[String, untyped] + def channel_value: (?type: String, value: ::Selenium::WebDriver::BiDi::Protocol::Script::ChannelProperties) -> ChannelValue + def channel_properties: (channel: String, ?serialization_options: ::Selenium::WebDriver::BiDi::Protocol::Script::SerializationOptions, ?ownership: Symbol) -> ChannelProperties + def local_value: () -> singleton(LocalValue) + def array_local_value: (?type: String, value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::local_value]) -> ArrayLocalValue + def date_local_value: (?type: String, value: String) -> DateLocalValue + def map_local_value: (?type: String, value: Array[Array[untyped]]) -> MapLocalValue + def object_local_value: (?type: String, value: Array[Array[untyped]]) -> ObjectLocalValue + def reg_exp_value: (pattern: String, ?flags: String) -> RegExpValue + def reg_exp_local_value: (?type: String, value: ::Selenium::WebDriver::BiDi::Protocol::Script::RegExpValue) -> RegExpLocalValue + def set_local_value: (?type: String, value: Array[::Selenium::WebDriver::BiDi::Protocol::Script::local_value]) -> SetLocalValue + def primitive_protocol_value: () -> singleton(PrimitiveProtocolValue) + def undefined_value: (?type: String) -> UndefinedValue + def null_value: (?type: String) -> NullValue + def string_value: (?type: String, value: String) -> StringValue + def number_value: (?type: String, value: untyped) -> NumberValue + def boolean_value: (?type: String, value: bool) -> BooleanValue + def big_int_value: (?type: String, value: String) -> BigIntValue + def remote_reference: () -> singleton(RemoteReference) + def shared_reference: (shared_id: String, ?handle: String, ?extensions: Hash[String, untyped]) -> SharedReference + def remote_object_reference: (handle: String, ?shared_id: String, ?extensions: Hash[String, untyped]) -> RemoteObjectReference + def serialization_options: (?max_dom_depth: Integer?, ?max_object_depth: Integer?, ?include_shadow_tree: Symbol) -> SerializationOptions + def realm_target: (realm: String) -> RealmTarget + def context_target: (context: String, ?sandbox: String) -> ContextTarget + def target: () -> singleton(Target) def add_preload_script: (function_declaration: String, ?arguments: Array[::Selenium::WebDriver::BiDi::Protocol::Script::ChannelValue], ?contexts: Array[String], ?user_contexts: Array[String], ?sandbox: String) -> ::Selenium::WebDriver::BiDi::Protocol::Script::AddPreloadScriptResult - def call_function: (function_declaration: String, await_promise: bool, target: ::Selenium::WebDriver::BiDi::Protocol::Script::Target, ?arguments: Array[::Selenium::WebDriver::BiDi::Protocol::Script::LocalValue], ?result_ownership: Symbol, ?serialization_options: ::Selenium::WebDriver::BiDi::Protocol::Script::SerializationOptions, ?this: ::Selenium::WebDriver::BiDi::Protocol::Script::LocalValue, ?user_activation: bool) -> ::Selenium::WebDriver::BiDi::Protocol::Script::EvaluateResult - def disown: (handles: Array[String], target: ::Selenium::WebDriver::BiDi::Protocol::Script::Target) -> untyped - def evaluate: (expression: String, target: ::Selenium::WebDriver::BiDi::Protocol::Script::Target, await_promise: bool, ?result_ownership: Symbol, ?serialization_options: ::Selenium::WebDriver::BiDi::Protocol::Script::SerializationOptions, ?user_activation: bool) -> ::Selenium::WebDriver::BiDi::Protocol::Script::EvaluateResult + def call_function: (function_declaration: String, await_promise: bool, target: ::Selenium::WebDriver::BiDi::Protocol::Script::target, ?arguments: Array[::Selenium::WebDriver::BiDi::Protocol::Script::local_value], ?result_ownership: Symbol, ?serialization_options: ::Selenium::WebDriver::BiDi::Protocol::Script::SerializationOptions, ?this: ::Selenium::WebDriver::BiDi::Protocol::Script::local_value, ?user_activation: bool) -> ::Selenium::WebDriver::BiDi::Protocol::Script::EvaluateResult + def disown: (handles: Array[String], target: ::Selenium::WebDriver::BiDi::Protocol::Script::target) -> untyped + def evaluate: (expression: String, target: ::Selenium::WebDriver::BiDi::Protocol::Script::target, await_promise: bool, ?result_ownership: Symbol, ?serialization_options: ::Selenium::WebDriver::BiDi::Protocol::Script::SerializationOptions, ?user_activation: bool) -> ::Selenium::WebDriver::BiDi::Protocol::Script::EvaluateResult def get_realms: (?context: String, ?type: Symbol) -> ::Selenium::WebDriver::BiDi::Protocol::Script::GetRealmsResult def remove_preload_script: (script: String) -> untyped end diff --git a/rb/sig/lib/selenium/webdriver/bidi/protocol/session.rbs b/rb/sig/lib/selenium/webdriver/bidi/protocol/session.rbs index a0ec23ebdc033..de6b4e8afcbc3 100644 --- a/rb/sig/lib/selenium/webdriver/bidi/protocol/session.rbs +++ b/rb/sig/lib/selenium/webdriver/bidi/protocol/session.rbs @@ -25,6 +25,9 @@ module Selenium class Session < ::Selenium::WebDriver::BiDi::Protocol::Domain USER_PROMPT_HANDLER_TYPE: Hash[Symbol, String] + type proxy_configuration = ::Selenium::WebDriver::BiDi::Protocol::Session::AutodetectProxyConfiguration | ::Selenium::WebDriver::BiDi::Protocol::Session::DirectProxyConfiguration | ::Selenium::WebDriver::BiDi::Protocol::Session::ManualProxyConfiguration | ::Selenium::WebDriver::BiDi::Protocol::Session::PacProxyConfiguration | ::Selenium::WebDriver::BiDi::Protocol::Session::SystemProxyConfiguration + type unsubscribe_parameters = ::Selenium::WebDriver::BiDi::Protocol::Session::UnsubscribeByAttributesRequest | ::Selenium::WebDriver::BiDi::Protocol::Session::UnsubscribeByIDRequest + class CapabilitiesRequest < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader always_match: untyped attr_reader first_match: untyped @@ -39,10 +42,15 @@ module Selenium attr_reader proxy: untyped attr_reader unhandled_prompt_behavior: untyped attr_reader extensions: Hash[String, untyped] - def self.new: (?accept_insecure_certs: bool, ?browser_name: String, ?browser_version: String, ?platform_name: String, ?proxy: ::Selenium::WebDriver::BiDi::Protocol::Session::ProxyConfiguration, ?unhandled_prompt_behavior: ::Selenium::WebDriver::BiDi::Protocol::Session::UserPromptHandler, ?extensions: Hash[String, untyped]) -> instance + def self.new: (?accept_insecure_certs: bool, ?browser_name: String, ?browser_version: String, ?platform_name: String, ?proxy: ::Selenium::WebDriver::BiDi::Protocol::Session::proxy_configuration, ?unhandled_prompt_behavior: ::Selenium::WebDriver::BiDi::Protocol::Session::UserPromptHandler, ?extensions: Hash[String, untyped]) -> instance end class ProxyConfiguration < ::Selenium::WebDriver::BiDi::Serialization::Union + def self.autodetect: (?proxy_type: String, ?extensions: Hash[String, untyped]) -> ::Selenium::WebDriver::BiDi::Protocol::Session::AutodetectProxyConfiguration + def self.direct: (?proxy_type: String, ?extensions: Hash[String, untyped]) -> ::Selenium::WebDriver::BiDi::Protocol::Session::DirectProxyConfiguration + def self.manual: (?proxy_type: String, ?http_proxy: String, ?ssl_proxy: String, socks_proxy: String, socks_version: Integer, ?no_proxy: Array[String], ?extensions: Hash[String, untyped]) -> ::Selenium::WebDriver::BiDi::Protocol::Session::ManualProxyConfiguration + def self.pac: (?proxy_type: String, proxy_autoconfig_url: String, ?extensions: Hash[String, untyped]) -> ::Selenium::WebDriver::BiDi::Protocol::Session::PacProxyConfiguration + def self.system: (?proxy_type: String, ?extensions: Hash[String, untyped]) -> ::Selenium::WebDriver::BiDi::Protocol::Session::SystemProxyConfiguration end class AutodetectProxyConfiguration < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -141,7 +149,7 @@ module Selenium attr_reader unhandled_prompt_behavior: untyped attr_reader web_socket_url: untyped attr_reader extensions: Hash[String, untyped] - def self.new: (accept_insecure_certs: bool, browser_name: String, browser_version: String, platform_name: String, set_window_rect: bool, user_agent: String, ?proxy: ::Selenium::WebDriver::BiDi::Protocol::Session::ProxyConfiguration, ?unhandled_prompt_behavior: ::Selenium::WebDriver::BiDi::Protocol::Session::UserPromptHandler, ?web_socket_url: String, ?extensions: Hash[String, untyped]) -> instance + def self.new: (accept_insecure_certs: bool, browser_name: String, browser_version: String, platform_name: String, set_window_rect: bool, user_agent: String, ?proxy: ::Selenium::WebDriver::BiDi::Protocol::Session::proxy_configuration, ?unhandled_prompt_behavior: ::Selenium::WebDriver::BiDi::Protocol::Session::UserPromptHandler, ?web_socket_url: String, ?extensions: Hash[String, untyped]) -> instance end end @@ -153,6 +161,17 @@ module Selenium class UnsubscribeParameters < ::Selenium::WebDriver::BiDi::Serialization::Union end + def capabilities_request: (?always_match: ::Selenium::WebDriver::BiDi::Protocol::Session::CapabilityRequest, ?first_match: Array[::Selenium::WebDriver::BiDi::Protocol::Session::CapabilityRequest]) -> CapabilitiesRequest + def capability_request: (?accept_insecure_certs: bool, ?browser_name: String, ?browser_version: String, ?platform_name: String, ?proxy: ::Selenium::WebDriver::BiDi::Protocol::Session::proxy_configuration, ?unhandled_prompt_behavior: ::Selenium::WebDriver::BiDi::Protocol::Session::UserPromptHandler, ?extensions: Hash[String, untyped]) -> CapabilityRequest + def proxy_configuration: () -> singleton(ProxyConfiguration) + def autodetect_proxy_configuration: (?proxy_type: String, ?extensions: Hash[String, untyped]) -> AutodetectProxyConfiguration + def direct_proxy_configuration: (?proxy_type: String, ?extensions: Hash[String, untyped]) -> DirectProxyConfiguration + def manual_proxy_configuration: (?proxy_type: String, ?http_proxy: String, ?ssl_proxy: String, socks_proxy: String, socks_version: Integer, ?no_proxy: Array[String], ?extensions: Hash[String, untyped]) -> ManualProxyConfiguration + def pac_proxy_configuration: (?proxy_type: String, proxy_autoconfig_url: String, ?extensions: Hash[String, untyped]) -> PacProxyConfiguration + def system_proxy_configuration: (?proxy_type: String, ?extensions: Hash[String, untyped]) -> SystemProxyConfiguration + def user_prompt_handler: (?alert: Symbol, ?before_unload: Symbol, ?confirm: Symbol, ?default: Symbol, ?file: Symbol, ?prompt: Symbol) -> UserPromptHandler + def unsubscribe_by_id_request: (subscriptions: Array[String]) -> UnsubscribeByIDRequest + def unsubscribe_by_attributes_request: (events: Array[String]) -> UnsubscribeByAttributesRequest def end_: () -> untyped def new: (capabilities: ::Selenium::WebDriver::BiDi::Protocol::Session::CapabilitiesRequest) -> ::Selenium::WebDriver::BiDi::Protocol::Session::NewResult def status: () -> ::Selenium::WebDriver::BiDi::Protocol::Session::StatusResult diff --git a/rb/sig/lib/selenium/webdriver/bidi/protocol/storage.rbs b/rb/sig/lib/selenium/webdriver/bidi/protocol/storage.rbs index a0270089446d4..95a275e12e249 100644 --- a/rb/sig/lib/selenium/webdriver/bidi/protocol/storage.rbs +++ b/rb/sig/lib/selenium/webdriver/bidi/protocol/storage.rbs @@ -23,6 +23,8 @@ module Selenium class BiDi module Protocol class Storage < ::Selenium::WebDriver::BiDi::Protocol::Domain + type partition_descriptor = ::Selenium::WebDriver::BiDi::Protocol::Storage::BrowsingContextPartitionDescriptor | ::Selenium::WebDriver::BiDi::Protocol::Storage::StorageKeyPartitionDescriptor + class PartitionKey < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader user_context: untyped attr_reader source_origin: untyped @@ -41,7 +43,7 @@ module Selenium attr_reader same_site: untyped attr_reader expiry: untyped attr_reader extensions: Hash[String, untyped] - def self.new: (?name: String, ?value: ::Selenium::WebDriver::BiDi::Protocol::Network::BytesValue, ?domain: String, ?path: String, ?size: Integer, ?http_only: bool, ?secure: bool, ?same_site: Symbol, ?expiry: Integer, ?extensions: Hash[String, untyped]) -> instance + def self.new: (?name: String, ?value: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value, ?domain: String, ?path: String, ?size: Integer, ?http_only: bool, ?secure: bool, ?same_site: Symbol, ?expiry: Integer, ?extensions: Hash[String, untyped]) -> instance end class BrowsingContextPartitionDescriptor < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -59,12 +61,14 @@ module Selenium end class PartitionDescriptor < ::Selenium::WebDriver::BiDi::Serialization::Union + def self.context: (?type: String, context: String) -> ::Selenium::WebDriver::BiDi::Protocol::Storage::BrowsingContextPartitionDescriptor + def self.storage_key: (?type: String, ?user_context: String, ?source_origin: String, ?extensions: Hash[String, untyped]) -> ::Selenium::WebDriver::BiDi::Protocol::Storage::StorageKeyPartitionDescriptor end class GetCookiesParameters < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader filter: untyped attr_reader partition: untyped - def self.new: (?filter: ::Selenium::WebDriver::BiDi::Protocol::Storage::CookieFilter, ?partition: ::Selenium::WebDriver::BiDi::Protocol::Storage::PartitionDescriptor) -> instance + def self.new: (?filter: ::Selenium::WebDriver::BiDi::Protocol::Storage::CookieFilter, ?partition: ::Selenium::WebDriver::BiDi::Protocol::Storage::partition_descriptor) -> instance end class GetCookiesResult < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -75,7 +79,7 @@ module Selenium class PartialCookie < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader name: String - attr_reader value: ::Selenium::WebDriver::BiDi::Protocol::Network::BytesValue + attr_reader value: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value attr_reader domain: String attr_reader path: untyped attr_reader http_only: untyped @@ -83,13 +87,13 @@ module Selenium attr_reader same_site: untyped attr_reader expiry: untyped attr_reader extensions: Hash[String, untyped] - def self.new: (name: String, value: ::Selenium::WebDriver::BiDi::Protocol::Network::BytesValue, domain: String, ?path: String, ?http_only: bool, ?secure: bool, ?same_site: Symbol, ?expiry: Integer, ?extensions: Hash[String, untyped]) -> instance + def self.new: (name: String, value: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value, domain: String, ?path: String, ?http_only: bool, ?secure: bool, ?same_site: Symbol, ?expiry: Integer, ?extensions: Hash[String, untyped]) -> instance end class SetCookieParameters < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader cookie: ::Selenium::WebDriver::BiDi::Protocol::Storage::PartialCookie attr_reader partition: untyped - def self.new: (cookie: ::Selenium::WebDriver::BiDi::Protocol::Storage::PartialCookie, ?partition: ::Selenium::WebDriver::BiDi::Protocol::Storage::PartitionDescriptor) -> instance + def self.new: (cookie: ::Selenium::WebDriver::BiDi::Protocol::Storage::PartialCookie, ?partition: ::Selenium::WebDriver::BiDi::Protocol::Storage::partition_descriptor) -> instance end class SetCookieResult < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -100,7 +104,7 @@ module Selenium class DeleteCookiesParameters < ::Selenium::WebDriver::BiDi::Serialization::Record attr_reader filter: untyped attr_reader partition: untyped - def self.new: (?filter: ::Selenium::WebDriver::BiDi::Protocol::Storage::CookieFilter, ?partition: ::Selenium::WebDriver::BiDi::Protocol::Storage::PartitionDescriptor) -> instance + def self.new: (?filter: ::Selenium::WebDriver::BiDi::Protocol::Storage::CookieFilter, ?partition: ::Selenium::WebDriver::BiDi::Protocol::Storage::partition_descriptor) -> instance end class DeleteCookiesResult < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -108,9 +112,14 @@ module Selenium def self.new: (partition_key: ::Selenium::WebDriver::BiDi::Protocol::Storage::PartitionKey) -> instance end - def delete_cookies: (?filter: ::Selenium::WebDriver::BiDi::Protocol::Storage::CookieFilter, ?partition: ::Selenium::WebDriver::BiDi::Protocol::Storage::PartitionDescriptor) -> ::Selenium::WebDriver::BiDi::Protocol::Storage::DeleteCookiesResult - def get_cookies: (?filter: ::Selenium::WebDriver::BiDi::Protocol::Storage::CookieFilter, ?partition: ::Selenium::WebDriver::BiDi::Protocol::Storage::PartitionDescriptor) -> ::Selenium::WebDriver::BiDi::Protocol::Storage::GetCookiesResult - def set_cookie: (cookie: ::Selenium::WebDriver::BiDi::Protocol::Storage::PartialCookie, ?partition: ::Selenium::WebDriver::BiDi::Protocol::Storage::PartitionDescriptor) -> ::Selenium::WebDriver::BiDi::Protocol::Storage::SetCookieResult + def cookie_filter: (?name: String, ?value: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value, ?domain: String, ?path: String, ?size: Integer, ?http_only: bool, ?secure: bool, ?same_site: Symbol, ?expiry: Integer, ?extensions: Hash[String, untyped]) -> CookieFilter + def browsing_context_partition_descriptor: (?type: String, context: String) -> BrowsingContextPartitionDescriptor + def storage_key_partition_descriptor: (?type: String, ?user_context: String, ?source_origin: String, ?extensions: Hash[String, untyped]) -> StorageKeyPartitionDescriptor + def partition_descriptor: () -> singleton(PartitionDescriptor) + def partial_cookie: (name: String, value: ::Selenium::WebDriver::BiDi::Protocol::Network::bytes_value, domain: String, ?path: String, ?http_only: bool, ?secure: bool, ?same_site: Symbol, ?expiry: Integer, ?extensions: Hash[String, untyped]) -> PartialCookie + def delete_cookies: (?filter: ::Selenium::WebDriver::BiDi::Protocol::Storage::CookieFilter, ?partition: ::Selenium::WebDriver::BiDi::Protocol::Storage::partition_descriptor) -> ::Selenium::WebDriver::BiDi::Protocol::Storage::DeleteCookiesResult + def get_cookies: (?filter: ::Selenium::WebDriver::BiDi::Protocol::Storage::CookieFilter, ?partition: ::Selenium::WebDriver::BiDi::Protocol::Storage::partition_descriptor) -> ::Selenium::WebDriver::BiDi::Protocol::Storage::GetCookiesResult + def set_cookie: (cookie: ::Selenium::WebDriver::BiDi::Protocol::Storage::PartialCookie, ?partition: ::Selenium::WebDriver::BiDi::Protocol::Storage::partition_descriptor) -> ::Selenium::WebDriver::BiDi::Protocol::Storage::SetCookieResult end end end diff --git a/rb/sig/lib/selenium/webdriver/bidi/protocol/user_agent_client_hints.rbs b/rb/sig/lib/selenium/webdriver/bidi/protocol/user_agent_client_hints.rbs index e293e010c6888..09611afb5431f 100644 --- a/rb/sig/lib/selenium/webdriver/bidi/protocol/user_agent_client_hints.rbs +++ b/rb/sig/lib/selenium/webdriver/bidi/protocol/user_agent_client_hints.rbs @@ -50,6 +50,8 @@ module Selenium def self.new: (client_hints: ::Selenium::WebDriver::BiDi::Protocol::UserAgentClientHints::ClientHintsMetadata?, ?contexts: Array[String], ?user_contexts: Array[String]) -> instance end + def client_hints_metadata: (?brands: Array[::Selenium::WebDriver::BiDi::Protocol::UserAgentClientHints::BrandVersion], ?full_version_list: Array[::Selenium::WebDriver::BiDi::Protocol::UserAgentClientHints::BrandVersion], ?platform: String, ?platform_version: String, ?architecture: String, ?model: String, ?mobile: bool, ?bitness: String, ?wow64: bool, ?form_factors: Array[String]) -> ClientHintsMetadata + def brand_version: (brand: String, version: String) -> BrandVersion def set_client_hints_override: (client_hints: ::Selenium::WebDriver::BiDi::Protocol::UserAgentClientHints::ClientHintsMetadata?, ?contexts: Array[String], ?user_contexts: Array[String]) -> untyped end end diff --git a/rb/sig/lib/selenium/webdriver/bidi/protocol/web_extension.rbs b/rb/sig/lib/selenium/webdriver/bidi/protocol/web_extension.rbs index 78b4faa84ba19..81b91da6349a7 100644 --- a/rb/sig/lib/selenium/webdriver/bidi/protocol/web_extension.rbs +++ b/rb/sig/lib/selenium/webdriver/bidi/protocol/web_extension.rbs @@ -23,7 +23,12 @@ module Selenium class BiDi module Protocol class WebExtension < ::Selenium::WebDriver::BiDi::Protocol::Domain + type extension_data = ::Selenium::WebDriver::BiDi::Protocol::WebExtension::ExtensionArchivePath | ::Selenium::WebDriver::BiDi::Protocol::WebExtension::ExtensionBase64Encoded | ::Selenium::WebDriver::BiDi::Protocol::WebExtension::ExtensionPath + class ExtensionData < ::Selenium::WebDriver::BiDi::Serialization::Union + def self.archive_path: (?type: String, path: String) -> ::Selenium::WebDriver::BiDi::Protocol::WebExtension::ExtensionArchivePath + def self.base64: (?type: String, value: String) -> ::Selenium::WebDriver::BiDi::Protocol::WebExtension::ExtensionBase64Encoded + def self.path: (?type: String, path: String) -> ::Selenium::WebDriver::BiDi::Protocol::WebExtension::ExtensionPath end class ExtensionPath < ::Selenium::WebDriver::BiDi::Serialization::Record @@ -55,16 +60,21 @@ module Selenium end class InstallParameters < ::Selenium::WebDriver::BiDi::Serialization::Record - attr_reader extension_data: ::Selenium::WebDriver::BiDi::Protocol::WebExtension::ExtensionData + attr_reader extension_data: ::Selenium::WebDriver::BiDi::Protocol::WebExtension::extension_data attr_reader extensions: Hash[String, untyped] - def self.new: (extension_data: ::Selenium::WebDriver::BiDi::Protocol::WebExtension::ExtensionData, ?extensions: Hash[String, untyped]) -> instance + def self.new: (extension_data: ::Selenium::WebDriver::BiDi::Protocol::WebExtension::extension_data, ?extensions: Hash[String, untyped]) -> instance end - def install: (extension_data: ::Selenium::WebDriver::BiDi::Protocol::WebExtension::ExtensionData) -> ::Selenium::WebDriver::BiDi::Protocol::WebExtension::InstallResult + def extension_data: () -> singleton(ExtensionData) + def extension_path: (?type: String, path: String) -> ExtensionPath + def extension_archive_path: (?type: String, path: String) -> ExtensionArchivePath + def extension_base64_encoded: (?type: String, value: String) -> ExtensionBase64Encoded + def moz: () -> Moz + def install: (extension_data: ::Selenium::WebDriver::BiDi::Protocol::WebExtension::extension_data) -> ::Selenium::WebDriver::BiDi::Protocol::WebExtension::InstallResult def uninstall: (extension: String) -> untyped class Moz < ::Selenium::WebDriver::BiDi::Protocol::WebExtension - def install: (extension_data: ::Selenium::WebDriver::BiDi::Protocol::WebExtension::ExtensionData, ?allow_private_browsing: bool, ?permanent: bool) -> ::Selenium::WebDriver::BiDi::Protocol::WebExtension::InstallResult + def install: (extension_data: ::Selenium::WebDriver::BiDi::Protocol::WebExtension::extension_data, ?allow_private_browsing: bool, ?permanent: bool) -> ::Selenium::WebDriver::BiDi::Protocol::WebExtension::InstallResult end end end diff --git a/rb/sig/lib/selenium/webdriver/bidi/transport.rbs b/rb/sig/lib/selenium/webdriver/bidi/transport.rbs index 68753987e2cb6..6b932ba95322e 100644 --- a/rb/sig/lib/selenium/webdriver/bidi/transport.rbs +++ b/rb/sig/lib/selenium/webdriver/bidi/transport.rbs @@ -22,6 +22,8 @@ module Selenium class Transport @connection: untyped + attr_reader connection: untyped + def initialize: (untyped connection) -> void def execute: (cmd: String, ?params: untyped, ?result: untyped) -> untyped diff --git a/rb/spec/unit/selenium/webdriver/bidi/protocol_spec.rb b/rb/spec/unit/selenium/webdriver/bidi/protocol_spec.rb index e0bb07d1c50f7..e12fecb4fbad9 100644 --- a/rb/spec/unit/selenium/webdriver/bidi/protocol_spec.rb +++ b/rb/spec/unit/selenium/webdriver/bidi/protocol_spec.rb @@ -92,6 +92,65 @@ module Protocol expect(parsed.url).to eq('https://x') end end + + describe 'outbound domain type accessors' do + it 'exposes an outbound union as an accessor returning the class (variant factories dispatch)' do + expect(WebExtension.new(connection).extension_data).to eq(WebExtension::ExtensionData) + end + + it 'constructs an outbound record directly through its accessor' do + path = WebExtension.new(connection).extension_path(path: '/tmp/ext') + + expect(path).to be_a(WebExtension::ExtensionPath) + expect(path.as_json).to eq('type' => 'path', 'path' => '/tmp/ext') + end + + it 'builds a variant end-to-end through a union accessor and its factory' do + built = WebExtension.new(connection).extension_data.path(path: '/tmp/ext') + + expect(built).to be_a(WebExtension::ExtensionPath) + expect(built.as_json).to eq('type' => 'path', 'path' => '/tmp/ext') + end + + it 'dispatches a locator variant through a union accessor factory' do + built = BrowsingContext.new(connection).locator.css(value: '.submit') + + expect(built).to be_a(BrowsingContext::CssLocator) + expect(built.as_json).to eq('type' => 'css', 'value' => '.submit') + end + + it 'exposes a vendor variant over the same connection, driving its overridden command' do + moz = WebExtension.new(connection).moz + expect(moz).to be_a(WebExtension::Moz) + + allow(connection).to receive(:send_cmd).and_return('result' => {'extension' => 'ext-id'}) + moz.install(extension_data: WebExtension.new(connection).extension_path(path: '/tmp/ext'), + allow_private_browsing: true) + + expect(connection).to have_received(:send_cmd) + .with(method: 'webExtension.install', + params: hash_including('moz:allowPrivateBrowsing' => true)) + end + + it 'does not expose an inbound-only type (script.RemoteValue is received, never sent)' do + expect(Script.new(connection)).not_to respond_to(:remote_value) + end + + it 'does not expose a command param wrapper (the command method builds it)' do + expect(WebExtension.new(connection)).not_to respond_to(:install_parameters) + end + + it 'exposes a nested type reached as a plain field ref (a locator value a caller fills in)' do + value = BrowsingContext.new(connection).accessibility_locator_value(name: 'submit', role: 'button') + + expect(value).to be_a(BrowsingContext::AccessibilityLocator::Value) + expect(value.as_json).to eq('name' => 'submit', 'role' => 'button') + end + + it 'does not expose a synthetic reached only as a union arm (built through its union)' do + expect(Network.new(connection)).not_to respond_to(:continue_with_auth_parameters_credentials) + end + end end end # Protocol end # BiDi diff --git a/rb/spec/unit/selenium/webdriver/bidi/support/bidi_generate_spec.rb b/rb/spec/unit/selenium/webdriver/bidi/support/bidi_generate_spec.rb index 6e85cf2a1f6af..1fcf383ebfeb1 100644 --- a/rb/spec/unit/selenium/webdriver/bidi/support/bidi_generate_spec.rb +++ b/rb/spec/unit/selenium/webdriver/bidi/support/bidi_generate_spec.rb @@ -44,4 +44,40 @@ module BiDiGenerate expect(BiDiGenerate.enum_key('dedicated-worker')).to eq('dedicated_worker') end end + + describe '.check_accessor_collisions!' do + def accessor(name) + BiDiGenerate::Accessor.new(method_name: name, type_name: 'T', union: false) + end + + def command(name) + BiDiGenerate::Command.new(wire_name: "x.#{name}", method_name: name, params: [], result_ref: nil, + params_class: nil, union_params: false, spec_href: nil) + end + + def mod(accessors:, commands: []) + BiDiGenerate::Module.new(name: 'x', ruby_class: 'X', filename: 'x', commands: commands, events: [], + enums: [], types: [], accessors: accessors, vendor_modules: [], spec_href: nil) + end + + it 'passes when accessor names are unique and unshadowed' do + expect { BiDiGenerate.check_accessor_collisions!(mod(accessors: [accessor('extension_path')])) } + .not_to raise_error + end + + it 'fails when an accessor shadows a command method' do + expect { BiDiGenerate.check_accessor_collisions!(mod(accessors: [accessor('foo')], commands: [command('foo')])) } + .to raise_error(/collides with a command method/) + end + + it 'fails when an accessor shadows an inherited method' do + expect { BiDiGenerate.check_accessor_collisions!(mod(accessors: [accessor('hash')])) } + .to raise_error(/collides with an inherited method/) + end + + it 'fails when two accessors share a name' do + expect { BiDiGenerate.check_accessor_collisions!(mod(accessors: [accessor('dupe'), accessor('dupe')])) } + .to raise_error(/collides with the accessor/) + end + end end