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.22.0 #14163

Merged
merged 7 commits into from
Jun 20, 2024

Conversation

selenium-ci
Copy link
Member

@selenium-ci selenium-ci commented Jun 20, 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, Dependencies


Description

  • Updated DevTools implementation from v123 to v126 across multiple languages (Java, C#, Ruby, Python, JavaScript).
  • Updated Selenium and WebDriver versions to 4.22.0 across multiple languages.
  • Updated Maven dependencies to newer versions.
  • Added new authors to the AUTHORS file.
  • Updated build configurations to support v126.
  • Updated changelogs for version 4.22.0.
  • Updated pinned browser versions and Selenium Manager URLs.

Changes walkthrough 📝

Relevant files
Enhancement
23 files
v126Target.java
Update DevTools Target implementation to v126                       

java/src/org/openqa/selenium/devtools/v126/v126Target.java

  • Updated package references from v123 to v126.
  • Renamed class from v123Target to v126Target.
  • Updated method implementations to use v126 target model.
  • +12/-12 
    v126Network.java
    Update DevTools Network implementation to v126                     

    java/src/org/openqa/selenium/devtools/v126/v126Network.java

  • Updated package references from v123 to v126.
  • Renamed class from v123Network to v126Network.
  • Updated method implementations to use v126 network model.
  • +10/-10 
    v126Events.java
    Update DevTools Events implementation to v126                       

    java/src/org/openqa/selenium/devtools/v126/v126Events.java

  • Updated package references from v123 to v126.
  • Renamed class from v123Events to v126Events.
  • Updated method implementations to use v126 runtime model.
  • +9/-9     
    v126Domains.java
    Update DevTools Domains implementation to v126                     

    java/src/org/openqa/selenium/devtools/v126/v126Domains.java

  • Updated package references from v123 to v126.
  • Renamed class from v123Domains to v126Domains.
  • Updated method implementations to use v126 domain models.
  • +13/-13 
    v126Javascript.java
    Update DevTools Javascript implementation to v126               

    java/src/org/openqa/selenium/devtools/v126/v126Javascript.java

  • Updated package references from v123 to v126.
  • Renamed class from v123Javascript to v126Javascript.
  • Updated method implementations to use v126 page and runtime models.
  • +7/-7     
    v126Log.java
    Update DevTools Log implementation to v126                             

    java/src/org/openqa/selenium/devtools/v126/v126Log.java

  • Updated package references from v123 to v126.
  • Renamed class from v123Log to v126Log.
  • Updated method implementations to use v126 log model.
  • +5/-5     
    v126CdpInfo.java
    Update DevTools CDP Info to v126                                                 

    java/src/org/openqa/selenium/devtools/v126/v126CdpInfo.java

  • Updated package references from v123 to v126.
  • Renamed class from v123CdpInfo to v126CdpInfo.
  • Updated constructor to use v126Domains.
  • +4/-4     
    V126Domains.cs
    Update .NET DevTools Domains to v126                                         

    dotnet/src/webdriver/DevTools/v126/V126Domains.cs

  • Updated namespace from V123 to V126.
  • Renamed class from V123Domains to V126Domains.
  • Updated DevTools version to 126.
  • +11/-11 
    V126Network.cs
    Update .NET DevTools Network to v126                                         

    dotnet/src/webdriver/DevTools/v126/V126Network.cs

  • Updated namespace from V123 to V126.
  • Renamed class from V123Network to V126Network.
  • Updated method implementations to use v126 network and fetch models.
  • +12/-12 
    V126JavaScript.cs
    Update .NET DevTools JavaScript to v126                                   

    dotnet/src/webdriver/DevTools/v126/V126JavaScript.cs

  • Updated namespace from V123 to V126.
  • Renamed class from V123JavaScript to V126JavaScript.
  • Updated method implementations to use v126 runtime and page models.
  • +8/-8     
    V126Target.cs
    Update .NET DevTools Target to v126                                           

    dotnet/src/webdriver/DevTools/v126/V126Target.cs

  • Updated namespace from V123 to V126.
  • Renamed class from V123Target to V126Target.
  • Updated method implementations to use v126 target model.
  • +7/-7     
    V126Log.cs
    Update .NET DevTools Log to v126                                                 

    dotnet/src/webdriver/DevTools/v126/V126Log.cs

  • Updated namespace from V123 to V126.
  • Renamed class from V123Log to V126Log.
  • Updated method implementations to use v126 log model.
  • +7/-7     
    DevToolsDomains.cs
    Add support for DevTools v126 in .NET                                       

    dotnet/src/webdriver/DevTools/DevToolsDomains.cs

    • Updated supported DevTools versions to include v126.
    +1/-1     
    StableChannelChromeDriver.cs
    Update default ChromeDriver version to 126                             

    dotnet/test/common/CustomDriverConfigs/StableChannelChromeDriver.cs

    • Updated default browser version to 126.
    +1/-1     
    version.rb
    Update Ruby DevTools version to 0.126.0                                   

    rb/lib/selenium/devtools/version.rb

    • Updated DevTools version to 0.126.0.
    +1/-1     
    version.rb
    Update Ruby WebDriver version to 4.22.0                                   

    rb/lib/selenium/webdriver/version.rb

    • Updated WebDriver version to 4.22.0.
    +1/-1     
    selenium-dotnet-version.bzl
    Update .NET Selenium version and DevTools support               

    dotnet/selenium-dotnet-version.bzl

  • Updated Selenium version to 4.22.0.
  • Updated supported DevTools versions to include v126.
  • +2/-2     
    __init__.py
    Update Python WebDriver version to 4.22.0                               

    py/selenium/webdriver/init.py

    • Updated WebDriver version to 4.22.0.
    +1/-1     
    setup.py
    Update Python package version to 4.22.0                                   

    py/setup.py

    • Updated package version to 4.22.0.
    +1/-1     
    versions.bzl
    Add support for CDP v126 in Java                                                 

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

    • Updated supported CDP versions to include v126.
    +1/-1     
    __init__.py
    Update Python Selenium version to 4.22.0                                 

    py/selenium/init.py

    • Updated version to 4.22.0.
    +1/-1     
    version.bzl
    Update Java Selenium version to 4.22.0                                     

    java/version.bzl

    • Updated Selenium version to 4.22.0.
    +1/-1     
    js_protocol.pdl
    Add new protocol definition for v126                                         

    common/devtools/chromium/v126/js_protocol.pdl

    • Added new protocol definition for v126.
    +1807/-1
    Tests
    8 files
    DevToolsTargetTest.cs
    Update DevTools Target Test to v126                                           

    dotnet/test/common/DevTools/DevToolsTargetTest.cs

    • Updated CurrentCdpVersion to V126.
    • Updated test ID to 126.
    +3/-3     
    DevToolsConsoleTest.cs
    Update DevTools Console Test to v126                                         

    dotnet/test/common/DevTools/DevToolsConsoleTest.cs

    • Updated CurrentCdpVersion to V126.
    +2/-2     
    DevToolsNetworkTest.cs
    Update DevTools Network Test to v126                                         

    dotnet/test/common/DevTools/DevToolsNetworkTest.cs

    • Updated CurrentCdpVersion to V126.
    +2/-2     
    DevToolsPerformanceTest.cs
    Update DevTools Performance Test to v126                                 

    dotnet/test/common/DevTools/DevToolsPerformanceTest.cs

    • Updated CurrentCdpVersion to V126.
    +2/-2     
    DevToolsProfilerTest.cs
    Update DevTools Profiler Test to v126                                       

    dotnet/test/common/DevTools/DevToolsProfilerTest.cs

    • Updated CurrentCdpVersion to V126.
    +2/-2     
    DevToolsSecurityTest.cs
    Update DevTools Security Test to v126                                       

    dotnet/test/common/DevTools/DevToolsSecurityTest.cs

    • Updated CurrentCdpVersion to V126.
    +2/-2     
    DevToolsTabsTest.cs
    Update DevTools Tabs Test to v126                                               

    dotnet/test/common/DevTools/DevToolsTabsTest.cs

    • Updated CurrentCdpVersion to V126.
    +2/-2     
    DevToolsLogTest.cs
    Update DevTools Log Test to v126                                                 

    dotnet/test/common/DevTools/DevToolsLogTest.cs

    • Updated CurrentCdpVersion to V126.
    +1/-1     
    Dependencies
    5 files
    repositories.bzl
    Update pinned Firefox versions and URLs                                   

    common/repositories.bzl

    • Updated Firefox versions and URLs for Linux and Mac.
    +8/-8     
    selenium_manager.bzl
    Update Selenium Manager versions and URLs                               

    common/selenium_manager.bzl

  • Updated Selenium Manager versions and URLs for Linux, Mac, and
    Windows.
  • +6/-6     
    MODULE.bazel
    Update Maven dependencies                                                               

    MODULE.bazel

    • Updated Maven dependencies to newer versions.
    +25/-25 
    package-lock.json
    Update package-lock.json for 4.22.0                                           

    package-lock.json

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

    javascript/node/selenium-webdriver/package.json

    • Updated version to 4.22.0.
    +1/-1     
    Documentation
    7 files
    conf.py
    Update Python documentation version to 4.22.0                       

    py/docs/source/conf.py

    • Updated release version to 4.22.0.
    +1/-1     
    AUTHORS
    Add new authors to AUTHORS file                                                   

    AUTHORS

    • Added new authors to the AUTHORS file.
    +6/-0     
    CHANGELOG
    Update Java changelog for 4.22.0                                                 

    java/CHANGELOG

    • Added changelog entries for version 4.22.0.
    +16/-0   
    CHANGES
    Update Ruby changelog for 4.22.0                                                 

    rb/CHANGES

    • Added changelog entries for version 4.22.0.
    +14/-0   
    CHANGES
    Update Python changelog for 4.22.0                                             

    py/CHANGES

    • Added changelog entries for version 4.22.0.
    +11/-0   
    CHANGES.md
    Update JavaScript changelog for 4.22.0                                     

    javascript/node/selenium-webdriver/CHANGES.md

    • Added changelog entries for version 4.22.0.
    +8/-0     
    CHANGELOG
    Update .NET changelog for 4.22.0                                                 

    dotnet/CHANGELOG

    • Added changelog entries for version 4.22.0.
    +8/-0     
    Configuration changes
    7 files
    BUILD.bazel
    Add build rules for v126 protocol files                                   

    common/devtools/chromium/v126/BUILD.bazel

    • Added build rules for v126 protocol files.
    +38/-1   
    WebDriver.csproj
    Update .NET build command for v126 CDP                                     

    dotnet/src/webdriver/WebDriver.csproj

    • Updated build command to generate v126 CDP.
    +1/-1     
    Rakefile
    Update Rakefile for Java release targets                                 

    Rakefile

    • Updated Java release targets to include v126.
    +1/-1     
    BUILD.bazel
    Update JavaScript build configuration for 4.22.0                 

    javascript/node/selenium-webdriver/BUILD.bazel

  • Updated version to 4.22.0.
  • Updated supported browser versions to include v126.
  • +2/-2     
    BUILD.bazel
    Update Python build configuration for 4.22.0                         

    py/BUILD.bazel

  • Updated version to 4.22.0.
  • Updated supported browser versions to include v126.
  • +2/-2     
    BUILD.bazel
    Update build configuration for v126                                           

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

    • Updated CDP version to v126.
    +1/-1     
    BUILD.bazel
    Update Ruby build configuration for v126                                 

    rb/lib/selenium/devtools/BUILD.bazel

    • Updated CDP version to v126.
    +1/-1     

    💡 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 Jun 20, 2024
    Copy link
    Contributor

    qodo-merge-pro bot commented Jun 20, 2024

    CI Failure Feedback 🧐

    (Checks updated until commit b45c8b5)

    Action: Ruby / Remote Tests (edge, windows) / Remote Tests (edge, windows)

    Failed stage: Run Bazel [❌]

    Failed test name: Selenium::WebDriver::Driver one element raises if invalid locator

    Failure summary:

    The action failed because the test Selenium::WebDriver::Driver one element raises if invalid locator
    failed. The test failed due to the following reasons:

  • The test expected an InvalidSelectorError to be raised when an invalid XPath expression '?//-' was
    used.
  • Instead, a JavascriptError was raised with the message indicating that the string '?//-' is not a
    valid XPath expression.

  • Relevant error logs:
    1:  ##[group]Operating System
    2:  Microsoft Windows Server 2022
    ...
    
    728:  �[32m[2,961 / 3,105]�[0m Running bundle install (@bundle//:bundle); 57s local, disk-cache ... (4 actions, 3 running)
    729:  �[32m[2,967 / 3,105]�[0m Running bundle install (@bundle//:bundle); 58s local, disk-cache ... (3 actions running)
    730:  �[32m[2,973 / 3,105]�[0m Running bundle install (@bundle//:bundle); 59s local, disk-cache ... (2 actions, 1 running)
    731:  �[32m[2,974 / 3,105]�[0m Running bundle install (@bundle//:bundle); 61s local, disk-cache ... (2 actions, 1 running)
    732:  �[32m[2,974 / 3,105]�[0m Running bundle install (@bundle//:bundle); 62s local, disk-cache ... (2 actions running)
    733:  �[32m[2,975 / 3,105]�[0m Running bundle install (@bundle//:bundle); 64s local, disk-cache ... (2 actions, 1 running)
    734:  �[32m[2,980 / 3,105]�[0m Running bundle install (@bundle//:bundle); 65s local, disk-cache ... (4 actions, 3 running)
    735:  �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (66 source files):
    736:  java\src\org\openqa\selenium\remote\ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    737:  private final ErrorCodes errorCodes;
    738:  ^
    739:  java\src\org\openqa\selenium\remote\ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    740:  this.errorCodes = new ErrorCodes();
    741:  ^
    742:  java\src\org\openqa\selenium\remote\ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    743:  public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {
    744:  ^
    745:  java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    746:  ErrorCodes errorCodes = new ErrorCodes();
    747:  ^
    748:  java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    749:  ErrorCodes errorCodes = new ErrorCodes();
    750:  ^
    751:  java\src\org\openqa\selenium\remote\ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    752:  response.setStatus(ErrorCodes.SUCCESS);
    753:  ^
    754:  java\src\org\openqa\selenium\remote\ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    755:  response.setState(ErrorCodes.SUCCESS_STRING);
    756:  ^
    757:  java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    758:  new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));
    759:  ^
    760:  java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    761:  new ErrorCodes().getExceptionType((String) rawError);
    762:  ^
    763:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    764:  private final ErrorCodes errorCodes = new ErrorCodes();
    765:  ^
    766:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    767:  private final ErrorCodes errorCodes = new ErrorCodes();
    768:  ^
    769:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:55: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    770:  int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;
    771:  ^
    772:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:101: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    773:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
    774:  ^
    775:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:103: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    776:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
    777:  ^
    778:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:124: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    779:  response.setStatus(ErrorCodes.SUCCESS);
    780:  ^
    781:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:125: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    782:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
    783:  ^
    784:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:131: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    785:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
    786:  ^
    787:  java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    788:  private final ErrorCodes errorCodes = new ErrorCodes();
    789:  ^
    790:  java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    791:  private final ErrorCodes errorCodes = new ErrorCodes();
    792:  ^
    793:  java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:93: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    794:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
    795:  ^
    796:  java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:98: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    797:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
    798:  ^
    799:  java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:145: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    800:  response.setStatus(ErrorCodes.SUCCESS);
    ...
    
    979:  �[32m[3,112 / 3,128]�[0m 7 / 28 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 202s local, disk-cache ... (4 actions, 2 running)
    980:  �[32m[3,113 / 3,128]�[0m 8 / 28 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 203s local, disk-cache ... (4 actions, 1 running)
    981:  �[32m[3,113 / 3,128]�[0m 8 / 28 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 213s local, disk-cache ... (4 actions, 1 running)
    982:  �[32m[3,113 / 3,128]�[0m 8 / 28 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 215s local, disk-cache ... (4 actions, 1 running)
    983:  �[32m[3,113 / 3,128]�[0m 8 / 28 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 236s local, disk-cache ... (4 actions, 2 running)
    984:  �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver:driver-edge-remote (see D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/driver-edge-remote/test.log)
    985:  ==================== Test output for //rb/spec/integration/selenium/webdriver:driver-edge-remote:
    986:  2024-06-20 19:45:32 INFO Selenium Server Location: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/bin/rb/spec/integration/selenium/webdriver/driver-edge-remote.cmd.runfiles/_main/java/src/org/openqa/selenium/grid/selenium_server_deploy.jar
    987:  �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver:driver-edge-remote (Summary)
    ...
    
    1013:  finds by xpath
    1014:  finds by css selector
    1015:  finds by tag name
    1016:  finds above another
    1017:  finds child element
    1018:  finds child element by tag name
    1019:  finds elements with the shortcut syntax
    1020:  raises if element not found
    1021:  raises if invalid locator (FAILED - 1)
    ...
    
    1051:  is able to pass element arguments
    1052:  is able to pass in multiple arguments
    1053:  execute async script
    1054:  is able to return arrays of primitives from async scripts
    1055:  is able to pass multiple arguments to async scripts
    1056:  times out if the callback is not invoked
    1057:  Failures:
    1058:  1) Selenium::WebDriver::Driver one element raises if invalid locator
    1059:  Failure/Error:
    1060:  expect {
    1061:  driver.find_element(xpath: '*?//-')
    1062:  }.to raise_error(Error::InvalidSelectorError, /errors#invalid-selector-exception/)
    1063:  expected Selenium::WebDriver::Error::InvalidSelectorError with message matching /errors#invalid-selector-exception/, got #<Selenium::WebDriver::Error::JavascriptError: javascript error: {"status":32,"value":"Unable to loca...The string '*?//-' is not a valid XPath expression."}
    ...
    
    1097:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    1098:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:635:in `execute'
    1099:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:543:in `find_element_by'
    1100:  # ./rb/lib/selenium/webdriver/common/search_context.rb:71:in `find_element'
    1101:  # ./rb/spec/integration/selenium/webdriver/driver_spec.rb:154:in `block (4 levels) in <module:WebDriver>'
    1102:  # ./rb/spec/integration/selenium/webdriver/driver_spec.rb:153:in `block (3 levels) in <module:WebDriver>'
    1103:  # ./rb/spec/integration/selenium/webdriver/driver_spec.rb:153:in `block (3 levels) in <module:WebDriver>'
    1104:  Finished in 26.94 seconds (files took 0.65963 seconds to load)
    1105:  51 examples, 1 failure
    1106:  Failed examples:
    ...
    
    1132:  finds by xpath
    1133:  finds by css selector
    1134:  finds by tag name
    1135:  finds above another
    1136:  finds child element
    1137:  finds child element by tag name
    1138:  finds elements with the shortcut syntax
    1139:  raises if element not found
    1140:  raises if invalid locator (FAILED - 1)
    ...
    
    1170:  is able to pass element arguments
    1171:  is able to pass in multiple arguments
    1172:  execute async script
    1173:  is able to return arrays of primitives from async scripts
    1174:  is able to pass multiple arguments to async scripts
    1175:  times out if the callback is not invoked
    1176:  Failures:
    1177:  1) Selenium::WebDriver::Driver one element raises if invalid locator
    1178:  Failure/Error:
    1179:  expect {
    1180:  driver.find_element(xpath: '*?//-')
    1181:  }.to raise_error(Error::InvalidSelectorError, /errors#invalid-selector-exception/)
    1182:  expected Selenium::WebDriver::Error::InvalidSelectorError with message matching /errors#invalid-selector-exception/, got #<Selenium::WebDriver::Error::JavascriptError: javascript error: {"status":32,"value":"Unable to loca...The string '*?//-' is not a valid XPath expression."}
    ...
    
    1216:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    1217:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:635:in `execute'
    1218:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:543:in `find_element_by'
    1219:  # ./rb/lib/selenium/webdriver/common/search_context.rb:71:in `find_element'
    1220:  # ./rb/spec/integration/selenium/webdriver/driver_spec.rb:154:in `block (4 levels) in <module:WebDriver>'
    1221:  # ./rb/spec/integration/selenium/webdriver/driver_spec.rb:153:in `block (3 levels) in <module:WebDriver>'
    1222:  # ./rb/spec/integration/selenium/webdriver/driver_spec.rb:153:in `block (3 levels) in <module:WebDriver>'
    1223:  Finished in 26.8 seconds (files took 0.64547 seconds to load)
    1224:  51 examples, 1 failure
    1225:  Failed examples:
    ...
    
    1251:  finds by xpath
    1252:  finds by css selector
    1253:  finds by tag name
    1254:  finds above another
    1255:  finds child element
    1256:  finds child element by tag name
    1257:  finds elements with the shortcut syntax
    1258:  raises if element not found
    1259:  raises if invalid locator (FAILED - 1)
    ...
    
    1289:  is able to pass element arguments
    1290:  is able to pass in multiple arguments
    1291:  execute async script
    1292:  is able to return arrays of primitives from async scripts
    1293:  is able to pass multiple arguments to async scripts
    1294:  times out if the callback is not invoked
    1295:  Failures:
    1296:  1) Selenium::WebDriver::Driver one element raises if invalid locator
    1297:  Failure/Error:
    1298:  expect {
    1299:  driver.find_element(xpath: '*?//-')
    1300:  }.to raise_error(Error::InvalidSelectorError, /errors#invalid-selector-exception/)
    1301:  expected Selenium::WebDriver::Error::InvalidSelectorError with message matching /errors#invalid-selector-exception/, got #<Selenium::WebDriver::Error::JavascriptError: javascript error: {"status":32,"value":"Unable to loca...The string '*?//-' is not a valid XPath expression."}
    ...
    
    1335:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    1336:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:635:in `execute'
    1337:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:543:in `find_element_by'
    1338:  # ./rb/lib/selenium/webdriver/common/search_context.rb:71:in `find_element'
    1339:  # ./rb/spec/integration/selenium/webdriver/driver_spec.rb:154:in `block (4 levels) in <module:WebDriver>'
    1340:  # ./rb/spec/integration/selenium/webdriver/driver_spec.rb:153:in `block (3 levels) in <module:WebDriver>'
    1341:  # ./rb/spec/integration/selenium/webdriver/driver_spec.rb:153:in `block (3 levels) in <module:WebDriver>'
    1342:  Finished in 26.78 seconds (files took 0.67558 seconds to load)
    1343:  51 examples, 1 failure
    1344:  Failed examples:
    1345:  rspec ./rb/spec/integration/selenium/webdriver/driver_spec.rb:150 # Selenium::WebDriver::Driver one element raises if invalid locator
    1346:  ================================================================================
    1347:  �[32m[3,114 / 3,128]�[0m 9 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:select-edge-remote; 53s ... (4 actions, 1 running)
    1348:  �[32m[3,114 / 3,128]�[0m 9 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:select-edge-remote; 64s ... (4 actions, 1 running)
    1349:  �[32m[3,114 / 3,128]�[0m 9 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:select-edge-remote; 65s ... (4 actions, 1 running)
    1350:  �[32m[3,114 / 3,128]�[0m 9 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 39s ... (4 actions, 2 running)
    1351:  �[32m[3,115 / 3,128]�[0m 10 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 41s ... (4 actions, 1 running)
    1352:  �[32m[3,115 / 3,128]�[0m 10 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 51s ... (4 actions, 1 running)
    1353:  �[32m[3,115 / 3,128]�[0m 10 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 53s ... (4 actions, 1 running)
    1354:  �[32m[3,115 / 3,128]�[0m 10 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 30s ... (4 actions, 2 running)
    1355:  �[32m[3,116 / 3,128]�[0m 11 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 32s ... (4 actions, 1 running)
    1356:  �[32m[3,116 / 3,128]�[0m 11 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 41s ... (4 actions, 1 running)
    1357:  �[32m[3,116 / 3,128]�[0m 11 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 43s ... (4 actions, 1 running)
    1358:  �[32m[3,116 / 3,128]�[0m 11 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 27s ... (4 actions, 2 running)
    1359:  �[32m[3,117 / 3,128]�[0m 12 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 29s ... (4 actions, 1 running)
    1360:  �[32m[3,117 / 3,128]�[0m 12 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 39s ... (4 actions, 1 running)
    1361:  �[32m[3,117 / 3,128]�[0m 12 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 40s ... (4 actions, 1 running)
    1362:  �[32m[3,117 / 3,128]�[0m 12 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote; 20s ... (4 actions, 2 running)
    1363:  �[32m[3,118 / 3,128]�[0m 13 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote; 21s ... (4 actions, 1 running)
    1364:  �[32m[3,118 / 3,128]�[0m 13 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote; 31s ... (4 actions, 1 running)
    1365:  �[32m[3,118 / 3,128]�[0m 13 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote; 33s ... (4 actions, 1 running)
    1366:  �[32m[3,118 / 3,128]�[0m 13 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 28s ... (4 actions, 2 running)
    1367:  �[32m[3,119 / 3,128]�[0m 14 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 30s ... (4 actions, 1 running)
    1368:  �[32m[3,119 / 3,128]�[0m 14 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 39s ... (4 actions, 1 running)
    1369:  �[32m[3,119 / 3,128]�[0m 14 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 41s ... (4 actions, 1 running)
    1370:  �[32m[3,119 / 3,128]�[0m 14 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 48s ... (4 actions, 2 running)
    1371:  �[32m[3,120 / 3,128]�[0m 15 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 49s ... (4 actions, 1 running)
    1372:  �[32m[3,120 / 3,128]�[0m 15 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 59s ... (4 actions, 1 running)
    1373:  �[32m[3,120 / 3,128]�[0m 15 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 60s ... (4 actions, 1 running)
    1374:  �[32m[3,120 / 3,128]�[0m 15 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:zipper-edge-remote; 39s ... (4 actions, 2 running)
    1375:  �[32m[3,121 / 3,128]�[0m 16 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:zipper-edge-remote; 41s ... (4 actions, 1 running)
    1376:  �[32m[3,121 / 3,128]�[0m 16 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:zipper-edge-remote; 51s ... (4 actions, 1 running)
    1377:  �[32m[3,121 / 3,128]�[0m 16 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:zipper-edge-remote; 52s ... (4 actions, 1 running)
    1378:  �[32m[3,121 / 3,128]�[0m 16 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 24s ... (4 actions, 2 running)
    1379:  �[32m[3,122 / 3,128]�[0m 17 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 26s ... (4 actions, 1 running)
    1380:  �[32m[3,122 / 3,128]�[0m 17 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 36s ... (4 actions, 1 running)
    1381:  �[32m[3,122 / 3,128]�[0m 17 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 37s ... (4 actions, 1 running)
    1382:  �[32m[3,122 / 3,128]�[0m 17 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/remote:element-edge-remote; 24s ... (4 actions, 2 running)
    1383:  �[32m[3,123 / 3,128]�[0m 18 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/remote:element-edge-remote; 25s ... (4 actions, 1 running)
    1384:  �[32m[3,123 / 3,128]�[0m 18 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/remote:element-edge-remote; 36s ... (4 actions, 1 running)
    1385:  �[32m[3,123 / 3,128]�[0m 18 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/remote:element-edge-remote; 38s ... (4 actions, 1 running)
    1386:  �[32m[3,123 / 3,128]�[0m 18 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 20s ... (4 actions, 2 running)
    1387:  �[32m[3,124 / 3,128]�[0m 19 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 22s ... (4 actions, 1 running)
    1388:  �[32m[3,124 / 3,128]�[0m 19 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 31s ... (4 actions, 1 running)
    1389:  �[32m[3,124 / 3,128]�[0m 19 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 33s ... (4 actions, 1 running)
    1390:  �[32m[3,124 / 3,128]�[0m 19 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:window-edge-remote; 21s ... (4 actions, 2 running)
    1391:  �[32m[3,125 / 3,128]�[0m 20 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:window-edge-remote; 22s ... (3 actions, 1 running)
    1392:  �[32m[3,125 / 3,128]�[0m 20 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:window-edge-remote; 32s ... (3 actions, 1 running)
    1393:  �[32m[3,125 / 3,128]�[0m 20 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:shadow_root-edge-remote; 31s ... (3 actions, 2 running)
    1394:  �[32m[3,126 / 3,128]�[0m 21 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:shadow_root-edge-remote; 33s ... (2 actions, 1 running)
    1395:  �[32m[3,126 / 3,128]�[0m 21 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:shadow_root-edge-remote; 43s ... (2 actions, 1 running)
    1396:  �[32m[3,126 / 3,128]�[0m 21 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:window-edge-remote; 17s local, disk-cache ... (2 actions running)
    1397:  �[32m[3,127 / 3,128]�[0m 22 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:shadow_root-edge-remote; 1s local, disk-cache
    1398:  �[32m[3,127 / 3,128]�[0m 22 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:shadow_root-edge-remote; 11s local, disk-cache
    1399:  �[32m[3,127 / 3,128]�[0m 22 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:shadow_root-edge-remote; 28s local, disk-cache
    1400:  �[32m[3,128 / 3,129]�[0m 23 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 0s disk-cache
    1401:  �[32m[3,128 / 3,129]�[0m 23 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote
    1402:  �[32m[3,128 / 3,129]�[0m 23 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 1s local, disk-cache
    1403:  �[32m[3,128 / 3,129]�[0m 23 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 14s local, disk-cache
    1404:  �[32m[3,129 / 3,130]�[0m 24 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 0s disk-cache
    1405:  �[32m[3,129 / 3,130]�[0m 24 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote
    1406:  �[32m[3,129 / 3,130]�[0m 24 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 1s local, disk-cache
    1407:  �[32m[3,129 / 3,130]�[0m 24 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 85s local, disk-cache
    1408:  �[32m[3,130 / 3,131]�[0m 25 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 0s disk-cache
    1409:  �[32m[3,130 / 3,131]�[0m 25 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote
    1410:  �[32m[3,130 / 3,131]�[0m 25 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 1s local, disk-cache
    1411:  �[32m[3,130 / 3,131]�[0m 25 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 14s local, disk-cache
    1412:  �[32m[3,131 / 3,132]�[0m 26 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 0s disk-cache
    1413:  �[32m[3,131 / 3,132]�[0m 26 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote
    1414:  �[32m[3,131 / 3,132]�[0m 26 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 1s local, disk-cache
    1415:  �[32m[3,131 / 3,132]�[0m 26 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 14s local, disk-cache
    1416:  �[32m[3,132 / 3,133]�[0m 27 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 1s disk-cache
    1417:  �[32m[3,132 / 3,133]�[0m 27 / 28 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote
    1418:  �[32m[3,132 / 3,133]�[0m 27 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 1s local, disk-cache
    1419:  �[32m[3,132 / 3,133]�[0m 27 / 28 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 14s local, disk-cache
    1420:  �[32mINFO: �[0mFound 28 test targets...
    1421:  �[32mINFO: �[0mElapsed time: 1283.572s, Critical Path: 556.48s
    1422:  �[32mINFO: �[0m2895 processes: 1333 disk cache hit, 1189 internal, 288 local, 85 worker.
    1423:  �[32mINFO: �[0mBuild completed, 1 test FAILED, 2895 total actions
    1424:  //rb/spec/integration/selenium/webdriver:action_builder-edge-remote      �[0m�[32mPASSED�[0m in 28.1s
    1425:  //rb/spec/integration/selenium/webdriver:bidi-edge-remote                �[0m�[32mPASSED�[0m in 14.4s
    1426:  //rb/spec/integration/selenium/webdriver:devtools-edge-remote            �[0m�[32mPASSED�[0m in 85.3s
    1427:  //rb/spec/integration/selenium/webdriver:element-edge-remote             �[0m�[32mPASSED�[0m in 29.7s
    1428:  //rb/spec/integration/selenium/webdriver:error-edge-remote               �[0m�[32mPASSED�[0m in 16.0s
    ...
    
    1443:  //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote  �[0m�[32mPASSED�[0m in 14.5s
    1444:  //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote         �[0m�[32mPASSED�[0m in 14.5s
    1445:  //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote         �[0m�[32mPASSED�[0m in 36.7s
    1446:  //rb/spec/integration/selenium/webdriver/edge:options-edge-remote        �[0m�[32mPASSED�[0m in 21.3s
    1447:  //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote        �[0m�[32mPASSED�[0m in 14.9s
    1448:  //rb/spec/integration/selenium/webdriver/edge:service-edge-remote        �[0m�[32mPASSED�[0m in 21.0s
    1449:  //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote       �[0m�[32mPASSED�[0m in 27.4s
    1450:  //rb/spec/integration/selenium/webdriver/remote:element-edge-remote      �[0m�[32mPASSED�[0m in 16.4s
    1451:  //rb/spec/integration/selenium/webdriver:driver-edge-remote              �[0m�[31m�[1mFAILED�[0m in 3 out of 3 in 34.0s
    1452:  Stats over 3 runs: max = 34.0s, min = 33.7s, avg = 33.8s, dev = 0.1s
    1453:  D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/driver-edge-remote/test.log
    1454:  D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/driver-edge-remote/test_attempts/attempt_1.log
    1455:  D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/driver-edge-remote/test_attempts/attempt_2.log
    1456:  Executed 28 out of 28 tests: 27 tests pass and �[0m�[31m�[1m1 fails locally�[0m.
    1457:  There were tests whose specified size is too big. Use the --test_verbose_timeout_warnings command line option to see which ones these are.
    1458:  �[0m
    1459:  ##[error]Process completed with exit code 1.
    

    ✨ 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.

    @titusfortner titusfortner force-pushed the release-preparation-4.22.0 branch from cfc69a6 to 7e305e0 Compare June 20, 2024 19:04
    @titusfortner titusfortner force-pushed the release-preparation-4.22.0 branch from 7e305e0 to b45c8b5 Compare June 20, 2024 19:22
    @titusfortner titusfortner marked this pull request as ready for review June 20, 2024 19:50
    @qodo-merge-pro qodo-merge-pro bot added dependencies Pull requests that update a dependency file enhancement labels Jun 20, 2024
    Copy link
    Contributor

    PR Reviewer Guide 🔍

    ⏱️ Estimated effort to review [1-5] 4
    🧪 Relevant tests No
    🔒 Security concerns No
    ⚡ Key issues to review Possible Bug:
    The PR introduces a large number of changes across multiple files and languages. It is crucial to ensure that all updates, especially those related to version updates and dependencies, are compatible and do not introduce any breaking changes.
    Performance Concerns:
    The updates to libraries such as Netty, OpenTelemetry, and others could potentially affect performance. It is important to verify that these updates improve or at least do not degrade performance.
    Dependency Management:
    The PR updates several dependencies. It is essential to ensure that these updates do not introduce conflicts with other parts of the system.

    Copy link
    Contributor

    PR Code Suggestions ✨

    CategorySuggestion                                                                                                                                    Score
    Possible issue
    Add a null check for the constructor parameter to prevent potential NullPointerException

    Add a null check for the devTools parameter in the v126Network constructor to prevent
    potential NullPointerException.

    java/src/org/openqa/selenium/devtools/v126/v126Network.java [44-46]

     public v126Network(DevTools devTools) {
    -    super(devTools);
    +    super(Require.nonNull("DevTools", devTools));
     }
     
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: Adding a null check is a crucial improvement for preventing runtime exceptions and ensuring the stability of the application.

    8
    Add null checks for constructor parameters to prevent potential NullReferenceException issues

    Consider adding null checks for the network and fetch parameters in the constructor to
    prevent potential NullReferenceException issues.

    dotnet/src/webdriver/DevTools/v126/V126Network.cs [41-44]

     public V126Network(NetworkAdapter network, FetchAdapter fetch)
     {
    -    this.network = network;
    -    this.fetch = fetch;
    +    this.network = network ?? throw new ArgumentNullException(nameof(network));
    +    this.fetch = fetch ?? throw new ArgumentNullException(nameof(fetch));
     
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    Why: Adding null checks is a good practice to prevent runtime exceptions, enhancing the robustness of the code. The suggestion correctly identifies the potential issue and provides an appropriate solution.

    7
    Best practice
    Initialize v126Target with the devtools parameter for consistency

    Consider initializing the v126Target with the devtools parameter to maintain consistency
    with other domain initializations.

    java/src/org/openqa/selenium/devtools/v126/v126Domains.java [43]

    -target = new v126Target();
    +target = new v126Target(devtools);
     
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    Why: The suggestion promotes consistency across the codebase, which is beneficial for maintainability, although the current code does not show inconsistency in initialization.

    7
    Verify the compatibility and testing of the newly added version in SUPPORTED_DEVTOOLS_VERSIONS

    Ensure that the new version "v126" added to SUPPORTED_DEVTOOLS_VERSIONS is compatible with
    the rest of the codebase and has been thoroughly tested.

    dotnet/selenium-dotnet-version.bzl [10]

    -"v126",
    +"v126",  # Ensure compatibility and thorough testing
     
    • Apply this suggestion
    Suggestion importance[1-10]: 5

    Why: Ensuring compatibility and testing is important, but the suggestion lacks specific details on how to verify this.

    5
    Maintainability
    Use a constant for the version number to avoid hardcoding it in multiple places

    Consider using a constant for the version number to avoid hardcoding it in multiple
    places, which can help prevent inconsistencies during updates.

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

    -__version__ = "4.22.0"
    +from ..version import VERSION
    +__version__ = VERSION
     
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    Why: Using a constant for version numbers is a good practice to avoid inconsistencies, especially given multiple occurrences across files.

    7
    Read the version number from a single source of truth to avoid discrepancies

    Consider reading the version number from a single source of truth, such as a version file,
    to avoid discrepancies and make version management easier.

    py/setup.py [30]

    -'version': "4.22.0",
    +'version': open(join(abspath(dirname(__file__)), "VERSION")).read().strip(),
     
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    Why: Centralizing the version number in a single file is a good practice for maintainability and consistency, aligning with the changes in multiple files.

    7
    Add comments explaining the purpose of the sha256 and url fields in the http_file rules

    Consider adding a comment explaining the purpose of the sha256 and url fields for each
    http_file rule. This will help future maintainers understand why these specific values are
    used and how they should be updated.

    common/selenium_manager.bzl [9-10]

    +# SHA256 checksum for the downloaded file to ensure integrity
     sha256 = "e52191930dd1bcfaf0a4c2ca0d063619467091faf28f19bbd0c1a20cfc13278a",
    +# URL to download the selenium manager for Linux
     url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-e3f9990/selenium-manager-linux",
     
    • Apply this suggestion
    Suggestion importance[1-10]: 6

    Why: Adding comments enhances maintainability by explaining the purpose of specific fields, which is helpful but not critical.

    6
    Group related commands together for better readability and maintainability

    To improve readability and maintainability, consider grouping related commands together,
    such as placing all breakpoint related commands in a contiguous block.

    common/devtools/chromium/v126/js_protocol.pdl [306-332]

     command removeBreakpoint
       parameters
         BreakpointId breakpointId
    +
    +command setBreakpoint
    +  parameters
    +    Location location
    +    optional string condition
    +  returns
    +    BreakpointId breakpointId
    +    Location actualLocation
    +
    +command setBreakpointByUrl
    +  parameters
    +    integer lineNumber
    +    optional string url
    +    optional string urlRegex
    +    optional string scriptHash
    +    optional integer columnNumber
    +    optional string condition
    +  returns
    +    BreakpointId breakpointId
    +    array of Location locations
     
     command restartFrame
       parameters
         CallFrameId callFrameId
         experimental optional enum mode
           StepInto
     
    • Apply this suggestion
    Suggestion importance[1-10]: 5

    Why: Grouping related commands can indeed improve readability and maintainability. However, the suggestion does not reflect a critical change and the existing structure might already have a logical grouping that is not evident without full context.

    5
    Validation
    Add validation to ensure lineNumber and columnNumber are non-negative integers

    Consider adding a validation step to ensure that the lineNumber and columnNumber
    properties in the Location type are non-negative integers. This can help prevent potential
    issues where negative values might be inadvertently assigned.

    common/devtools/chromium/v126/js_protocol.pdl [73-80]

     type Location extends object
       properties
         # Script identifier as reported in the `Debugger.scriptParsed`.
         Runtime.ScriptId scriptId
         # Line number in the script (0-based).
    -    integer lineNumber
    +    integer lineNumber (>= 0)
         # Column number in the script (0-based).
    -    optional integer columnNumber
    +    optional integer columnNumber (>= 0)
     
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    Why: Adding validation for non-negative integers for lineNumber and columnNumber is a good practice to ensure data integrity and prevent errors. The suggestion correctly identifies the relevant section of the code and proposes a practical improvement.

    7
    Add validation to ensure scopeNumber is within a valid range

    Ensure that the setVariableValue command includes validation to check that scopeNumber is
    within a valid range, as this can prevent out-of-bounds errors.

    common/devtools/chromium/v126/js_protocol.pdl [526-536]

     command setVariableValue
       parameters
    -    integer scopeNumber
    +    integer scopeNumber (>= 0)
         string variableName
         Runtime.CallArgument newValue
         CallFrameId callFrameId
     
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    Why: Ensuring that scopeNumber is within a valid range is crucial for preventing out-of-bounds errors. The suggestion is relevant and targets a specific improvement in the code's robustness.

    7
    Enhancement
    Use static imports to reduce verbosity in the detachFromTarget method

    Consider using a static import for
    org.openqa.selenium.devtools.v126.target.model.SessionID and
    org.openqa.selenium.devtools.v126.target.model.TargetID to improve readability and reduce
    verbosity in the detachFromTarget method.

    java/src/org/openqa/selenium/devtools/v126/v126Target.java [41-45]

     return Target.detachFromTarget(
    -    sessionId.map(
    -        id -> new org.openqa.selenium.devtools.v126.target.model.SessionID(id.toString())),
    -    targetId.map(
    -        id -> new org.openqa.selenium.devtools.v126.target.model.TargetID(id.toString())));
    +    sessionId.map(id -> new SessionID(id.toString())),
    +    targetId.map(id -> new TargetID(id.toString())));
     
    • Apply this suggestion
    Suggestion importance[1-10]: 6

    Why: The suggestion correctly identifies an opportunity to improve code readability by using static imports, although it's a minor enhancement.

    6
    Documentation
    Add a description for the stepInto command to clarify its purpose

    Add a brief description for the stepInto command to clarify its purpose and usage, similar
    to other commands.

    common/devtools/chromium/v126/js_protocol.pdl [539-541]

    +# Steps into the function call.
     command stepInto
       parameters
         # Debugger will pause on the execution of the first async task which was scheduled
     
    • Apply this suggestion
    Suggestion importance[1-10]: 6

    Why: Adding a description to the stepInto command enhances documentation and user understanding. This is a beneficial suggestion that aligns with best practices for clear code documentation.

    6

    @titusfortner titusfortner merged commit c5f3146 into trunk Jun 20, 2024
    32 of 37 checks passed
    @titusfortner titusfortner deleted the release-preparation-4.22.0 branch June 20, 2024 20:03
    sandeepsuryaprasad pushed a commit to sandeepsuryaprasad/selenium that referenced this pull request Oct 29, 2024
    * Update pinned browser versions
    
    * Update supported versions for Chrome DevTools
    
    * Update selenium manager version
    
    * Update authors file
    
    * Update versions and change logs to release Selenium 4.22.0
    
    ---------
    
    Co-authored-by: Selenium CI Bot <[email protected]>
    Co-authored-by: titusfortner <[email protected]>
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    C-build Build related issues (bazel and CI) dependencies Pull requests that update a dependency file enhancement Review effort [1-5]: 4
    Projects
    None yet
    Development

    Successfully merging this pull request may close these issues.

    2 participants