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]: Capability se:vncEnabled value based on list of vnc-env-var #14584

Merged
merged 1 commit into from
Oct 10, 2024

Conversation

VietND96
Copy link
Member

@VietND96 VietND96 commented Oct 10, 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

Fixes SeleniumHQ/docker-selenium#2373
In docker-selenium, there are 3 env vars, and its dependency is AND logic - https://github.com/SeleniumHQ/docker-selenium/blob/trunk/NodeBase/start-novnc.sh
For example noVNC can be started only when SE_START_XVFB=true && SE_START_VNC=true

In above scenario, when SE_START_XVFB=true, SE_START_VNC=false, SE_START_NO_VNC=false, in Node stereotype could be seen cap "se:noVncPort":7900,"se:vncEnabled":true
Due to current implementation only check env var SE_START_XVFB is true

Expand the checks based on the combination of list env vars - align with docker-selenium implementation.
On Grid UI, it will prevent the case that the video preview icon is visible even vnc & noVNC not really enabled.

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

Enhancement, Tests


Description

  • Enhanced the handling of VNC environment variables by allowing a list of variables to be specified, aligning with docker-selenium implementation.
  • Updated the isVncEnabled method to check all specified environment variables, ensuring all must be true for VNC to be enabled.
  • Added comprehensive tests to verify the new behavior with both multiple and single environment variables.

Changes walkthrough 📝

Relevant files
Enhancement
NodeFlags.java
Update VNC environment variable handling to support lists

java/src/org/openqa/selenium/grid/node/config/NodeFlags.java

  • Changed vnc-env-var to accept a list of environment variables.
  • Updated the example to show multiple environment variables.
  • +6/-3     
    NodeOptions.java
    Modify VNC environment variable logic to use lists             

    java/src/org/openqa/selenium/grid/node/config/NodeOptions.java

  • Modified default VNC environment variable to a list.
  • Updated isVncEnabled method to check all environment variables.
  • +12/-3   
    Tests
    NodeOptionsTest.java
    Add tests for VNC environment variable list handling         

    java/test/org/openqa/selenium/grid/node/config/NodeOptionsTest.java

  • Added tests for VNC environment variable list handling.
  • Verified behavior with multiple and single environment variables.
  • +44/-0   

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

    Signed-off-by: Viet Nguyen Duc <nguyenducviet4496@gmail.com>
    Copy link
    Contributor

    PR Reviewer Guide 🔍

    Here are some key observations to aid the review process:

    🎫 Ticket compliance analysis ❌

    2373 - Not compliant

    Not compliant requirements:

    • Firefox should launch successfully with Selenium 3 Beta
    • Fix the crash issue when launching Firefox 47 with Selenium 3 Beta
    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 PR contains tests
    🔒 No security concerns identified
    ⚡ Recommended focus areas for review

    Potential Bug
    The isVncEnabled() method now checks all environment variables in the list. Verify if this change could cause unexpected behavior in existing setups where only one variable was previously checked.

    Configuration Change
    The vncEnvVar parameter has been changed from a String to a List. Ensure that this change is properly handled in all places where this parameter is used.

    Copy link
    Contributor

    PR Code Suggestions ✨

    Explore these optional code suggestions:

    CategorySuggestion                                                                                                                                    Score
    Enhancement
    Add a test case to verify behavior when some environment variables are not set

    Consider adding a test case where some environment variables are not set to ensure
    the code handles missing environment variables correctly.

    java/test/org/openqa/selenium/grid/node/config/NodeOptionsTest.java [738-751]

     @Test
    -void testIsVncEnabledAcceptListEnvVarsAndReturnFalse() {
    +void testIsVncEnabledWithMissingEnvVars() {
       System.setProperty("SE_START_XVFB", "true");
    -  System.setProperty("SE_START_VNC", "false");
    +  System.clearProperty("SE_START_VNC");
    +  System.clearProperty("SE_START_NO_VNC");
       String[] rawConfig =
           new String[] {
             "[node]", "vnc-env-var = [\"SE_START_XVFB\", \"SE_START_VNC\", \"SE_START_NO_VNC\"]",
           };
       Config config = new TomlConfig(new StringReader(String.join("\n", rawConfig)));
       NodeOptions nodeOptionsEnabled = new NodeOptions(config);
       assertThat(config.getAll("node", "vnc-env-var").get())
           .containsExactly("SE_START_XVFB", "SE_START_VNC", "SE_START_NO_VNC");
       assertThat(nodeOptionsEnabled.isVncEnabled()).isFalse();
     }
    • Apply this suggestion
    Suggestion importance[1-10]: 9

    Why: Adding a test case for missing environment variables is crucial for ensuring robustness and correctness of the code. It verifies that the system behaves as expected when some environment variables are not set, which is an important edge case to handle.

    9
    Change the condition to enable VNC if any environment variable is true, not all of them

    Consider using a stream operation to check if any of the environment variables are
    set to true, instead of checking if all of them are true. This would allow VNC to be
    enabled if at least one of the specified environment variables is set to true.

    java/src/org/openqa/selenium/grid/node/config/NodeOptions.java [296-300]

    -boolean allEnabled =
    +boolean anyEnabled =
         vncEnvVars.stream()
    -        .allMatch(
    +        .anyMatch(
                 env -> "true".equalsIgnoreCase(System.getProperty(env, System.getenv(env))));
    -vncEnabled.set(allEnabled);
    +vncEnabled.set(anyEnabled);
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This suggestion improves the flexibility of the VNC enabling condition by allowing VNC to be enabled if any of the specified environment variables are true, rather than requiring all to be true. This change aligns with common use cases where only one condition needs to be met, enhancing the code's functionality.

    8
    Performance
    Optimize config retrieval by caching the result and using a more concise Optional handling

    Consider caching the result of config.getAll(NODE_SECTION, "vnc-env-var") to avoid
    repeated calls to the config object.

    java/src/org/openqa/selenium/grid/node/config/NodeOptions.java [291-294]

    -List<String> vncEnvVars = DEFAULT_VNC_ENV_VARS;
    -if (config.getAll(NODE_SECTION, "vnc-env-var").isPresent()) {
    -  vncEnvVars = config.getAll(NODE_SECTION, "vnc-env-var").get();
    -}
    +List<String> vncEnvVars = config.getAll(NODE_SECTION, "vnc-env-var")
    +    .orElse(DEFAULT_VNC_ENV_VARS);
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    Why: The suggestion improves performance by reducing repeated calls to the config object and simplifies the code using a more concise Optional handling. This change enhances code readability and efficiency.

    7

    💡 Need additional feedback ? start a PR chat

    Copy link
    Contributor

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

    CI Failure Feedback 🧐

    (Checks updated until commit 877e0c5)

    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 specific issue was:

  • The test expected a Selenium::WebDriver::Error::WebDriverError with the message "You must enable
    downloads in order to work with downloadable files."
  • Instead, it received a Selenium::WebDriver::Error::UnknownError indicating "Cannot find downloads
    file system for session id."

  • Relevant error logs:
    1:  ##[group]Operating System
    2:  Microsoft Windows Server 2022
    ...
    
    652:  �[32m[1,902 / 3,163]�[0m Copying files; 0s local ... (3 actions, 1 running)
    653:  �[32m[2,080 / 3,163]�[0m Extracting npm package @mui/material@5.15.18_724305784; 0s disk-cache ... (4 actions, 0 running)
    654:  �[32mINFO: �[0mFrom Building external/protobuf~/java/core/liblite_runtime_only.jar (91 source files) [for tool]:
    655:  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
    656:  AccessController.doPrivileged(
    657:  ^
    658:  �[32m[2,279 / 3,163]�[0m Extracting npm package @mui/icons-material@5.15.18_796748879; 0s disk-cache ... (4 actions, 0 running)
    659:  �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (71 source files):
    660:  java\src\org\openqa\selenium\remote\ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    661:  private final ErrorCodes errorCodes;
    662:  ^
    663:  java\src\org\openqa\selenium\remote\ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    664:  this.errorCodes = new ErrorCodes();
    665:  ^
    666:  java\src\org\openqa\selenium\remote\ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    667:  public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {
    668:  ^
    669:  java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    670:  ErrorCodes errorCodes = new ErrorCodes();
    671:  ^
    672:  java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    673:  ErrorCodes errorCodes = new ErrorCodes();
    674:  ^
    675:  java\src\org\openqa\selenium\remote\ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    676:  response.setStatus(ErrorCodes.SUCCESS);
    677:  ^
    678:  java\src\org\openqa\selenium\remote\ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    679:  response.setState(ErrorCodes.SUCCESS_STRING);
    680:  ^
    681:  java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    682:  new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));
    683:  ^
    684:  java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    685:  new ErrorCodes().getExceptionType((String) rawError);
    686:  ^
    687:  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
    688:  private final ErrorCodes errorCodes = new ErrorCodes();
    689:  ^
    690:  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
    691:  private final ErrorCodes errorCodes = new ErrorCodes();
    692:  ^
    693:  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
    694:  int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;
    695:  ^
    696:  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
    697:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
    698:  ^
    699:  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
    700:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
    701:  ^
    702:  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
    703:  response.setStatus(ErrorCodes.SUCCESS);
    704:  ^
    705:  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
    706:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
    707:  ^
    708:  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
    709:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
    710:  ^
    711:  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
    712:  private final ErrorCodes errorCodes = new ErrorCodes();
    713:  ^
    714:  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
    715:  private final ErrorCodes errorCodes = new ErrorCodes();
    716:  ^
    717:  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
    718:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
    719:  ^
    720:  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
    721:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
    722:  ^
    723:  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
    724:  response.setStatus(ErrorCodes.SUCCESS);
    ...
    
    901:  �[32m[3,171 / 3,187]�[0m 8 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 180s local, disk-cache ... (4 actions, 2 running)
    902:  �[32m[3,171 / 3,187]�[0m 8 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 183s local, disk-cache ... (4 actions, 2 running)
    903:  �[32m[3,171 / 3,187]�[0m 8 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 187s local, disk-cache ... (4 actions, 2 running)
    904:  �[32m[3,172 / 3,187]�[0m 9 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 188s local, disk-cache ... (4 actions, 1 running)
    905:  �[32m[3,172 / 3,187]�[0m 9 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 198s local, disk-cache ... (4 actions, 1 running)
    906:  �[32m[3,172 / 3,187]�[0m 9 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 201s local, disk-cache ... (4 actions, 1 running)
    907:  �[32m[3,172 / 3,187]�[0m 9 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 216s local, disk-cache ... (4 actions, 2 running)
    908:  �[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)
    909:  �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver/remote:driver-edge-remote (Summary)
    ...
    
    924:  Selenium::WebDriver::Remote::Driver
    925:  exposes session_id
    926:  exposes remote status
    927:  Request#[] is deprecated and will be removed in a future version of Rack. Please use request.params[] instead
    928:  uses a default file detector
    929:  lists downloads
    930:  downloads a file
    931:  deletes downloadable files
    932:  errors when not set (FAILED - 1)
    933:  Failures:
    934:  1) Selenium::WebDriver::Remote::Driver errors when not set
    935:  Failure/Error:
    936:  expect {
    937:  driver.downloadable_files
    938:  }.to raise_exception(Error::WebDriverError,
    939:  'You must enable downloads in order to work with downloadable files.')
    940:  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: 19b7c8b... os.arch: 'amd64', os.version: '10.0', java.version: '17.0.11'
    941:  Driver info: driver.version: unknown> with backtrace:
    942:  # ./rb/lib/selenium/webdriver/remote/response.rb:63:in `add_cause'
    943:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    949:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    950:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:685:in `execute'
    951:  # ./rb/lib/selenium/webdriver/remote/features.rb:62:in `downloadable_files'
    952:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_file_downloads.rb:27:in `downloadable_files'
    953:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:87:in `block (3 levels) in <module:Remote>'
    954:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
    955:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
    956:  Finished in 21.41 seconds (files took 0.65619 seconds to load)
    957:  7 examples, 1 failure
    958:  Failed examples:
    959:  rspec ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:84 # Selenium::WebDriver::Remote::Driver errors when not set
    ...
    
    971:  Selenium::WebDriver::Remote::Driver
    972:  exposes session_id
    973:  exposes remote status
    974:  Request#[] is deprecated and will be removed in a future version of Rack. Please use request.params[] instead
    975:  uses a default file detector
    976:  lists downloads
    977:  downloads a file
    978:  deletes downloadable files
    979:  errors when not set (FAILED - 1)
    980:  Failures:
    981:  1) Selenium::WebDriver::Remote::Driver errors when not set
    982:  Failure/Error:
    983:  expect {
    984:  driver.downloadable_files
    985:  }.to raise_exception(Error::WebDriverError,
    986:  'You must enable downloads in order to work with downloadable files.')
    987:  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: 00458de... os.arch: 'amd64', os.version: '10.0', java.version: '17.0.11'
    988:  Driver info: driver.version: unknown> with backtrace:
    989:  # ./rb/lib/selenium/webdriver/remote/response.rb:63:in `add_cause'
    990:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    996:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    997:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:685:in `execute'
    998:  # ./rb/lib/selenium/webdriver/remote/features.rb:62:in `downloadable_files'
    999:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_file_downloads.rb:27:in `downloadable_files'
    1000:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:87:in `block (3 levels) in <module:Remote>'
    1001:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
    1002:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
    1003:  Finished in 21.49 seconds (files took 0.65459 seconds to load)
    1004:  7 examples, 1 failure
    1005:  Failed examples:
    1006:  rspec ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:84 # Selenium::WebDriver::Remote::Driver errors when not set
    ...
    
    1018:  Selenium::WebDriver::Remote::Driver
    1019:  exposes session_id
    1020:  exposes remote status
    1021:  Request#[] is deprecated and will be removed in a future version of Rack. Please use request.params[] instead
    1022:  uses a default file detector
    1023:  lists downloads
    1024:  downloads a file
    1025:  deletes downloadable files
    1026:  errors when not set (FAILED - 1)
    1027:  Failures:
    1028:  1) Selenium::WebDriver::Remote::Driver errors when not set
    1029:  Failure/Error:
    1030:  expect {
    1031:  driver.downloadable_files
    1032:  }.to raise_exception(Error::WebDriverError,
    1033:  'You must enable downloads in order to work with downloadable files.')
    1034:  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: ec16beb... os.arch: 'amd64', os.version: '10.0', java.version: '17.0.11'
    1035:  Driver info: driver.version: unknown> with backtrace:
    1036:  # ./rb/lib/selenium/webdriver/remote/response.rb:63:in `add_cause'
    1037:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
    ...
    
    1043:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    1044:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:685:in `execute'
    1045:  # ./rb/lib/selenium/webdriver/remote/features.rb:62:in `downloadable_files'
    1046:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_file_downloads.rb:27:in `downloadable_files'
    1047:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:87:in `block (3 levels) in <module:Remote>'
    1048:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
    1049:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
    1050:  Finished in 21.64 seconds (files took 0.69313 seconds to load)
    1051:  7 examples, 1 failure
    1052:  Failed examples:
    1053:  rspec ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:84 # Selenium::WebDriver::Remote::Driver errors when not set
    1054:  ================================================================================
    1055:  �[32m[3,173 / 3,187]�[0m 10 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 34s ... (4 actions, 1 running)
    1056:  �[32m[3,173 / 3,187]�[0m 10 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 44s ... (4 actions, 1 running)
    1057:  �[32m[3,173 / 3,187]�[0m 10 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 47s ... (4 actions, 1 running)
    1058:  �[32m[3,173 / 3,187]�[0m 10 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:window-edge-remote; 39s ... (4 actions, 2 running)
    1059:  �[32m[3,174 / 3,187]�[0m 11 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:window-edge-remote; 40s ... (4 actions, 1 running)
    1060:  �[32m[3,174 / 3,187]�[0m 11 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:window-edge-remote; 51s ... (4 actions, 1 running)
    1061:  �[32m[3,174 / 3,187]�[0m 11 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:window-edge-remote; 53s ... (4 actions, 1 running)
    1062:  �[32m[3,174 / 3,187]�[0m 11 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 32s ... (4 actions, 2 running)
    1063:  �[32m[3,175 / 3,187]�[0m 12 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 33s ... (4 actions, 1 running)
    1064:  �[32m[3,175 / 3,187]�[0m 12 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 43s ... (4 actions, 1 running)
    1065:  �[32m[3,175 / 3,187]�[0m 12 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 46s ... (4 actions, 1 running)
    1066:  �[32m[3,175 / 3,187]�[0m 12 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 25s ... (4 actions, 2 running)
    1067:  �[32m[3,176 / 3,187]�[0m 13 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 26s ... (4 actions, 1 running)
    1068:  �[32m[3,176 / 3,187]�[0m 13 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 37s ... (4 actions, 1 running)
    1069:  �[32m[3,176 / 3,187]�[0m 13 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 39s ... (4 actions, 1 running)
    1070:  �[32m[3,176 / 3,187]�[0m 13 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote; 27s ... (4 actions, 2 running)
    1071:  �[32m[3,177 / 3,187]�[0m 14 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote; 29s ... (4 actions, 1 running)
    1072:  �[32m[3,177 / 3,187]�[0m 14 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote; 39s ... (4 actions, 1 running)
    1073:  �[32m[3,177 / 3,187]�[0m 14 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote; 41s ... (4 actions, 1 running)
    1074:  �[32m[3,177 / 3,187]�[0m 14 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 26s ... (4 actions, 2 running)
    1075:  �[32m[3,178 / 3,187]�[0m 15 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 27s ... (4 actions, 1 running)
    1076:  �[32m[3,178 / 3,187]�[0m 15 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 37s ... (4 actions, 1 running)
    1077:  �[32m[3,178 / 3,187]�[0m 15 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 40s ... (4 actions, 1 running)
    1078:  �[32m[3,178 / 3,187]�[0m 15 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:listener-edge-remote; 36s ... (4 actions, 2 running)
    1079:  �[32m[3,179 / 3,187]�[0m 16 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:listener-edge-remote; 38s ... (4 actions, 1 running)
    1080:  �[32m[3,179 / 3,187]�[0m 16 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:listener-edge-remote; 48s ... (4 actions, 1 running)
    1081:  �[32m[3,179 / 3,187]�[0m 16 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:listener-edge-remote; 51s ... (4 actions, 1 running)
    1082:  �[32m[3,179 / 3,187]�[0m 16 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:takes_screenshot-edge-remote; 54s ... (4 actions, 2 running)
    1083:  �[32m[3,180 / 3,187]�[0m 17 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:takes_screenshot-edge-remote; 55s ... (4 actions, 1 running)
    1084:  �[32m[3,180 / 3,187]�[0m 17 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:takes_screenshot-edge-remote; 65s ... (4 actions, 1 running)
    1085:  �[32m[3,180 / 3,187]�[0m 17 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:takes_screenshot-edge-remote; 67s ... (4 actions, 1 running)
    1086:  �[32m[3,180 / 3,187]�[0m 17 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/remote:element-edge-remote; 36s ... (4 actions, 2 running)
    1087:  �[32m[3,181 / 3,187]�[0m 18 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/remote:element-edge-remote; 37s ... (4 actions, 1 running)
    1088:  �[32m[3,181 / 3,187]�[0m 18 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/remote:element-edge-remote; 47s ... (4 actions, 1 running)
    1089:  �[32m[3,181 / 3,187]�[0m 18 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/remote:element-edge-remote; 50s ... (4 actions, 1 running)
    1090:  �[32m[3,181 / 3,187]�[0m 18 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 19s ... (4 actions, 2 running)
    1091:  �[32m[3,182 / 3,187]�[0m 19 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 20s ... (4 actions, 1 running)
    1092:  �[32m[3,182 / 3,187]�[0m 19 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 30s ... (4 actions, 1 running)
    1093:  �[32m[3,182 / 3,187]�[0m 19 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 33s ... (4 actions, 1 running)
    1094:  �[32m[3,182 / 3,187]�[0m 19 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 18s ... (4 actions, 2 running)
    1095:  �[32m[3,183 / 3,187]�[0m 20 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 19s ... (4 actions, 1 running)
    1096:  �[32m[3,183 / 3,187]�[0m 20 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 29s ... (4 actions, 1 running)
    1097:  �[32m[3,183 / 3,187]�[0m 20 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 32s ... (4 actions, 1 running)
    1098:  �[32m[3,183 / 3,187]�[0m 20 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 19s ... (4 actions, 2 running)
    1099:  �[32m[3,184 / 3,187]�[0m 21 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 20s ... (3 actions, 1 running)
    1100:  �[32m[3,184 / 3,187]�[0m 21 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 31s ... (3 actions, 1 running)
    1101:  �[32m[3,184 / 3,187]�[0m 21 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 19s ... (3 actions, 2 running)
    1102:  �[32m[3,185 / 3,187]�[0m 22 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 21s ... (2 actions, 1 running)
    1103:  �[32m[3,185 / 3,187]�[0m 22 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 31s ... (2 actions, 1 running)
    1104:  �[32m[3,185 / 3,187]�[0m 22 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 28s local, disk-cache ... (2 actions running)
    1105:  �[32m[3,186 / 3,187]�[0m 23 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 1s local, disk-cache
    1106:  �[32m[3,186 / 3,187]�[0m 23 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 11s local, disk-cache
    1107:  �[32m[3,186 / 3,187]�[0m 23 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 27s local, disk-cache
    1108:  �[32m[3,187 / 3,188]�[0m 24 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 0s disk-cache
    1109:  �[32m[3,187 / 3,188]�[0m 24 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote
    1110:  �[32m[3,187 / 3,188]�[0m 24 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 1s local, disk-cache
    1111:  �[32m[3,187 / 3,188]�[0m 24 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 14s local, disk-cache
    1112:  �[32m[3,188 / 3,189]�[0m 25 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 0s disk-cache
    1113:  �[32m[3,188 / 3,189]�[0m 25 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote
    1114:  �[32m[3,188 / 3,189]�[0m 25 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 1s local, disk-cache
    1115:  �[32m[3,188 / 3,189]�[0m 25 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 87s local, disk-cache
    1116:  �[32m[3,189 / 3,190]�[0m 26 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 1s disk-cache
    1117:  �[32m[3,189 / 3,190]�[0m 26 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote
    1118:  �[32m[3,189 / 3,190]�[0m 26 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 1s local, disk-cache
    1119:  �[32m[3,189 / 3,190]�[0m 26 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 14s local, disk-cache
    1120:  �[32m[3,190 / 3,191]�[0m 27 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 0s disk-cache
    1121:  �[32m[3,190 / 3,191]�[0m 27 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote
    1122:  �[32m[3,190 / 3,191]�[0m 27 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 1s local, disk-cache
    1123:  �[32m[3,190 / 3,191]�[0m 27 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 14s local, disk-cache
    1124:  �[32m[3,191 / 3,192]�[0m 28 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 0s disk-cache
    1125:  �[32m[3,191 / 3,192]�[0m 28 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote
    1126:  �[32m[3,191 / 3,192]�[0m 28 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 1s local, disk-cache
    1127:  �[32m[3,191 / 3,192]�[0m 28 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 14s local, disk-cache
    1128:  �[32mINFO: �[0mFound 29 test targets...
    1129:  �[32mINFO: �[0mElapsed time: 1465.853s, Critical Path: 812.77s
    1130:  �[32mINFO: �[0m2899 processes: 1617 disk cache hit, 1187 internal, 90 local, 5 worker.
    1131:  �[32mINFO: �[0mBuild completed, 1 test FAILED, 2899 total actions
    1132:  //rb/spec/integration/selenium/webdriver:action_builder-edge-remote      �[0m�[32mPASSED�[0m in 27.4s
    1133:  //rb/spec/integration/selenium/webdriver:bidi-edge-remote                �[0m�[32mPASSED�[0m in 14.5s
    1134:  //rb/spec/integration/selenium/webdriver:devtools-edge-remote            �[0m�[32mPASSED�[0m in 87.3s
    1135:  //rb/spec/integration/selenium/webdriver:driver-edge-remote              �[0m�[32mPASSED�[0m in 34.2s
    1136:  //rb/spec/integration/selenium/webdriver:element-edge-remote             �[0m�[32mPASSED�[0m in 28.9s
    1137:  //rb/spec/integration/selenium/webdriver:error-edge-remote               �[0m�[32mPASSED�[0m in 14.6s
    ...
    
    1152:  //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote �[0m�[32mPASSED�[0m in 14.5s
    1153:  //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote  �[0m�[32mPASSED�[0m in 14.7s
    1154:  //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote         �[0m�[32mPASSED�[0m in 14.5s
    1155:  //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote         �[0m�[32mPASSED�[0m in 34.2s
    1156:  //rb/spec/integration/selenium/webdriver/edge:options-edge-remote        �[0m�[32mPASSED�[0m in 21.3s
    1157:  //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote        �[0m�[32mPASSED�[0m in 14.8s
    1158:  //rb/spec/integration/selenium/webdriver/edge:service-edge-remote        �[0m�[32mPASSED�[0m in 21.8s
    1159:  //rb/spec/integration/selenium/webdriver/remote:element-edge-remote      �[0m�[32mPASSED�[0m in 16.5s
    1160:  //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote       �[0m�[31m�[1mFAILED�[0m in 3 out of 3 in 28.6s
    1161:  Stats over 3 runs: max = 28.6s, min = 28.3s, avg = 28.5s, dev = 0.1s
    1162:  D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/remote/driver-edge-remote/test.log
    1163:  D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/remote/driver-edge-remote/test_attempts/attempt_1.log
    1164:  D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/remote/driver-edge-remote/test_attempts/attempt_2.log
    1165:  Executed 29 out of 29 tests: 28 tests pass and �[0m�[31m�[1m1 fails locally�[0m.
    1166:  There were tests whose specified size is too big. Use the --test_verbose_timeout_warnings command line option to see which ones these are.
    1167:  �[0m
    1168:  ##[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 438b77c into trunk Oct 10, 2024
    26 of 29 checks passed
    @VietND96 VietND96 deleted the grid-vnc-enabled branch October 10, 2024 12:17
    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.

    [🐛 Bug]: Error while creating session, because of java.util.concurrent.TimeoutException
    2 participants