Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[build] Prepare for release of Selenium 4.23.0 #14273

Merged
merged 9 commits into from
Jul 18, 2024

Conversation

selenium-ci
Copy link
Member

@selenium-ci selenium-ci commented Jul 18, 2024

User description

Warning: Manually update the changelogs before merging

This PR:

  • Updates Rust version for Selenium Manager release
  • Updates Pinned browser version to coincide with new CDP release
  • Adds support for new CDP version and removes old CDP version
  • Selenium Manager references the new Selenium Manager release
  • Updates Maven Dependencies
  • Adds new authors to authors file
  • Updates all versions for all bindings
  • Generates rough change logs for each bindings (please tidy them up before merging this)

PR Type

enhancement, tests, configuration changes, dependencies, version bump, documentation


Description

  • Updated DevTools classes and methods to support CDP version 127 across multiple languages (Java, .NET, etc.).
  • Updated default browser versions and Selenium Manager binaries.
  • Updated Maven dependencies and artifact hashes.
  • Added new authors to the AUTHORS file.
  • Updated changelogs for Selenium 4.23.0 release.
  • Bumped versions for Selenium WebDriver and DevTools bindings to 4.23.0.
  • Updated build configurations to include CDP version 127.
  • Updated Ruby Gem dependencies syntax.
  • Updated Python and JavaScript versions to 4.23.0.

Changes walkthrough 📝

Relevant files
Enhancement
16 files
v127Target.java
Update DevTools Target to CDP version 127                               

java/src/org/openqa/selenium/devtools/v127/v127Target.java

  • Updated package and import statements from v124 to v127.
  • Renamed class from v124Target to v127Target.
  • Updated method references to use v127 classes.
  • +12/-12 
    v127Network.java
    Update DevTools Network to CDP version 127                             

    java/src/org/openqa/selenium/devtools/v127/v127Network.java

  • Updated package and import statements from v124 to v127.
  • Renamed class from v124Network to v127Network.
  • Updated method references to use v127 classes.
  • +10/-10 
    v127Events.java
    Update DevTools Events to CDP version 127                               

    java/src/org/openqa/selenium/devtools/v127/v127Events.java

  • Updated package and import statements from v124 to v127.
  • Renamed class from v124Events to v127Events.
  • Updated method references to use v127 classes.
  • +9/-9     
    v127Domains.java
    Update DevTools Domains to CDP version 127                             

    java/src/org/openqa/selenium/devtools/v127/v127Domains.java

  • Updated package and import statements from v124 to v127.
  • Renamed class from v124Domains to v127Domains.
  • Updated method references to use v127 classes.
  • +13/-13 
    v127Javascript.java
    Update DevTools Javascript to CDP version 127                       

    java/src/org/openqa/selenium/devtools/v127/v127Javascript.java

  • Updated package and import statements from v124 to v127.
  • Renamed class from v124Javascript to v127Javascript.
  • +7/-7     
    v127Log.java
    Update DevTools Log to CDP version 127                                     

    java/src/org/openqa/selenium/devtools/v127/v127Log.java

  • Updated package and import statements from v124 to v127.
  • Renamed class from v124Log to v127Log.
  • +5/-5     
    v127CdpInfo.java
    Update DevTools CDP Info to version 127                                   

    java/src/org/openqa/selenium/devtools/v127/v127CdpInfo.java

  • Updated package and import statements from v124 to v127.
  • Renamed class from v124CdpInfo to v127CdpInfo.
  • Updated constructor to use version 127.
  • +4/-4     
    V127Domains.cs
    Update .NET DevTools Domains to CDP version 127                   

    dotnet/src/webdriver/DevTools/v127/V127Domains.cs

  • Updated namespace and class name from V124Domains to V127Domains.
  • Updated DevTools version number from 124 to 127.
  • Updated method references to use v127 classes.
  • +11/-11 
    V127Network.cs
    Update .NET DevTools Network to CDP version 127                   

    dotnet/src/webdriver/DevTools/v127/V127Network.cs

  • Updated namespace and class name from V124Network to V127Network.
  • Updated method references to use v127 classes.
  • +12/-12 
    V127JavaScript.cs
    Update .NET DevTools JavaScript to CDP version 127             

    dotnet/src/webdriver/DevTools/v127/V127JavaScript.cs

  • Updated namespace and class name from V124JavaScript to
    V127JavaScript.
  • Updated method references to use v127 classes.
  • +8/-8     
    V127Target.cs
    Update .NET DevTools Target to CDP version 127                     

    dotnet/src/webdriver/DevTools/v127/V127Target.cs

  • Updated namespace and class name from V124Target to V127Target.
  • Updated method references to use v127 classes.
  • +7/-7     
    V127Log.cs
    Update .NET DevTools Log to CDP version 127                           

    dotnet/src/webdriver/DevTools/v127/V127Log.cs

  • Updated namespace and class name from V124Log to V127Log.
  • Updated method references to use v127 classes.
  • +7/-7     
    DevToolsDomains.cs
    Update Supported DevTools Versions to Include v127             

    dotnet/src/webdriver/DevTools/DevToolsDomains.cs

    • Updated supported DevTools version from v124 to v127.
    +1/-1     
    versions.bzl
    Update CDP Versions to Include v127                                           

    java/src/org/openqa/selenium/devtools/versions.bzl

    • Updated CDP versions to include v127 and remove v124.
    +1/-1     
    js_protocol.pdl
    Add JS Protocol Definition for CDP version 127                     

    common/devtools/chromium/v127/js_protocol.pdl

    • Added new protocol definition file for CDP version 127.
    +1807/-1
    browser_protocol.pdl
    Add new events, types, and commands to browser protocol   

    common/devtools/chromium/v127/browser_protocol.pdl

    • Added new events, types, and commands to the browser protocol.
      *
      Introduced new experimental domains and commands.
      * Updated existing
      types and commands with additional properties.
    +395/-24
    Tests
    8 files
    DevToolsTargetTest.cs
    Update DevTools Target Test to CDP version 127                     

    dotnet/test/common/DevTools/DevToolsTargetTest.cs

  • Updated CurrentCdpVersion to V127.
  • Updated DevTools version number from 126 to 127.
  • +3/-3     
    DevToolsConsoleTest.cs
    Update DevTools Console Test to CDP version 127                   

    dotnet/test/common/DevTools/DevToolsConsoleTest.cs

    • Updated CurrentCdpVersion to V127.
    +2/-2     
    DevToolsNetworkTest.cs
    Update DevTools Network Test to CDP version 127                   

    dotnet/test/common/DevTools/DevToolsNetworkTest.cs

    • Updated CurrentCdpVersion to V127.
    +2/-2     
    DevToolsPerformanceTest.cs
    Update DevTools Performance Test to CDP version 127           

    dotnet/test/common/DevTools/DevToolsPerformanceTest.cs

    • Updated CurrentCdpVersion to V127.
    +2/-2     
    DevToolsProfilerTest.cs
    Update DevTools Profiler Test to CDP version 127                 

    dotnet/test/common/DevTools/DevToolsProfilerTest.cs

    • Updated CurrentCdpVersion to V127.
    +2/-2     
    DevToolsSecurityTest.cs
    Update DevTools Security Test to CDP version 127                 

    dotnet/test/common/DevTools/DevToolsSecurityTest.cs

    • Updated CurrentCdpVersion to V127.
    +2/-2     
    DevToolsTabsTest.cs
    Update DevTools Tabs Test to CDP version 127                         

    dotnet/test/common/DevTools/DevToolsTabsTest.cs

    • Updated CurrentCdpVersion to V127.
    +2/-2     
    DevToolsLogTest.cs
    Update DevTools Log Test to CDP version 127                           

    dotnet/test/common/DevTools/DevToolsLogTest.cs

    • Updated CurrentCdpVersion to V127.
    +1/-1     
    Configuration changes
    10 files
    StableChannelChromeDriver.cs
    Update Default Chrome Browser Version to 127                         

    dotnet/test/common/CustomDriverConfigs/StableChannelChromeDriver.cs

    • Updated default Chrome browser version from 126 to 127.
    +1/-1     
    repositories.bzl
    Update Browser and Driver Versions in Repositories             

    common/repositories.bzl

  • Updated URLs and SHA256 checksums for Firefox and Edge browser
    versions.
  • Updated Chrome browser and driver versions.
  • +37/-37 
    selenium_manager.bzl
    Update Selenium Manager Binaries                                                 

    common/selenium_manager.bzl

    • Updated URLs and SHA256 checksums for Selenium Manager binaries.
    +6/-6     
    BUILD.bazel
    Add Build Configuration for CDP version 127                           

    common/devtools/chromium/v127/BUILD.bazel

    • Added build configuration for CDP version 127.
    +38/-1   
    WebDriver.csproj
    Update CDP Generation Command for .NET WebDriver                 

    dotnet/src/webdriver/WebDriver.csproj

  • Updated CDP generation command to include v127 and remove v124.
  • +1/-1     
    Rakefile
    Update Rakefile for Java Release Targets                                 

    Rakefile

    • Updated Java release targets to include v127 and remove v124.
    +1/-1     
    BUILD.bazel
    Update Build Configuration for CDP version 127                     

    java/src/org/openqa/selenium/devtools/v127/BUILD.bazel

    • Updated CDP version from v124 to v127.
    +1/-1     
    BUILD.bazel
    Update version and add Chrome CDP v127 support                     

    javascript/node/selenium-webdriver/BUILD.bazel

    • Updated version to 4.23.0.
      * Added support for Chrome CDP version
      127.
    +2/-2     
    BUILD.bazel
    Update version and add Chrome CDP v127 support                     

    py/BUILD.bazel

    • Updated version to 4.23.0.
      * Added support for Chrome CDP version
      127.
    +2/-2     
    BUILD.bazel
    Add Chrome CDP v127 support                                                           

    rb/lib/selenium/devtools/BUILD.bazel

    • Added support for Chrome CDP version 127.
    +1/-1     
    Dependencies
    6 files
    selenium-webdriver.gemspec
    Update Ruby Gem Dependencies Syntax                                           

    rb/selenium-webdriver.gemspec

    • Changed add_runtime_dependency to add_dependency.
    +5/-5     
    selenium-devtools.gemspec
    Update Ruby Gem Dependencies Syntax                                           

    rb/selenium-devtools.gemspec

    • Changed add_runtime_dependency to add_dependency.
    +1/-1     
    MODULE.bazel
    Update Maven Dependencies                                                               

    MODULE.bazel

    • Updated Maven dependencies to newer versions.
    +22/-22 
    maven_install.json
    Update Maven dependencies and artifact hashes                       

    java/maven_install.json

    • Updated multiple dependencies to newer versions.
      * Changed artifact
      hashes to reflect updated dependencies.
    +99/-101
    package-lock.json
    Update version to 4.23.0                                                                 

    package-lock.json

    • Updated version to 4.23.0.
    +1/-1     
    package.json
    Update version to 4.23.0                                                                 

    javascript/node/selenium-webdriver/package.json

    • Updated version to 4.23.0.
    +1/-1     
    Version bump
    8 files
    version.rb
    Bump Selenium DevTools Version to 0.127.0                               

    rb/lib/selenium/devtools/version.rb

    • Updated VERSION from '0.126.0' to '0.127.0'.
    +1/-1     
    version.rb
    Bump Selenium WebDriver Version to 4.23.0                               

    rb/lib/selenium/webdriver/version.rb

    • Updated VERSION from '4.23.0.nightly' to '4.23.0'.
    +1/-1     
    selenium-dotnet-version.bzl
    Update .NET Selenium Version and Supported DevTools Versions

    dotnet/selenium-dotnet-version.bzl

  • Updated Selenium version from '4.23.0-nightly202406201609' to
    '4.23.0'.
  • Updated supported DevTools versions to include v127.
  • +2/-2     
    __init__.py
    Bump Python Selenium WebDriver Version to 4.23.0                 

    py/selenium/webdriver/init.py

    • Updated __version__ from '4.23.0.dev202406201609' to '4.23.0'.
    +1/-1     
    setup.py
    Bump Python Selenium Setup Version to 4.23.0                         

    py/setup.py

    • Updated version from '4.23.0.dev202406201609' to '4.23.0'.
    +1/-1     
    conf.py
    Bump Python Documentation Version to 4.23.0                           

    py/docs/source/conf.py

    • Updated release from '4.23.0.dev202406201609' to '4.23.0'.
    +1/-1     
    __init__.py
    Bump Python Selenium Version to 4.23.0                                     

    py/selenium/init.py

    • Updated __version__ from '4.23.0.dev202406201609' to '4.23.0'.
    +1/-1     
    version.bzl
    Bump Java Selenium Version to 4.23.0                                         

    java/version.bzl

    • Updated Selenium version from '4.23.0-SNAPSHOT' to '4.23.0'.
    +1/-1     
    Documentation
    7 files
    AUTHORS
    Add New Authors to AUTHORS File                                                   

    AUTHORS

    • Added new authors to the AUTHORS file.
    +5/-0     
    CHANGELOG
    Update Java Changelog for Version 4.23.0                                 

    java/CHANGELOG

    • Added changelog entries for version 4.23.0.
    +23/-0   
    CHANGES.md
    Update JavaScript Changelog for Version 4.23.0                     

    javascript/node/selenium-webdriver/CHANGES.md

    • Added changelog entries for version 4.23.0.
    +12/-0   
    CHANGES
    Update change log for Selenium 4.23.0 release                       

    py/CHANGES

    • Added change log entries for Selenium 4.23.0 release.
      * Included
      updates and fixes specific to the Python bindings.
    +9/-0     
    CHANGES
    Update change log for Selenium 4.23.0 release                       

    rb/CHANGES

    • Added change log entries for Selenium 4.23.0 release.
      * Included
      updates and fixes specific to the Ruby bindings.
    +8/-0     
    CHANGELOG
    Update change log for Selenium 4.23.0 release                       

    dotnet/CHANGELOG

    • Added change log entries for Selenium 4.23.0 release.
      * Included
      updates and fixes specific to the .NET bindings.
    +9/-0     
    CHANGELOG.md
    Update change log for Selenium 4.23.0 release                       

    rust/CHANGELOG.md

    • Added change log entries for Selenium 4.23.0 release.
    +4/-0     

    💡 PR-Agent usage:
    Comment /help on the PR to get a list of all available PR-Agent tools and their descriptions

    @selenium-ci selenium-ci added the C-build Build related issues (bazel and CI) label Jul 18, 2024
    Copy link
    Contributor

    codiumai-pr-agent-pro bot commented Jul 18, 2024

    CI Failure Feedback 🧐

    (Checks updated until commit 9766626)

    Action: Ruby / Local Tests (firefox, macos) / Local Tests (firefox, macos)

    Failed stage: Run Bazel [❌]

    Failed test name: Selenium::WebDriver::ActionBuilder#move_to moves to element with offset

    Failure summary:

    The action failed because the test Selenium::WebDriver::ActionBuilder#move_to moves to element with
    offset failed. The test failed due to the following reasons:

  • The move target was out of bounds of the viewport dimensions.
  • The MoveTargetOutOfBoundsError was raised when attempting to move the pointer to the specified
    coordinates.
  • The failure occurred in the file action_builder_spec.rb at line 205.

  • Relevant error logs:
    1:  ##[group]Operating System
    2:  macOS
    ...
    
    359:  Received 33554432 of 64891013 (51.7%), 15.8 MBs/sec
    360:  Cache Size: ~62 MB (64891013 B)
    361:  [command]/usr/local/bin/gtar -xf /Users/runner/work/_temp/83bebd47-bd82-462a-ae38-6d645c3c5679/cache.tzst -P -C /Users/runner/work/selenium/selenium --delay-directory-restore --use-compress-program unzstd
    362:  Cache restored successfully
    363:  Successfully restored cache from setup-bazel-2-darwin-bazelisk-443c633485306f6041a3bbc0fce92e0399956ee287020cafaef3fa099118b67b
    364:  ##[endgroup]
    365:  ##[group]Restore cache for disk-rb-firefox-test
    366:  Received 64891013 of 64891013 (100.0%), 20.3 MBs/sec
    367:  Failed to restore disk-rb-firefox-test cache
    ...
    
    372:  Received 75497472 of 121028121 (62.4%), 24.0 MBs/sec
    373:  Cache Size: ~115 MB (121028121 B)
    374:  [command]/usr/local/bin/gtar -xf /Users/runner/work/_temp/20a7d0c1-efd2-4a03-8700-db5c34943b36/cache.tzst -P -C /Users/runner/work/selenium/selenium --delay-directory-restore --use-compress-program unzstd
    375:  Received 121028121 of 121028121 (100.0%), 28.9 MBs/sec
    376:  Cache restored successfully
    377:  Successfully restored cache from setup-bazel-2-darwin-repository-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e
    378:  ##[endgroup]
    379:  ##[group]Restore cache for external-rb-firefox-test-manifest
    380:  Failed to restore external-rb-firefox-test-manifest cache
    ...
    
    774:  �[32m[1,024 / 1,882]�[0m Compiling src/google/protobuf/descriptor.cc [for tool]; 9s disk-cache, darwin-sandbox ... (4 actions, 3 running)
    775:  �[32m[1,026 / 1,882]�[0m Compiling src/google/protobuf/descriptor.cc [for tool]; 10s disk-cache, darwin-sandbox ... (5 actions, 4 running)
    776:  �[32m[1,029 / 1,882]�[0m Compiling src/google/protobuf/descriptor.cc [for tool]; 11s disk-cache, darwin-sandbox ... (4 actions, 3 running)
    777:  �[32m[1,031 / 1,882]�[0m Compiling src/google/protobuf/descriptor.cc [for tool]; 12s disk-cache, darwin-sandbox ... (5 actions, 4 running)
    778:  �[32m[1,032 / 1,882]�[0m Compiling src/google/protobuf/descriptor.cc [for tool]; 14s disk-cache, darwin-sandbox ... (5 actions, 4 running)
    779:  �[32m[1,034 / 1,882]�[0m Compiling src/google/protobuf/descriptor.cc [for tool]; 15s disk-cache, darwin-sandbox ... (4 actions, 3 running)
    780:  �[32m[1,034 / 1,882]�[0m Compiling src/google/protobuf/descriptor.cc [for tool]; 16s disk-cache, darwin-sandbox ... (5 actions, 4 running)
    781:  �[32mINFO: �[0mFrom Linking external/protobuf~/libprotobuf.a [for tool]:
    782:  /Applications/Xcode_15.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file: bazel-out/darwin_x86_64-opt-exec-ST-d57f47055a04/bin/external/protobuf~/_objs/protobuf/error_listener.o has no symbols
    ...
    
    865:  �[32m[1,854 / 1,882]�[0m Checking 1 JS files in @@io_bazel_rules_closure//closure/library/editor/plugins:basictextformatter; 0s disk-cache, worker ... (4 actions, 3 running)
    866:  �[32m[1,868 / 1,882]�[0m Checking 1 JS files in @@//javascript/atoms:domcore; 0s disk-cache, worker ... (2 actions running)
    867:  �[32m[1,876 / 1,882]�[0m Compiling 663 JavaScript files to javascript/atoms/fragments/is-displayed.js; 0s disk-cache, worker ... (3 actions, 2 running)
    868:  �[32m[1,876 / 1,882]�[0m Compiling 663 JavaScript files to javascript/atoms/fragments/is-displayed.js; 1s disk-cache, worker ... (3 actions running)
    869:  �[32m[1,876 / 1,882]�[0m Compiling 663 JavaScript files to javascript/atoms/fragments/is-displayed.js; 11s disk-cache, worker ... (3 actions running)
    870:  �[32m[1,877 / 1,882]�[0m Compiling 663 JavaScript files to javascript/atoms/fragments/is-displayed.js; 18s disk-cache, worker ... (3 actions, 2 running)
    871:  �[32m[1,880 / 1,882]�[0m Compiling 698 JavaScript files to javascript/atoms/fragments/find-elements.js; 19s disk-cache, worker
    872:  �[32m[1,881 / 1,882]�[0m [Prepa] Copying files
    873:  �[32m[1,882 / 1,903]�[0m [Prepa] Testing //rb/spec/integration/selenium/webdriver:error-firefox
    874:  �[32m[1,882 / 1,905]�[0m [Prepa] Testing //rb/spec/integration/selenium/webdriver:error-firefox ... (4 actions, 0 running)
    875:  �[32m[1,882 / 1,905]�[0m Testing //rb/spec/integration/selenium/webdriver/remote:element-firefox; 0s disk-cache ... (4 actions, 0 running)
    876:  �[32m[1,882 / 1,905]�[0m Testing //rb/spec/integration/selenium/webdriver/remote:element-firefox; 9s disk-cache ... (4 actions, 0 running)
    877:  �[32m[1,882 / 1,905]�[0m Testing //rb/spec/integration/selenium/webdriver:error-firefox; 10s disk-cache ... (4 actions, 0 running)
    878:  �[32m[1,882 / 1,905]�[0m Testing //rb/spec/integration/selenium/webdriver/remote:element-firefox; 1s local, disk-cache ... (4 actions, 1 running)
    879:  �[32m[1,882 / 1,905]�[0m Testing //rb/spec/integration/selenium/webdriver/remote:element-firefox; 23s local, disk-cache ... (4 actions, 2 running)
    880:  �[32m[1,883 / 1,905]�[0m 1 / 28 tests;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:error-firefox; 25s ... (4 actions, 1 running)
    881:  �[32m[1,883 / 1,905]�[0m 1 / 28 tests;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:error-firefox; 28s ... (4 actions, 1 running)
    882:  �[32m[1,883 / 1,905]�[0m 1 / 28 tests;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:error-firefox; 36s ... (4 actions, 1 running)
    ...
    
    929:  �[32m[1,895 / 1,905]�[0m 13 / 28 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:action_builder-firefox; 130s local, disk-cache ... (4 actions, 2 running)
    930:  �[32m[1,895 / 1,905]�[0m 13 / 28 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:action_builder-firefox; 139s local, disk-cache ... (4 actions, 2 running)
    931:  �[32m[1,895 / 1,905]�[0m 13 / 28 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:action_builder-firefox; 156s local, disk-cache ... (4 actions, 2 running)
    932:  �[32m[1,896 / 1,905]�[0m 14 / 28 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:action_builder-firefox; 158s local, disk-cache ... (4 actions, 1 running)
    933:  �[32m[1,896 / 1,905]�[0m 14 / 28 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:action_builder-firefox; 160s local, disk-cache ... (4 actions, 1 running)
    934:  �[32m[1,896 / 1,905]�[0m 14 / 28 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:action_builder-firefox; 169s local, disk-cache ... (4 actions, 1 running)
    935:  �[32m[1,896 / 1,905]�[0m 14 / 28 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:action_builder-firefox; 199s local, disk-cache ... (4 actions, 2 running)
    936:  �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver:action_builder-firefox (see /Users/runner/.bazel/execroot/_main/bazel-out/darwin_x86_64-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/action_builder-firefox/test.log)
    937:  �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver:action_builder-firefox (Summary)
    ...
    
    968:  #double_click
    969:  presses pointer twice
    970:  executes with equivalent pointer methods
    971:  #context_click
    972:  right clicks an element
    973:  executes with equivalent pointer methods
    974:  #move_to
    975:  moves to element
    976:  moves to element with offset (FAILED - 1)
    ...
    
    978:  moves one element to another
    979:  #drag_and_drop_by
    980:  moves one element a provided distance
    981:  #move_to_location
    982:  moves pointer to specified coordinates
    983:  pen stylus
    984:  sets pointer event properties (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"Unknown pointerType"};)
    985:  #scroll_to
    986:  scrolls to element (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"incorrect MoveTargetOutOfBoundsError"};)
    987:  #scroll_by
    988:  scrolls by given amount (PENDING: Test guarded; Guarded by {:browser=>:firefox, :platform=>:macosx, :reason=>"scrolls insufficient number of pixels"};)
    989:  #scroll_from
    990:  scrolls from element by given amount (PENDING: Test guarded; Guarded by {:browser=>[:firefox, :safari], :reason=>"incorrect MoveTargetOutOfBoundsError"};)
    991:  scrolls from element by given amount with offset (PENDING: Test guarded; Guarded by {:browser=>[:firefox, :safari], :reason=>"incorrect MoveTargetOutOfBoundsError"};)
    992:  raises MoveTargetOutOfBoundsError when origin offset from element is out of viewport
    993:  scrolls by given amount with offset
    994:  raises MoveTargetOutOfBoundsError when origin offset is out of viewport
    995:  Pending: (Failures listed here are expected and do not affect your suite's status)
    996:  1) Selenium::WebDriver::ActionBuilder pen stylus sets pointer event properties
    997:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Unknown pointerType"};
    998:  Failure/Error: actions.perform
    999:  Selenium::WebDriver::Error::UnknownError:
    1000:  Error: Unimplemented pointerMove for pointerType pen
    1001:  # ./rb/lib/selenium/webdriver/remote/response.rb:62:in `add_cause'
    1002:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    1007:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    1008:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    1009:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:675:in `execute'
    1010:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:403:in `send_actions'
    1011:  # ./rb/lib/selenium/webdriver/common/action_builder.rb:198:in `perform'
    1012:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:282:in `block (3 levels) in <module:WebDriver>'
    1013:  # ------------------
    1014:  # --- Caused by: ---
    1015:  # Selenium::WebDriver::Error::WebDriverError:
    1016:  #   pointerMove@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1792:11
    1017:  performPointerMoveStep@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1178:25
    1018:  dispatch/<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1150:22
    1019:  moveOverTime/transitions<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1729:15
    1020:  2) Selenium::WebDriver::ActionBuilder#scroll_to scrolls to element
    1021:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"incorrect MoveTargetOutOfBoundsError"};
    1022:  Failure/Error: driver.action.scroll_to(iframe).perform
    1023:  Selenium::WebDriver::Error::MoveTargetOutOfBoundsError:
    1024:  Move target (410, 2898) is out of bounds of viewport dimensions (1280, 788)
    1025:  # ./rb/lib/selenium/webdriver/remote/response.rb:62:in `add_cause'
    1026:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    1031:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    1032:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    1033:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:675:in `execute'
    1034:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:403:in `send_actions'
    1035:  # ./rb/lib/selenium/webdriver/common/action_builder.rb:198:in `perform'
    1036:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:315:in `block (3 levels) in <module:WebDriver>'
    1037:  # ------------------
    1038:  # --- Caused by: ---
    1039:  # Selenium::WebDriver::Error::WebDriverError:
    1040:  #   RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    1041:  WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    1042:  MoveTargetOutOfBoundsError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:479:5
    ...
    
    1045:  dispatch/pendingEvents<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:2019:14
    1046:  dispatch@chrome://remote/content/shared/webdriver/Actions.sys.mjs:2018:39
    1047:  dispatch/chainEvents<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1929:27
    1048:  dispatch@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1931:7
    1049:  performActions@chrome://remote/content/marionette/actors/MarionetteCommandsChild.sys.mjs:493:23
    1050:  receiveMessage@chrome://remote/content/marionette/actors/MarionetteCommandsChild.sys.mjs:144:31
    1051:  3) Selenium::WebDriver::ActionBuilder#scroll_by scrolls by given amount
    1052:  # Test guarded; Guarded by {:browser=>:firefox, :platform=>:macosx, :reason=>"scrolls insufficient number of pixels"};
    1053:  Got 1 failure:
    1054:  3.1) Failure/Error: expect(in_viewport?(footer)).to be true
    1055:  expected true
    1056:  got false
    1057:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:332:in `block (3 levels) in <module:WebDriver>'
    1058:  4) Selenium::WebDriver::ActionBuilder#scroll_from scrolls from element by given amount
    1059:  # Test guarded; Guarded by {:browser=>[:firefox, :safari], :reason=>"incorrect MoveTargetOutOfBoundsError"};
    1060:  Failure/Error: driver.action.scroll_from(scroll_origin, 0, 200).perform
    1061:  Selenium::WebDriver::Error::MoveTargetOutOfBoundsError:
    1062:  Move target (410, 2898) is out of bounds of viewport dimensions (1280, 788)
    1063:  # ./rb/lib/selenium/webdriver/remote/response.rb:62:in `add_cause'
    1064:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    1069:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    1070:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    1071:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:675:in `execute'
    1072:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:403:in `send_actions'
    1073:  # ./rb/lib/selenium/webdriver/common/action_builder.rb:198:in `perform'
    1074:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:343:in `block (3 levels) in <module:WebDriver>'
    1075:  # ------------------
    1076:  # --- Caused by: ---
    1077:  # Selenium::WebDriver::Error::WebDriverError:
    1078:  #   RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    1079:  WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    1080:  MoveTargetOutOfBoundsError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:479:5
    ...
    
    1082:  dispatch@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1308:21
    1083:  dispatch/pendingEvents<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:2019:14
    1084:  dispatch@chrome://remote/content/shared/webdriver/Actions.sys.mjs:2018:39
    1085:  dispatch/chainEvents<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1929:27
    1086:  dispatch@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1931:7
    1087:  performActions@chrome://remote/content/marionette/actors/MarionetteCommandsChild.sys.mjs:493:23
    1088:  receiveMessage@chrome://remote/content/marionette/actors/MarionetteCommandsChild.sys.mjs:144:31
    1089:  5) Selenium::WebDriver::ActionBuilder#scroll_from scrolls from element by given amount with offset
    1090:  # Test guarded; Guarded by {:browser=>[:firefox, :safari], :reason=>"incorrect MoveTargetOutOfBoundsError"};
    1091:  Failure/Error: driver.action.scroll_from(scroll_origin, 0, 200).perform
    1092:  Selenium::WebDriver::Error::MoveTargetOutOfBoundsError:
    1093:  Move target (632, 2952) is out of bounds of viewport dimensions (1280, 788)
    1094:  # ./rb/lib/selenium/webdriver/remote/response.rb:62:in `add_cause'
    1095:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    1100:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    1101:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    1102:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:675:in `execute'
    1103:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:403:in `send_actions'
    1104:  # ./rb/lib/selenium/webdriver/common/action_builder.rb:198:in `perform'
    1105:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:357:in `block (3 levels) in <module:WebDriver>'
    1106:  # ------------------
    1107:  # --- Caused by: ---
    1108:  # Selenium::WebDriver::Error::WebDriverError:
    1109:  #   RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    1110:  WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    1111:  MoveTargetOutOfBoundsError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:479:5
    ...
    
    1114:  dispatch/pendingEvents<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:2019:14
    1115:  dispatch@chrome://remote/content/shared/webdriver/Actions.sys.mjs:2018:39
    1116:  dispatch/chainEvents<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1929:27
    1117:  dispatch@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1931:7
    1118:  performActions@chrome://remote/content/marionette/actors/MarionetteCommandsChild.sys.mjs:493:23
    1119:  receiveMessage@chrome://remote/content/marionette/actors/MarionetteCommandsChild.sys.mjs:144:31
    1120:  Failures:
    1121:  1) Selenium::WebDriver::ActionBuilder#move_to moves to element with offset FIXED
    1122:  Expected pending 'Test guarded; Guarded by {:browser=>:firefox, :platform=>[:windows, :macosx], :reason=>"Some issues with resolution?"};' to fail. No error was raised.
    1123:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:205
    1124:  Finished in 43.73 seconds (files took 0.44055 seconds to load)
    1125:  27 examples, 1 failure, 5 pending
    1126:  Failed examples:
    ...
    
    1155:  #double_click
    1156:  presses pointer twice
    1157:  executes with equivalent pointer methods
    1158:  #context_click
    1159:  right clicks an element
    1160:  executes with equivalent pointer methods
    1161:  #move_to
    1162:  moves to element
    1163:  moves to element with offset (FAILED - 1)
    ...
    
    1165:  moves one element to another
    1166:  #drag_and_drop_by
    1167:  moves one element a provided distance
    1168:  #move_to_location
    1169:  moves pointer to specified coordinates
    1170:  pen stylus
    1171:  sets pointer event properties (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"Unknown pointerType"};)
    1172:  #scroll_to
    1173:  scrolls to element (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"incorrect MoveTargetOutOfBoundsError"};)
    1174:  #scroll_by
    1175:  scrolls by given amount (PENDING: Test guarded; Guarded by {:browser=>:firefox, :platform=>:macosx, :reason=>"scrolls insufficient number of pixels"};)
    1176:  #scroll_from
    1177:  scrolls from element by given amount (PENDING: Test guarded; Guarded by {:browser=>[:firefox, :safari], :reason=>"incorrect MoveTargetOutOfBoundsError"};)
    1178:  scrolls from element by given amount with offset (PENDING: Test guarded; Guarded by {:browser=>[:firefox, :safari], :reason=>"incorrect MoveTargetOutOfBoundsError"};)
    1179:  raises MoveTargetOutOfBoundsError when origin offset from element is out of viewport
    1180:  scrolls by given amount with offset
    1181:  raises MoveTargetOutOfBoundsError when origin offset is out of viewport
    1182:  Pending: (Failures listed here are expected and do not affect your suite's status)
    1183:  1) Selenium::WebDriver::ActionBuilder pen stylus sets pointer event properties
    1184:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Unknown pointerType"};
    1185:  Failure/Error: actions.perform
    1186:  Selenium::WebDriver::Error::UnknownError:
    1187:  Error: Unimplemented pointerMove for pointerType pen
    1188:  # ./rb/lib/selenium/webdriver/remote/response.rb:62:in `add_cause'
    1189:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    1194:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    1195:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    1196:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:675:in `execute'
    1197:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:403:in `send_actions'
    1198:  # ./rb/lib/selenium/webdriver/common/action_builder.rb:198:in `perform'
    1199:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:282:in `block (3 levels) in <module:WebDriver>'
    1200:  # ------------------
    1201:  # --- Caused by: ---
    1202:  # Selenium::WebDriver::Error::WebDriverError:
    1203:  #   pointerMove@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1792:11
    1204:  performPointerMoveStep@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1178:25
    1205:  dispatch/<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1150:22
    1206:  moveOverTime/transitions<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1729:15
    1207:  2) Selenium::WebDriver::ActionBuilder#scroll_to scrolls to element
    1208:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"incorrect MoveTargetOutOfBoundsError"};
    1209:  Failure/Error: driver.action.scroll_to(iframe).perform
    1210:  Selenium::WebDriver::Error::MoveTargetOutOfBoundsError:
    1211:  Move target (410, 2898) is out of bounds of viewport dimensions (1280, 788)
    1212:  # ./rb/lib/selenium/webdriver/remote/response.rb:62:in `add_cause'
    1213:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    1218:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    1219:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    1220:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:675:in `execute'
    1221:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:403:in `send_actions'
    1222:  # ./rb/lib/selenium/webdriver/common/action_builder.rb:198:in `perform'
    1223:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:315:in `block (3 levels) in <module:WebDriver>'
    1224:  # ------------------
    1225:  # --- Caused by: ---
    1226:  # Selenium::WebDriver::Error::WebDriverError:
    1227:  #   RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    1228:  WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    1229:  MoveTargetOutOfBoundsError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:479:5
    ...
    
    1232:  dispatch/pendingEvents<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:2019:14
    1233:  dispatch@chrome://remote/content/shared/webdriver/Actions.sys.mjs:2018:39
    1234:  dispatch/chainEvents<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1929:27
    1235:  dispatch@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1931:7
    1236:  performActions@chrome://remote/content/marionette/actors/MarionetteCommandsChild.sys.mjs:493:23
    1237:  receiveMessage@chrome://remote/content/marionette/actors/MarionetteCommandsChild.sys.mjs:144:31
    1238:  3) Selenium::WebDriver::ActionBuilder#scroll_by scrolls by given amount
    1239:  # Test guarded; Guarded by {:browser=>:firefox, :platform=>:macosx, :reason=>"scrolls insufficient number of pixels"};
    1240:  Got 1 failure:
    1241:  3.1) Failure/Error: expect(in_viewport?(footer)).to be true
    1242:  expected true
    1243:  got false
    1244:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:332:in `block (3 levels) in <module:WebDriver>'
    1245:  4) Selenium::WebDriver::ActionBuilder#scroll_from scrolls from element by given amount
    1246:  # Test guarded; Guarded by {:browser=>[:firefox, :safari], :reason=>"incorrect MoveTargetOutOfBoundsError"};
    1247:  Failure/Error: driver.action.scroll_from(scroll_origin, 0, 200).perform
    1248:  Selenium::WebDriver::Error::MoveTargetOutOfBoundsError:
    1249:  Move target (410, 2898) is out of bounds of viewport dimensions (1280, 788)
    1250:  # ./rb/lib/selenium/webdriver/remote/response.rb:62:in `add_cause'
    1251:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    1256:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    1257:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    1258:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:675:in `execute'
    1259:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:403:in `send_actions'
    1260:  # ./rb/lib/selenium/webdriver/common/action_builder.rb:198:in `perform'
    1261:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:343:in `block (3 levels) in <module:WebDriver>'
    1262:  # ------------------
    1263:  # --- Caused by: ---
    1264:  # Selenium::WebDriver::Error::WebDriverError:
    1265:  #   RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    1266:  WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    1267:  MoveTargetOutOfBoundsError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:479:5
    ...
    
    1269:  dispatch@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1308:21
    1270:  dispatch/pendingEvents<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:2019:14
    1271:  dispatch@chrome://remote/content/shared/webdriver/Actions.sys.mjs:2018:39
    1272:  dispatch/chainEvents<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1929:27
    1273:  dispatch@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1931:7
    1274:  performActions@chrome://remote/content/marionette/actors/MarionetteCommandsChild.sys.mjs:493:23
    1275:  receiveMessage@chrome://remote/content/marionette/actors/MarionetteCommandsChild.sys.mjs:144:31
    1276:  5) Selenium::WebDriver::ActionBuilder#scroll_from scrolls from element by given amount with offset
    1277:  # Test guarded; Guarded by {:browser=>[:firefox, :safari], :reason=>"incorrect MoveTargetOutOfBoundsError"};
    1278:  Failure/Error: driver.action.scroll_from(scroll_origin, 0, 200).perform
    1279:  Selenium::WebDriver::Error::MoveTargetOutOfBoundsError:
    1280:  Move target (632, 2952) is out of bounds of viewport dimensions (1280, 788)
    1281:  # ./rb/lib/selenium/webdriver/remote/response.rb:62:in `add_cause'
    1282:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    1287:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    1288:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    1289:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:675:in `execute'
    1290:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:403:in `send_actions'
    1291:  # ./rb/lib/selenium/webdriver/common/action_builder.rb:198:in `perform'
    1292:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:357:in `block (3 levels) in <module:WebDriver>'
    1293:  # ------------------
    1294:  # --- Caused by: ---
    1295:  # Selenium::WebDriver::Error::WebDriverError:
    1296:  #   RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    1297:  WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    1298:  MoveTargetOutOfBoundsError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:479:5
    ...
    
    1301:  dispatch/pendingEvents<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:2019:14
    1302:  dispatch@chrome://remote/content/shared/webdriver/Actions.sys.mjs:2018:39
    1303:  dispatch/chainEvents<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1929:27
    1304:  dispatch@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1931:7
    1305:  performActions@chrome://remote/content/marionette/actors/MarionetteCommandsChild.sys.mjs:493:23
    1306:  receiveMessage@chrome://remote/content/marionette/actors/MarionetteCommandsChild.sys.mjs:144:31
    1307:  Failures:
    1308:  1) Selenium::WebDriver::ActionBuilder#move_to moves to element with offset FIXED
    1309:  Expected pending 'Test guarded; Guarded by {:browser=>:firefox, :platform=>[:windows, :macosx], :reason=>"Some issues with resolution?"};' to fail. No error was raised.
    1310:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:205
    1311:  Finished in 38.86 seconds (files took 0.50228 seconds to load)
    1312:  27 examples, 1 failure, 5 pending
    1313:  Failed examples:
    ...
    
    1342:  #double_click
    1343:  presses pointer twice
    1344:  executes with equivalent pointer methods
    1345:  #context_click
    1346:  right clicks an element
    1347:  executes with equivalent pointer methods
    1348:  #move_to
    1349:  moves to element
    1350:  moves to element with offset (FAILED - 1)
    ...
    
    1352:  moves one element to another
    1353:  #drag_and_drop_by
    1354:  moves one element a provided distance
    1355:  #move_to_location
    1356:  moves pointer to specified coordinates
    1357:  pen stylus
    1358:  sets pointer event properties (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"Unknown pointerType"};)
    1359:  #scroll_to
    1360:  scrolls to element (PENDING: Test guarded; Guarded by {:browser=>:firefox, :reason=>"incorrect MoveTargetOutOfBoundsError"};)
    1361:  #scroll_by
    1362:  scrolls by given amount (PENDING: Test guarded; Guarded by {:browser=>:firefox, :platform=>:macosx, :reason=>"scrolls insufficient number of pixels"};)
    1363:  #scroll_from
    1364:  scrolls from element by given amount (PENDING: Test guarded; Guarded by {:browser=>[:firefox, :safari], :reason=>"incorrect MoveTargetOutOfBoundsError"};)
    1365:  scrolls from element by given amount with offset (PENDING: Test guarded; Guarded by {:browser=>[:firefox, :safari], :reason=>"incorrect MoveTargetOutOfBoundsError"};)
    1366:  raises MoveTargetOutOfBoundsError when origin offset from element is out of viewport
    1367:  scrolls by given amount with offset
    1368:  raises MoveTargetOutOfBoundsError when origin offset is out of viewport
    1369:  Pending: (Failures listed here are expected and do not affect your suite's status)
    1370:  1) Selenium::WebDriver::ActionBuilder pen stylus sets pointer event properties
    1371:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"Unknown pointerType"};
    1372:  Failure/Error: actions.perform
    1373:  Selenium::WebDriver::Error::UnknownError:
    1374:  Error: Unimplemented pointerMove for pointerType pen
    1375:  # ./rb/lib/selenium/webdriver/remote/response.rb:62:in `add_cause'
    1376:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    1381:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    1382:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    1383:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:675:in `execute'
    1384:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:403:in `send_actions'
    1385:  # ./rb/lib/selenium/webdriver/common/action_builder.rb:198:in `perform'
    1386:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:282:in `block (3 levels) in <module:WebDriver>'
    1387:  # ------------------
    1388:  # --- Caused by: ---
    1389:  # Selenium::WebDriver::Error::WebDriverError:
    1390:  #   pointerMove@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1792:11
    1391:  performPointerMoveStep@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1178:25
    1392:  dispatch/<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1150:22
    1393:  moveOverTime/transitions<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1729:15
    1394:  2) Selenium::WebDriver::ActionBuilder#scroll_to scrolls to element
    1395:  # Test guarded; Guarded by {:browser=>:firefox, :reason=>"incorrect MoveTargetOutOfBoundsError"};
    1396:  Failure/Error: driver.action.scroll_to(iframe).perform
    1397:  Selenium::WebDriver::Error::MoveTargetOutOfBoundsError:
    1398:  Move target (410, 2898) is out of bounds of viewport dimensions (1280, 788)
    1399:  # ./rb/lib/selenium/webdriver/remote/response.rb:62:in `add_cause'
    1400:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    1405:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    1406:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    1407:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:675:in `execute'
    1408:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:403:in `send_actions'
    1409:  # ./rb/lib/selenium/webdriver/common/action_builder.rb:198:in `perform'
    1410:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:315:in `block (3 levels) in <module:WebDriver>'
    1411:  # ------------------
    1412:  # --- Caused by: ---
    1413:  # Selenium::WebDriver::Error::WebDriverError:
    1414:  #   RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    1415:  WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    1416:  MoveTargetOutOfBoundsError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:479:5
    ...
    
    1419:  dispatch/pendingEvents<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:2019:14
    1420:  dispatch@chrome://remote/content/shared/webdriver/Actions.sys.mjs:2018:39
    1421:  dispatch/chainEvents<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1929:27
    1422:  dispatch@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1931:7
    1423:  performActions@chrome://remote/content/marionette/actors/MarionetteCommandsChild.sys.mjs:493:23
    1424:  receiveMessage@chrome://remote/content/marionette/actors/MarionetteCommandsChild.sys.mjs:144:31
    1425:  3) Selenium::WebDriver::ActionBuilder#scroll_by scrolls by given amount
    1426:  # Test guarded; Guarded by {:browser=>:firefox, :platform=>:macosx, :reason=>"scrolls insufficient number of pixels"};
    1427:  Got 1 failure:
    1428:  3.1) Failure/Error: expect(in_viewport?(footer)).to be true
    1429:  expected true
    1430:  got false
    1431:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:332:in `block (3 levels) in <module:WebDriver>'
    1432:  4) Selenium::WebDriver::ActionBuilder#scroll_from scrolls from element by given amount
    1433:  # Test guarded; Guarded by {:browser=>[:firefox, :safari], :reason=>"incorrect MoveTargetOutOfBoundsError"};
    1434:  Failure/Error: driver.action.scroll_from(scroll_origin, 0, 200).perform
    1435:  Selenium::WebDriver::Error::MoveTargetOutOfBoundsError:
    1436:  Move target (410, 2898) is out of bounds of viewport dimensions (1280, 788)
    1437:  # ./rb/lib/selenium/webdriver/remote/response.rb:62:in `add_cause'
    1438:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    1443:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    1444:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    1445:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:675:in `execute'
    1446:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:403:in `send_actions'
    1447:  # ./rb/lib/selenium/webdriver/common/action_builder.rb:198:in `perform'
    1448:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:343:in `block (3 levels) in <module:WebDriver>'
    1449:  # ------------------
    1450:  # --- Caused by: ---
    1451:  # Selenium::WebDriver::Error::WebDriverError:
    1452:  #   RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    1453:  WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    1454:  MoveTargetOutOfBoundsError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:479:5
    ...
    
    1456:  dispatch@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1308:21
    1457:  dispatch/pendingEvents<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:2019:14
    1458:  dispatch@chrome://remote/content/shared/webdriver/Actions.sys.mjs:2018:39
    1459:  dispatch/chainEvents<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1929:27
    1460:  dispatch@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1931:7
    1461:  performActions@chrome://remote/content/marionette/actors/MarionetteCommandsChild.sys.mjs:493:23
    1462:  receiveMessage@chrome://remote/content/marionette/actors/MarionetteCommandsChild.sys.mjs:144:31
    1463:  5) Selenium::WebDriver::ActionBuilder#scroll_from scrolls from element by given amount with offset
    1464:  # Test guarded; Guarded by {:browser=>[:firefox, :safari], :reason=>"incorrect MoveTargetOutOfBoundsError"};
    1465:  Failure/Error: driver.action.scroll_from(scroll_origin, 0, 200).perform
    1466:  Selenium::WebDriver::Error::MoveTargetOutOfBoundsError:
    1467:  Move target (632, 2952) is out of bounds of viewport dimensions (1280, 788)
    1468:  # ./rb/lib/selenium/webdriver/remote/response.rb:62:in `add_cause'
    1469:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    1474:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    1475:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    1476:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:675:in `execute'
    1477:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:403:in `send_actions'
    1478:  # ./rb/lib/selenium/webdriver/common/action_builder.rb:198:in `perform'
    1479:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:357:in `block (3 levels) in <module:WebDriver>'
    1480:  # ------------------
    1481:  # --- Caused by: ---
    1482:  # Selenium::WebDriver::Error::WebDriverError:
    1483:  #   RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    1484:  WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    1485:  MoveTargetOutOfBoundsError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:479:5
    ...
    
    1488:  dispatch/pendingEvents<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:2019:14
    1489:  dispatch@chrome://remote/content/shared/webdriver/Actions.sys.mjs:2018:39
    1490:  dispatch/chainEvents<@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1929:27
    1491:  dispatch@chrome://remote/content/shared/webdriver/Actions.sys.mjs:1931:7
    1492:  performActions@chrome://remote/content/marionette/actors/MarionetteCommandsChild.sys.mjs:493:23
    1493:  receiveMessage@chrome://remote/content/marionette/actors/MarionetteCommandsChild.sys.mjs:144:31
    1494:  Failures:
    1495:  1) Selenium::WebDriver::ActionBuilder#move_to moves to element with offset FIXED
    1496:  Expected pending 'Test guarded; Guarded by {:browser=>:firefox, :platform=>[:windows, :macosx], :reason=>"Some issues with resolution?"};' to fail. No error was raised.
    1497:  # ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:205
    1498:  Finished in 40.62 seconds (files took 0.44255 seconds to load)
    1499:  27 examples, 1 failure, 5 pending
    1500:  Failed examples:
    1501:  rspec ./rb/spec/integration/selenium/webdriver/action_builder_spec.rb:205 # Selenium::WebDriver::ActionBuilder#move_to moves to element with offset
    1502:  ================================================================================
    1503:  �[32m[1,897 / 1,905]�[0m 15 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-firefox; 70s ... (4 actions, 1 running)
    1504:  �[32m[1,897 / 1,905]�[0m 15 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-firefox; 72s ... (4 actions, 1 running)
    1505:  �[32m[1,897 / 1,905]�[0m 15 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox; 44s ... (4 actions, 2 running)
    1506:  �[32m[1,898 / 1,905]�[0m 16 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox; 45s ... (4 actions, 1 running)
    1507:  �[32m[1,898 / 1,905]�[0m 16 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox; 48s ... (4 actions, 1 running)
    1508:  �[32m[1,898 / 1,905]�[0m 16 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox; 57s ... (4 actions, 1 running)
    1509:  �[32m[1,898 / 1,905]�[0m 16 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:window-firefox; 32s ... (4 actions, 2 running)
    1510:  �[32m[1,899 / 1,905]�[0m 17 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:window-firefox; 33s ... (4 actions, 1 running)
    1511:  �[32m[1,899 / 1,905]�[0m 17 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:window-firefox; 35s ... (4 actions, 1 running)
    1512:  �[32m[1,899 / 1,905]�[0m 17 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:window-firefox; 44s ... (4 actions, 1 running)
    1513:  �[32m[1,899 / 1,905]�[0m 17 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:target_locator-firefox; 52s ... (4 actions, 2 running)
    1514:  �[32m[1,900 / 1,905]�[0m 18 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:target_locator-firefox; 54s ... (4 actions, 1 running)
    1515:  �[32m[1,900 / 1,905]�[0m 18 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:target_locator-firefox; 55s ... (4 actions, 1 running)
    1516:  �[32m[1,900 / 1,905]�[0m 18 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:target_locator-firefox; 64s ... (4 actions, 1 running)
    1517:  �[32m[1,900 / 1,905]�[0m 18 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:shadow_root-firefox; 37s ... (4 actions, 2 running)
    1518:  �[32m[1,901 / 1,905]�[0m 19 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:shadow_root-firefox; 38s ... (4 actions, 1 running)
    1519:  �[32m[1,901 / 1,905]�[0m 19 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:shadow_root-firefox; 40s ... (4 actions, 1 running)
    1520:  �[32m[1,901 / 1,905]�[0m 19 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:shadow_root-firefox; 49s ... (4 actions, 1 running)
    1521:  �[32m[1,901 / 1,905]�[0m 19 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:select-firefox; 26s ... (4 actions, 2 running)
    1522:  �[32m[1,902 / 1,905]�[0m 20 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:select-firefox; 28s ... (3 actions, 1 running)
    1523:  �[32m[1,902 / 1,905]�[0m 20 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:select-firefox; 39s ... (3 actions, 1 running)
    1524:  �[32m[1,902 / 1,905]�[0m 20 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/firefox:profile-firefox; 33s ... (3 actions, 2 running)
    1525:  �[32m[1,903 / 1,905]�[0m 21 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/firefox:profile-firefox; 35s ... (2 actions, 1 running)
    1526:  �[32m[1,903 / 1,905]�[0m 21 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:select-firefox; 11s local, disk-cache ... (2 actions running)
    1527:  �[32m[1,904 / 1,905]�[0m 22 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:profile-firefox; 1s local, disk-cache
    1528:  �[32m[1,904 / 1,905]�[0m 22 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:profile-firefox; 13s local, disk-cache
    1529:  �[32m[1,904 / 1,905]�[0m 22 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:profile-firefox; 17s local, disk-cache
    1530:  �[32m[1,905 / 1,906]�[0m 23 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-firefox; 1s disk-cache
    1531:  �[32m[1,905 / 1,906]�[0m 23 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:devtools-firefox
    1532:  �[32m[1,905 / 1,906]�[0m 23 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-firefox; 1s local, disk-cache
    1533:  �[32m[1,905 / 1,906]�[0m 23 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-firefox; 202s local, disk-cache
    1534:  �[32m[1,906 / 1,907]�[0m 24 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-firefox; 1s disk-cache
    1535:  �[32m[1,906 / 1,907]�[0m 24 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:bidi-firefox
    1536:  �[32m[1,906 / 1,907]�[0m 24 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-firefox; 1s local, disk-cache
    1537:  �[32m[1,906 / 1,907]�[0m 24 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-firefox; 4s local, disk-cache
    1538:  �[32m[1,907 / 1,908]�[0m 25 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-firefox; 1s disk-cache
    1539:  �[32m[1,907 / 1,908]�[0m 25 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-firefox
    1540:  �[32m[1,907 / 1,908]�[0m 25 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-firefox; 1s local, disk-cache
    1541:  �[32m[1,907 / 1,908]�[0m 25 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-firefox; 4s local, disk-cache
    1542:  �[32m[1,908 / 1,909]�[0m 26 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-firefox; 1s disk-cache
    1543:  �[32m[1,908 / 1,909]�[0m 26 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:script-firefox
    1544:  �[32m[1,908 / 1,909]�[0m 26 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-firefox; 1s local, disk-cache
    1545:  �[32m[1,908 / 1,909]�[0m 26 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-firefox; 4s local, disk-cache
    1546:  �[32m[1,909 / 1,910]�[0m 27 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-firefox; 1s disk-cache
    1547:  �[32m[1,909 / 1,910]�[0m 27 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-firefox
    1548:  �[32m[1,909 / 1,910]�[0m 27 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-firefox; 1s local, disk-cache
    1549:  �[32m[1,909 / 1,910]�[0m 27 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-firefox; 4s local, disk-cache
    1550:  �[32mINFO: �[0mFound 28 test targets...
    1551:  �[32mINFO: �[0mElapsed time: 1340.501s, Critical Path: 307.39s
    1552:  �[32mINFO: �[0m1910 processes: 841 internal, 250 darwin-sandbox, 60 local, 759 worker.
    1553:  �[32mINFO: �[0mBuild completed, 1 test FAILED, 1910 total actions
    1554:  //rb/spec/integration/selenium/webdriver:bidi-firefox                    �[0m�[32mPASSED�[0m in 4.8s
    1555:  //rb/spec/integration/selenium/webdriver:devtools-firefox                �[0m�[32mPASSED�[0m in 202.7s
    1556:  //rb/spec/integration/selenium/webdriver:driver-firefox                  �[0m�[32mPASSED�[0m in 30.2s
    1557:  //rb/spec/integration/selenium/webdriver:element-firefox                 �[0m�[32mPASSED�[0m in 29.7s
    1558:  //rb/spec/integration/selenium/webdriver:error-firefox                   �[0m�[32mPASSED�[0m in 8.5s
    ...
    
    1573:  //rb/spec/integration/selenium/webdriver/bidi:browsing_context-firefox   �[0m�[32mPASSED�[0m in 4.7s
    1574:  //rb/spec/integration/selenium/webdriver/bidi:log_inspector-firefox      �[0m�[32mPASSED�[0m in 4.9s
    1575:  //rb/spec/integration/selenium/webdriver/bidi:script-firefox             �[0m�[32mPASSED�[0m in 4.7s
    1576:  //rb/spec/integration/selenium/webdriver/firefox:driver-firefox          �[0m�[32mPASSED�[0m in 26.4s
    1577:  //rb/spec/integration/selenium/webdriver/firefox:profile-firefox         �[0m�[32mPASSED�[0m in 17.2s
    1578:  //rb/spec/integration/selenium/webdriver/firefox:service-firefox         �[0m�[32mPASSED�[0m in 11.3s
    1579:  //rb/spec/integration/selenium/webdriver/remote:driver-firefox           �[0m�[32mPASSED�[0m in 6.2s
    1580:  //rb/spec/integration/selenium/webdriver/remote:element-firefox          �[0m�[32mPASSED�[0m in 23.7s
    1581:  //rb/spec/integration/selenium/webdriver:action_builder-firefox          �[0m�[31m�[1mFAILED�[0m in 3 out of 3 in 45.2s
    1582:  Stats over 3 runs: max = 45.2s, min = 40.6s, avg = 42.7s, dev = 1.9s
    1583:  /Users/runner/.bazel/execroot/_main/bazel-out/darwin_x86_64-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/action_builder-firefox/test.log
    1584:  /Users/runner/.bazel/execroot/_main/bazel-out/darwin_x86_64-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/action_builder-firefox/test_attempts/attempt_1.log
    1585:  /Users/runner/.bazel/execroot/_main/bazel-out/darwin_x86_64-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/action_builder-firefox/test_attempts/attempt_2.log
    1586:  Executed 28 out of 28 tests: 27 tests pass and �[0m�[31m�[1m1 fails locally�[0m.
    1587:  There were tests whose specified size is too big. Use the --test_verbose_timeout_warnings command line option to see which ones these are.
    1588:  �[0m
    1589:  ##[error]Process completed with exit code 3.
    ...
    
    1597:  ##[group]Save cache for external-_main~pin_browsers_extension~mac_firefox
    1598:  [command]/usr/local/bin/gtar --posix -cf cache.tzst --exclude cache.tzst -P -C /Users/runner/work/selenium/selenium --files-from manifest.txt --delay-directory-restore --use-compress-program zstdmt
    1599:  Cache Size: ~429 MB (449844540 B)
    1600:  Cache saved successfully
    1601:  Successfully saved cache
    1602:  ##[endgroup]
    1603:  ##[group]Save cache for external-aspect_rules_js~~pnpm~pnpm
    1604:  [command]/usr/local/bin/gtar --posix -cf cache.tzst --exclude cache.tzst -P -C /Users/runner/work/selenium/selenium --files-from manifest.txt --delay-directory-restore --use-compress-program zstdmt
    1605:  Failed to save: Unable to reserve cache with key setup-bazel-2-darwin-external-aspect_rules_js~~pnpm~pnpm-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, another job may be creating this cache. More details: Cache already exists. Scope: refs/pull/14273/merge, Key: setup-bazel-2-darwin-external-aspect_rules_js~~pnpm~pnpm-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, Version: 8fa5a2131a914773ff4ebeca373f0fa470173b03bfc9012b4dcd91eb02a2b188
    1606:  Successfully saved cache
    1607:  ##[endgroup]
    1608:  ##[group]Save cache for external-com_google_javascript_closure_library
    1609:  [command]/usr/local/bin/gtar --posix -cf cache.tzst --exclude cache.tzst -P -C /Users/runner/work/selenium/selenium --files-from manifest.txt --delay-directory-restore --use-compress-program zstdmt
    1610:  Failed to save: Unable to reserve cache with key setup-bazel-2-darwin-external-com_google_javascript_closure_library-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, another job may be creating this cache. More details: Cache already exists. Scope: refs/pull/14273/merge, Key: setup-bazel-2-darwin-external-com_google_javascript_closure_library-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, Version: 6c9fdf42ca0ad3b7ad51a21b0bb3b5c26068a37550798a8ddc356e0aeae975d5
    1611:  Successfully saved cache
    1612:  ##[endgroup]
    1613:  ##[group]Save cache for external-crates
    1614:  [command]/usr/local/bin/gtar --posix -cf cache.tzst --exclude cache.tzst -P -C /Users/runner/work/selenium/selenium --files-from manifest.txt --delay-directory-restore --use-compress-program zstdmt
    1615:  Failed to save: Unable to reserve cache with key setup-bazel-2-darwin-external-crates-9e74efac171432122b262019b91fcee0356b2181d743b935632da956caf8277c, another job may be creating this cache. More details: Cache already exists. Scope: refs/pull/14273/merge, Key: setup-bazel-2-darwin-external-crates-9e74efac171432122b262019b91fcee0356b2181d743b935632da956caf8277c, Version: 8476f6c954f4b6535dc95617ee1242dd27e35ce029a647f8a855b6fbe9b0977e
    1616:  Successfully saved cache
    1617:  ##[endgroup]
    1618:  ##[group]Save cache for external-protobuf~
    1619:  [command]/usr/local/bin/gtar --posix -cf cache.tzst --exclude cache.tzst -P -C /Users/runner/work/selenium/selenium --files-from manifest.txt --delay-directory-restore --use-compress-program zstdmt
    1620:  Failed to save: Unable to reserve cache with key setup-bazel-2-darwin-external-protobuf~-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, another job may be creating this cache. More details: Cache already exists. Scope: refs/pull/14273/merge, Key: setup-bazel-2-darwin-external-protobuf~-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, Version: 0e8011e5ff47e32a87117dceb526c74381473424e8dcf7cc7e5b86bfc8e55f64
    1621:  Successfully saved cache
    1622:  ##[endgroup]
    1623:  ##[group]Save cache for external-rules_java~~toolchains~remote_java_tools
    1624:  [command]/usr/local/bin/gtar --posix -cf cache.tzst --exclude cache.tzst -P -C /Users/runner/work/selenium/selenium --files-from manifest.txt --delay-directory-restore --use-compress-program zstdmt
    1625:  Failed to save: Unable to reserve cache with key setup-bazel-2-darwin-external-rules_java~~toolchains~remote_java_tools-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, another job may be creating this cache. More details: Cache already exists. Scope: refs/pull/14273/merge, Key: setup-bazel-2-darwin-external-rules_java~~toolchains~remote_java_tools-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, Version: 9fee025e23554f3244647abdf792241a3daf45d1a5dc0854dd3c0bdbc2c03541
    1626:  Successfully saved cache
    1627:  ##[endgroup]
    1628:  ##[group]Save cache for external-rules_java~~toolchains~remote_java_tools_darwin_x86_64
    1629:  [command]/usr/local/bin/gtar --posix -cf cache.tzst --exclude cache.tzst -P -C /Users/runner/work/selenium/selenium --files-from manifest.txt --delay-directory-restore --use-compress-program zstdmt
    1630:  Failed to save: Unable to reserve cache with key setup-bazel-2-darwin-external-rules_java~~toolchains~remote_java_tools_darwin_x86_64-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, another job may be creating this cache. More details: Cache already exists. Scope: refs/pull/14273/merge, Key: setup-bazel-2-darwin-external-rules_java~~toolchains~remote_java_tools_darwin_x86_64-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, Version: 51d88f358cddc69b3e1a9b98276206ed13a31449daf6e530f09afc64b7212721
    1631:  Successfully saved cache
    1632:  ##[endgroup]
    1633:  ##[group]Save cache for external-rules_java~~toolchains~remotejdk17_macos
    1634:  [command]/usr/local/bin/gtar --posix -cf cache.tzst --exclude cache.tzst -P -C /Users/runner/work/selenium/selenium --files-from manifest.txt --delay-directory-restore --use-compress-program zstdmt
    1635:  Failed to save: Unable to reserve cache with key setup-bazel-2-darwin-external-rules_java~~toolchains~remotejdk17_macos-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, another job may be creating this cache. More details: Cache already exists. Scope: refs/pull/14273/merge, Key: setup-bazel-2-darwin-external-rules_java~~toolchains~remotejdk17_macos-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, Version: d23f4be4d761095029d33e3eb58ca3b390e66fd881dd3d40479556de2fcf551f
    1636:  Successfully saved cache
    1637:  ##[endgroup]
    1638:  ##[group]Save cache for external-rules_java~~toolchains~remotejdk21_macos
    1639:  [command]/usr/local/bin/gtar --posix -cf cache.tzst --exclude cache.tzst -P -C /Users/runner/work/selenium/selenium --files-from manifest.txt --delay-directory-restore --use-compress-program zstdmt
    1640:  Failed to save: Unable to reserve cache with key setup-bazel-2-darwin-external-rules_java~~toolchains~remotejdk21_macos-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, another job may be creating this cache. More details: Cache already exists. Scope: refs/pull/14273/merge, Key: setup-bazel-2-darwin-external-rules_java~~toolchains~remotejdk21_macos-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, Version: 47c5e38fa59880de9c9d0001b8a19dcc71b30f510241bcf42675d5e406c0e65e
    1641:  Successfully saved cache
    1642:  ##[endgroup]
    1643:  ##[group]Save cache for external-rules_kotlin~
    1644:  [command]/usr/local/bin/gtar --posix -cf cache.tzst --exclude cache.tzst -P -C /Users/runner/work/selenium/selenium --files-from manifest.txt --delay-directory-restore --use-compress-program zstdmt
    1645:  Failed to save: Unable to reserve cache with key setup-bazel-2-darwin-external-rules_kotlin~-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, another job may be creating this cache. More details: Cache already exists. Scope: refs/pull/14273/merge, Key: setup-bazel-2-darwin-external-rules_kotlin~-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, Version: 7886129f2f512f9729d4648bbc6b1bdf4011d05c214f9b7fb9b43231b786110a
    1646:  Successfully saved cache
    1647:  ##[endgroup]
    1648:  ##[group]Save cache for external-rules_kotlin~~rules_kotlin_extensions~com_github_jetbrains_kotlin
    1649:  [command]/usr/local/bin/gtar --posix -cf cache.tzst --exclude cache.tzst -P -C /Users/runner/work/selenium/selenium --files-from manifest.txt --delay-directory-restore --use-compress-program zstdmt
    1650:  Failed to save: Unable to reserve cache with key setup-bazel-2-darwin-external-rules_kotlin~~rules_kotlin_extensions~com_github_jetbrains_kotlin-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, another job may be creating this cache. More details: Cache already exists. Scope: refs/pull/14273/merge, Key: setup-bazel-2-darwin-external-rules_kotlin~~rules_kotlin_extensions~com_github_jetbrains_kotlin-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, Version: 0760e866ee3ac6fd2947ab3c41d5564d2147bde8954ffefa75e80b6fb79959b7
    1651:  Successfully saved cache
    1652:  ##[endgroup]
    1653:  ##[group]Save cache for external-rules_nodejs~~node~nodejs_darwin_amd64
    1654:  [command]/usr/local/bin/gtar --posix -cf cache.tzst --exclude cache.tzst -P -C /Users/runner/work/selenium/selenium --files-from manifest.txt --delay-directory-restore --use-compress-program zstdmt
    1655:  Failed to save: Unable to reserve cache with key setup-bazel-2-darwin-external-rules_nodejs~~node~nodejs_darwin_amd64-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, another job may be creating this cache. More details: Cache already exists. Scope: refs/pull/14273/merge, Key: setup-bazel-2-darwin-external-rules_nodejs~~node~nodejs_darwin_amd64-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, Version: 061a9f91e422834ed2dc3d4d1220ae29f92a021e4cebbc65e968ae2b3f59a6e4
    1656:  Successfully saved cache
    1657:  ##[endgroup]
    1658:  ##[group]Save cache for external-rules_python~~python~python_3_8_x86_64-apple-darwin
    1659:  [command]/usr/local/bin/gtar --posix -cf cache.tzst --exclude cache.tzst -P -C /Users/runner/work/selenium/selenium --files-from manifest.txt --delay-directory-restore --use-compress-program zstdmt
    1660:  Failed to save: Unable to reserve cache with key setup-bazel-2-darwin-external-rules_python~~python~python_3_8_x86_64-apple-darwin-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, another job may be creating this cache. More details: Cache already exists. Scope: refs/pull/14273/merge, Key: setup-bazel-2-darwin-external-rules_python~~python~python_3_8_x86_64-apple-darwin-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, Version: 78d5add3dd6a62f3238c83b323fc402682ad1bfe4802f6af324167e5d9ca08bb
    1661:  Successfully saved cache
    1662:  ##[endgroup]
    1663:  ##[group]Save cache for external-rules_ruby~~ruby~ruby
    1664:  [command]/usr/local/bin/gtar --posix -cf cache.tzst --exclude cache.tzst -P -C /Users/runner/work/selenium/selenium --files-from manifest.txt --delay-directory-restore --use-compress-program zstdmt
    1665:  Failed to save: Unable to reserve cache with key setup-bazel-2-darwin-external-rules_ruby~~ruby~ruby-d6edae70cd62d3104b0d563527266eb3ee6ee8e8e0602fa8512a994cbd4bad03, another job may be creating this cache. More details: Cache already exists. Scope: refs/pull/14273/merge, Key: setup-bazel-2-darwin-external-rules_ruby~~ruby~ruby-d6edae70cd62d3104b0d563527266eb3ee6ee8e8e0602fa8512a994cbd4bad03, Version: b91fcc71bfbc0d7853b27f49cfe90493763511fa9f44ea74d2d9ce245ea37e70
    1666:  Successfully saved cache
    1667:  ##[endgroup]
    1668:  ##[group]Save cache for external-rules_rust
    1669:  [command]/usr/local/bin/gtar --posix -cf cache.tzst --exclude cache.tzst -P -C /Users/runner/work/selenium/selenium --files-from manifest.txt --delay-directory-restore --use-compress-program zstdmt
    1670:  Failed to save: Unable to reserve cache with key setup-bazel-2-darwin-external-rules_rust-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, another job may be creating this cache. More details: Cache already exists. Scope: refs/pull/14273/merge, Key: setup-bazel-2-darwin-external-rules_rust-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, Version: ce75584cf168322ee282160c4924a1c8b7a371d8850a5f80299f5b56d01a23d3
    1671:  Successfully saved cache
    1672:  ##[endgroup]
    1673:  ##[group]Save cache for external-rust_darwin_x86_64__x86_64-apple-darwin__stable_tools
    1674:  [command]/usr/local/bin/gtar --posix -cf cache.tzst --exclude cache.tzst -P -C /Users/runner/work/selenium/selenium --files-from manifest.txt --delay-directory-restore --use-compress-program zstdmt
    1675:  Failed to save: Unable to reserve cache with key setup-bazel-2-darwin-external-rust_darwin_x86_64__x86_64-apple-darwin__stable_tools-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, another job may be creating this cache. More details: Cache already exists. Scope: refs/pull/14273/merge, Key: setup-bazel-2-darwin-external-rust_darwin_x86_64__x86_64-apple-darwin__stable_tools-146e610ed574741464a4af3e433c699fc0ae837947ae0c1b8b9e247f94fbba5e, Version: e800896160bb6715826b2ab9c1b4d4630d3be630407763d679e368278189b12b
    

    ✨ CI feedback usage guide:

    The CI feedback tool (/checks) automatically triggers when a PR has a failed check.
    The tool analyzes the failed checks and provides several feedbacks:

    • Failed stage
    • Failed test name
    • Failure summary
    • Relevant error logs

    In addition to being automatically triggered, the tool can also be invoked manually by commenting on a PR:

    /checks "https://github.com/{repo_name}/actions/runs/{run_number}/job/{job_number}"
    

    where {repo_name} is the name of the repository, {run_number} is the run number of the failed check, and {job_number} is the job number of the failed check.

    Configuration options

    • enable_auto_checks_feedback - if set to true, the tool will automatically provide feedback when a check is failed. Default is true.
    • excluded_checks_list - a list of checks to exclude from the feedback, for example: ["check1", "check2"]. Default is an empty list.
    • enable_help_text - if set to true, the tool will provide a help message with the feedback. Default is true.
    • persistent_comment - if set to true, the tool will overwrite a previous checks comment with the new feedback. Default is true.
    • final_update_message - if persistent_comment is true and updating a previous checks message, the tool will also create a new message: "Persistent checks updated to latest commit". Default is true.

    See more information about the checks tool in the docs.

    @pujagani pujagani marked this pull request as ready for review July 18, 2024 12:11
    @pujagani pujagani merged commit 4df0a23 into trunk Jul 18, 2024
    25 of 29 checks passed
    @pujagani pujagani deleted the release-preparation-4.23.0 branch July 18, 2024 12:11
    Copy link
    Contributor

    PR Reviewer Guide 🔍

    ⏱️ Estimated effort to review: 4 🔵🔵🔵🔵⚪
    🧪 No relevant tests
    🔒 No security concerns identified
    ⚡ Key issues to review

    Code Duplication
    The new class v127Target duplicates significant logic from the previous versions, such as v124Target. Consider abstracting common functionalities into a shared class or utility to adhere to the DRY principle.

    Method Overriding
    The methods setUserAgentOverride, enableNetworkCaching, and disableNetworkCaching in v127Network override without changes. Review if overriding is necessary or if the base implementation can be used directly.

    Inheritance Design
    The class v127Events extends Events but does not introduce new methods or properties. Evaluate if extending is necessary or if the base class can be utilized directly to reduce complexity.

    Copy link
    Contributor

    PR Code Suggestions ✨

    CategorySuggestion                                                                                                                                    Score
    Best practice
    Add null check for the 'adapter' parameter in the constructor

    It's a good practice to validate the input parameter 'adapter' in the constructor to
    prevent the class from being instantiated with a null reference, which could lead to
    runtime errors.

    dotnet/src/webdriver/DevTools/v127/V127Log.cs [34]

     public V127Log(LogAdapter adapter)
    +{
    +    if (adapter == null) throw new ArgumentNullException(nameof(adapter));
    +    this.adapter = adapter;
    +}
     
    • Apply this suggestion
    Suggestion importance[1-10]: 9

    Why: Adding a null check for the 'adapter' parameter in the constructor is crucial for preventing runtime errors due to null references. This is a best practice for robust and defensive programming.

    9
    Make the 'adapter' field readonly to ensure immutability

    Consider using the readonly modifier for the adapter field if it is not intended to
    be modified after the object's construction. This can help ensure the immutability
    of the class instances, which is beneficial for multithreaded environments.

    dotnet/src/webdriver/DevTools/v127/V127Log.cs [28]

    -private LogAdapter adapter;
    +private readonly LogAdapter adapter;
     
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: Making the 'adapter' field readonly is a good practice for ensuring immutability, which can help prevent bugs in multithreaded environments. This is a significant improvement for code safety and maintainability.

    8
    Use a context manager for file handling to ensure proper resource management

    Use a context manager to handle file opening and reading to ensure that the file is
    properly closed after its contents are read.

    py/setup.py [34]

    -'long_description': open(join(abspath(dirname(__file__)), "README.rst")).read(),
    +'long_description': with open(join(abspath(dirname(__file__)), "README.rst")) as f:
    +    f.read(),
     
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: Using a context manager is a best practice for file handling in Python, ensuring proper resource management and preventing potential file-related issues.

    8
    Use factory methods for creating SessionID and TargetID instances

    Replace the direct instantiation of SessionID and TargetID with a factory method to
    ensure consistency and potentially reduce errors in object creation.

    java/src/org/openqa/selenium/devtools/v127/v127Target.java [43-45]

    -id -> new org.openqa.selenium.devtools.v127.target.model.SessionID(id.toString()),
    -id -> new org.openqa.selenium.devtools.v127.target.model.TargetID(id.toString())
    +id -> SessionID.create(id.toString()),
    +id -> TargetID.create(id.toString())
     
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    Why: Using factory methods can improve code consistency and reduce errors, but the current instantiation is not necessarily incorrect. This is a best practice suggestion rather than a critical fix.

    7
    Explicitly export __version__ to ensure it's available on module import

    Add an explicit export of version in the all list to ensure it is included
    when the module is imported.

    py/selenium/webdriver/init.py [47-50]

     __version__ = "4.23.0"
     __all__ = [
    +    '__version__',  # Explicitly export the version
     
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    Why: Explicitly exporting __version__ improves module usability and clarity, ensuring that the version information is accessible when the module is imported.

    7
    Sort version numbers in ascending order for clarity

    Ensure that the version numbers in SUPPORTED_DEVTOOLS_VERSIONS are in ascending
    order for better readability and maintenance.

    dotnet/selenium-dotnet-version.bzl [8-11]

     "v85",
     "v125",
     "v126",
    -"v127",
    +"v127",  # Ensure versions are in ascending order
     
    • Apply this suggestion
    Suggestion importance[1-10]: 4

    Why: While sorting version numbers can improve readability, the current order is already logical and clear. The improvement is minor.

    4
    Maintainability
    Use a base URL variable to simplify URL management and ensure consistency

    Consider using a variable for the common URL prefix in the http_file definitions to
    ensure consistency and simplify future updates.

    common/selenium_manager.bzl [10-24]

    -url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-f5351c6/selenium-manager-linux"
    -url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-f5351c6/selenium-manager-macos"
    -url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-f5351c6/selenium-manager-windows.exe"
    +BASE_URL = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-f5351c6/"
    +url = BASE_URL + "selenium-manager-linux"
    +url = BASE_URL + "selenium-manager-macos"
    +url = BASE_URL + "selenium-manager-windows.exe"
     
    • Apply this suggestion
    Suggestion importance[1-10]: 9

    Why: This suggestion improves maintainability by reducing redundancy and making future updates easier. It ensures consistency across the URLs.

    9
    Remove deprecated asyncCallStackTraceId from paused event

    Remove the deprecated asyncCallStackTraceId from the paused event, as it is marked
    never present and will be removed, to clean up the API.

    common/devtools/chromium/v127/js_protocol.pdl [593]

    -# Never present, will be removed.
    -experimental deprecated optional Runtime.StackTraceId asyncCallStackTraceId
    +# Removed deprecated and unused `asyncCallStackTraceId`.
     
    • Apply this suggestion
    Suggestion importance[1-10]: 9

    Why: Removing the deprecated asyncCallStackTraceId is a straightforward improvement that cleans up the API and aligns with the comment that it is never present and will be removed.

    9
    Remove deprecated Console domain and related functionalities

    Consider removing the deprecated Console domain and its related commands and events,
    as it is recommended to use Runtime or Log instead. This will help in reducing the
    maintenance overhead and potential confusion for new developers.

    common/devtools/chromium/v127/js_protocol.pdl [9-56]

    -deprecated domain Console
    -  depends on Runtime
    -  ...
    -  command disable
    -  ...
    -  event messageAdded
    +# Console domain and related functionalities have been removed. Use `Runtime` or `Log` instead.
     
    Suggestion importance[1-10]: 7

    Why: The suggestion to remove the deprecated Console domain is logical and would reduce maintenance overhead. However, it may not be immediately necessary and could impact backward compatibility.

    7
    Rename the class to follow C# naming conventions

    To follow the C# naming conventions, consider renaming the class V127Log to LogV127
    to indicate the version more clearly and maintain consistency with typical .NET
    naming patterns.

    dotnet/src/webdriver/DevTools/v127/V127Log.cs [26]

    -public class V127Log : DevTools.Log
    +public class LogV127 : DevTools.Log
     
    • Apply this suggestion
    Suggestion importance[1-10]: 6

    Why: Renaming the class to follow C# naming conventions improves code readability and maintainability. However, this change is more stylistic and less critical than functional improvements.

    6
    Error handling
    Add error handling for network operations to improve robustness

    Consider adding error handling for network operations to manage exceptions and
    provide feedback on failures.

    java/src/org/openqa/selenium/devtools/v127/v127Network.java [50-51]

    -return org.openqa.selenium.devtools.v127.network.Network.setUserAgentOverride(
    -    userAgent.userAgent(), userAgent.acceptLanguage(), userAgent.platform(), Optional.empty());
    +try {
    +    return org.openqa.selenium.devtools.v127.network.Network.setUserAgentOverride(
    +        userAgent.userAgent(), userAgent.acceptLanguage(), userAgent.platform(), Optional.empty());
    +} catch (NetworkException e) {
    +    LOG.error("Failed to set user agent override", e);
    +    throw e;
    +}
     
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: Adding error handling for network operations is important for robustness and reliability, making this a valuable improvement.

    8
    Implement specific exception handling for JSON parsing in event handling

    Use a more specific exception type in the catch block to handle parsing errors
    distinctly from other types of exceptions.

    java/src/org/openqa/selenium/devtools/v127/v127Events.java [104-107]

     return new Event<>(
         "Target.detachedFromTarget",
         input -> {
    -        Function<JsonInput, org.openqa.selenium.devtools.v127.target.model.TargetID> converter =
    -            ConverterFunctions.map(
    -                "targetId", org.openqa.selenium.devtools.v127.target.model.TargetID.class);
    -        return new TargetID(converter.apply(input).toString());
    +        try {
    +            Function<JsonInput, org.openqa.selenium.devtools.v127.target.model.TargetID> converter =
    +                ConverterFunctions.map(
    +                    "targetId", org.openqa.selenium.devtools.v127.target.model.TargetID.class);
    +            return new TargetID(converter.apply(input).toString());
    +        } catch (JsonParseException e) {
    +            LOG.error("JSON parsing error", e);
    +            throw new EventHandlingException("Failed to parse TargetID", e);
    +        }
         });
     
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: Implementing specific exception handling for JSON parsing can improve debugging and error management, making this a useful enhancement.

    8
    Enhancement
    Replace deprecated url field with location.scriptId in CallFrame

    Replace the deprecated url field in CallFrame with the recommended location.scriptId
    to resolve URLs, enhancing consistency and reducing deprecated API usage.

    common/devtools/chromium/v127/js_protocol.pdl [106-109]

    -# JavaScript script name or url.
    -# Deprecated in favor of using the `location.scriptId` to resolve the URL via a previously
    -# sent `Debugger.scriptParsed` event.
    -deprecated string url
    +# Use `location.scriptId` to resolve the URL via a previously sent `Debugger.scriptParsed` event.
    +# The `url` field is removed to encourage using the updated method.
     
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: Replacing the deprecated url field with location.scriptId improves consistency and reduces deprecated API usage, which is beneficial for maintainability and future-proofing the code.

    8
    Refactor the adapter initialization to use an auto-property for better readability and safety

    Instead of manually attaching the event handler in the constructor, consider using
    an auto-property for adapter with a private setter and initialize it directly. This
    approach can simplify the constructor and enhance readability.

    dotnet/src/webdriver/DevTools/v127/V127Log.cs [34-37]

    +public LogAdapter Adapter { get; private set; }
     public V127Log(LogAdapter adapter)
     {
    -    this.adapter = adapter;
    -    this.adapter.EntryAdded += OnAdapterEntryAdded;
    +    Adapter = adapter ?? throw new ArgumentNullException(nameof(adapter));
    +    Adapter.EntryAdded += OnAdapterEntryAdded;
     }
     
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    Why: Using an auto-property for 'adapter' with a private setter simplifies the constructor and enhances readability. This is a good enhancement for code clarity and safety, though not as critical as other suggestions.

    7
    Thread safety
    Ensure thread safety during the initialization of domain components

    Ensure thread safety for the initialization of domain components by using a
    synchronized block or similar mechanism.

    java/src/org/openqa/selenium/devtools/v127/v127Domains.java [39-43]

    -events = new v127Events(devtools);
    -js = new v127Javascript(devtools);
    -log = new v127Log();
    -network = new v127Network(devtools);
    -target = new v127Target();
    +synchronized(this) {
    +    events = new v127Events(devtools);
    +    js = new v127Javascript(devtools);
    +    log = new v127Log();
    +    network = new v127Network(devtools);
    +    target = new v127Target();
    +}
     
    • Apply this suggestion
    Suggestion importance[1-10]: 6

    Why: Ensuring thread safety is important, but the current context does not indicate a multi-threading issue. This suggestion is more precautionary than necessary.

    6

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    Projects
    None yet
    Development

    Successfully merging this pull request may close these issues.

    2 participants