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] Improvement for Node handling #14628

Merged
merged 6 commits into from
Oct 24, 2024
Merged

[grid] Improvement for Node handling #14628

merged 6 commits into from
Oct 24, 2024

Conversation

VietND96
Copy link
Member

@VietND96 VietND96 commented Oct 21, 2024

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

checkSessionCount() - to check and drain node after sessions are reached. Steps in order, so in logs, we saw something like

09:51:06.344 INFO [LocalNode.checkSessionCount] - Draining Node, configured sessions value (1) has been reached.
09:51:06.533 INFO [LocalNode.newSession] - Session created by the Node. Id: b47edd11098edb876c805745161ea67c, Caps:

It might confuse that the session created in a draining node.
So, moving it to block finally { }
The trade-off is the session count will include both success and unsuccess. When the session comes, the remaining count decreases.
It could be suitable for autoscaling. For example, if a faulty Node (for unknown reasons), the session cannot be created, and the node will be drained to signal the scaler to scale a new one. Instead of keeping Node running, it biases the scaler already had enough nodes running.
Also, there was a request #13865 - Automatically drain node after n-failed session attempts. By moving that check to finally blocks, it would be best for both.


Add the drain() method to the shutdown hook. Node will send drain event to remove Node immediately once Runtime stopped.


Fixes #13769 - Exception NoSuchSessionException should throw out when command is routed to Node that session just timed out.

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.

Copy link
Contributor

PR Reviewer Guide 🔍

Here are some key observations to aid the review process:

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

Potential Race Condition
The checkSessionCount() method is now called in the finally block of the newSession method. This could potentially lead to a race condition if multiple threads are creating sessions simultaneously. The reviewer should verify if this change affects the accuracy of session counting and draining behavior.

Resource Management
The sessionToDownloadsDir.invalidate(id) call has been moved from the stopTimedOutSession method to the stop method. The reviewer should ensure that this change doesn't lead to any resource leaks or inconsistencies in managing download directories for sessions.

Shutdown Behavior
A new shutdown hook has been added that calls stopAllSessions() and drain(). The reviewer should verify if this change properly handles the node shutdown process and if there are any potential issues with the order of operations during shutdown.

Copy link
Contributor

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Score
Enhancement
Add error handling in shutdown hook for improved reliability

Consider adding error handling and logging in the shutdown hook to ensure that any
exceptions during the shutdown process are properly caught and logged, preventing
silent failures.

java/src/org/openqa/selenium/grid/node/local/LocalNode.java [300-306]

 Runtime.getRuntime()
     .addShutdownHook(
         new Thread(
             () -> {
-              stopAllSessions();
-              drain();
+              try {
+                stopAllSessions();
+                drain();
+              } catch (Exception e) {
+                LOG.log(Level.SEVERE, "Error during node shutdown", e);
+              }
             }));
  • Apply this suggestion
Suggestion importance[1-10]: 8

Why: Adding error handling in the shutdown hook is a significant improvement, as it prevents silent failures during shutdown and ensures that exceptions are logged, enhancing reliability and maintainability.

8
Performance
Optimize cache key presence check for better performance

Consider using sessionToDownloadsDir.asMap().containsKey(id) instead of
sessionToDownloadsDir.getIfPresent(id) != null to check for the presence of a key in
the cache, as it's more efficient and doesn't risk triggering a load operation.

java/src/org/openqa/selenium/grid/node/local/LocalNode.java [773-775]

-if (sessionToDownloadsDir.getIfPresent(id) != null) {
+if (sessionToDownloadsDir.asMap().containsKey(id)) {
   sessionToDownloadsDir.invalidate(id);
 }
  • Apply this suggestion
Suggestion importance[1-10]: 7

Why: The suggestion to use asMap().containsKey(id) instead of getIfPresent(id) != null is a valid optimization that can improve performance by avoiding unnecessary load operations, though the impact may be minor.

7
Best practice
Improve thread naming for better identification and debugging

Consider using a more descriptive name for the shutdown hook thread, such as
"NodeShutdownHook", to improve code readability and make it easier to identify the
purpose of this thread in thread dumps or debugging scenarios.

java/src/org/openqa/selenium/grid/node/local/LocalNode.java [300-306]

 Runtime.getRuntime()
     .addShutdownHook(
         new Thread(
             () -> {
               stopAllSessions();
               drain();
-            }));
+            }, "NodeShutdownHook"));
  • Apply this suggestion
Suggestion importance[1-10]: 5

Why: The suggestion to name the shutdown hook thread improves code readability and debugging, but it is not critical to functionality. It is a good practice for better thread management.

5

💡 Need additional feedback ? start a PR chat

Copy link
Contributor

codiumai-pr-agent-pro bot commented Oct 21, 2024

CI Failure Feedback 🧐

(Checks updated until commit b5d02d9)

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 due to a test failure in the Selenium WebDriver integration tests:

  • The test Selenium::WebDriver::Remote::Driver errors when not set failed because it 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 instead, indicating that the downloads file system could
    not be found for the session.

  • Relevant error logs:
    1:  ##[group]Operating System
    2:  Microsoft Windows Server 2022
    ...
    
    681:  return self._open_to_write(zinfo, force_zip64=force_zip64)
    682:  �[32m[1,928 / 3,139]�[0m [Prepa] Executing genrule //common/devtools/chromium/v129:js_protocol ... (2 actions, 0 running)
    683:  �[32mINFO: �[0mFrom Building external/protobuf~/java/core/liblite_runtime_only.jar (91 source files) [for tool]:
    684:  external\protobuf~\java\core\src\main\java\com\google\protobuf\UnsafeUtil.java:293: warning: [removal] AccessController in java.security has been deprecated and marked for removal
    685:  AccessController.doPrivileged(
    686:  ^
    687:  �[32m[2,006 / 3,139]�[0m Copying files; 0s local ... (2 actions, 1 running)
    688:  �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (71 source files):
    689:  java\src\org\openqa\selenium\remote\ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    690:  private final ErrorCodes errorCodes;
    691:  ^
    692:  java\src\org\openqa\selenium\remote\ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    693:  this.errorCodes = new ErrorCodes();
    694:  ^
    695:  java\src\org\openqa\selenium\remote\ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    696:  public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {
    697:  ^
    698:  java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    699:  ErrorCodes errorCodes = new ErrorCodes();
    700:  ^
    701:  java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    702:  ErrorCodes errorCodes = new ErrorCodes();
    703:  ^
    704:  java\src\org\openqa\selenium\remote\ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    705:  response.setStatus(ErrorCodes.SUCCESS);
    706:  ^
    707:  java\src\org\openqa\selenium\remote\ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    708:  response.setState(ErrorCodes.SUCCESS_STRING);
    709:  ^
    710:  java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    711:  new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));
    712:  ^
    713:  java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    714:  new ErrorCodes().getExceptionType((String) rawError);
    715:  ^
    716:  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
    717:  private final ErrorCodes errorCodes = new ErrorCodes();
    718:  ^
    719:  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
    720:  private final ErrorCodes errorCodes = new ErrorCodes();
    721:  ^
    722:  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
    723:  int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;
    724:  ^
    725:  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
    726:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
    727:  ^
    728:  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
    729:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
    730:  ^
    731:  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
    732:  response.setStatus(ErrorCodes.SUCCESS);
    733:  ^
    734:  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
    735:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
    736:  ^
    737:  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
    738:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
    739:  ^
    740:  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
    741:  private final ErrorCodes errorCodes = new ErrorCodes();
    742:  ^
    743:  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
    744:  private final ErrorCodes errorCodes = new ErrorCodes();
    745:  ^
    746:  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
    747:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
    748:  ^
    749:  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
    750:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
    751:  ^
    752:  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
    753:  response.setStatus(ErrorCodes.SUCCESS);
    ...
    
    916:  �[32m[3,145 / 3,163]�[0m 6 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 164s local, disk-cache ... (4 actions, 2 running)
    917:  �[32m[3,145 / 3,163]�[0m 6 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 171s local, disk-cache ... (4 actions, 2 running)
    918:  �[32m[3,146 / 3,163]�[0m 7 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 172s local, disk-cache ... (4 actions, 1 running)
    919:  �[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)
    920:  �[32m[3,146 / 3,163]�[0m 7 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 186s local, disk-cache ... (4 actions, 1 running)
    921:  �[32m[3,146 / 3,163]�[0m 7 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 200s local, disk-cache ... (4 actions, 2 running)
    922:  �[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)
    923:  ==================== Test output for //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote:
    924:  �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver/remote:driver-edge-remote (Summary)
    ...
    
    938:  �[32mINFO: �[0mFrom Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote:
    939:  exposes session_id
    940:  exposes remote status
    941:  Request#[] is deprecated and will be removed in a future version of Rack. Please use request.params[] instead
    942:  uses a default file detector
    943:  lists downloads
    944:  downloads a file
    945:  deletes downloadable files
    946:  errors when not set (FAILED - 1)
    947:  Failures:
    948:  1) Selenium::WebDriver::Remote::Driver errors when not set
    949:  Failure/Error:
    950:  expect {
    951:  driver.downloadable_files
    952:  }.to raise_exception(Error::WebDriverError,
    953:  'You must enable downloads in order to work with downloadable files.')
    954:  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: d19b8ad... os.arch: 'amd64', os.version: '10.0', java.version: '17.0.11'
    955:  Driver info: driver.version: unknown> with backtrace:
    956:  # ./rb/lib/selenium/webdriver/remote/response.rb:63:in `add_cause'
    957:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    963:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    964:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:685:in `execute'
    965:  # ./rb/lib/selenium/webdriver/remote/features.rb:62:in `downloadable_files'
    966:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_file_downloads.rb:27:in `downloadable_files'
    967:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:87:in `block (3 levels) in <module:Remote>'
    968:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
    969:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
    970:  Finished in 21.52 seconds (files took 0.81094 seconds to load)
    971:  7 examples, 1 failure
    972:  Failed examples:
    973:  rspec ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:84 # Selenium::WebDriver::Remote::Driver errors when not set
    ...
    
    985:  Selenium::WebDriver::Remote::Driver
    986:  exposes session_id
    987:  exposes remote status
    988:  Request#[] is deprecated and will be removed in a future version of Rack. Please use request.params[] instead
    989:  uses a default file detector
    990:  lists downloads
    991:  downloads a file
    992:  deletes downloadable files
    993:  errors when not set (FAILED - 1)
    994:  Failures:
    995:  1) Selenium::WebDriver::Remote::Driver errors when not set
    996:  Failure/Error:
    997:  expect {
    998:  driver.downloadable_files
    999:  }.to raise_exception(Error::WebDriverError,
    1000:  'You must enable downloads in order to work with downloadable files.')
    1001:  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: 5e41977... os.arch: 'amd64', os.version: '10.0', java.version: '17.0.11'
    1002:  Driver info: driver.version: unknown> with backtrace:
    1003:  # ./rb/lib/selenium/webdriver/remote/response.rb:63:in `add_cause'
    1004:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    1010:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    1011:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:685:in `execute'
    1012:  # ./rb/lib/selenium/webdriver/remote/features.rb:62:in `downloadable_files'
    1013:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_file_downloads.rb:27:in `downloadable_files'
    1014:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:87:in `block (3 levels) in <module:Remote>'
    1015:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
    1016:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
    1017:  Finished in 20.15 seconds (files took 0.79753 seconds to load)
    1018:  7 examples, 1 failure
    1019:  Failed examples:
    1020:  rspec ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:84 # Selenium::WebDriver::Remote::Driver errors when not set
    ...
    
    1032:  Selenium::WebDriver::Remote::Driver
    1033:  exposes session_id
    1034:  exposes remote status
    1035:  Request#[] is deprecated and will be removed in a future version of Rack. Please use request.params[] instead
    1036:  uses a default file detector
    1037:  lists downloads
    1038:  downloads a file
    1039:  deletes downloadable files
    1040:  errors when not set (FAILED - 1)
    1041:  Failures:
    1042:  1) Selenium::WebDriver::Remote::Driver errors when not set
    1043:  Failure/Error:
    1044:  expect {
    1045:  driver.downloadable_files
    1046:  }.to raise_exception(Error::WebDriverError,
    1047:  'You must enable downloads in order to work with downloadable files.')
    1048:  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: 6986dab... os.arch: 'amd64', os.version: '10.0', java.version: '17.0.11'
    1049:  Driver info: driver.version: unknown> with backtrace:
    1050:  # ./rb/lib/selenium/webdriver/remote/response.rb:63:in `add_cause'
    1051:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    1057:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    1058:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:685:in `execute'
    1059:  # ./rb/lib/selenium/webdriver/remote/features.rb:62:in `downloadable_files'
    1060:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_file_downloads.rb:27:in `downloadable_files'
    1061:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:87:in `block (3 levels) in <module:Remote>'
    1062:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
    1063:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
    1064:  Finished in 21.39 seconds (files took 0.74408 seconds to load)
    1065:  7 examples, 1 failure
    1066:  Failed examples:
    1067:  rspec ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:84 # Selenium::WebDriver::Remote::Driver errors when not set
    1068:  ================================================================================
    1069:  �[32m[3,147 / 3,163]�[0m 8 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/remote:element-edge-remote; 36s ... (4 actions, 1 running)
    1070:  �[32m[3,147 / 3,163]�[0m 8 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/remote:element-edge-remote; 46s ... (4 actions, 1 running)
    1071:  �[32m[3,147 / 3,163]�[0m 8 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/remote:element-edge-remote; 49s ... (4 actions, 1 running)
    1072:  �[32m[3,147 / 3,163]�[0m 8 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:listener-edge-remote; 28s ... (4 actions, 2 running)
    1073:  �[32m[3,148 / 3,163]�[0m 9 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:listener-edge-remote; 29s ... (4 actions, 1 running)
    1074:  �[32m[3,148 / 3,163]�[0m 9 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:listener-edge-remote; 39s ... (4 actions, 1 running)
    1075:  �[32m[3,148 / 3,163]�[0m 9 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:listener-edge-remote; 42s ... (4 actions, 1 running)
    1076:  �[32m[3,148 / 3,163]�[0m 9 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 17s ... (4 actions, 2 running)
    1077:  �[32m[3,149 / 3,163]�[0m 10 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 19s ... (4 actions, 1 running)
    1078:  �[32m[3,149 / 3,163]�[0m 10 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 29s ... (4 actions, 1 running)
    1079:  �[32m[3,149 / 3,163]�[0m 10 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 31s ... (4 actions, 1 running)
    1080:  �[32m[3,149 / 3,163]�[0m 10 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 19s ... (4 actions, 2 running)
    1081:  �[32m[3,150 / 3,163]�[0m 11 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 20s ... (4 actions, 1 running)
    1082:  �[32m[3,150 / 3,163]�[0m 11 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 31s ... (4 actions, 1 running)
    1083:  �[32m[3,150 / 3,163]�[0m 11 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 34s ... (4 actions, 1 running)
    1084:  �[32m[3,150 / 3,163]�[0m 11 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:shadow_root-edge-remote; 31s ... (4 actions, 2 running)
    1085:  �[32m[3,151 / 3,163]�[0m 12 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:shadow_root-edge-remote; 32s ... (4 actions, 1 running)
    1086:  �[32m[3,151 / 3,163]�[0m 12 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:shadow_root-edge-remote; 43s ... (4 actions, 1 running)
    1087:  �[32m[3,151 / 3,163]�[0m 12 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:shadow_root-edge-remote; 45s ... (4 actions, 1 running)
    1088:  �[32m[3,151 / 3,163]�[0m 12 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:zipper-edge-remote; 36s ... (4 actions, 2 running)
    1089:  �[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)
    1090:  �[32m[3,152 / 3,163]�[0m 13 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:zipper-edge-remote; 48s ... (4 actions, 1 running)
    1091:  �[32m[3,152 / 3,163]�[0m 13 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:zipper-edge-remote; 51s ... (4 actions, 1 running)
    1092:  �[32m[3,152 / 3,163]�[0m 13 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:takes_screenshot-edge-remote; 38s ... (4 actions, 2 running)
    1093:  �[32m[3,153 / 3,163]�[0m 14 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:takes_screenshot-edge-remote; 39s ... (4 actions, 1 running)
    1094:  �[32m[3,153 / 3,163]�[0m 14 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:takes_screenshot-edge-remote; 49s ... (4 actions, 1 running)
    1095:  �[32m[3,153 / 3,163]�[0m 14 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:takes_screenshot-edge-remote; 51s ... (4 actions, 1 running)
    1096:  �[32m[3,153 / 3,163]�[0m 14 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 29s ... (4 actions, 2 running)
    1097:  �[32m[3,154 / 3,163]�[0m 15 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 30s ... (4 actions, 1 running)
    1098:  �[32m[3,154 / 3,163]�[0m 15 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 40s ... (4 actions, 1 running)
    1099:  �[32m[3,154 / 3,163]�[0m 15 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 43s ... (4 actions, 1 running)
    1100:  �[32m[3,154 / 3,163]�[0m 15 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 18s ... (4 actions, 2 running)
    1101:  �[32m[3,155 / 3,163]�[0m 16 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 19s ... (4 actions, 1 running)
    1102:  �[32m[3,155 / 3,163]�[0m 16 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 30s ... (4 actions, 1 running)
    1103:  �[32m[3,155 / 3,163]�[0m 16 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 33s ... (4 actions, 1 running)
    1104:  �[32m[3,155 / 3,163]�[0m 16 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:error-edge-remote; 31s ... (4 actions, 2 running)
    1105:  �[32m[3,156 / 3,163]�[0m 17 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:error-edge-remote; 33s ... (4 actions, 1 running)
    1106:  �[32m[3,156 / 3,163]�[0m 17 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:error-edge-remote; 43s ... (4 actions, 1 running)
    1107:  �[32m[3,156 / 3,163]�[0m 17 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:error-edge-remote; 45s ... (4 actions, 1 running)
    1108:  �[32m[3,156 / 3,163]�[0m 17 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 35s ... (4 actions, 2 running)
    1109:  �[32m[3,157 / 3,163]�[0m 18 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 37s ... (4 actions, 1 running)
    1110:  �[32m[3,157 / 3,163]�[0m 18 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 47s ... (4 actions, 1 running)
    1111:  �[32m[3,157 / 3,163]�[0m 18 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 49s ... (4 actions, 1 running)
    1112:  �[32m[3,158 / 3,163]�[0m 19 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 23s ... (4 actions, 1 running)
    1113:  �[32m[3,158 / 3,163]�[0m 19 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 24s ... (4 actions, 1 running)
    1114:  �[32m[3,158 / 3,163]�[0m 19 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 34s ... (4 actions, 1 running)
    1115:  �[32m[3,158 / 3,163]�[0m 19 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 37s ... (4 actions, 1 running)
    1116:  �[32m[3,158 / 3,163]�[0m 19 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 19s ... (4 actions, 2 running)
    1117:  �[32m[3,159 / 3,163]�[0m 20 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 20s ... (4 actions, 1 running)
    1118:  �[32m[3,159 / 3,163]�[0m 20 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 30s ... (4 actions, 1 running)
    1119:  �[32m[3,159 / 3,163]�[0m 20 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 33s ... (4 actions, 1 running)
    1120:  �[32m[3,159 / 3,163]�[0m 20 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:target_locator-edge-remote; 20s ... (4 actions, 2 running)
    1121:  �[32m[3,160 / 3,163]�[0m 21 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:target_locator-edge-remote; 22s ... (3 actions, 1 running)
    1122:  �[32m[3,160 / 3,163]�[0m 21 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:target_locator-edge-remote; 32s ... (3 actions, 1 running)
    1123:  �[32m[3,160 / 3,163]�[0m 21 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote; 20s ... (3 actions, 2 running)
    1124:  �[32m[3,161 / 3,163]�[0m 22 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote; 22s ... (2 actions, 1 running)
    1125:  �[32m[3,161 / 3,163]�[0m 22 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote; 32s ... (2 actions, 1 running)
    1126:  �[32m[3,161 / 3,163]�[0m 22 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:target_locator-edge-remote; 27s local, disk-cache ... (2 actions running)
    1127:  �[32m[3,162 / 3,163]�[0m 23 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote; 1s local, disk-cache
    1128:  �[32m[3,162 / 3,163]�[0m 23 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote; 11s local, disk-cache
    1129:  �[32m[3,162 / 3,163]�[0m 23 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote; 34s local, disk-cache
    1130:  �[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
    1131:  �[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
    1132:  �[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
    1133:  �[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
    1134:  �[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
    1135:  �[32m[3,164 / 3,165]�[0m 25 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote
    1136:  �[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
    1137:  �[32m[3,164 / 3,165]�[0m 25 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 85s local, disk-cache
    1138:  �[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)
    1139:  �[32m[3,164 / 3,165]�[0m 25 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 87s local, disk-cache
    1140:  �[32m[3,164 / 3,165]�[0m 25 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 171s local, disk-cache
    ...
    
    1151:  ci: github
    1152:  rbe: false
    1153:  ruby: ruby 3.0.6p216 (2023-03-30 revision 23a532679b) [x64-mingw32]
    1154:  Selenium::WebDriver::DevTools
    1155:  sends commands
    1156:  maps methods to classes
    1157:  supports events
    1158:  #<Thread:0x00000152a1c7c668 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):
    1159:  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)
    1160:  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'
    1161:  propagates errors in events
    ...
    
    1166:  notifies about DOM mutations
    1167:  #register
    1168:  on any request
    1169:  based on URL
    1170:  #intercept
    1171:  continues requests
    1172:  changes requests
    1173:  continues responses
    1174:  changes responses (FAILED - 1)
    ...
    
    1177:  ensures pinned script is available on new pages
    1178:  allows to unpin script
    1179:  ensures unpinned scripts are not available on new pages
    1180:  handles arguments in pinned script
    1181:  supports async pinned scripts
    1182:  Pending: (Failures listed here are expected and do not affect your suite's status)
    1183:  1) Selenium::WebDriver::DevTools notifies about document log messages
    1184:  # Test guarded; Guarded by {:browser=>[:chrome, :edge, :firefox], :reason=>"https://bugzilla.mozilla.org/show_bug.cgi?id=1819965"};
    1185:  Got 1 failure:
    1186:  1.1) Failure/Error:
    ...
    
    1190:  expected [#<Selenium::WebDriver::DevTools::ConsoleEvent:0x00000152a25ef380 @type=:log, @timestamp=2024-10-24 0...t:49410/javascriptPage.html"}, {"name" => "compatMode", "type" => "string", "value" => "CSS1Compat"}]}}]>] to include (an object having attributes {:args => [hash_including("location" => "anything")], :type => :log})
    1191:  Diff:
    1192:  @@ -1 +1 @@
    1193:  -[(an object having attributes {:args => [hash_including("location" => "anything")], :type => :log})]
    1194:  +[#<Selenium::WebDriver::DevTools::ConsoleEvent:0x00000152a25ef380 @type=:log, @timestamp=2024-10-24 03:36:00 342875/1048576 +0000, @args=[{"type"=>"object", "subtype"=>"node", "className"=>"HTMLDocument", "description"=>"#document", "objectId"=>"6737393572175979292.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:49410/javascriptPage.html"}, {"name"=>"documentURI", "type"=>"string", "value"=>"http://localhost:49410/javascriptPage.html"}, {"name"=>"compatMode", "type"=>"string", "value"=>"CSS1Compat"}]}}]>]
    1195:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:131:in `block (2 levels) in <module:WebDriver>'
    1196:  Failures:
    1197:  1) Selenium::WebDriver::DevTools#intercept changes responses
    1198:  Failure/Error: expect(driver.find_elements(id: 'appended')).not_to be_empty
    1199:  expected `[].empty?` to be falsey, got true
    1200:  # ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:213:in `block (3 levels) in <module:WebDriver>'
    1201:  Finished in 1 minute 18.78 seconds (files took 0.59742 seconds to load)
    1202:  21 examples, 1 failure, 1 pending
    1203:  Failed examples:
    1204:  rspec ./rb/spec/integration/selenium/webdriver/devtools_spec.rb:206 # Selenium::WebDriver::DevTools#intercept changes responses
    1205:  ================================================================================
    1206:  �[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
    1207:  �[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
    1208:  �[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
    1209:  �[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
    1210:  �[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
    1211:  �[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
    1212:  �[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
    1213:  �[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
    1214:  �[32m[3,167 / 3,168]�[0m 28 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 0s disk-cache
    1215:  �[32m[3,167 / 3,168]�[0m 28 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote
    1216:  �[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
    1217:  �[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
    1218:  �[32mINFO: �[0mFound 29 test targets...
    1219:  �[32mINFO: �[0mElapsed time: 1513.038s, Critical Path: 762.18s
    1220:  �[32mINFO: �[0m2889 processes: 1617 disk cache hit, 1178 internal, 92 local, 2 worker.
    1221:  �[32mINFO: �[0mBuild completed, 1 test FAILED, 2889 total actions
    1222:  //rb/spec/integration/selenium/webdriver:action_builder-edge-remote      �[0m�[32mPASSED�[0m in 28.6s
    1223:  //rb/spec/integration/selenium/webdriver:bidi-edge-remote                �[0m�[32mPASSED�[0m in 14.6s
    1224:  //rb/spec/integration/selenium/webdriver:driver-edge-remote              �[0m�[32mPASSED�[0m in 38.4s
    1225:  //rb/spec/integration/selenium/webdriver:element-edge-remote             �[0m�[32mPASSED�[0m in 29.0s
    1226:  //rb/spec/integration/selenium/webdriver:error-edge-remote               �[0m�[32mPASSED�[0m in 14.5s
    ...
    
    1241:  //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote �[0m�[32mPASSED�[0m in 14.5s
    1242:  //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote  �[0m�[32mPASSED�[0m in 14.6s
    1243:  //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote         �[0m�[32mPASSED�[0m in 14.5s
    1244:  //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote         �[0m�[32mPASSED�[0m in 34.2s
    1245:  //rb/spec/integration/selenium/webdriver/edge:options-edge-remote        �[0m�[32mPASSED�[0m in 21.3s
    1246:  //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote        �[0m�[32mPASSED�[0m in 14.6s
    1247:  //rb/spec/integration/selenium/webdriver/edge:service-edge-remote        �[0m�[32mPASSED�[0m in 21.5s
    1248:  //rb/spec/integration/selenium/webdriver/remote:element-edge-remote      �[0m�[32mPASSED�[0m in 16.3s
    1249:  //rb/spec/integration/selenium/webdriver:devtools-edge-remote             �[0m�[35mFLAKY�[0m, failed in 1 out of 2 in 85.6s
    1250:  Stats over 2 runs: max = 85.6s, min = 85.5s, avg = 85.5s, dev = 0.0s
    1251:  D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/devtools-edge-remote/test_attempts/attempt_1.log
    1252:  //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote       �[0m�[31m�[1mFAILED�[0m in 3 out of 3 in 28.7s
    1253:  Stats over 3 runs: max = 28.7s, min = 27.4s, avg = 28.2s, dev = 0.6s
    1254:  D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/remote/driver-edge-remote/test.log
    1255:  D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/remote/driver-edge-remote/test_attempts/attempt_1.log
    1256:  D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/remote/driver-edge-remote/test_attempts/attempt_2.log
    1257:  Executed 29 out of 29 tests: 28 tests pass and �[0m�[31m�[1m1 fails locally�[0m.
    1258:  There were tests whose specified size is too big. Use the --test_verbose_timeout_warnings command line option to see which ones these are.
    1259:  �[0m
    1260:  ##[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.

    Copy link

    codecov bot commented Oct 21, 2024

    Codecov Report

    All modified and coverable lines are covered by tests ✅

    Project coverage is 57.78%. Comparing base (57f8398) to head (b684f60).
    Report is 824 commits behind head on trunk.

    Additional details and impacted files
    @@            Coverage Diff             @@
    ##            trunk   #14628      +/-   ##
    ==========================================
    - Coverage   58.48%   57.78%   -0.70%     
    ==========================================
      Files          86       89       +3     
      Lines        5270     5614     +344     
      Branches      220      245      +25     
    ==========================================
    + Hits         3082     3244     +162     
    - Misses       1968     2125     +157     
    - Partials      220      245      +25     

    ☔ View full report in Codecov by Sentry.
    📢 Have feedback on the report? Share it here.

    @VietND96 VietND96 force-pushed the node-shutdown branch 3 times, most recently from d066ac7 to 0af907e Compare October 21, 2024 12:49
    @VietND96 VietND96 changed the title [grid] Update for node shutdown gracefully [grid] Improvement for Node handling Oct 23, 2024
    @VietND96 VietND96 requested a review from diemol October 24, 2024 02:17
    Signed-off-by: Viet Nguyen Duc <[email protected]>
    @VietND96 VietND96 merged commit 833efa9 into trunk Oct 24, 2024
    28 of 29 checks passed
    @VietND96 VietND96 deleted the node-shutdown branch October 24, 2024 04:28
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    None yet
    3 participants