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

[py] Add backward compatibility for AppiumConnection #14696

Merged
merged 1 commit into from
Oct 31, 2024

Conversation

VietND96
Copy link
Member

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

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


Description

  • Added _timeout and _ca_certs attributes to RemoteConnection to maintain backward compatibility with AppiumConnection.
  • The _timeout is set using the GLOBAL_DEFAULT_TIMEOUT environment variable or the default socket timeout.
  • The _ca_certs is determined by the REQUESTS_CA_BUNDLE environment variable or defaults to certifi.where().
  • Updated the __init__ method to ensure these attributes are set from ClientConfig.

Changes walkthrough 📝

Relevant files
Bug fix
remote_connection.py
Add backward compatibility attributes to RemoteConnection

py/selenium/webdriver/remote/remote_connection.py

  • Added _timeout and _ca_certs attributes to RemoteConnection for
    backward compatibility.
  • Set _timeout and _ca_certs using environment variables or default
    values.
  • Updated __init__ method to assign timeout and ca_certs from
    ClientConfig.
  • +15/-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 🔵🔵⚪⚪⚪
    🧪 No relevant tests
    🔒 No security concerns identified
    ⚡ Recommended focus areas for review

    Potential Compatibility Issue
    The addition of class-level attributes _timeout and _ca_certs might affect other parts of the codebase that rely on these attributes not being present in the RemoteConnection class. Verify that this change doesn't introduce unexpected side effects in other areas of the project.

    Code Duplication
    The newly added _timeout and _ca_certs attributes are being set both at the class level and in the __init__ method. This duplication might lead to confusion and potential inconsistencies. Consider refactoring to avoid redundancy.

    Copy link
    Contributor

    PR Code Suggestions ✨

    Explore these optional code suggestions:

    CategorySuggestion                                                                                                                                    Score
    Enhancement
    Use a more idiomatic approach for checking and retrieving environment variables

    Consider using the get() method of os.environ instead of the in operator and
    os.getenv() for a more concise and idiomatic approach to checking and retrieving
    environment variables.

    py/selenium/webdriver/remote/remote_connection.py [150]

    -_ca_certs = os.getenv("REQUESTS_CA_BUNDLE") if "REQUESTS_CA_BUNDLE" in os.environ else certifi.where()
    +_ca_certs = os.environ.get("REQUESTS_CA_BUNDLE", certifi.where())
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: Using os.environ.get() is a more concise and idiomatic way to handle environment variables, improving code readability and reducing potential errors. This is a valuable enhancement to the code.

    8
    Use a class-level constant for the default timeout value to improve readability and performance

    Consider using a class-level constant for the default timeout value instead of
    calculating it every time the class is instantiated. This would improve readability
    and potentially performance.

    py/selenium/webdriver/remote/remote_connection.py [145-149]

    -_timeout = (
    -    float(os.getenv("GLOBAL_DEFAULT_TIMEOUT", str(socket.getdefaulttimeout())))
    -    if os.getenv("GLOBAL_DEFAULT_TIMEOUT") is not None
    -    else socket.getdefaulttimeout()
    -)
    +DEFAULT_TIMEOUT = float(os.getenv("GLOBAL_DEFAULT_TIMEOUT", str(socket.getdefaulttimeout())))
    +_timeout = DEFAULT_TIMEOUT if os.getenv("GLOBAL_DEFAULT_TIMEOUT") is not None else socket.getdefaulttimeout()
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    Why: The suggestion to use a class-level constant for the default timeout value can improve readability and potentially enhance performance by avoiding repeated calculations. It is a reasonable enhancement to the code structure.

    7
    Maintainability
    Use a more descriptive name for the CA certificates attribute to improve code clarity

    Consider using a more descriptive name for the class attribute _ca_certs to better
    reflect its purpose, such as _default_ca_certs.

    py/selenium/webdriver/remote/remote_connection.py [150]

    -_ca_certs = os.getenv("REQUESTS_CA_BUNDLE") if "REQUESTS_CA_BUNDLE" in os.environ else certifi.where()
    +_default_ca_certs = os.getenv("REQUESTS_CA_BUNDLE") if "REQUESTS_CA_BUNDLE" in os.environ else certifi.where()
    • Apply this suggestion
    Suggestion importance[1-10]: 6

    Why: Renaming _ca_certs to _default_ca_certs enhances code clarity by making the attribute's purpose more explicit. This change aids maintainability but does not affect functionality.

    6
    Best practice
    Organize import statements at the top of the file for better code structure

    Move the import statements to the top of the file to follow PEP 8 guidelines for
    import organization.

    py/selenium/webdriver/remote/remote_connection.py [139-143]

    -# Keep backward compatibility for AppiumConnection - https://github.com/SeleniumHQ/selenium/issues/14694
     import os
     import socket
    -
     import certifi
     
    +# Rest of the class definition...
    +# Keep backward compatibility for AppiumConnection - https://github.com/SeleniumHQ/selenium/issues/14694
    +
    Suggestion importance[1-10]: 5

    Why: Moving import statements to the top of the file aligns with PEP 8 guidelines and improves code organization. However, this change is more stylistic and has a minor impact on functionality.

    5

    💡 Need additional feedback ? start a PR chat

    Copy link
    Contributor

    CI Failure Feedback 🧐

    Action: Test / All RBE tests

    Failed stage: Run Bazel [❌]

    Failed test name: py/test/selenium/webdriver/common/bidi_tests.py::test_collect_log_mutations[chrome]

    Failure summary:

    The action failed due to a test failure in the bidi_tests.py file. The specific reasons for the
    failure are:

  • The test test_collect_log_mutations[chrome] failed with an InvalidSelectorException. This indicates
    that an invalid or illegal selector was specified in the test.
  • The test test_can_upload_file[chrome] failed with a StaleElementReferenceException, meaning that the
    element being referenced is no longer present in the DOM.
  • The test test_can_upload_two_files[chrome] also failed with a StaleElementReferenceException.

  • Relevant error logs:
    1:  ##[group]Operating System
    2:  Ubuntu
    ...
    
    970:  Package 'php-symfony-debug-bundle' is not installed, so not removed
    971:  Package 'php-symfony-dependency-injection' is not installed, so not removed
    972:  Package 'php-symfony-deprecation-contracts' is not installed, so not removed
    973:  Package 'php-symfony-discord-notifier' is not installed, so not removed
    974:  Package 'php-symfony-doctrine-bridge' is not installed, so not removed
    975:  Package 'php-symfony-doctrine-messenger' is not installed, so not removed
    976:  Package 'php-symfony-dom-crawler' is not installed, so not removed
    977:  Package 'php-symfony-dotenv' is not installed, so not removed
    978:  Package 'php-symfony-error-handler' is not installed, so not removed
    ...
    
    1815:  warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
    1816:  (14:54:06) �[32mINFO: �[0mFrom Building external/protobuf~/java/core/liblite_runtime_only.jar (91 source files) [for tool]:
    1817:  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
    1818:  AccessController.doPrivileged(
    1819:  ^
    1820:  (14:54:06) �[32mAnalyzing:�[0m 2120 targets (1622 packages loaded, 56973 targets configured)
    1821:  �[32m[2,850 / 3,802]�[0m 74 / 77 tests;�[0m Copying files; 0s local ... (45 actions, 8 running)
    1822:  (14:54:07) �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (71 source files):
    1823:  java/src/org/openqa/selenium/remote/ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1824:  private final ErrorCodes errorCodes;
    1825:  ^
    1826:  java/src/org/openqa/selenium/remote/ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1827:  this.errorCodes = new ErrorCodes();
    1828:  ^
    1829:  java/src/org/openqa/selenium/remote/ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1830:  public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {
    1831:  ^
    1832:  java/src/org/openqa/selenium/remote/Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1833:  ErrorCodes errorCodes = new ErrorCodes();
    1834:  ^
    1835:  java/src/org/openqa/selenium/remote/Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1836:  ErrorCodes errorCodes = new ErrorCodes();
    1837:  ^
    1838:  java/src/org/openqa/selenium/remote/ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1839:  response.setStatus(ErrorCodes.SUCCESS);
    1840:  ^
    1841:  java/src/org/openqa/selenium/remote/ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1842:  response.setState(ErrorCodes.SUCCESS_STRING);
    1843:  ^
    1844:  java/src/org/openqa/selenium/remote/W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1845:  new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));
    1846:  ^
    1847:  java/src/org/openqa/selenium/remote/W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1848:  new ErrorCodes().getExceptionType((String) rawError);
    1849:  ^
    1850:  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
    1851:  private final ErrorCodes errorCodes = new ErrorCodes();
    1852:  ^
    1853:  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
    1854:  private final ErrorCodes errorCodes = new ErrorCodes();
    1855:  ^
    1856:  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
    1857:  int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;
    1858:  ^
    1859:  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
    1860:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
    1861:  ^
    1862:  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
    1863:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
    1864:  ^
    1865:  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
    1866:  response.setStatus(ErrorCodes.SUCCESS);
    1867:  ^
    1868:  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
    1869:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
    1870:  ^
    1871:  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
    1872:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
    1873:  ^
    1874:  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
    1875:  private final ErrorCodes errorCodes = new ErrorCodes();
    1876:  ^
    1877:  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
    1878:  private final ErrorCodes errorCodes = new ErrorCodes();
    1879:  ^
    1880:  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
    1881:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
    1882:  ^
    1883:  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
    1884:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
    1885:  ^
    1886:  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
    1887:  response.setStatus(ErrorCodes.SUCCESS);
    ...
    
    1963:  (14:54:28) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:351:19: runfiles symlink javascript/atoms/test/click_submit_test.html -> javascript/atoms/test/click_submit_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1964:  (14:54:28) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:351:19: runfiles symlink javascript/atoms/test/click_test.html -> javascript/atoms/test/click_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1965:  (14:54:28) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:351:19: runfiles symlink javascript/atoms/test/clientrect_test.html -> javascript/atoms/test/clientrect_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1966:  (14:54:28) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:351:19: runfiles symlink javascript/atoms/test/color_test.html -> javascript/atoms/test/color_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1967:  (14:54:28) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:351:19: runfiles symlink javascript/atoms/test/dom_test.html -> javascript/atoms/test/dom_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1968:  (14:54:28) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:351:19: runfiles symlink javascript/atoms/test/drag_test.html -> javascript/atoms/test/drag_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1969:  (14:54:28) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:351:19: runfiles symlink javascript/atoms/test/enabled_test.html -> javascript/atoms/test/enabled_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1970:  (14:54:28) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:351:19: runfiles symlink javascript/atoms/test/enter_submit_test.html -> javascript/atoms/test/enter_submit_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1971:  (14:54:28) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:351:19: runfiles symlink javascript/atoms/test/error_test.html -> javascript/atoms/test/error_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    ...
    
    2076:  (14:54:28) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/webdriver/BUILD.bazel:67:19: runfiles symlink javascript/webdriver/test/testutil_test.js -> javascript/webdriver/test/testutil_test.js obscured by javascript/webdriver/test -> bazel-out/k8-fastbuild/bin/javascript/webdriver/test
    2077:  (14:54:31) �[32mAnalyzing:�[0m 2120 targets (1622 packages loaded, 58417 targets configured)
    2078:  �[32m[7,120 / 7,895]�[0m 188 / 1013 tests;�[0m [Prepa] Testing //rb/spec/integration/selenium/webdriver/remote:element-edge; 4s ... (50 actions, 9 running)
    2079:  (14:54:36) �[32mAnalyzing:�[0m 2120 targets (1622 packages loaded, 58554 targets configured)
    2080:  �[32m[8,262 / 9,419]�[0m 213 / 1154 tests;�[0m [Prepa] Testing //rb/spec/integration/selenium/webdriver:fedcm-edge ... (47 actions, 6 running)
    2081:  (14:54:41) �[32mAnalyzing:�[0m 2120 targets (1622 packages loaded, 58969 targets configured)
    2082:  �[32m[8,887 / 10,752]�[0m 291 / 1655 tests;�[0m [Prepa] Testing //rb/spec/integration/selenium/webdriver:storage-chrome ... (49 actions, 7 running)
    2083:  (14:54:46) �[32mAnalyzing:�[0m 2120 targets (1626 packages loaded, 60808 targets configured)
    2084:  �[32m[9,259 / 11,312]�[0m 349 / 1842 tests;�[0m [Prepa] Testing //rb/spec/integration/selenium/webdriver:error-firefox ... (49 actions, 3 running)
    2085:  (14:54:49) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/remote/codec/w3c/W3CHttpResponseCodecTest.jar (1 source file):
    2086:  java/test/org/openqa/selenium/remote/codec/w3c/W3CHttpResponseCodecTest.java:26: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2087:  import static org.openqa.selenium.remote.ErrorCodes.METHOD_NOT_ALLOWED;
    2088:  ^
    2089:  java/test/org/openqa/selenium/remote/codec/w3c/W3CHttpResponseCodecTest.java:55: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2090:  assertThat(decoded.getStatus()).isEqualTo(ErrorCodes.SUCCESS);
    2091:  ^
    2092:  java/test/org/openqa/selenium/remote/codec/w3c/W3CHttpResponseCodecTest.java:81: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2093:  assertThat(decoded.getStatus()).isEqualTo(ErrorCodes.UNHANDLED_ERROR);
    2094:  ^
    2095:  java/test/org/openqa/selenium/remote/codec/w3c/W3CHttpResponseCodecTest.java:107: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2096:  assertThat(decoded.getStatus()).isEqualTo(ErrorCodes.UNHANDLED_ERROR);
    2097:  ^
    2098:  (14:54:50) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/json/JsonTest.jar (1 source file):
    2099:  java/test/org/openqa/selenium/json/JsonTest.java:430: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2100:  assertThat(response.getState()).isEqualTo(new ErrorCodes().toState(0));
    2101:  ^
    2102:  java/test/org/openqa/selenium/json/JsonTest.java:441: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2103:  assertThat(response.getState()).isEqualTo(new ErrorCodes().toState(0));
    2104:  ^
    2105:  java/test/org/openqa/selenium/json/JsonTest.java:454: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2106:  assertThat(response.getState()).isEqualTo(new ErrorCodes().toState(32));
    ...
    
    2109:  �[32m[11,105 / 12,363]�[0m 458 / 1842 tests;�[0m Extracting npm package @mui/[email protected]_796719057; 3s remote, remote-cache ... (46 actions, 30 running)
    2110:  (14:54:56) �[32mAnalyzing:�[0m 2120 targets (1627 packages loaded, 62179 targets configured)
    2111:  �[32m[11,889 / 12,809]�[0m 498 / 1842 tests;�[0m [Prepa] Testing //rb/spec/integration/selenium/webdriver:listener-firefox-beta ... (42 actions, 17 running)
    2112:  (14:55:01) �[32mINFO: �[0mFrom PackageZip javascript/grid-ui/react-zip.jar:
    2113:  /mnt/engflow/worker/work/1/exec/bazel-out/k8-opt-exec-ST-a934f86a68ba/bin/external/rules_pkg~/pkg/private/zip/build_zip.runfiles/rules_python~~python~python_3_8_x86_64-unknown-linux-gnu/lib/python3.8/zipfile.py:1525: UserWarning: Duplicate name: 'grid-ui/'
    2114:  return self._open_to_write(zinfo, force_zip64=force_zip64)
    2115:  (14:55:02) �[32mAnalyzing:�[0m 2120 targets (1628 packages loaded, 62458 targets configured)
    2116:  �[32m[12,311 / 13,270]�[0m 564 / 1893 tests;�[0m Testing //py:test-chrome-test/selenium/webdriver/chrome/chrome_network_emulation_tests.py; 1s remote, remote-cache ... (47 actions, 1 running)
    2117:  (14:55:06) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/remote/ErrorHandlerTest.jar (1 source file) and running annotation processors (AutoServiceProcessor):
    2118:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:79: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2119:  handler.throwIfResponseFailed(createResponse(ErrorCodes.SUCCESS), 100);
    2120:  ^
    2121:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:85: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2122:  assertThrowsCorrectExceptionType(ErrorCodes.NO_SUCH_WINDOW, NoSuchWindowException.class);
    2123:  ^
    2124:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:86: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2125:  assertThrowsCorrectExceptionType(ErrorCodes.NO_SUCH_FRAME, NoSuchFrameException.class);
    2126:  ^
    2127:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:87: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2128:  assertThrowsCorrectExceptionType(ErrorCodes.NO_SUCH_ELEMENT, NoSuchElementException.class);
    2129:  ^
    2130:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:88: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2131:  assertThrowsCorrectExceptionType(ErrorCodes.UNKNOWN_COMMAND, UnsupportedCommandException.class);
    2132:  ^
    2133:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:90: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2134:  ErrorCodes.METHOD_NOT_ALLOWED, UnsupportedCommandException.class);
    2135:  ^
    2136:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:92: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2137:  ErrorCodes.STALE_ELEMENT_REFERENCE, StaleElementReferenceException.class);
    2138:  ^
    2139:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:94: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2140:  ErrorCodes.INVALID_ELEMENT_STATE, InvalidElementStateException.class);
    2141:  ^
    2142:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:95: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2143:  assertThrowsCorrectExceptionType(ErrorCodes.XPATH_LOOKUP_ERROR, InvalidSelectorException.class);
    2144:  ^
    2145:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:107: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2146:  Response response = createResponse(ErrorCodes.UNHANDLED_ERROR);
    2147:  ^
    2148:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:120: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2149:  createResponse(ErrorCodes.UNHANDLED_ERROR, "boom"), 123))
    2150:  ^
    2151:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:133: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2152:  createResponse(ErrorCodes.UNHANDLED_ERROR, ImmutableMap.of("message", "boom")),
    2153:  ^
    2154:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:147: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2155:  ErrorCodes.UNHANDLED_ERROR,
    2156:  ^
    2157:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:167: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2158:  ErrorCodes.UNHANDLED_ERROR,
    2159:  ^
    2160:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:193: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2161:  createResponse(ErrorCodes.UNHANDLED_ERROR, toMap(serverError)), 123))
    2162:  ^
    2163:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:214: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2164:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2165:  ^
    2166:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:248: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2167:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2168:  ^
    2169:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:280: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2170:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2171:  ^
    2172:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:308: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2173:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2174:  ^
    2175:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:327: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2176:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2177:  ^
    2178:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:355: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2179:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2180:  ^
    2181:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:394: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2182:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2183:  ^
    2184:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:426: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2185:  createResponse(ErrorCodes.UNHANDLED_ERROR, toMap(serverError)), 123))
    2186:  ^
    2187:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:435: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2188:  exceptions.put(ErrorCodes.NO_SUCH_SESSION, NoSuchSessionException.class);
    2189:  ^
    2190:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:436: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2191:  exceptions.put(ErrorCodes.NO_SUCH_ELEMENT, NoSuchElementException.class);
    2192:  ^
    2193:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:437: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2194:  exceptions.put(ErrorCodes.NO_SUCH_FRAME, NoSuchFrameException.class);
    2195:  ^
    2196:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:438: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2197:  exceptions.put(ErrorCodes.UNKNOWN_COMMAND, UnsupportedCommandException.class);
    2198:  ^
    2199:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:439: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2200:  exceptions.put(ErrorCodes.STALE_ELEMENT_REFERENCE, StaleElementReferenceException.class);
    2201:  ^
    2202:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:440: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2203:  exceptions.put(ErrorCodes.INVALID_ELEMENT_STATE, InvalidElementStateException.class);
    2204:  ^
    2205:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:441: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2206:  exceptions.put(ErrorCodes.UNHANDLED_ERROR, WebDriverException.class);
    2207:  ^
    2208:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:442: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2209:  exceptions.put(ErrorCodes.JAVASCRIPT_ERROR, JavascriptException.class);
    2210:  ^
    2211:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:443: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2212:  exceptions.put(ErrorCodes.XPATH_LOOKUP_ERROR, InvalidSelectorException.class);
    2213:  ^
    2214:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:444: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2215:  exceptions.put(ErrorCodes.TIMEOUT, TimeoutException.class);
    2216:  ^
    2217:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:445: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2218:  exceptions.put(ErrorCodes.NO_SUCH_WINDOW, NoSuchWindowException.class);
    2219:  ^
    2220:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:446: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2221:  exceptions.put(ErrorCodes.INVALID_COOKIE_DOMAIN, InvalidCookieDomainException.class);
    2222:  ^
    2223:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:447: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2224:  exceptions.put(ErrorCodes.UNABLE_TO_SET_COOKIE, UnableToSetCookieException.class);
    2225:  ^
    2226:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:448: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2227:  exceptions.put(ErrorCodes.UNEXPECTED_ALERT_PRESENT, UnhandledAlertException.class);
    2228:  ^
    2229:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:449: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2230:  exceptions.put(ErrorCodes.NO_ALERT_PRESENT, NoAlertPresentException.class);
    2231:  ^
    2232:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:450: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2233:  exceptions.put(ErrorCodes.ASYNC_SCRIPT_TIMEOUT, ScriptTimeoutException.class);
    2234:  ^
    2235:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:451: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2236:  exceptions.put(ErrorCodes.INVALID_SELECTOR_ERROR, InvalidSelectorException.class);
    2237:  ^
    2238:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:452: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2239:  exceptions.put(ErrorCodes.SESSION_NOT_CREATED, SessionNotCreatedException.class);
    2240:  ^
    2241:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:453: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2242:  exceptions.put(ErrorCodes.MOVE_TARGET_OUT_OF_BOUNDS, MoveTargetOutOfBoundsException.class);
    2243:  ^
    2244:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:454: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2245:  exceptions.put(ErrorCodes.INVALID_XPATH_SELECTOR, InvalidSelectorException.class);
    2246:  ^
    2247:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:455: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2248:  exceptions.put(ErrorCodes.INVALID_XPATH_SELECTOR_RETURN_TYPER, InvalidSelectorException.class);
    2249:  ^
    2250:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:469: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2251:  ? ErrorCodes.INVALID_SELECTOR_ERROR
    2252:  ^
    2253:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:471: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2254:  assertThat(new ErrorCodes().toStatusCode(e)).isEqualTo(expected);
    2255:  ^
    2256:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:483: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2257:  response.setState(new ErrorCodes().toState(status));
    2258:  ^
    2259:  (14:55:06) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/remote/RemotableByTest.jar (1 source file) and running annotation processors (AutoServiceProcessor):
    2260:  java/test/org/openqa/selenium/remote/RemotableByTest.java:23: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2261:  import static org.openqa.selenium.remote.ErrorCodes.SUCCESS_STRING;
    2262:  ^
    2263:  java/test/org/openqa/selenium/remote/RemotableByTest.java:23: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2264:  import static org.openqa.selenium.remote.ErrorCodes.SUCCESS_STRING;
    2265:  ^
    2266:  java/test/org/openqa/selenium/remote/RemotableByTest.java:23: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2267:  import static org.openqa.selenium.remote.ErrorCodes.SUCCESS_STRING;
    2268:  ^
    2269:  java/test/org/openqa/selenium/remote/RemotableByTest.java:45: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2270:  private final ErrorCodes errorCodes = new ErrorCodes();
    2271:  ^
    2272:  java/test/org/openqa/selenium/remote/RemotableByTest.java:45: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2273:  private final ErrorCodes errorCodes = new ErrorCodes();
    2274:  ^
    2275:  java/test/org/openqa/selenium/remote/RemotableByTest.java:45: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2276:  private final ErrorCodes errorCodes = new ErrorCodes();
    2277:  ^
    2278:  java/test/org/openqa/selenium/remote/RemotableByTest.java:45: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2279:  private final ErrorCodes errorCodes = new ErrorCodes();
    2280:  ^
    2281:  (14:55:06) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/remote/libsmall-tests-test-lib.jar (5 source files) and running annotation processors (AutoServiceProcessor):
    2282:  java/test/org/openqa/selenium/remote/WebDriverFixture.java:170: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2283:  response.setStatus(new ErrorCodes().toStatus(state, Optional.of(400)));
    ...
    
    2353:  (14:58:30) �[32m[13,131 / 14,663]�[0m 628 / 2120 tests;�[0m Testing //py:common-chrome-test/selenium/webdriver/common/webdriverwait_tests.py; 99s remote, remote-cache ... (50 actions, 49 running)
    2354:  (14:58:35) �[32m[13,150 / 14,678]�[0m 635 / 2120 tests;�[0m Testing //py:common-chrome-test/selenium/webdriver/common/webdriverwait_tests.py; 104s remote, remote-cache ... (50 actions, 47 running)
    2355:  (14:58:41) �[32m[13,158 / 14,678]�[0m 643 / 2120 tests;�[0m Testing //py:common-chrome-test/selenium/webdriver/common/webdriverwait_tests.py; 110s remote, remote-cache ... (50 actions, 49 running)
    2356:  (14:58:46) �[32m[13,169 / 14,683]�[0m 650 / 2120 tests;�[0m Testing //py:common-chrome-test/selenium/webdriver/common/webdriverwait_tests.py; 115s remote, remote-cache ... (50 actions, 49 running)
    2357:  (14:58:50) �[31m�[1mFAIL: �[0m//py:common-chrome-bidi-test/selenium/webdriver/common/bidi_tests.py (see /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/py/common-chrome-bidi-test/selenium/webdriver/common/bidi_tests.py/test_attempts/attempt_1.log)
    2358:  (14:58:53) �[32m[13,188 / 14,698]�[0m 657 / 2120 tests;�[0m Testing //py:common-chrome-test/selenium/webdriver/common/webdriverwait_tests.py; 122s remote, remote-cache ... (50 actions running)
    2359:  (14:58:58) �[32m[13,210 / 14,718]�[0m 663 / 2120 tests;�[0m Testing //py:common-chrome-test/selenium/webdriver/common/webdriverwait_tests.py; 127s remote, remote-cache ... (50 actions, 48 running)
    2360:  (14:59:01) �[31m�[1mFAIL: �[0m//py:common-chrome-bidi-test/selenium/webdriver/common/bidi_tests.py (see /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/py/common-chrome-bidi-test/selenium/webdriver/common/bidi_tests.py/test.log)
    2361:  �[31m�[1mFAILED: �[0m//py:common-chrome-bidi-test/selenium/webdriver/common/bidi_tests.py (Summary)
    ...
    
    2365:  ============================= test session starts ==============================
    2366:  (14:59:01) �[32mINFO: �[0mFrom Testing //py:common-chrome-bidi-test/selenium/webdriver/common/bidi_tests.py:
    2367:  platform linux -- Python 3.8.19, pytest-7.4.4, pluggy-1.3.0
    2368:  rootdir: /mnt/engflow/worker/work/0/exec/bazel-out/k8-fastbuild/bin/py/common-chrome-bidi-test/selenium/webdriver/common/bidi_tests.py.runfiles/_main/py
    2369:  configfile: pyproject.toml
    2370:  plugins: instafail-0.5.0, trio-0.8.0, mock-3.12.0
    2371:  collected 4 items
    2372:  py/test/selenium/webdriver/common/bidi_tests.py::test_check_console_messages[chrome] PASSED [ 25%]
    2373:  py/test/selenium/webdriver/common/bidi_tests.py::test_check_error_console_messages[chrome] PASSED [ 50%]
    2374:  py/test/selenium/webdriver/common/bidi_tests.py::test_collect_js_exceptions[chrome] PASSED [ 75%]
    2375:  py/test/selenium/webdriver/common/bidi_tests.py::test_collect_log_mutations[chrome] FAILED [100%]
    ...
    
    2393:  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    2394:  ../rules_python~~python~python_3_8_x86_64-unknown-linux-gnu/lib/python3.8/contextlib.py:178: in __aexit__
    2395:  await self.gen.__anext__()
    2396:  py/selenium/webdriver/common/log.py:93: in mutation_events
    2397:  elements: list = self.driver.find_elements(By.CSS_SELECTOR, f"*[data-__webdriver_id={payload['target']}]")
    2398:  py/selenium/webdriver/remote/webdriver.py:788: in find_elements
    2399:  return self.execute(Command.FIND_ELEMENTS, {"using": by, "value": value})["value"] or []
    2400:  py/selenium/webdriver/remote/webdriver.py:380: in execute
    2401:  self.error_handler.check_response(response)
    2402:  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    2403:  self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7fdd5a533400>
    2404:  response = {'status': 400, 'value': '{"value":{"error":"invalid selector","message":"invalid selector\\nfrom javascript error: {\...wn>\\n#19 0x55da399f1a20 \\u003Cunknown>\\n#20 0x55da39a01fb6 \\u003Cunknown>\\n#21 0x7fe4f10f7609 start_thread\\n"}}'}
    2405:  def check_response(self, response: Dict[str, Any]) -> None:
    2406:  """Checks that a JSON response from the WebDriver does not have an
    2407:  error.
    2408:  :Args:
    2409:  - response - The JSON response from the WebDriver server as a dictionary
    2410:  object.
    2411:  :Raises: If the response contains an error message.
    2412:  """
    2413:  status = response.get("status", None)
    2414:  if not status or status == ErrorCode.SUCCESS:
    ...
    
    2420:  if isinstance(status, int):
    2421:  value_json = response.get("value", None)
    2422:  if value_json and isinstance(value_json, str):
    2423:  import json
    2424:  try:
    2425:  value = json.loads(value_json)
    2426:  if len(value) == 1:
    2427:  value = value["value"]
    2428:  status = value.get("error", None)
    2429:  if not status:
    2430:  status = value.get("status", ErrorCode.UNKNOWN_ERROR)
    2431:  message = value.get("value") or value.get("message")
    2432:  if not isinstance(message, str):
    2433:  value = message
    2434:  message = message.get("message")
    2435:  else:
    2436:  message = value.get("message", None)
    2437:  except ValueError:
    2438:  pass
    2439:  exception_class: Type[WebDriverException]
    2440:  e = ErrorCode()
    2441:  error_codes = [item for item in dir(e) if not item.startswith("__")]
    2442:  for error_code in error_codes:
    2443:  error_info = getattr(ErrorCode, error_code)
    2444:  if isinstance(error_info, list) and status in error_info:
    2445:  exception_class = getattr(ExceptionMapping, error_code, WebDriverException)
    ...
    
    2469:  if line:
    2470:  file = f"{file}:{line}"
    2471:  meth = frame.get("methodName", "<anonymous>")
    2472:  if "className" in frame:
    2473:  meth = f"{frame['className']}.{meth}"
    2474:  msg = "    at %s (%s)"
    2475:  msg = msg % (meth, file)
    2476:  stacktrace.append(msg)
    2477:  except TypeError:
    ...
    
    2480:  alert_text = None
    2481:  if "data" in value:
    2482:  alert_text = value["data"].get("text")
    2483:  elif "alert" in value:
    2484:  alert_text = value["alert"].get("text")
    2485:  raise exception_class(message, screen, stacktrace, alert_text)  # type: ignore[call-arg]  # mypy is not smart enough here
    2486:  >       raise exception_class(message, screen, stacktrace)
    2487:  E       selenium.common.exceptions.InvalidSelectorException: Message: invalid selector
    2488:  E       from javascript error: {"status":32,"value":"An invalid or illegal selector was specified"}
    2489:  E         (Session info: chrome=130.0.6723.91); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#invalid-selector-exception
    ...
    
    2505:  E       #14 0x55da399d3368 <unknown>
    2506:  E       #15 0x55da399bceec <unknown>
    2507:  E       #16 0x55da399d3ee7 <unknown>
    2508:  E       #17 0x55da399a213f <unknown>
    2509:  E       #18 0x55da399f1858 <unknown>
    2510:  E       #19 0x55da399f1a20 <unknown>
    2511:  E       #20 0x55da39a01fb6 <unknown>
    2512:  E       #21 0x7fe4f10f7609 start_thread
    2513:  py/selenium/webdriver/remote/errorhandler.py:229: InvalidSelectorException
    2514:  =========================== short test summary info ============================
    2515:  FAILED py/test/selenium/webdriver/common/bidi_tests.py::test_collect_log_mutations[chrome] - selenium.common.exceptions.InvalidSelectorException: Message: invalid selector
    2516:  from javascript error: {"status":32,"value":"An invalid or illegal selector was specified"}
    2517:  (Session info: chrome=130.0.6723.91); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#invalid-selector-exception
    ...
    
    2533:  #14 0x55da399d3368 <unknown>
    2534:  #15 0x55da399bceec <unknown>
    2535:  #16 0x55da399d3ee7 <unknown>
    2536:  #17 0x55da399a213f <unknown>
    2537:  #18 0x55da399f1858 <unknown>
    2538:  #19 0x55da399f1a20 <unknown>
    2539:  #20 0x55da39a01fb6 <unknown>
    2540:  #21 0x7fe4f10f7609 start_thread
    2541:  ========================= 1 failed, 3 passed in 9.99s ==========================
    ...
    
    2544:  ==================== Test output for //py:common-chrome-bidi-test/selenium/webdriver/common/bidi_tests.py:
    2545:  ============================= test session starts ==============================
    2546:  platform linux -- Python 3.8.19, pytest-7.4.4, pluggy-1.3.0
    2547:  rootdir: /mnt/engflow/worker/work/0/exec/bazel-out/k8-fastbuild/bin/py/common-chrome-bidi-test/selenium/webdriver/common/bidi_tests.py.runfiles/_main/py
    2548:  configfile: pyproject.toml
    2549:  plugins: instafail-0.5.0, trio-0.8.0, mock-3.12.0
    2550:  collected 4 items
    2551:  py/test/selenium/webdriver/common/bidi_tests.py::test_check_console_messages[chrome] PASSED [ 25%]
    2552:  py/test/selenium/webdriver/common/bidi_tests.py::test_check_error_console_messages[chrome] PASSED [ 50%]
    2553:  py/test/selenium/webdriver/common/bidi_tests.py::test_collect_js_exceptions[chrome] PASSED [ 75%]
    2554:  py/test/selenium/webdriver/common/bidi_tests.py::test_collect_log_mutations[chrome] FAILED [100%]
    ...
    
    2572:  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    2573:  ../rules_python~~python~python_3_8_x86_64-unknown-linux-gnu/lib/python3.8/contextlib.py:178: in __aexit__
    2574:  await self.gen.__anext__()
    2575:  py/selenium/webdriver/common/log.py:93: in mutation_events
    2576:  elements: list = self.driver.find_elements(By.CSS_SELECTOR, f"*[data-__webdriver_id={payload['target']}]")
    2577:  py/selenium/webdriver/remote/webdriver.py:788: in find_elements
    2578:  return self.execute(Command.FIND_ELEMENTS, {"using": by, "value": value})["value"] or []
    2579:  py/selenium/webdriver/remote/webdriver.py:380: in execute
    2580:  self.error_handler.check_response(response)
    2581:  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    2582:  self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7fb815fafb20>
    2583:  response = {'status': 400, 'value': '{"value":{"error":"invalid selector","message":"invalid selector\\nfrom javascript error: {\...wn>\\n#19 0x55b317154a20 \\u003Cunknown>\\n#20 0x55b317164fb6 \\u003Cunknown>\\n#21 0x7f1a583d6609 start_thread\\n"}}'}
    2584:  def check_response(self, response: Dict[str, Any]) -> None:
    2585:  """Checks that a JSON response from the WebDriver does not have an
    2586:  error.
    2587:  :Args:
    2588:  - response - The JSON response from the WebDriver server as a dictionary
    2589:  object.
    2590:  :Raises: If the response contains an error message.
    2591:  """
    2592:  status = response.get("status", None)
    2593:  if not status or status == ErrorCode.SUCCESS:
    ...
    
    2599:  if isinstance(status, int):
    2600:  value_json = response.get("value", None)
    2601:  if value_json and isinstance(value_json, str):
    2602:  import json
    2603:  try:
    2604:  value = json.loads(value_json)
    2605:  if len(value) == 1:
    2606:  value = value["value"]
    2607:  status = value.get("error", None)
    2608:  if not status:
    2609:  status = value.get("status", ErrorCode.UNKNOWN_ERROR)
    2610:  message = value.get("value") or value.get("message")
    2611:  if not isinstance(message, str):
    2612:  value = message
    2613:  message = message.get("message")
    2614:  else:
    2615:  message = value.get("message", None)
    2616:  except ValueError:
    2617:  pass
    2618:  exception_class: Type[WebDriverException]
    2619:  e = ErrorCode()
    2620:  error_codes = [item for item in dir(e) if not item.startswith("__")]
    2621:  for error_code in error_codes:
    2622:  error_info = getattr(ErrorCode, error_code)
    2623:  if isinstance(error_info, list) and status in error_info:
    2624:  exception_class = getattr(ExceptionMapping, error_code, WebDriverException)
    ...
    
    2648:  if line:
    2649:  file = f"{file}:{line}"
    2650:  meth = frame.get("methodName", "<anonymous>")
    2651:  if "className" in frame:
    2652:  meth = f"{frame['className']}.{meth}"
    2653:  msg = "    at %s (%s)"
    2654:  msg = msg % (meth, file)
    2655:  stacktrace.append(msg)
    2656:  except TypeError:
    ...
    
    2659:  alert_text = None
    2660:  if "data" in value:
    2661:  alert_text = value["data"].get("text")
    2662:  elif "alert" in value:
    2663:  alert_text = value["alert"].get("text")
    2664:  raise exception_class(message, screen, stacktrace, alert_text)  # type: ignore[call-arg]  # mypy is not smart enough here
    2665:  >       raise exception_class(message, screen, stacktrace)
    2666:  E       selenium.common.exceptions.InvalidSelectorException: Message: invalid selector
    2667:  E       from javascript error: {"status":32,"value":"An invalid or illegal selector was specified"}
    2668:  E         (Session info: chrome=130.0.6723.91); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#invalid-selector-exception
    ...
    
    2684:  E       #14 0x55b317136368 <unknown>
    2685:  E       #15 0x55b31711feec <unknown>
    2686:  E       #16 0x55b317136ee7 <unknown>
    2687:  E       #17 0x55b31710513f <unknown>
    2688:  E       #18 0x55b317154858 <unknown>
    2689:  E       #19 0x55b317154a20 <unknown>
    2690:  E       #20 0x55b317164fb6 <unknown>
    2691:  E       #21 0x7f1a583d6609 start_thread
    2692:  py/selenium/webdriver/remote/errorhandler.py:229: InvalidSelectorException
    2693:  =========================== short test summary info ============================
    2694:  FAILED py/test/selenium/webdriver/common/bidi_tests.py::test_collect_log_mutations[chrome] - selenium.common.exceptions.InvalidSelectorException: Message: invalid selector
    2695:  from javascript error: {"status":32,"value":"An invalid or illegal selector was specified"}
    2696:  (Session info: chrome=130.0.6723.91); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#invalid-selector-exception
    ...
    
    2712:  #14 0x55b317136368 <unknown>
    2713:  #15 0x55b31711feec <unknown>
    2714:  #16 0x55b317136ee7 <unknown>
    2715:  #17 0x55b31710513f <unknown>
    2716:  #18 0x55b317154858 <unknown>
    2717:  #19 0x55b317154a20 <unknown>
    2718:  #20 0x55b317164fb6 <unknown>
    2719:  #21 0x7f1a583d6609 start_thread
    2720:  ========================= 1 failed, 3 passed in 7.84s ==========================
    2721:  Execution result: https://gypsum.cluster.engflow.com/actions/executions/ChCgHfMQ0UNCiqLjEC0JFA-PEgdkZWZhdWx0GiUKIB8edR2oZPXKGbiwMqVqge4k_KQmAfoJBccRj79C8IduEJ8D
    2722:  ================================================================================
    2723:  (14:59:03) �[32m[13,230 / 14,733]�[0m 671 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-chrome-test/selenium/webdriver/common/webdriverwait_tests.py; 133s remote, remote-cache ... (50 actions, 48 running)
    2724:  (14:59:09) �[32m[13,245 / 14,748]�[0m 674 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-chrome-test/selenium/webdriver/common/webdriverwait_tests.py; 138s remote, remote-cache ... (50 actions, 47 running)
    2725:  (14:59:14) �[32m[13,261 / 14,758]�[0m 682 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-chrome-test/selenium/webdriver/common/webdriverwait_tests.py; 143s remote, remote-cache ... (50 actions, 49 running)
    2726:  (14:59:19) �[32m[13,315 / 14,783]�[0m 716 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-chrome-test/selenium/webdriver/common/webdriverwait_tests.py; 148s remote, remote-cache ... (50 actions, 47 running)
    2727:  (14:59:21) �[31m�[1mFAIL: �[0m//py:common-chrome-bidi-test/selenium/webdriver/common/upload_tests.py (see /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/py/common-chrome-bidi-test/selenium/webdriver/common/upload_tests.py/test_attempts/attempt_1.log)
    2728:  (14:59:24) �[32m[13,448 / 14,843]�[0m 802 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-chrome-test/selenium/webdriver/common/webdriverwait_tests.py; 153s remote, remote-cache ... (50 actions, 48 running)
    2729:  ==================== Test output for //py:common-chrome-bidi-test/selenium/webdriver/common/upload_tests.py:
    2730:  ============================= test session starts ==============================
    2731:  platform linux -- Python 3.8.19, pytest-7.4.4, pluggy-1.3.0
    2732:  rootdir: /mnt/engflow/worker/work/1/exec/bazel-out/k8-fastbuild/bin/py/common-chrome-bidi-test/selenium/webdriver/common/upload_tests.py.runfiles/_main/py
    2733:  configfile: pyproject.toml
    2734:  plugins: instafail-0.5.0, trio-0.8.0, mock-3.12.0
    2735:  collected 3 items
    2736:  py/test/selenium/webdriver/common/upload_tests.py::test_can_upload_file[chrome] FAILED [ 33%]
    ...
    
    2746:  >       body = driver.find_element(By.CSS_SELECTOR, "body").text
    2747:  py/test/selenium/webdriver/common/upload_tests.py:42: 
    2748:  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    2749:  py/selenium/webdriver/remote/webelement.py:90: in text
    2750:  return self._execute(Command.GET_ELEMENT_TEXT)["value"]
    2751:  py/selenium/webdriver/remote/webelement.py:395: in _execute
    2752:  return self._parent.execute(command, params)
    2753:  py/selenium/webdriver/remote/webdriver.py:380: in execute
    2754:  self.error_handler.check_response(response)
    2755:  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    2756:  self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7fdafe0564c0>
    2757:  response = {'status': 404, 'value': '{"value":{"error":"stale element reference","message":"stale element reference: stale elemen...wn>\\n#21 0x5626df39ba20 \\u003Cunknown>\\n#22 0x5626df3abfb6 \\u003Cunknown>\\n#23 0x7f1148e52609 start_thread\\n"}}'}
    2758:  def check_response(self, response: Dict[str, Any]) -> None:
    2759:  """Checks that a JSON response from the WebDriver does not have an
    2760:  error.
    2761:  :Args:
    2762:  - response - The JSON response from the WebDriver server as a dictionary
    2763:  object.
    2764:  :Raises: If the response contains an error message.
    2765:  """
    2766:  status = response.get("status", None)
    2767:  if not status or status == ErrorCode.SUCCESS:
    ...
    
    2773:  if isinstance(status, int):
    2774:  value_json = response.get("value", None)
    2775:  if value_json and isinstance(value_json, str):
    2776:  import json
    2777:  try:
    2778:  value = json.loads(value_json)
    2779:  if len(value) == 1:
    2780:  value = value["value"]
    2781:  status = value.get("error", None)
    2782:  if not status:
    2783:  status = value.get("status", ErrorCode.UNKNOWN_ERROR)
    2784:  message = value.get("value") or value.get("message")
    2785:  if not isinstance(message, str):
    2786:  value = message
    2787:  message = message.get("message")
    2788:  else:
    2789:  message = value.get("message", None)
    2790:  except ValueError:
    2791:  pass
    2792:  exception_class: Type[WebDriverException]
    2793:  e = ErrorCode()
    2794:  error_codes = [item for item in dir(e) if not item.startswith("__")]
    2795:  for error_code in error_codes:
    2796:  error_info = getattr(ErrorCode, error_code)
    2797:  if isinstance(error_info, list) and status in error_info:
    2798:  exception_class = getattr(ExceptionMapping, error_code, WebDriverException)
    ...
    
    2822:  if line:
    2823:  file = f"{file}:{line}"
    2824:  meth = frame.get("methodName", "<anonymous>")
    2825:  if "className" in frame:
    2826:  meth = f"{frame['className']}.{meth}"
    2827:  msg = "    at %s (%s)"
    2828:  msg = msg % (meth, file)
    2829:  stacktrace.append(msg)
    2830:  except TypeError:
    ...
    
    2833:  alert_text = None
    2834:  if "data" in value:
    2835:  alert_text = value["data"].get("text")
    2836:  elif "alert" in value:
    2837:  alert_text = value["alert"].get("text")
    2838:  raise exception_class(message, screen, stacktrace, alert_text)  # type: ignore[call-arg]  # mypy is not smart enough here
    2839:  >       raise exception_class(message, screen, stacktrace)
    2840:  E       selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: stale element not found
    2841:  E         (Session info: chrome=130.0.6723.91); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#stale-element-reference-exception
    ...
    
    2859:  E       #16 0x5626df37d368 <unknown>
    2860:  E       #17 0x5626df366eec <unknown>
    2861:  E       #18 0x5626df37dee7 <unknown>
    2862:  E       #19 0x5626df34c13f <unknown>
    2863:  E       #20 0x5626df39b858 <unknown>
    2864:  E       #21 0x5626df39ba20 <unknown>
    2865:  E       #22 0x5626df3abfb6 <unknown>
    2866:  E       #23 0x7f1148e52609 start_thread
    2867:  py/selenium/webdriver/remote/errorhandler.py:229: StaleElementReferenceException
    2868:  py/test/selenium/webdriver/common/upload_tests.py::test_can_upload_two_files[chrome] FAILED [ 66%]
    ...
    
    2879:  >       body = driver.find_element(By.CSS_SELECTOR, "body").text
    2880:  py/test/selenium/webdriver/common/upload_tests.py:53: 
    2881:  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    2882:  py/selenium/webdriver/remote/webelement.py:90: in text
    2883:  return self._execute(Command.GET_ELEMENT_TEXT)["value"]
    2884:  py/selenium/webdriver/remote/webelement.py:395: in _execute
    2885:  return self._parent.execute(command, params)
    2886:  py/selenium/webdriver/remote/webdriver.py:380: in execute
    2887:  self.error_handler.check_response(response)
    2888:  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    2889:  self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7fdafdf6eb20>
    2890:  response = {'status': 404, 'value': '{"value":{"error":"stale element reference","message":"stale element reference: stale elemen...wn>\\n#21 0x555da30bba20 \\u003Cunknown>\\n#22 0x555da30cbfb6 \\u003Cunknown>\\n#23 0x7fe02c32e609 start_thread\\n"}}'}
    2891:  def check_response(self, response: Dict[str, Any]) -> None:
    2892:  """Checks that a JSON response from the WebDriver does not have an
    2893:  error.
    2894:  :Args:
    2895:  - response - The JSON response from the WebDriver server as a dictionary
    2896:  object.
    2897:  :Raises: If the response contains an error message.
    2898:  """
    2899:  status = response.get("status", None)
    2900:  if not status or status == ErrorCode.SUCCESS:
    ...
    
    2906:  if isinstance(status, int):
    2907:  value_json = response.get("value", None)
    2908:  if value_json and isinstance(value_json, str):
    2909:  import json
    2910:  try:
    2911:  value = json.loads(value_json)
    2912:  if len(value) == 1:
    2913:  value = value["value"]
    2914:  status = value.get("error", None)
    2915:  if not status:
    2916:  status = value.get("status", ErrorCode.UNKNOWN_ERROR)
    2917:  message = value.get("value") or value.get("message")
    2918:  if not isinstance(message, str):
    2919:  value = message
    2920:  message = message.get("message")
    2921:  else:
    2922:  message = value.get("message", None)
    2923:  except ValueError:
    2924:  pass
    2925:  exception_class: Type[WebDriverException]
    2926:  e = ErrorCode()
    2927:  error_codes = [item for item in dir(e) if not item.startswith("__")]
    2928:  for error_code in error_codes:
    2929:  error_info = getattr(ErrorCode, error_code)
    2930:  if isinstance(error_info, list) and status in error_info:
    2931:  exception_class = getattr(ExceptionMapping, error_code, WebDriverException)
    ...
    
    2955:  if line:
    2956:  file = f"{file}:{line}"
    2957:  meth = frame.get("methodName", "<anonymous>")
    2958:  if "className" in frame:
    2959:  meth = f"{frame['className']}.{meth}"
    2960:  msg = "    at %s (%s)"
    2961:  msg = msg % (meth, file)
    2962:  stacktrace.append(msg)
    2963:  except TypeError:
    ...
    
    2966:  alert_text = None
    2967:  if "data" in value:
    2968:  alert_text = value["data"].get("text")
    2969:  elif "alert" in value:
    2970:  alert_text = value["alert"].get("text")
    2971:  raise exception_class(message, screen, stacktrace, alert_text)  # type: ignore[call-arg]  # mypy is not smart enough here
    2972:  >       raise exception_class(message, screen, stacktrace)
    2973:  E       selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: stale element not found
    2974:  E         (Session info: chrome=130.0.6723.91); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#stale-element-reference-exception
    ...
    
    2992:  E       #16 0x555da309d368 <unknown>
    2993:  E       #17 0x555da3086eec <unknown>
    2994:  E       #18 0x555da309dee7 <unknown>
    2995:  E       #19 0x555da306c13f <unknown>
    2996:  E       #20 0x555da30bb858 <unknown>
    2997:  E       #21 0x555da30bba20 <unknown>
    2998:  E       #22 0x555da30cbfb6 <unknown>
    2999:  E       #23 0x7fe02c32e609 start_thread
    3000:  py/selenium/webdriver/remote/errorhandler.py:229: StaleElementReferenceException
    3001:  py/test/selenium/webdriver/common/upload_tests.py::test_file_is_uploaded_to_remote_machine_on_select[chrome] XFAIL [100%]
    3002:  =========================== short test summary info ============================
    3003:  XFAIL py/test/selenium/webdriver/common/upload_tests.py::test_file_is_uploaded_to_remote_machine_on_select[chrome] - reason: 
    3004:  FAILED py/test/selenium/webdriver/common/upload_tests.py::test_can_upload_file[chrome] - selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: stale element not found
    3005:  (Session info: chrome=130.0.6723.91); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#stale-element-reference-exception
    ...
    
    3023:  #16 0x5626df37d368 <unknown>
    3024:  #17 0x5626df366eec <unknown>
    3025:  #18 0x5626df37dee7 <unknown>
    3026:  #19 0x5626df34c13f <unknown>
    3027:  #20 0x5626df39b858 <unknown>
    3028:  #21 0x5626df39ba20 <unknown>
    3029:  #22 0x5626df3abfb6 <unknown>
    3030:  #23 0x7f1148e52609 start_thread
    3031:  FAILED py/test/selenium/webdriver/common/upload_tests.py::test_can_upload_two_files[chrome] - selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: stale element not found
    3032:  (Session info: chrome=130.0.6723.91); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#stale-element-reference-exception
    ...
    
    3050:  #16 0x555da309d368 <unknown>
    3051:  #17 0x555da3086eec <unknown>
    3052:  #18 0x555da309dee7 <unknown>
    3053:  #19 0x555da306c13f <unknown>
    3054:  #20 0x555da30bb858 <unknown>
    3055:  #21 0x555da30bba20 <unknown>
    3056:  #22 0x555da30cbfb6 <unknown>
    3057:  #23 0x7fe02c32e609 start_thread
    3058:  ========================= 2 failed, 1 xfailed in 3.07s =========================
    3059:  Execution result: https://gypsum.cluster.engflow.com/actions/executions/ChCgHfMQ0UNCiqLjEC0JFA-PEgdkZWZhdWx0GiUKIJ1w97ZIYG05PBnBEKRFm3AHL2VMXivWxu0xqT2BW3WLEJ8D
    3060:  ================================================================================
    3061:  �[35mFLAKY: �[0m//py:common-chrome-bidi-test/selenium/webdriver/common/upload_tests.py (Summary)
    3062:  /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/py/common-chrome-bidi-test/selenium/webdriver/common/upload_tests.py/test_attempts/attempt_1.log
    3063:  (14:59:28) �[32mINFO: �[0mFrom Testing //py:common-chrome-bidi-test/selenium/webdriver/common/upload_tests.py:
    3064:  (14:59:29) �[32m[13,497 / 14,878]�[0m 823 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-chrome-test/selenium/webdriver/common/webdriverwait_tests.py; 158s remote, remote-cache ... (50 actions, 46 running)
    3065:  (14:59:34) �[32m[13,807 / 15,058]�[0m 988 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-chrome-test/selenium/webdriver/common/webdriverwait_tests.py; 163s remote, remote-cache ... (50 actions, 43 running)
    3066:  (14:59:39) �[32m[13,871 / 15,068]�[0m 1044 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-chrome-test/selenium/webdriver/common/webdriverwait_tests.py; 168s remote, remote-cache ... (50 actions, 44 running)
    3067:  (14:59:45) �[32m[13,935 / 15,084]�[0m 1097 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-edge-bidi-test/selenium/webdriver/common/driver_element_finding_tests.py; 174s remote, remote-cache ... (50 actions, 46 running)
    3068:  (14:59:50) �[32m[13,938 / 15,084]�[0m 1100 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-edge-bidi-test/selenium/webdriver/common/driver_element_finding_tests.py; 179s remote, remote-cache ... (50 actions, 48 running)
    3069:  (14:59:56) �[32m[13,955 / 15,090]�[0m 1109 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-edge-bidi-test/selenium/webdriver/common/driver_element_finding_tests.py; 185s remote, remote-cache ... (50 actions, 47 running)
    3070:  (15:00:01) �[32m[13,959 / 15,090]�[0m 1113 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-edge-bidi-test/selenium/webdriver/common/driver_element_finding_tests.py; 190s remote, remote-cache ... (50 actions, 49 running)
    3071:  (15:00:08) �[32m[13,961 / 15,090]�[0m 1116 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-edge-bidi-test/selenium/webdriver/common/driver_element_finding_tests.py; 197s remote, remote-cache ... (50 actions, 47 running)
    3072:  (15:00:16) �[32m[13,966 / 15,095]�[0m 1116 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-edge-bidi-test/selenium/webdriver/common/driver_element_finding_tests.py; 205s remote, remote-cache ... (50 actions, 48 running)
    3073:  (15:00:21) �[32m[13,971 / 15,100]�[0m 1117 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-edge-bidi-test/selenium/webdriver/common/driver_element_finding_tests.py; 210s remote, remote-cache ... (50 actions, 47 running)
    3074:  (15:00:29) �[32m[13,971 / 15,100]�[0m 1117 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-edge-bidi-test/selenium/webdriver/common/driver_element_finding_tests.py; 219s remote, remote-cache ... (50 actions, 49 running)
    3075:  (15:00:35) �[32m[13,972 / 15,100]�[0m 1119 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-edge-bidi-test/selenium/webdriver/common/driver_element_finding_tests.py; 225s remote, remote-cache ... (50 actions, 48 running)
    3076:  (15:00:41) �[32m[13,983 / 15,105]�[0m 1126 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-edge-bidi-test/selenium/webdriver/common/driver_element_finding_tests.py; 230s remote, remote-cache ... (50 actions, 41 running)
    3077:  (15:00:46) �[32m[13,997 / 15,115]�[0m 1131 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-edge-bidi-test/selenium/webdriver/common/driver_element_finding_tests.py; 235s remote, remote-cache ... (50 actions, 36 running)
    3078:  (15:00:51) �[32m[13,998 / 15,115]�[0m 1132 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-edge-bidi-test/selenium/webdriver/common/driver_element_finding_tests.py; 240s remote, remote-cache ... (50 actions, 35 running)
    3079:  (15:00:56) �[32m[14,019 / 15,135]�[0m 1137 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-edge-bidi-test/selenium/webdriver/common/driver_element_finding_tests.py; 245s remote, remote-cache ... (50 actions, 32 running)
    3080:  (15:01:01) �[32m[14,032 / 15,145]�[0m 1142 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-firefox-test/selenium/webdriver/common/webdriverwait_tests.py; 244s remote, remote-cache ... (50 actions, 32 running)
    3081:  (15:01:06) �[32m[14,154 / 15,145]�[0m 1147 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-firefox-test/selenium/webdriver/common/webdriverwait_tests.py; 249s remote, remote-cache ... (50 actions, 31 running)
    3082:  (15:01:11) �[32m[14,174 / 15,160]�[0m 1152 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-firefox-test/selenium/webdriver/common/webdriverwait_tests.py; 254s remote, remote-cache ... (50 actions, 39 running)
    3083:  (15:01:16) �[32m[14,183 / 15,160]�[0m 1161 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-firefox-test/selenium/webdriver/common/webdriverwait_tests.py; 260s remote, remote-cache ... (50 actions, 36 running)
    3084:  (15:01:22) �[32m[14,224 / 15,190]�[0m 1169 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-firefox-test/selenium/webdriver/common/webdriverwait_tests.py; 265s remote, remote-cache ... (50 actions, 41 running)
    3085:  (15:01:27) �[32m[14,294 / 15,240]�[0m 1183 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-firefox-test/selenium/webdriver/common/webdriverwait_tests.py; 270s remote, remote-cache ... (50 actions, 47 running)
    3086:  (15:01:32) �[32m[14,311 / 15,250]�[0m 1189 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-firefox-test/selenium/webdriver/common/webdriverwait_tests.py; 275s remote, remote-cache ... (50 actions, 49 running)
    3087:  (15:01:38) �[32m[14,331 / 15,265]�[0m 1194 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-firefox-test/selenium/webdriver/common/webdriverwait_tests.py; 282s remote, remote-cache ... (50 actions running)
    3088:  (15:01:43) �[32mINFO: �[0mFrom Compiling webdriver-netstandard2.0:
    3089:  bazel-out/k8-fastbuild/bin/dotnet/src/webdriver/cdp/v128/Target/TargetInfo.cs(22,149): warning CS1570: XML comment has badly formed XML -- 'Reference to undefined entity 'q'.'
    3090:  bazel-out/k8-fastbuild/bin/dotnet/src/webdriver/cdp/v129/Target/TargetInfo.cs(22,149): warning CS1570: XML comment has badly formed XML -- 'Reference to undefined entity 'q'.'
    3091:  bazel-out/k8-fastbuild/bin/dotnet/src/webdriver/cdp/v130/Target/TargetInfo.cs(22,149): warning CS1570: XML comment has badly formed XML -- 'Reference to undefined entity 'q'.'
    3092:  (15:01:43) �[32m[14,441 / 15,350]�[0m 1214 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-firefox-test/selenium/webdriver/common/driver_element_finding_tests.py; 240s remote, remote-cache ... (49 actions, 48 running)
    3093:  (15:01:44) �[32mINFO: �[0mFrom Compiling webdriver-net8.0:
    3094:  bazel-out/k8-fastbuild/bin/dotnet/src/webdriver/cdp/v128/Target/TargetInfo.cs(22,149): warning CS1570: XML comment has badly formed XML -- 'Reference to undefined entity 'q'.'
    3095:  bazel-out/k8-fastbuild/bin/dotnet/src/webdriver/cdp/v129/Target/TargetInfo.cs(22,149): warning CS1570: XML comment has badly formed XML -- 'Reference to undefined entity 'q'.'
    3096:  bazel-out/k8-fastbuild/bin/dotnet/src/webdriver/cdp/v130/Target/TargetInfo.cs(22,149): warning CS1570: XML comment has badly formed XML -- 'Reference to undefined entity 'q'.'
    3097:  dotnet/src/webdriver/Internal/FileUtilities.cs(191,35): warning SYSLIB0012: 'Assembly.CodeBase' is obsolete: 'Assembly.CodeBase and Assembly.EscapedCodeBase are only included for .NET Framework compatibility. Use Assembly.Location.' (https://aka.ms/dotnet-warnings/SYSLIB0012)
    3098:  (15:01:48) �[32m[14,802 / 15,458]�[0m 1351 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-firefox-test/selenium/webdriver/common/driver_element_finding_tests.py; 245s remote, remote-cache ... (49 actions, 38 running)
    3099:  (15:01:53) �[32m[15,287 / 15,641]�[0m 1557 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-firefox-test/selenium/webdriver/common/driver_element_finding_tests.py; 250s remote, remote-cache ... (50 actions, 45 running)
    3100:  (15:01:59) �[32m[15,298 / 15,857]�[0m 1561 / 2120 tests, �[31m�[1m1 failed�[0m;�[0m Testing //py:common-firefox-test/selenium/webdriver/common...

    @VietND96 VietND96 merged commit 3a3c46b into trunk Oct 31, 2024
    13 checks passed
    @VietND96 VietND96 deleted the appium-backward-compatible branch October 31, 2024 15:45
    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]: AttributeError: 'AppiumConnection' object has no attribute '_ca_certs'
    1 participant