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

[grid] Fix tests for Grid status endpoint and UI #14605

Merged
merged 1 commit into from
Oct 16, 2024
Merged

[grid] Fix tests for Grid status endpoint and UI #14605

merged 1 commit into from
Oct 16, 2024

Conversation

VietND96
Copy link
Member

@VietND96 VietND96 commented Oct 16, 2024

User description

Thanks for contributing to Selenium!
A PR well described will help maintainers to quickly review and merge it

Before submitting your PR, please check our contributing guidelines.
Avoid large PRs, help reviewers by making them as simple and short as possible.

Description

Motivation and Context

Fix test CI - RBE

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist

  • I have read the contributing document.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have added tests to cover my changes.
  • All new and existing tests passed.

PR Type

Bug fix, Tests


Description

  • Fixed the comparison logic in NodeStatus for sessionTimeout and heartbeatPeriod using compareTo.
  • Enhanced GridStatusHandler to map node status with detailed attributes including heartbeatPeriod and sessionTimeout in milliseconds.
  • Updated LocalDistributorTest to include heartbeatPeriod in node setup and assertions.
  • Corrected UI paths in OverallGridTest to ensure proper navigation in test cases.

Changes walkthrough 📝

Relevant files
Bug fix
NodeStatus.java
Fix NodeStatus comparison logic for time durations             

java/src/org/openqa/selenium/grid/data/NodeStatus.java

  • Fixed comparison of sessionTimeout and heartbeatPeriod using
    compareTo.
  • +2/-1     
    OverallGridTest.java
    Fix UI path in OverallGridTest for session and node checks

    java/test/org/openqa/selenium/grid/gridui/OverallGridTest.java

    • Corrected UI path in test cases for session and node registration.
    +3/-3     
    Enhancement
    GridStatusHandler.java
    Enhance GridStatusHandler with detailed node attributes   

    java/src/org/openqa/selenium/grid/router/GridStatusHandler.java

  • Updated node status mapping to include detailed attributes.
  • Added heartbeatPeriod and sessionTimeout in milliseconds.
  • +13/-1   
    Tests
    LocalDistributorTest.java
    Update LocalDistributorTest to include heartbeat period   

    java/test/org/openqa/selenium/grid/distributor/local/LocalDistributorTest.java

    • Added heartbeatPeriod to node setup and test assertions.
    +2/-0     

    💡 PR-Agent usage: Comment /help "your question" on any pull request to receive relevant information

    Copy link
    Contributor

    PR Reviewer Guide 🔍

    Here are some key observations to aid the review process:

    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 PR contains tests
    🔒 No security concerns identified
    ⚡ Recommended focus areas for review

    Potential Bug
    The equals method has been updated to include heartbeatPeriod comparison, but the hashCode method might need to be updated as well to maintain consistency.

    Performance Concern
    The new node status mapping creates a new ImmutableMap for each node, which could be inefficient for a large number of nodes. Consider using a more efficient data structure or caching mechanism.

    Copy link
    Contributor

    PR Code Suggestions ✨

    Explore these optional code suggestions:

    CategorySuggestion                                                                                                                                    Score
    Best practice
    Override the hashCode() method to maintain consistency with the updated equals() method

    Consider overriding the hashCode() method to maintain consistency with the updated
    equals() method. This ensures that objects that are equal according to the equals()
    method have the same hash code.

    java/src/org/openqa/selenium/grid/data/NodeStatus.java [208-222]

     public boolean equals(Object o) {
    -  if (!(o instanceof NodeStatus)) {
    -    return false;
    -  }
    -
    -  NodeStatus that = (NodeStatus) o;
    -  return Objects.equals(this.nodeId, that.nodeId)
    -      && Objects.equals(this.externalUri, that.externalUri)
    -      && this.maxSessionCount == that.maxSessionCount
    -      && this.sessionTimeout.compareTo(that.sessionTimeout) == 0
    -      && this.heartbeatPeriod.compareTo(that.heartbeatPeriod) == 0
    -      && Objects.equals(this.slots, that.slots)
    -      && Objects.equals(this.availability, that.availability)
    -      && Objects.equals(this.version, that.version);
    +  // ... (existing implementation)
     }
     
    +@Override
    +public int hashCode() {
    +  return Objects.hash(nodeId, externalUri, maxSessionCount, sessionTimeout, heartbeatPeriod, slots, availability, version);
    +}
    +
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: Overriding the hashCode() method is crucial for maintaining consistency with the equals() method, especially after modifying equals. This ensures that objects considered equal have the same hash code, which is important for the correct functioning of hash-based collections like HashSet or HashMap.

    8
    Maintainability
    Extract node mapping logic into a separate method to improve code organization

    Consider extracting the node mapping logic into a separate method to improve
    readability and maintainability of the execute method.

    java/src/org/openqa/selenium/grid/router/GridStatusHandler.java [136-151]

    -List<Map<String, Object>> nodeResults =
    -    status.getNodes().stream()
    -        .map(
    -            node ->
    -                new ImmutableMap.Builder<String, Object>()
    -                    .put("id", node.getNodeId())
    -                    .put("uri", node.getExternalUri())
    -                    .put("maxSessions", node.getMaxSessionCount())
    -                    .put("sessionTimeout", node.getSessionTimeout().toMillis())
    -                    .put("osInfo", node.getOsInfo())
    -                    .put("heartbeatPeriod", node.getHeartbeatPeriod().toMillis())
    -                    .put("availability", node.getAvailability())
    -                    .put("version", node.getVersion())
    -                    .put("slots", node.getSlots())
    -                    .build())
    -        .collect(toList());
    +List<Map<String, Object>> nodeResults = status.getNodes().stream()
    +    .map(this::mapNodeToResult)
    +    .collect(toList());
     
    +// ... (rest of the method)
    +
    +private Map<String, Object> mapNodeToResult(NodeStatus node) {
    +    return new ImmutableMap.Builder<String, Object>()
    +        .put("id", node.getNodeId())
    +        .put("uri", node.getExternalUri())
    +        .put("maxSessions", node.getMaxSessionCount())
    +        .put("sessionTimeout", node.getSessionTimeout().toMillis())
    +        .put("osInfo", node.getOsInfo())
    +        .put("heartbeatPeriod", node.getHeartbeatPeriod().toMillis())
    +        .put("availability", node.getAvailability())
    +        .put("version", node.getVersion())
    +        .put("slots", node.getSlots())
    +        .build();
    +}
    +
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    Why: Extracting the node mapping logic into a separate method enhances readability and maintainability by reducing complexity in the execute method. This refactoring makes the code easier to understand and modify in the future.

    7
    Enhancement
    Extract common URL path into a constant for improved maintainability

    Consider extracting the common URL path "/ui/" into a constant to improve
    maintainability and reduce the risk of typos in future updates.

    java/test/org/openqa/selenium/grid/gridui/OverallGridTest.java [71-96]

    -driver.get(whereIs(server, "/ui/#/sessions"));
    +private static final String UI_BASE_PATH = "/ui/";
     ...
    -driver.get(whereIs(server, "/ui/"));
    +driver.get(whereIs(server, UI_BASE_PATH + "#/sessions"));
     ...
    -driver.get(whereIs(server, "/ui/#/sessions"));
    +driver.get(whereIs(server, UI_BASE_PATH));
    +...
    +driver.get(whereIs(server, UI_BASE_PATH + "#/sessions"));
    Suggestion importance[1-10]: 6

    Why: Extracting the common URL path into a constant reduces the risk of typos and makes future updates easier. This change improves maintainability by centralizing the path definition, which is beneficial for consistency across the codebase.

    6

    💡 Need additional feedback ? start a PR chat

    Copy link
    Contributor

    qodo-merge-pro bot commented Oct 16, 2024

    CI Failure Feedback 🧐

    (Checks updated until commit 625bb94)

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

    Failed stage: Run Bazel [❌]

    Failed test name: Selenium::WebDriver::Remote::Driver errors when not set

    Failure summary:

    The action failed because the test Selenium::WebDriver::Remote::Driver errors when not set did not
    pass. The test expected a Selenium::WebDriver::Error::WebDriverError to be raised with the message
    "You must enable downloads in order to work with downloadable files." However, it received a
    Selenium::WebDriver::Error::UnknownError indicating that it could not find the downloads file system
    for the session id.

    Relevant error logs:
    1:  ##[group]Operating System
    2:  Microsoft Windows Server 2022
    ...
    
    808:  �[32m[2,919 / 3,139]�[0m Splitting Javascript ../../../javascript/grid-ui/src/index.tsx [esbuild]; Downloading node_modules/.aspect_rules_js/@[email protected]_796748879/node_modules/@mui/icons-material/VpnKeyOff.js; 145s disk-cache ... (4 actions, 1 running)
    809:  �[32m[2,919 / 3,139]�[0m Splitting Javascript ../../../javascript/grid-ui/src/index.tsx [esbuild]; Downloading node_modules/.aspect_rules_js/@[email protected]_796748879/node_modules/@mui/icons-material/WaterfallChartSharp.js; 146s disk-cache ... (4 actions, 1 running)
    810:  �[32m[2,919 / 3,139]�[0m Splitting Javascript ../../../javascript/grid-ui/src/index.tsx [esbuild]; Downloading node_modules/.aspect_rules_js/@[email protected]_796748879/node_modules/@mui/icons-material/Wifi1BarOutlined.js; 148s disk-cache ... (4 actions, 1 running)
    811:  �[32m[2,919 / 3,139]�[0m Splitting Javascript ../../../javascript/grid-ui/src/index.tsx [esbuild]; Downloading node_modules/.aspect_rules_js/@[email protected]_796748879/node_modules/@mui/icons-material/WineBar.d.ts; 149s disk-cache ... (4 actions, 1 running)
    812:  �[32m[2,919 / 3,139]�[0m Splitting Javascript ../../../javascript/grid-ui/src/index.tsx [esbuild]; Downloading node_modules/.aspect_rules_js/@[email protected]_796748879/node_modules/@mui/icons-material/YoutubeSearchedFor.d.ts; 150s disk-cache ... (4 actions, 1 running)
    813:  �[32m[2,919 / 3,139]�[0m Splitting Javascript ../../../javascript/grid-ui/src/index.tsx [esbuild]; Downloading node_modules/.aspect_rules_js/@[email protected]_724305784/node_modules/@mui/material/Breadcrumbs/index.js; 151s disk-cache ... (4 actions, 1 running)
    814:  �[32m[2,919 / 3,139]�[0m Splitting Javascript ../../../javascript/grid-ui/src/index.tsx [esbuild]; Downloading node_modules/.aspect_rules_js/@[email protected]_724305784/node_modules/@mui/material/DialogContent/index.js; 152s disk-cache ... (4 actions, 1 running)
    815:  �[32m[2,919 / 3,139]�[0m Splitting Javascript ../../../javascript/grid-ui/src/index.tsx [esbuild]; Downloading node_modules/.aspect_rules_js/@[email protected]_724305784/node_modules/@mui/material/internal/svg-icons/NavigateNext.js; 153s disk-cache ... (4 actions, 1 running)
    816:  �[32m[2,919 / 3,139]�[0m Splitting Javascript ../../../javascript/grid-ui/src/index.tsx [esbuild]; Downloading node_modules/.aspect_rules_js/@[email protected]_724305784/node_modules/@mui/material/legacy/internal/svg-icons/ErrorOutline.js; 154s disk-cache ... (4 actions, 1 running)
    ...
    
    850:  �[32mINFO: �[0mFrom Installing external/rules_ruby~~ruby~bundle/rb/vendor/cache/bundler-2.5.14.gem (@@rules_ruby~~ruby~bundle//:bundler-2.5.14):
    851:  Successfully installed bundler-2.5.14
    852:  1 gem installed
    853:  �[32m[3,008 / 3,139]�[0m MergeJars java/src/org/openqa/selenium/manager/manager-project.jar; 6s local, disk-cache ... (3 actions, 2 running)
    854:  �[32m[3,009 / 3,139]�[0m PackageZip javascript/grid-ui/react-zip.jar; 3s local, disk-cache ... (3 actions running)
    855:  �[32m[3,010 / 3,139]�[0m PackageZip javascript/grid-ui/react-zip.jar; 4s local, disk-cache ... (3 actions running)
    856:  �[32m[3,011 / 3,139]�[0m PackageZip javascript/grid-ui/react-zip.jar; 7s local, disk-cache ... (3 actions, 2 running)
    857:  �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (71 source files):
    858:  java\src\org\openqa\selenium\remote\ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    859:  private final ErrorCodes errorCodes;
    860:  ^
    861:  java\src\org\openqa\selenium\remote\ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    862:  this.errorCodes = new ErrorCodes();
    863:  ^
    864:  java\src\org\openqa\selenium\remote\ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    865:  public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {
    866:  ^
    867:  java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    868:  ErrorCodes errorCodes = new ErrorCodes();
    869:  ^
    870:  java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    871:  ErrorCodes errorCodes = new ErrorCodes();
    872:  ^
    873:  java\src\org\openqa\selenium\remote\ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    874:  response.setStatus(ErrorCodes.SUCCESS);
    875:  ^
    876:  java\src\org\openqa\selenium\remote\ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    877:  response.setState(ErrorCodes.SUCCESS_STRING);
    878:  ^
    879:  java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    880:  new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));
    881:  ^
    882:  java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    883:  new ErrorCodes().getExceptionType((String) rawError);
    884:  ^
    885:  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
    886:  private final ErrorCodes errorCodes = new ErrorCodes();
    887:  ^
    888:  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
    889:  private final ErrorCodes errorCodes = new ErrorCodes();
    890:  ^
    891:  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
    892:  int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;
    893:  ^
    894:  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
    895:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
    896:  ^
    897:  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
    898:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
    899:  ^
    900:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:117: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    901:  response.setStatus(ErrorCodes.SUCCESS);
    902:  ^
    903:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:118: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    904:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
    905:  ^
    906:  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
    907:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
    908:  ^
    909:  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
    910:  private final ErrorCodes errorCodes = new ErrorCodes();
    911:  ^
    912:  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
    913:  private final ErrorCodes errorCodes = new ErrorCodes();
    914:  ^
    915:  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
    916:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
    917:  ^
    918:  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
    919:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
    920:  ^
    921:  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
    922:  response.setStatus(ErrorCodes.SUCCESS);
    ...
    
    1107:  �[32m[3,145 / 3,163]�[0m 6 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 180s local, disk-cache ... (4 actions, 2 running)
    1108:  �[32m[3,146 / 3,163]�[0m 7 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 182s local, disk-cache ... (4 actions, 1 running)
    1109:  �[32m[3,146 / 3,163]�[0m 7 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 183s local, disk-cache ... (4 actions, 1 running)
    1110:  �[32m[3,146 / 3,163]�[0m 7 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 192s local, disk-cache ... (4 actions, 1 running)
    1111:  �[32m[3,146 / 3,163]�[0m 7 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 196s local, disk-cache ... (4 actions, 1 running)
    1112:  �[32m[3,146 / 3,163]�[0m 7 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 210s local, disk-cache ... (4 actions, 2 running)
    1113:  �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver/remote:driver-edge-remote (see D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/remote/driver-edge-remote/test.log)
    1114:  ==================== Test output for //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote:
    1115:  �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver/remote:driver-edge-remote (Summary)
    ...
    
    1129:  Selenium::WebDriver::Remote::Driver
    1130:  exposes session_id
    1131:  exposes remote status
    1132:  Request#[] is deprecated and will be removed in a future version of Rack. Please use request.params[] instead
    1133:  uses a default file detector
    1134:  lists downloads
    1135:  downloads a file
    1136:  deletes downloadable files
    1137:  errors when not set (FAILED - 1)
    1138:  Failures:
    1139:  1) Selenium::WebDriver::Remote::Driver errors when not set
    1140:  Failure/Error:
    1141:  expect {
    1142:  driver.downloadable_files
    1143:  }.to raise_exception(Error::WebDriverError,
    1144:  'You must enable downloads in order to work with downloadable files.')
    1145:  expected Selenium::WebDriver::Error::WebDriverError with "You must enable downloads in order to work with downloadable files.", got #<Selenium::WebDriver::Error::UnknownError: Cannot find downloads file system for session id: 521dc1a... os.arch: 'amd64', os.version: '10.0', java.version: '17.0.11'
    1146:  Driver info: driver.version: unknown> with backtrace:
    1147:  # ./rb/lib/selenium/webdriver/remote/response.rb:63:in `add_cause'
    1148:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    1154:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    1155:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:685:in `execute'
    1156:  # ./rb/lib/selenium/webdriver/remote/features.rb:62:in `downloadable_files'
    1157:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_file_downloads.rb:27:in `downloadable_files'
    1158:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:87:in `block (3 levels) in <module:Remote>'
    1159:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
    1160:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
    1161:  Finished in 21.63 seconds (files took 0.79105 seconds to load)
    1162:  7 examples, 1 failure
    1163:  Failed examples:
    1164:  rspec ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:84 # Selenium::WebDriver::Remote::Driver errors when not set
    ...
    
    1176:  Selenium::WebDriver::Remote::Driver
    1177:  exposes session_id
    1178:  exposes remote status
    1179:  Request#[] is deprecated and will be removed in a future version of Rack. Please use request.params[] instead
    1180:  uses a default file detector
    1181:  lists downloads
    1182:  downloads a file
    1183:  deletes downloadable files
    1184:  errors when not set (FAILED - 1)
    1185:  Failures:
    1186:  1) Selenium::WebDriver::Remote::Driver errors when not set
    1187:  Failure/Error:
    1188:  expect {
    1189:  driver.downloadable_files
    1190:  }.to raise_exception(Error::WebDriverError,
    1191:  'You must enable downloads in order to work with downloadable files.')
    1192:  expected Selenium::WebDriver::Error::WebDriverError with "You must enable downloads in order to work with downloadable files.", got #<Selenium::WebDriver::Error::UnknownError: Cannot find downloads file system for session id: 3988ebe... os.arch: 'amd64', os.version: '10.0', java.version: '17.0.11'
    1193:  Driver info: driver.version: unknown> with backtrace:
    1194:  # ./rb/lib/selenium/webdriver/remote/response.rb:63:in `add_cause'
    1195:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    1201:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    1202:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:685:in `execute'
    1203:  # ./rb/lib/selenium/webdriver/remote/features.rb:62:in `downloadable_files'
    1204:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_file_downloads.rb:27:in `downloadable_files'
    1205:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:87:in `block (3 levels) in <module:Remote>'
    1206:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
    1207:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
    1208:  Finished in 22.49 seconds (files took 0.79341 seconds to load)
    1209:  7 examples, 1 failure
    1210:  Failed examples:
    1211:  rspec ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:84 # Selenium::WebDriver::Remote::Driver errors when not set
    ...
    
    1223:  Selenium::WebDriver::Remote::Driver
    1224:  exposes session_id
    1225:  exposes remote status
    1226:  Request#[] is deprecated and will be removed in a future version of Rack. Please use request.params[] instead
    1227:  uses a default file detector
    1228:  lists downloads
    1229:  downloads a file
    1230:  deletes downloadable files
    1231:  errors when not set (FAILED - 1)
    1232:  Failures:
    1233:  1) Selenium::WebDriver::Remote::Driver errors when not set
    1234:  Failure/Error:
    1235:  expect {
    1236:  driver.downloadable_files
    1237:  }.to raise_exception(Error::WebDriverError,
    1238:  'You must enable downloads in order to work with downloadable files.')
    1239:  expected Selenium::WebDriver::Error::WebDriverError with "You must enable downloads in order to work with downloadable files.", got #<Selenium::WebDriver::Error::UnknownError: Cannot find downloads file system for session id: 6e8084a... os.arch: 'amd64', os.version: '10.0', java.version: '17.0.11'
    1240:  Driver info: driver.version: unknown> with backtrace:
    1241:  # ./rb/lib/selenium/webdriver/remote/response.rb:63:in `add_cause'
    1242:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    1248:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    1249:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:685:in `execute'
    1250:  # ./rb/lib/selenium/webdriver/remote/features.rb:62:in `downloadable_files'
    1251:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_file_downloads.rb:27:in `downloadable_files'
    1252:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:87:in `block (3 levels) in <module:Remote>'
    1253:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
    1254:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
    1255:  Finished in 22.1 seconds (files took 0.76211 seconds to load)
    1256:  7 examples, 1 failure
    1257:  Failed examples:
    1258:  rspec ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:84 # Selenium::WebDriver::Remote::Driver errors when not set
    1259:  ================================================================================
    1260:  �[32m[3,147 / 3,163]�[0m 8 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 35s ... (4 actions, 1 running)
    1261:  �[32m[3,147 / 3,163]�[0m 8 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 45s ... (4 actions, 1 running)
    1262:  �[32m[3,147 / 3,163]�[0m 8 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 48s ... (4 actions, 1 running)
    1263:  �[32m[3,147 / 3,163]�[0m 8 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 32s ... (4 actions, 2 running)
    1264:  �[32m[3,148 / 3,163]�[0m 9 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 34s ... (4 actions, 1 running)
    1265:  �[32m[3,148 / 3,163]�[0m 9 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 43s ... (4 actions, 1 running)
    1266:  �[32m[3,148 / 3,163]�[0m 9 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 46s ... (4 actions, 1 running)
    1267:  �[32m[3,149 / 3,163]�[0m 10 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 19s ... (4 actions, 1 running)
    1268:  �[32m[3,149 / 3,163]�[0m 10 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 20s ... (4 actions, 1 running)
    1269:  �[32m[3,149 / 3,163]�[0m 10 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 30s ... (4 actions, 1 running)
    1270:  �[32m[3,149 / 3,163]�[0m 10 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 33s ... (4 actions, 1 running)
    1271:  �[32m[3,149 / 3,163]�[0m 10 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 25s ... (4 actions, 2 running)
    1272:  �[32m[3,150 / 3,163]�[0m 11 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 26s ... (4 actions, 1 running)
    1273:  �[32m[3,150 / 3,163]�[0m 11 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 36s ... (4 actions, 1 running)
    1274:  �[32m[3,150 / 3,163]�[0m 11 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 39s ... (4 actions, 1 running)
    1275:  �[32m[3,151 / 3,163]�[0m 12 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote; 25s ... (4 actions, 1 running)
    1276:  �[32m[3,151 / 3,163]�[0m 12 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote; 26s ... (4 actions, 1 running)
    1277:  �[32m[3,151 / 3,163]�[0m 12 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote; 36s ... (4 actions, 1 running)
    1278:  �[32m[3,151 / 3,163]�[0m 12 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote; 39s ... (4 actions, 1 running)
    1279:  �[32m[3,151 / 3,163]�[0m 12 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:zipper-edge-remote; 22s ... (4 actions, 2 running)
    1280:  �[32m[3,152 / 3,163]�[0m 13 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:zipper-edge-remote; 24s ... (4 actions, 1 running)
    1281:  �[32m[3,152 / 3,163]�[0m 13 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:zipper-edge-remote; 34s ... (4 actions, 1 running)
    1282:  �[32m[3,152 / 3,163]�[0m 13 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:zipper-edge-remote; 37s ... (4 actions, 1 running)
    1283:  �[32m[3,152 / 3,163]�[0m 13 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:target_locator-edge-remote; 42s ... (4 actions, 2 running)
    1284:  �[32m[3,153 / 3,163]�[0m 14 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:target_locator-edge-remote; 44s ... (4 actions, 1 running)
    1285:  �[32m[3,153 / 3,163]�[0m 14 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:target_locator-edge-remote; 54s ... (4 actions, 1 running)
    1286:  �[32m[3,153 / 3,163]�[0m 14 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:target_locator-edge-remote; 56s ... (4 actions, 1 running)
    1287:  �[32m[3,153 / 3,163]�[0m 14 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 35s ... (4 actions, 2 running)
    1288:  �[32m[3,154 / 3,163]�[0m 15 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 37s ... (4 actions, 1 running)
    1289:  �[32m[3,154 / 3,163]�[0m 15 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 46s ... (4 actions, 1 running)
    1290:  �[32m[3,154 / 3,163]�[0m 15 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 52s ... (4 actions, 1 running)
    1291:  �[32m[3,154 / 3,163]�[0m 15 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:takes_screenshot-edge-remote; 29s ... (4 actions, 2 running)
    1292:  �[32m[3,155 / 3,163]�[0m 16 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:takes_screenshot-edge-remote; 31s ... (4 actions, 1 running)
    1293:  �[32m[3,155 / 3,163]�[0m 16 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:takes_screenshot-edge-remote; 40s ... (4 actions, 1 running)
    1294:  �[32m[3,155 / 3,163]�[0m 16 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:takes_screenshot-edge-remote; 44s ... (4 actions, 1 running)
    1295:  �[32m[3,155 / 3,163]�[0m 16 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 45s ... (4 actions, 2 running)
    1296:  �[32m[3,156 / 3,163]�[0m 17 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 46s ... (4 actions, 1 running)
    1297:  �[32m[3,156 / 3,163]�[0m 17 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 56s ... (4 actions, 1 running)
    1298:  �[32m[3,156 / 3,163]�[0m 17 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 59s ... (4 actions, 1 running)
    1299:  �[32m[3,156 / 3,163]�[0m 17 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:storage-edge-remote; 36s ... (4 actions, 2 running)
    1300:  �[32m[3,157 / 3,163]�[0m 18 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:storage-edge-remote; 37s ... (4 actions, 1 running)
    1301:  �[32m[3,157 / 3,163]�[0m 18 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:storage-edge-remote; 47s ... (4 actions, 1 running)
    1302:  �[32m[3,157 / 3,163]�[0m 18 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:storage-edge-remote; 51s ... (4 actions, 1 running)
    1303:  �[32m[3,157 / 3,163]�[0m 18 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 24s ... (4 actions, 2 running)
    1304:  �[32m[3,158 / 3,163]�[0m 19 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 25s ... (4 actions, 1 running)
    1305:  �[32m[3,158 / 3,163]�[0m 19 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 35s ... (4 actions, 1 running)
    1306:  �[32m[3,158 / 3,163]�[0m 19 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 40s ... (4 actions, 1 running)
    1307:  �[32m[3,158 / 3,163]�[0m 19 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 25s ... (4 actions, 2 running)
    1308:  �[32m[3,159 / 3,163]�[0m 20 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 26s ... (4 actions, 1 running)
    1309:  �[32m[3,159 / 3,163]�[0m 20 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 37s ... (4 actions, 1 running)
    1310:  �[32m[3,159 / 3,163]�[0m 20 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 40s ... (4 actions, 1 running)
    1311:  �[32m[3,159 / 3,163]�[0m 20 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/remote:element-edge-remote; 20s ... (4 actions, 2 running)
    1312:  �[32m[3,160 / 3,163]�[0m 21 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/remote:element-edge-remote; 22s ... (3 actions, 1 running)
    1313:  �[32m[3,160 / 3,163]�[0m 21 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/remote:element-edge-remote; 31s ... (3 actions, 1 running)
    1314:  �[32m[3,160 / 3,163]�[0m 21 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 19s ... (3 actions, 2 running)
    1315:  �[32m[3,161 / 3,163]�[0m 22 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 20s ... (2 actions, 1 running)
    1316:  �[32m[3,161 / 3,163]�[0m 22 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 30s ... (2 actions, 1 running)
    1317:  �[32m[3,161 / 3,163]�[0m 22 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:element-edge-remote; 16s local, disk-cache ... (2 actions running)
    1318:  �[32m[3,162 / 3,163]�[0m 23 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 1s local, disk-cache
    1319:  �[32m[3,162 / 3,163]�[0m 23 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 11s local, disk-cache
    1320:  �[32m[3,162 / 3,163]�[0m 23 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 28s local, disk-cache
    1321:  �[32m[3,163 / 3,164]�[0m 24 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 0s disk-cache
    1322:  �[32m[3,163 / 3,164]�[0m 24 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote
    1323:  �[32m[3,163 / 3,164]�[0m 24 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 1s local, disk-cache
    1324:  �[32m[3,163 / 3,164]�[0m 24 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 14s local, disk-cache
    1325:  �[32m[3,164 / 3,165]�[0m 25 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 0s disk-cache
    1326:  �[32m[3,164 / 3,165]�[0m 25 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote
    1327:  �[32m[3,164 / 3,165]�[0m 25 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 1s local, disk-cache
    1328:  �[32m[3,164 / 3,165]�[0m 25 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 91s local, disk-cache
    1329:  �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver:devtools-edge-remote (see D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/devtools-edge-remote/test_attempts/attempt_1.log)
    1330:  �[32m[3,164 / 3,165]�[0m 25 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 93s local, disk-cache
    1331:  �[32m[3,164 / 3,165]�[0m 25 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 184s local, disk-cache
    ...
    
    1342:  ci: github
    1343:  rbe: false
    1344:  ruby: ruby 3.0.6p216 (2023-03-30 revision 23a532679b) [x64-mingw32]
    1345:  Selenium::WebDriver::DevTools
    1346:  sends commands
    1347:  maps methods to classes
    1348:  supports events
    1349:  #<Thread:0x000001d3cdba6358 D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/bin/rb/spec/integration/selenium/webdriver/devtools-edge-remote.cmd.runfiles/_main/rb/lib/selenium/webdriver/common/websocket_connection.rb:133 run> terminated with exception (report_on_exception is true):
    1350:  D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/bin/rb/spec/integration/selenium/webdriver/devtools-edge-remote.cmd.runfiles/_main/rb/spec/integration/selenium/webdriver/devtools_spec.rb:53:in `block (4 levels) in <module:WebDriver>': This is fine! (RuntimeError)
    1351:  from D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/bin/rb/spec/integration/selenium/webdriver/devtools-edge-remote.cmd.runfiles/_main/rb/lib/selenium/webdriver/common/websocket_connection.rb:143:in `block in callback_thread'
    1352:  propagates errors in events
    ...
    
    1357:  notifies about DOM mutations
    1358:  #register
    1359:  on any request
    1360:  based on URL
    1361:  #intercept
    1362:  continues requests
    1363:  changes requests
    1364:  continues responses
    1365:  changes responses (FAILED - 1)
    ...
    
    1368:  ensures pinned script is available on new pages
    1369:  allows to unpin script
    1370:  ensures unpinned scripts are not available on new pages
    1371:  handles arguments in pinned script
    1372:  supports async pinned scripts
    1373:  Pending: (Failures listed here are expected and do not affect your suite's status)
    1374:  1) Selenium::WebDriver::DevTools notifies about document log messages
    1375:  # Test guarded; Guarded by {:browser=>[:chrome, :edge, :firefox], :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};
    1376:  Got 1 failure:
    1377:  1.1) Failure/Error:
    ...
    
    1381:  expected [#<Selenium::WebDriver::DevTools::ConsoleEvent:0x000001d3ce47fab0 @type=:log, @timestamp=2024-10-16 1...t:49384/javascriptPage.html"}, {"name" => "compatMode", "type" => "string", "value" => "CSS1Compat"}]}}]>] to include (an object having attributes {:args => [hash_including("location" => "anything")], :type => :log})
    1382:  Diff:
    1383:  @@ -1 +1 @@
    1384:  -[(an object having attributes {:args => [hash_including("location" => "anything")], :type => :log})]
    1385:  +[#<Selenium::WebDriver::DevTools::ConsoleEvent:0x000001d3ce47fab0 @type=:log, @timestamp=2024-10-16 17:12:59 242307/2097152 +0000, @args=[{"type"=>"object", "subtype"=>"node", "className"=>"HTMLDocument", "description"=>"#document", "objectId"=>"2145214476341555279.1.1", "preview"=>{"type"=>"object", "subtype"=>"node", "description"=>"#document", "overflow"=>true, "properties"=>[{"name"=>"location", "type"=>"object", "value"=>"Location"}, {"name"=>"implementation", "type"=>"object", "value"=>"DOMImplementation"}, {"name"=>"URL", "type"=>"string", "value"=>"http://localhost:49384/javascriptPage.html"}, {"name"=>"documentURI", "type"=>"string", "value"=>"http://localhost:49384/javascriptPage.html"}, {"name"=>"compatMode", "type"=>"string", "value"=>"CSS1Compat"}]}}]>]
    1386:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:131:in `block (2 levels) in <module:WebDriver>'
    1387:  Failures:
    1388:  1) Selenium::WebDriver::DevTools#intercept changes responses
    1389:  Failure/Error: expect(driver.find_elements(id: 'appended')).not_to be_empty
    1390:  expected `[].empty?` to be falsey, got true
    1391:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:213:in `block (3 levels) in <module:WebDriver>'
    1392:  Finished in 1 minute 24.92 seconds (files took 0.60822 seconds to load)
    1393:  21 examples, 1 failure, 1 pending
    1394:  Failed examples:
    1395:  rspec ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:206 # Selenium::WebDriver::DevTools#intercept changes responses
    1396:  ================================================================================
    1397:  �[32m[3,165 / 3,166]�[0m 26 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 0s disk-cache
    1398:  �[32m[3,165 / 3,166]�[0m 26 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote
    1399:  �[32m[3,165 / 3,166]�[0m 26 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 1s local, disk-cache
    1400:  �[32m[3,165 / 3,166]�[0m 26 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 14s local, disk-cache
    1401:  �[32m[3,166 / 3,167]�[0m 27 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 0s disk-cache
    1402:  �[32m[3,166 / 3,167]�[0m 27 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote
    1403:  �[32m[3,166 / 3,167]�[0m 27 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 1s local, disk-cache
    1404:  �[32m[3,166 / 3,167]�[0m 27 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 14s local, disk-cache
    1405:  �[32m[3,167 / 3,168]�[0m 28 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 1s disk-cache
    1406:  �[32m[3,167 / 3,168]�[0m 28 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote
    1407:  �[32m[3,167 / 3,168]�[0m 28 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 1s local, disk-cache
    1408:  �[32m[3,167 / 3,168]�[0m 28 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 14s local, disk-cache
    1409:  �[32mINFO: �[0mFound 29 test targets...
    1410:  �[32mINFO: �[0mElapsed time: 1800.291s, Critical Path: 817.33s
    1411:  �[32mINFO: �[0m2889 processes: 1449 disk cache hit, 1178 internal, 228 local, 34 worker.
    1412:  �[32mINFO: �[0mBuild completed, 1 test FAILED, 2889 total actions
    1413:  //rb/spec/integration/selenium/webdriver:action_builder-edge-remote      �[0m�[32mPASSED�[0m in 28.1s
    1414:  //rb/spec/integration/selenium/webdriver:bidi-edge-remote                �[0m�[32mPASSED�[0m in 14.6s
    1415:  //rb/spec/integration/selenium/webdriver:driver-edge-remote              �[0m�[32mPASSED�[0m in 34.4s
    1416:  //rb/spec/integration/selenium/webdriver:element-edge-remote             �[0m�[32mPASSED�[0m in 28.9s
    1417:  //rb/spec/integration/selenium/webdriver:error-edge-remote               �[0m�[32mPASSED�[0m in 14.6s
    ...
    
    1432:  //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote �[0m�[32mPASSED�[0m in 14.6s
    1433:  //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote  �[0m�[32mPASSED�[0m in 14.5s
    1434:  //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote         �[0m�[32mPASSED�[0m in 14.6s
    1435:  //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote         �[0m�[32mPASSED�[0m in 34.9s
    1436:  //rb/spec/integration/selenium/webdriver/edge:options-edge-remote        �[0m�[32mPASSED�[0m in 21.8s
    1437:  //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote        �[0m�[32mPASSED�[0m in 15.3s
    1438:  //rb/spec/integration/selenium/webdriver/edge:service-edge-remote        �[0m�[32mPASSED�[0m in 21.8s
    1439:  //rb/spec/integration/selenium/webdriver/remote:element-edge-remote      �[0m�[32mPASSED�[0m in 16.3s
    1440:  //rb/spec/integration/selenium/webdriver:devtools-edge-remote             �[0m�[35mFLAKY�[0m, failed in 1 out of 2 in 91.7s
    1441:  Stats over 2 runs: max = 91.7s, min = 91.7s, avg = 91.7s, dev = 0.0s
    1442:  D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/devtools-edge-remote/test_attempts/attempt_1.log
    1443:  //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote       �[0m�[31m�[1mFAILED�[0m in 3 out of 3 in 29.8s
    1444:  Stats over 3 runs: max = 29.8s, min = 28.9s, avg = 29.4s, dev = 0.4s
    1445:  D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/remote/driver-edge-remote/test.log
    1446:  D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/remote/driver-edge-remote/test_attempts/attempt_1.log
    1447:  D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/remote/driver-edge-remote/test_attempts/attempt_2.log
    1448:  Executed 29 out of 29 tests: 28 tests pass and �[0m�[31m�[1m1 fails locally�[0m.
    1449:  There were tests whose specified size is too big. Use the --test_verbose_timeout_warnings command line option to see which ones these are.
    1450:  �[0m
    1451:  ##[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.

    @VietND96 VietND96 merged commit 3ddc042 into trunk Oct 16, 2024
    26 of 31 checks passed
    @VietND96 VietND96 deleted the fix-tests branch October 16, 2024 17:19
    jman-sketch pushed a commit to jman-sketch/selenium that referenced this pull request Oct 17, 2024
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    None yet
    Development

    Successfully merging this pull request may close these issues.

    1 participant