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

[dotnet] allow asynchronous command execution #13952

Closed
wants to merge 10 commits into from
Closed

Conversation

titusfortner
Copy link
Member

@titusfortner titusfortner commented May 16, 2024

User description

Description

This surfaces the ability to allow the driver to execute commands asynchronously by returning a task object representing the async operation in a way that can be awaited in user code.

Motivation and Context

This is in preparation for implementing an asynchronous solution in .NET.
This PR is to demonstrate the template for the naming conventions we want to use.
The next step would be to change the async method implementation to be able to use WebDriverBiDi if it is enabled, with the current sync operation as the fallback

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)

PR Type

Enhancement


Description

  • Introduced asynchronous command execution methods across various classes in the WebDriver .NET bindings.
  • Added ExecuteAsync in ICommandExecutor, DriverServiceCommandExecutor, HttpCommandExecutor, and WebDriver to support async operations.
  • Implemented BackAsync in INavigation and Navigator for asynchronous navigation.
  • Modified existing synchronous methods to utilize the new asynchronous methods ensuring backward compatibility.

Changes walkthrough 📝

Relevant files
Enhancement
ICommandExecutor.cs
Add asynchronous command execution interface                         

dotnet/src/webdriver/ICommandExecutor.cs

  • Added ExecuteAsync method to allow asynchronous command execution.
  • +9/-0     
    INavigation.cs
    Introduce asynchronous navigation methods                               

    dotnet/src/webdriver/INavigation.cs

    • Added BackAsync method to navigate back asynchronously.
    +7/-0     
    Navigator.cs
    Implement async back navigation in Navigator                         

    dotnet/src/webdriver/Navigator.cs

  • Implemented BackAsync to perform asynchronous back navigation.
  • Modified Back to use BackAsync.
  • +11/-1   
    DriverServiceCommandExecutor.cs
    Support async command execution in DriverServiceCommandExecutor

    dotnet/src/webdriver/Remote/DriverServiceCommandExecutor.cs

  • Added ExecuteAsync to handle command execution asynchronously.
  • Modified Execute to use ExecuteAsync.
  • +12/-1   
    HttpCommandExecutor.cs
    Enhance HttpCommandExecutor with async execution support 

    dotnet/src/webdriver/Remote/HttpCommandExecutor.cs

  • Added ExecuteAsync for asynchronous HTTP command execution.
  • Modified Execute to use ExecuteAsync.
  • +11/-1   
    WebDriver.cs
    Extend WebDriver with asynchronous execution capabilities

    dotnet/src/webdriver/WebDriver.cs

  • Added InternalExecuteAsync and ExecuteAsync for async command
    execution.
  • Modified existing Execute methods to use their async counterparts.
  • +23/-3   

    💡 PR-Agent usage:
    Comment /help on the PR to get a list of all available PR-Agent tools and their descriptions

    Copy link
    Contributor

    PR Description updated to latest commit (eca81ec)

    Copy link
    Contributor

    codiumai-pr-agent-pro bot commented May 16, 2024

    PR Review 🔍

    (Review updated until commit c405e23)

    ⏱️ Estimated effort to review [1-5]

    4, due to the introduction of asynchronous methods across multiple classes and the need to ensure that these changes do not introduce concurrency issues or break existing functionality. The changes affect core functionalities and require thorough testing and review of the new async implementations.

    🧪 Relevant tests

    No

    ⚡ Possible issues

    Thread Safety: The new asynchronous methods introduced need to ensure that they are thread-safe. This is crucial in a multi-threaded environment where these methods might be called concurrently.

    Deadlock Risk: Using Task.Run().GetAwaiter().GetResult() to call async methods from sync methods can lead to deadlocks in certain scenarios, especially in UI applications or when the synchronization context is captured.

    🔒 Security concerns

    No

    Code feedback:
    relevant filedotnet/src/webdriver/Remote/DriverServiceCommandExecutor.cs
    suggestion      

    Consider using ConfigureAwait(false) on all awaited tasks to avoid capturing the synchronization context and reduce the risk of deadlocks. [important]

    relevant linetoReturn = await this.internalExecutor.ExecuteAsync(commandToExecute);

    relevant filedotnet/src/webdriver/WebDriver.cs
    suggestion      

    Avoid using Task.Run() to wrap asynchronous calls within synchronous methods. Instead, consider redesigning the API to be async all the way through or provide truly synchronous alternatives. [important]

    relevant linereturn Task.Run(() => this.ExecuteAsync(driverCommandToExecute, parameters)).GetAwaiter().GetResult();

    relevant filedotnet/src/webdriver/Navigator.cs
    suggestion      

    Replace Task.Run(this.BackAsync).GetAwaiter().GetResult(); with direct asynchronous handling or a different approach to ensure that the method does not block on async code, reducing the risk of UI thread blocking and deadlocks. [important]

    relevant lineTask.Run(this.BackAsync).GetAwaiter().GetResult();

    relevant filedotnet/src/webdriver/Remote/HttpCommandExecutor.cs
    suggestion      

    Refactor the ExecuteAsync method to handle exceptions more robustly, ensuring that all asynchronous paths are accounted for and that exceptions are handled or logged appropriately. [medium]

    relevant linepublic virtual async Task ExecuteAsync(Command commandToExecute)

    Copy link
    Contributor

    PR Code Suggestions ✨

    No code suggestions found for PR.

    Copy link
    Contributor

    codiumai-pr-agent-pro bot commented May 16, 2024

    CI Failure Feedback 🧐

    (Checks updated until commit 0c8c691)

    Action: Test / All RBE tests

    Failed stage: Run Bazel [❌]

    Failure summary:

    The action failed due to multiple test failures:

  • The test OpenQA.Selenium.Support.Events.EventFiringWebDriverTest.ShouldFireNavigationEvents failed
    because the expected invocation on the mock x => x.Back() was not performed.
  • The test Selenium::WebDriver::Firefox::Driver#install_addon failed because the add-on file appeared
    to be corrupt.
  • The test
    OpenQA.Selenium.JavascriptEnabledBrowserTest.ShouldBeAbleToFindElementAfterJavascriptCausesANewPageToLoad
    failed due to an unknown error: unhandled inspector error with the message "Inspected target
    navigated or closed".

  • Relevant error logs:
    1:  ##[group]Operating System
    2:  Ubuntu
    ...
    
    975:  Package 'php-symfony-debug-bundle' is not installed, so not removed
    976:  Package 'php-symfony-dependency-injection' is not installed, so not removed
    977:  Package 'php-symfony-deprecation-contracts' is not installed, so not removed
    978:  Package 'php-symfony-discord-notifier' is not installed, so not removed
    979:  Package 'php-symfony-doctrine-bridge' is not installed, so not removed
    980:  Package 'php-symfony-doctrine-messenger' is not installed, so not removed
    981:  Package 'php-symfony-dom-crawler' is not installed, so not removed
    982:  Package 'php-symfony-dotenv' is not installed, so not removed
    983:  Package 'php-symfony-error-handler' is not installed, so not removed
    ...
    
    1680:  (15:36:38) �[32mAnalyzing:�[0m 1605 targets (433 packages loaded, 4460 targets configured)
    1681:  �[32m[1 / 1]�[0m checking cached actions
    1682:  (15:36:39) �[33mDEBUG: �[0m/home/runner/.bazel/external/rules_jvm_external~/coursier.bzl:754:18: Found duplicate artifact versions
    1683:  com.google.code.gson:gson has multiple versions 2.10.1, 2.8.9
    1684:  com.google.guava:guava has multiple versions 33.2.0-jre, 31.1-jre
    1685:  org.mockito:mockito-core has multiple versions 5.12.0, 4.3.1
    1686:  Please remove duplicate artifacts from the artifact list so you do not get unexpected artifact versions
    1687:  (15:36:41) �[33mDEBUG: �[0m/home/runner/.bazel/external/rules_jvm_external~/coursier.bzl:754:18: Found duplicate artifact versions
    1688:  com.google.errorprone:error_prone_annotations has multiple versions 2.11.0, 2.9.0
    ...
    
    1723:  (15:37:40) �[32mINFO: �[0mFrom Building external/protobuf~/java/core/liblite_runtime_only.jar (91 source files) [for tool]:
    1724:  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
    1725:  AccessController.doPrivileged(
    1726:  ^
    1727:  (15:37:41) �[32mINFO: �[0mFrom Installing external/rules_ruby~~ruby~bundle/rb/vendor/cache/bundler-2.5.10.gem (@@rules_ruby~~ruby~bundle//:bundler-2.5.10):
    1728:  Successfully installed bundler-2.5.10
    1729:  1 gem installed
    1730:  (15:37:41) �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (66 source files):
    1731:  java/src/org/openqa/selenium/remote/ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1732:  private final ErrorCodes errorCodes;
    1733:  ^
    1734:  java/src/org/openqa/selenium/remote/ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1735:  this.errorCodes = new ErrorCodes();
    1736:  ^
    1737:  java/src/org/openqa/selenium/remote/ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1738:  public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {
    1739:  ^
    1740:  java/src/org/openqa/selenium/remote/Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1741:  ErrorCodes errorCodes = new ErrorCodes();
    1742:  ^
    1743:  java/src/org/openqa/selenium/remote/Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1744:  ErrorCodes errorCodes = new ErrorCodes();
    1745:  ^
    1746:  java/src/org/openqa/selenium/remote/ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1747:  response.setStatus(ErrorCodes.SUCCESS);
    1748:  ^
    1749:  java/src/org/openqa/selenium/remote/ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1750:  response.setState(ErrorCodes.SUCCESS_STRING);
    1751:  ^
    1752:  java/src/org/openqa/selenium/remote/W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1753:  new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));
    1754:  ^
    1755:  java/src/org/openqa/selenium/remote/W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1756:  new ErrorCodes().getExceptionType((String) rawError);
    1757:  ^
    1758:  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
    1759:  private final ErrorCodes errorCodes = new ErrorCodes();
    1760:  ^
    1761:  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
    1762:  private final ErrorCodes errorCodes = new ErrorCodes();
    1763:  ^
    1764:  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
    1765:  int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;
    1766:  ^
    1767:  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
    1768:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
    1769:  ^
    1770:  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
    1771:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
    1772:  ^
    1773:  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
    1774:  response.setStatus(ErrorCodes.SUCCESS);
    1775:  ^
    1776:  java/src/org/openqa/selenium/remote/codec/AbstractHttpResponseCodec.java:125: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1777:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
    1778:  ^
    1779:  java/src/org/openqa/selenium/remote/codec/AbstractHttpResponseCodec.java:131: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1780:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
    1781:  ^
    1782:  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
    1783:  private final ErrorCodes errorCodes = new ErrorCodes();
    1784:  ^
    1785:  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
    1786:  private final ErrorCodes errorCodes = new ErrorCodes();
    1787:  ^
    1788:  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
    1789:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
    1790:  ^
    1791:  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
    1792:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
    1793:  ^
    1794:  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
    1795:  response.setStatus(ErrorCodes.SUCCESS);
    ...
    
    1857:  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
    1858:  AccessController.doPrivileged(
    1859:  ^
    1860:  (15:37:44) �[32mINFO: �[0mFrom Compiling generator [for tool]:
    1861:  warning CS1701: Assuming assembly reference 'System.Runtime, Version=4.2.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' used by 'Microsoft.Extensions.DependencyInjection' matches identity 'System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' of 'System.Runtime', you may need to supply runtime policy
    1862:  (15:37:47) �[32mAnalyzing:�[0m 1605 targets (1176 packages loaded, 34852 targets configured)
    1863:  �[32m[5,037 / 6,509]�[0m 75 / 282 tests;�[0m [Prepa] Generating v125 DevTools Protocol bindings for .NET ... (49 actions, 10 running)
    1864:  (15:37:50) �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (66 source files):
    1865:  java/src/org/openqa/selenium/remote/ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1866:  private final ErrorCodes errorCodes;
    1867:  ^
    1868:  java/src/org/openqa/selenium/remote/ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1869:  this.errorCodes = new ErrorCodes();
    1870:  ^
    1871:  java/src/org/openqa/selenium/remote/ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1872:  public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {
    1873:  ^
    1874:  java/src/org/openqa/selenium/remote/Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1875:  ErrorCodes errorCodes = new ErrorCodes();
    1876:  ^
    1877:  java/src/org/openqa/selenium/remote/Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1878:  ErrorCodes errorCodes = new ErrorCodes();
    1879:  ^
    1880:  java/src/org/openqa/selenium/remote/ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1881:  response.setStatus(ErrorCodes.SUCCESS);
    1882:  ^
    1883:  java/src/org/openqa/selenium/remote/ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1884:  response.setState(ErrorCodes.SUCCESS_STRING);
    1885:  ^
    1886:  java/src/org/openqa/selenium/remote/W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1887:  new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));
    1888:  ^
    1889:  java/src/org/openqa/selenium/remote/W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1890:  new ErrorCodes().getExceptionType((String) rawError);
    1891:  ^
    1892:  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
    1893:  private final ErrorCodes errorCodes = new ErrorCodes();
    1894:  ^
    1895:  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
    1896:  private final ErrorCodes errorCodes = new ErrorCodes();
    1897:  ^
    1898:  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
    1899:  int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;
    1900:  ^
    1901:  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
    1902:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
    1903:  ^
    1904:  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
    1905:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
    1906:  ^
    1907:  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
    1908:  response.setStatus(ErrorCodes.SUCCESS);
    1909:  ^
    1910:  java/src/org/openqa/selenium/remote/codec/AbstractHttpResponseCodec.java:125: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1911:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
    1912:  ^
    1913:  java/src/org/openqa/selenium/remote/codec/AbstractHttpResponseCodec.java:131: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1914:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
    1915:  ^
    1916:  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
    1917:  private final ErrorCodes errorCodes = new ErrorCodes();
    1918:  ^
    1919:  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
    1920:  private final ErrorCodes errorCodes = new ErrorCodes();
    1921:  ^
    1922:  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
    1923:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
    1924:  ^
    1925:  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
    1926:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
    1927:  ^
    1928:  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
    1929:  response.setStatus(ErrorCodes.SUCCESS);
    ...
    
    1932:  �[32m[6,862 / 7,241]�[0m 75 / 449 tests;�[0m Creating source manifest for //dotnet/test/common:ClickTest-chrome; 0s local ... (17 actions, 10 running)
    1933:  (15:37:58) �[32mAnalyzing:�[0m 1605 targets (1180 packages loaded, 35084 targets configured)
    1934:  �[32m[6,978 / 7,414]�[0m 76 / 489 tests;�[0m [Prepa] Testing //rb/spec/unit/selenium/webdriver/common/interactions:interaction; 4s ... (50 actions, 0 running)
    1935:  (15:38:03) �[32mAnalyzing:�[0m 1605 targets (1182 packages loaded, 35273 targets configured)
    1936:  �[32m[7,029 / 7,644]�[0m 78 / 613 tests;�[0m Compiling webdriver; 9s remote, remote-cache ... (50 actions, 3 running)
    1937:  (15:38:08) �[32mAnalyzing:�[0m 1605 targets (1182 packages loaded, 35631 targets configured)
    1938:  �[32m[8,262 / 9,341]�[0m 165 / 834 tests;�[0m Compiling webdriver; 4s remote, remote-cache ... (46 actions, 13 running)
    1939:  (15:38:10) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/remote/libsmall-tests-test-lib.jar (5 source files) and running annotation processors (AutoServiceProcessor):
    1940:  java/test/org/openqa/selenium/remote/WebDriverFixture.java:170: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1941:  response.setStatus(new ErrorCodes().toStatus(state, Optional.of(400)));
    ...
    
    1961:  ^
    1962:  java/test/org/openqa/selenium/remote/http/FormEncodedDataTest.java:102: warning: [removal] FormEncodedData in org.openqa.selenium.remote.http has been deprecated and marked for removal
    1963:  Optional<Map<String, List<String>>> data = FormEncodedData.getData(request);
    1964:  ^
    1965:  java/test/org/openqa/selenium/remote/http/FormEncodedDataTest.java:114: warning: [removal] FormEncodedData in org.openqa.selenium.remote.http has been deprecated and marked for removal
    1966:  Optional<Map<String, List<String>>> data = FormEncodedData.getData(request);
    1967:  ^
    1968:  (15:38:10) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/remote/codec/w3c/W3CHttpResponseCodecTest.jar (1 source file):
    1969:  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
    1970:  import static org.openqa.selenium.remote.ErrorCodes.METHOD_NOT_ALLOWED;
    1971:  ^
    1972:  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
    1973:  assertThat(decoded.getStatus().intValue()).isEqualTo(ErrorCodes.SUCCESS);
    1974:  ^
    1975:  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
    1976:  assertThat(decoded.getStatus()).isEqualTo(ErrorCodes.UNHANDLED_ERROR);
    1977:  ^
    1978:  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
    1979:  assertThat(decoded.getStatus()).isEqualTo(ErrorCodes.UNHANDLED_ERROR);
    1980:  ^
    1981:  (15:38:10) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/json/JsonTest.jar (1 source file):
    1982:  java/test/org/openqa/selenium/json/JsonTest.java:430: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1983:  assertThat(response.getState()).isEqualTo(new ErrorCodes().toState(0));
    1984:  ^
    1985:  java/test/org/openqa/selenium/json/JsonTest.java:441: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1986:  assertThat(response.getState()).isEqualTo(new ErrorCodes().toState(0));
    1987:  ^
    1988:  java/test/org/openqa/selenium/json/JsonTest.java:454: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1989:  assertThat(response.getState()).isEqualTo(new ErrorCodes().toState(32));
    1990:  ^
    1991:  (15:38:11) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/remote/RemotableByTest.jar (1 source file) and running annotation processors (AutoServiceProcessor):
    1992:  java/test/org/openqa/selenium/remote/RemotableByTest.java:23: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1993:  import static org.openqa.selenium.remote.ErrorCodes.SUCCESS_STRING;
    1994:  ^
    1995:  java/test/org/openqa/selenium/remote/RemotableByTest.java:23: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1996:  import static org.openqa.selenium.remote.ErrorCodes.SUCCESS_STRING;
    1997:  ^
    1998:  java/test/org/openqa/selenium/remote/RemotableByTest.java:23: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1999:  import static org.openqa.selenium.remote.ErrorCodes.SUCCESS_STRING;
    2000:  ^
    2001:  java/test/org/openqa/selenium/remote/RemotableByTest.java:45: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2002:  private final ErrorCodes errorCodes = new ErrorCodes();
    2003:  ^
    2004:  java/test/org/openqa/selenium/remote/RemotableByTest.java:45: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2005:  private final ErrorCodes errorCodes = new ErrorCodes();
    2006:  ^
    2007:  java/test/org/openqa/selenium/remote/RemotableByTest.java:45: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2008:  private final ErrorCodes errorCodes = new ErrorCodes();
    2009:  ^
    2010:  java/test/org/openqa/selenium/remote/RemotableByTest.java:45: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2011:  private final ErrorCodes errorCodes = new ErrorCodes();
    2012:  ^
    2013:  (15:38:13) �[32mAnalyzing:�[0m 1605 targets (1182 packages loaded, 35631 targets configured)
    2014:  �[32m[9,664 / 10,154]�[0m 354 / 834 tests;�[0m Compiling webdriver; 9s remote, remote-cache ... (43 actions, 2 running)
    2015:  (15:38:14) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/remote/ErrorHandlerTest.jar (1 source file) and running annotation processors (AutoServiceProcessor):
    2016:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:79: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2017:  handler.throwIfResponseFailed(createResponse(ErrorCodes.SUCCESS), 100);
    2018:  ^
    2019:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:85: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2020:  assertThrowsCorrectExceptionType(ErrorCodes.NO_SUCH_WINDOW, NoSuchWindowException.class);
    2021:  ^
    2022:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:86: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2023:  assertThrowsCorrectExceptionType(ErrorCodes.NO_SUCH_FRAME, NoSuchFrameException.class);
    2024:  ^
    2025:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:87: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2026:  assertThrowsCorrectExceptionType(ErrorCodes.NO_SUCH_ELEMENT, NoSuchElementException.class);
    2027:  ^
    2028:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:88: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2029:  assertThrowsCorrectExceptionType(ErrorCodes.UNKNOWN_COMMAND, UnsupportedCommandException.class);
    2030:  ^
    2031:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:90: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2032:  ErrorCodes.METHOD_NOT_ALLOWED, UnsupportedCommandException.class);
    2033:  ^
    2034:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:92: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2035:  ErrorCodes.STALE_ELEMENT_REFERENCE, StaleElementReferenceException.class);
    2036:  ^
    2037:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:94: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2038:  ErrorCodes.INVALID_ELEMENT_STATE, InvalidElementStateException.class);
    2039:  ^
    2040:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:95: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2041:  assertThrowsCorrectExceptionType(ErrorCodes.XPATH_LOOKUP_ERROR, InvalidSelectorException.class);
    2042:  ^
    2043:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:107: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2044:  Response response = createResponse(ErrorCodes.UNHANDLED_ERROR);
    2045:  ^
    2046:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:120: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2047:  createResponse(ErrorCodes.UNHANDLED_ERROR, "boom"), 123))
    2048:  ^
    2049:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:133: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2050:  createResponse(ErrorCodes.UNHANDLED_ERROR, ImmutableMap.of("message", "boom")),
    2051:  ^
    2052:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:147: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2053:  ErrorCodes.UNHANDLED_ERROR,
    2054:  ^
    2055:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:167: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2056:  ErrorCodes.UNHANDLED_ERROR,
    2057:  ^
    2058:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:193: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2059:  createResponse(ErrorCodes.UNHANDLED_ERROR, toMap(serverError)), 123))
    2060:  ^
    2061:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:214: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2062:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2063:  ^
    2064:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:248: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2065:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2066:  ^
    2067:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:280: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2068:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2069:  ^
    2070:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:308: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2071:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2072:  ^
    2073:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:327: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2074:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2075:  ^
    2076:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:355: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2077:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2078:  ^
    2079:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:394: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2080:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2081:  ^
    2082:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:426: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2083:  createResponse(ErrorCodes.UNHANDLED_ERROR, toMap(serverError)), 123))
    2084:  ^
    2085:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:435: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2086:  exceptions.put(ErrorCodes.NO_SUCH_SESSION, NoSuchSessionException.class);
    2087:  ^
    2088:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:436: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2089:  exceptions.put(ErrorCodes.NO_SUCH_ELEMENT, NoSuchElementException.class);
    2090:  ^
    2091:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:437: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2092:  exceptions.put(ErrorCodes.NO_SUCH_FRAME, NoSuchFrameException.class);
    2093:  ^
    2094:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:438: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2095:  exceptions.put(ErrorCodes.UNKNOWN_COMMAND, UnsupportedCommandException.class);
    2096:  ^
    2097:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:439: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2098:  exceptions.put(ErrorCodes.STALE_ELEMENT_REFERENCE, StaleElementReferenceException.class);
    2099:  ^
    2100:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:440: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2101:  exceptions.put(ErrorCodes.INVALID_ELEMENT_STATE, InvalidElementStateException.class);
    2102:  ^
    2103:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:441: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2104:  exceptions.put(ErrorCodes.UNHANDLED_ERROR, WebDriverException.class);
    2105:  ^
    2106:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:442: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2107:  exceptions.put(ErrorCodes.JAVASCRIPT_ERROR, JavascriptException.class);
    2108:  ^
    2109:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:443: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2110:  exceptions.put(ErrorCodes.XPATH_LOOKUP_ERROR, InvalidSelectorException.class);
    2111:  ^
    2112:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:444: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2113:  exceptions.put(ErrorCodes.TIMEOUT, TimeoutException.class);
    2114:  ^
    2115:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:445: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2116:  exceptions.put(ErrorCodes.NO_SUCH_WINDOW, NoSuchWindowException.class);
    2117:  ^
    2118:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:446: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2119:  exceptions.put(ErrorCodes.INVALID_COOKIE_DOMAIN, InvalidCookieDomainException.class);
    2120:  ^
    2121:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:447: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2122:  exceptions.put(ErrorCodes.UNABLE_TO_SET_COOKIE, UnableToSetCookieException.class);
    2123:  ^
    2124:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:448: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2125:  exceptions.put(ErrorCodes.UNEXPECTED_ALERT_PRESENT, UnhandledAlertException.class);
    2126:  ^
    2127:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:449: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2128:  exceptions.put(ErrorCodes.NO_ALERT_PRESENT, NoAlertPresentException.class);
    2129:  ^
    2130:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:450: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2131:  exceptions.put(ErrorCodes.ASYNC_SCRIPT_TIMEOUT, ScriptTimeoutException.class);
    2132:  ^
    2133:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:451: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2134:  exceptions.put(ErrorCodes.INVALID_SELECTOR_ERROR, InvalidSelectorException.class);
    2135:  ^
    2136:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:452: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2137:  exceptions.put(ErrorCodes.SESSION_NOT_CREATED, SessionNotCreatedException.class);
    2138:  ^
    2139:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:453: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2140:  exceptions.put(ErrorCodes.MOVE_TARGET_OUT_OF_BOUNDS, MoveTargetOutOfBoundsException.class);
    2141:  ^
    2142:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:454: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2143:  exceptions.put(ErrorCodes.INVALID_XPATH_SELECTOR, InvalidSelectorException.class);
    2144:  ^
    2145:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:455: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2146:  exceptions.put(ErrorCodes.INVALID_XPATH_SELECTOR_RETURN_TYPER, InvalidSelectorException.class);
    2147:  ^
    2148:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:469: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2149:  ? ErrorCodes.INVALID_SELECTOR_ERROR
    2150:  ^
    2151:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:471: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2152:  assertThat(new ErrorCodes().toStatusCode(e)).isEqualTo(expected);
    2153:  ^
    2154:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:483: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2155:  response.setState(new ErrorCodes().toState(status));
    ...
    
    2205:  (15:38:43) �[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
    2206:  (15:38:43) �[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
    2207:  (15:38:43) �[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
    2208:  (15:38:43) �[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
    2209:  (15:38:43) �[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
    2210:  (15:38:43) �[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
    2211:  (15:38:43) �[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
    2212:  (15:38:43) �[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
    2213:  (15:38:43) �[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
    ...
    
    2314:  (15:40:26) �[32m[14,370 / 14,597]�[0m 1379 / 1605 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta; 95s remote, remote-cache ... (50 actions, 20 running)
    2315:  (15:40:32) �[32m[14,373 / 14,597]�[0m 1381 / 1605 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta; 101s remote, remote-cache ... (50 actions, 19 running)
    2316:  (15:40:37) �[32m[14,374 / 14,597]�[0m 1382 / 1605 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta; 106s remote, remote-cache ... (50 actions, 20 running)
    2317:  (15:40:42) �[32m[14,375 / 14,597]�[0m 1383 / 1605 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta; 111s remote, remote-cache ... (50 actions, 33 running)
    2318:  (15:40:49) �[32m[14,375 / 14,597]�[0m 1383 / 1605 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta; 117s remote, remote-cache ... (50 actions, 45 running)
    2319:  (15:40:54) �[32m[14,378 / 14,597]�[0m 1386 / 1605 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta; 122s remote, remote-cache ... (50 actions, 43 running)
    2320:  (15:40:59) �[32m[14,385 / 14,597]�[0m 1393 / 1605 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta; 128s remote, remote-cache ... (50 actions, 44 running)
    2321:  (15:41:00) �[31m�[1mFAIL: �[0m//dotnet/test/support/Events:EventFiringWebDriverTest (see /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild-ST-6ecfd75adae2/testlogs/dotnet/test/support/Events/EventFiringWebDriverTest/test.log)
    2322:  �[31m�[1mFAILED: �[0m//dotnet/test/support/Events:EventFiringWebDriverTest (Summary)
    ...
    
    2330:  OS Version: Linux 6.1.0-21-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03)
    2331:  CLR Version: 7.0.10
    2332:  Test Files
    2333:  /mnt/engflow/worker/work/1/exec/bazel-out/k8-fastbuild-ST-6ecfd75adae2/bin/dotnet/test/support/Events/EventFiringWebDriverTest/net7.0/EventFiringWebDriverTest.dll.sh.runfiles/_main/dotnet/test/support/Events/EventFiringWebDriverTest/net7.0/EventFiringWebDriverTest.dll
    2334:  Test Discovery
    2335:  Start time: 2024-05-20 15:38:59Z
    2336:  End time: 2024-05-20 15:38:59Z
    2337:  Duration: 0.095 seconds
    2338:  Errors, Failures and Warnings
    2339:  1) Error : OpenQA.Selenium.Support.Events.EventFiringWebDriverTest.ShouldFireNavigationEvents
    2340:  Moq.MockException : 
    2341:  Expected invocation on the mock once, but was 0 times: x => x.Back()
    2342:  Performed invocations:
    2343:  Mock<INavigation:9> (x):
    2344:  INavigation.GoToUrl("http://www.navigate-to.com")
    2345:  INavigation.BackAsync()
    2346:  INavigation.Forward()
    2347:  at Moq.Mock.Verify(Mock mock, LambdaExpression expression, Times times, String failMessage)
    ...
    
    2350:  at OpenQA.Selenium.Support.Events.EventFiringWebDriverTest.ShouldFireNavigationEvents()
    2351:  at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
    2352:  at System.Reflection.MethodInvoker.Invoke(Object obj, IntPtr* args, BindingFlags invokeAttr)
    2353:  Run Settings
    2354:  Number of Test Workers: 2
    2355:  Work Directory: /mnt/engflow/worker/work/1/exec/bazel-out/k8-fastbuild-ST-6ecfd75adae2/bin/dotnet/test/support/Events/EventFiringWebDriverTest/net7.0/EventFiringWebDriverTest.dll.sh.runfiles/_main
    2356:  Internal Trace: Off
    2357:  Test Run Summary
    2358:  Overall result: Failed
    2359:  Test Count: 11, Passed: 10, Failed: 1, Warnings: 0, Inconclusive: 0, Skipped: 0
    2360:  Failed Tests - Failures: 0, Errors: 1, Invalid: 0
    ...
    
    2371:  OS Version: Linux 6.1.0-21-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03)
    2372:  CLR Version: 7.0.10
    2373:  Test Files
    2374:  /mnt/engflow/worker/work/0/exec/bazel-out/k8-fastbuild-ST-6ecfd75adae2/bin/dotnet/test/support/Events/EventFiringWebDriverTest/net7.0/EventFiringWebDriverTest.dll.sh.runfiles/_main/dotnet/test/support/Events/EventFiringWebDriverTest/net7.0/EventFiringWebDriverTest.dll
    2375:  Test Discovery
    2376:  Start time: 2024-05-20 15:40:53Z
    2377:  End time: 2024-05-20 15:40:53Z
    2378:  Duration: 0.126 seconds
    2379:  Errors, Failures and Warnings
    2380:  1) Error : OpenQA.Selenium.Support.Events.EventFiringWebDriverTest.ShouldFireNavigationEvents
    2381:  Moq.MockException : 
    2382:  Expected invocation on the mock once, but was 0 times: x => x.Back()
    2383:  Performed invocations:
    2384:  Mock<INavigation:9> (x):
    2385:  INavigation.GoToUrl("http://www.navigate-to.com")
    2386:  INavigation.BackAsync()
    2387:  INavigation.Forward()
    2388:  at Moq.Mock.Verify(Mock mock, LambdaExpression expression, Times times, String failMessage)
    ...
    
    2391:  at OpenQA.Selenium.Support.Events.EventFiringWebDriverTest.ShouldFireNavigationEvents()
    2392:  at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
    2393:  at System.Reflection.MethodInvoker.Invoke(Object obj, IntPtr* args, BindingFlags invokeAttr)
    2394:  Run Settings
    2395:  Number of Test Workers: 2
    2396:  Work Directory: /mnt/engflow/worker/work/0/exec/bazel-out/k8-fastbuild-ST-6ecfd75adae2/bin/dotnet/test/support/Events/EventFiringWebDriverTest/net7.0/EventFiringWebDriverTest.dll.sh.runfiles/_main
    2397:  Internal Trace: Off
    2398:  Test Run Summary
    2399:  Overall result: Failed
    2400:  Test Count: 11, Passed: 10, Failed: 1, Warnings: 0, Inconclusive: 0, Skipped: 0
    2401:  Failed Tests - Failures: 0, Errors: 1, Invalid: 0
    2402:  Start time: 2024-05-20 15:40:53Z
    2403:  End time: 2024-05-20 15:40:54Z
    2404:  Duration: 0.482 seconds
    2405:  Results (nunit3) saved as /mnt/engflow/worker/work/0/exec/bazel-out/k8-fastbuild-ST-6ecfd75adae2/bin/dotnet/test/support/Events/EventFiringWebDriverTest/net7.0/EventFiringWebDriverTest.dll.sh.runfiles/_main/TestResult.xml
    2406:  Execution result: https://gypsum.cluster.engflow.com/actions/executions/ChBncucAaPhEc503Bq56NJVREgdkZWZhdWx0GiUKIEtBfXLqlGHT_VYCGGLMTLRB40FplDXy6EAEAlruSVLYEJ8D
    2407:  ================================================================================
    2408:  (15:41:04) �[32m[14,389 / 14,597]�[0m 1398 / 1605 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta; 133s remote, remote-cache ... (50 actions, 46 running)
    2409:  (15:41:10) �[32m[14,390 / 14,597]�[0m 1399 / 1605 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta; 139s remote, remote-cache ... (50 actions, 48 running)
    2410:  (15:41:16) �[32m[14,391 / 14,597]�[0m 1399 / 1605 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta; 145s remote, remote-cache ... (50 actions running)
    2411:  (15:41:21) �[32m[14,392 / 14,597]�[0m 1400 / 1605 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta; 150s remote, remote-cache ... (50 actions running)
    2412:  (15:41:29) �[32m[14,393 / 14,597]�[0m 1401 / 1605 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta; 157s remote, remote-cache ... (50 actions running)
    2413:  (15:41:34) �[32m[14,394 / 14,597]�[0m 1403 / 1605 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta; 162s remote, remote-cache ... (50 actions running)
    2414:  (15:41:39) �[32m[14,397 / 14,597]�[0m 1406 / 1605 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta; 168s remote, remote-cache ... (50 actions running)
    2415:  (15:41:45) �[32m[14,398 / 14,597]�[0m 1406 / 1605 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta; 174s remote, remote-cache ... (50 actions running)
    2416:  (15:41:46) �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta (see /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/firefox/driver-firefox-beta/test.log)
    2417:  �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta (Summary)
    ...
    
    2429:  Selenium::WebDriver::Firefox::Driver
    2430:  can get and set context
    2431:  #print_options
    2432:  returns base64 for print command
    2433:  prints with orientation
    2434:  prints with valid params
    2435:  prints full page
    2436:  #install_addon
    2437:  install and uninstall xpi file (FAILED - 1)
    2438:  install and uninstall signed zip file (FAILED - 2)
    2439:  install and uninstall unsigned zip file
    2440:  install and uninstall signed directory (FAILED - 3)
    2441:  install and uninstall unsigned directory
    2442:  Failures:
    2443:  1) Selenium::WebDriver::Firefox::Driver#install_addon install and uninstall xpi file
    2444:  Failure/Error: id = driver.install_addon(ext)
    2445:  Selenium::WebDriver::Error::UnknownError:
    2446:  Could not install add-on: /tmp/addon-591cb264-6ebe-4dbe-a75e-3ac0d35f0300.xpi: ERROR_CORRUPT_FILE: The file appears to be corrupt.
    2447:  # RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    2448:  # WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    2449:  # UnknownError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:832:5
    ...
    
    2454:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:101:in `create_response'
    2455:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    2456:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    2457:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:630:in `execute'
    2458:  # ./rb/lib/selenium/webdriver/firefox/features.rb:49:in `install_addon'
    2459:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_addons.rb:33:in `install_addon'
    2460:  # ./rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb:68:in `block in Firefox'
    2461:  2) Selenium::WebDriver::Firefox::Driver#install_addon install and uninstall signed zip file
    2462:  Failure/Error: id = driver.install_addon(ext)
    2463:  Selenium::WebDriver::Error::UnknownError:
    2464:  Could not install add-on: /tmp/addon-6fdf2078-7d49-4db4-99ae-608df132172f.xpi: ERROR_CORRUPT_FILE: The file appears to be corrupt.
    2465:  # RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    2466:  # WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    2467:  # UnknownError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:832:5
    ...
    
    2472:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:101:in `create_response'
    2473:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    2474:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    2475:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:630:in `execute'
    2476:  # ./rb/lib/selenium/webdriver/firefox/features.rb:49:in `install_addon'
    2477:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_addons.rb:33:in `install_addon'
    2478:  # ./rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb:83:in `block in Firefox'
    2479:  3) Selenium::WebDriver::Firefox::Driver#install_addon install and uninstall signed directory
    2480:  Failure/Error: id = driver.install_addon(ext)
    2481:  Selenium::WebDriver::Error::UnknownError:
    2482:  Could not install add-on: /tmp/addon-cc1a57fd-ce66-4348-8cb8-0ad584c05e18.xpi: ERROR_CORRUPT_FILE: The file appears to be corrupt.
    2483:  # RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    2484:  # WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    2485:  # UnknownError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:832:5
    ...
    
    2490:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:101:in `create_response'
    2491:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    2492:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    2493:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:630:in `execute'
    2494:  # ./rb/lib/selenium/webdriver/firefox/features.rb:49:in `install_addon'
    2495:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_addons.rb:33:in `install_addon'
    2496:  # ./rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb:114:in `block in Firefox'
    2497:  Finished in 32.27 seconds (files took 2.7 seconds to load)
    2498:  10 examples, 3 failures
    2499:  Failed examples:
    ...
    
    2513:  Selenium::WebDriver::Firefox::Driver
    2514:  can get and set context
    2515:  #print_options
    2516:  returns base64 for print command
    2517:  prints with orientation
    2518:  prints with valid params
    2519:  prints full page
    2520:  #install_addon
    2521:  install and uninstall xpi file (FAILED - 1)
    2522:  install and uninstall signed zip file (FAILED - 2)
    2523:  install and uninstall unsigned zip file
    2524:  install and uninstall signed directory (FAILED - 3)
    2525:  install and uninstall unsigned directory
    2526:  Failures:
    2527:  1) Selenium::WebDriver::Firefox::Driver#install_addon install and uninstall xpi file
    2528:  Failure/Error: id = driver.install_addon(ext)
    2529:  Selenium::WebDriver::Error::UnknownError:
    2530:  Could not install add-on: /tmp/addon-dc9ded26-8964-4dff-a4b3-425f5354229a.xpi: ERROR_CORRUPT_FILE: The file appears to be corrupt.
    2531:  # RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    2532:  # WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    2533:  # UnknownError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:832:5
    ...
    
    2538:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:101:in `create_response'
    2539:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    2540:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    2541:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:630:in `execute'
    2542:  # ./rb/lib/selenium/webdriver/firefox/features.rb:49:in `install_addon'
    2543:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_addons.rb:33:in `install_addon'
    2544:  # ./rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb:68:in `block in Firefox'
    2545:  2) Selenium::WebDriver::Firefox::Driver#install_addon install and uninstall signed zip file
    2546:  Failure/Error: id = driver.install_addon(ext)
    2547:  Selenium::WebDriver::Error::UnknownError:
    2548:  Could not install add-on: /tmp/addon-0e965db2-950f-4aa9-a127-f3834e9137d5.xpi: ERROR_CORRUPT_FILE: The file appears to be corrupt.
    2549:  # RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    2550:  # WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    2551:  # UnknownError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:832:5
    ...
    
    2556:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:101:in `create_response'
    2557:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    2558:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    2559:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:630:in `execute'
    2560:  # ./rb/lib/selenium/webdriver/firefox/features.rb:49:in `install_addon'
    2561:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_addons.rb:33:in `install_addon'
    2562:  # ./rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb:83:in `block in Firefox'
    2563:  3) Selenium::WebDriver::Firefox::Driver#install_addon install and uninstall signed directory
    2564:  Failure/Error: id = driver.install_addon(ext)
    2565:  Selenium::WebDriver::Error::UnknownError:
    2566:  Could not install add-on: /tmp/addon-dcb653f7-5952-4d68-a0e9-d59f3ab40917.xpi: ERROR_CORRUPT_FILE: The file appears to be corrupt.
    2567:  # RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    2568:  # WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    2569:  # UnknownError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:832:5
    ...
    
    2574:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:101:in `create_response'
    2575:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    2576:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    2577:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:630:in `execute'
    2578:  # ./rb/lib/selenium/webdriver/firefox/features.rb:49:in `install_addon'
    2579:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_addons.rb:33:in `install_addon'
    2580:  # ./rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb:114:in `block in Firefox'
    2581:  Finished in 32.65 seconds (files took 2.51 seconds to load)
    2582:  10 examples, 3 failures
    2583:  Failed examples:
    2584:  rspec ./rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb:66 # Selenium::WebDriver::Firefox::Driver#install_addon install and uninstall xpi file
    2585:  rspec ./rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb:81 # Selenium::WebDriver::Firefox::Driver#install_addon install and uninstall signed zip file
    2586:  rspec ./rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb:111 # Selenium::WebDriver::Firefox::Driver#install_addon install and uninstall signed directory
    2587:  Execution result: https://gypsum.cluster.engflow.com/actions/executions/ChAoloHTtkVP251j4DuAG35NEgdkZWZhdWx0GiUKIGZYPX06yXS8t8swNrP_YmQzbYW925o_dnnSEG8lhM99EJ8D
    2588:  ================================================================================
    2589:  (15:41:51) �[32m[14,400 / 14,597]�[0m 1408 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:TargetLocatorTest-chrome; 74s remote, remote-cache ... (50 actions running)
    2590:  (15:41:57) �[32m[14,403 / 14,597]�[0m 1412 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:TargetLocatorTest-chrome; 79s remote, remote-cache ... (50 actions, 49 running)
    2591:  (15:42:04) �[32m[14,404 / 14,597]�[0m 1412 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:TargetLocatorTest-chrome; 86s remote, remote-cache ... (50 actions running)
    2592:  (15:42:09) �[32m[14,405 / 14,597]�[0m 1413 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:TargetLocatorTest-chrome; 92s remote, remote-cache ... (50 actions running)
    2593:  (15:42:17) �[32m[14,408 / 14,597]�[0m 1416 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:TargetLocatorTest-chrome; 99s remote, remote-cache ... (50 actions running)
    2594:  (15:42:23) �[32m[14,410 / 14,597]�[0m 1418 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:TargetLocatorTest-chrome; 105s remote, remote-cache ... (50 actions running)
    2595:  (15:42:28) �[32m[14,413 / 14,597]�[0m 1421 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:TargetLocatorTest-chrome; 111s remote, remote-cache ... (50 actions running)
    2596:  (15:42:34) �[32m[14,416 / 14,597]�[0m 1424 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:TargetLocatorTest-chrome; 116s remote, remote-cache ... (50 actions running)
    2597:  (15:42:39) �[32m[14,417 / 14,597]�[0m 1425 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:TargetLocatorTest-chrome; 122s remote, remote-cache ... (50 actions running)
    2598:  (15:42:44) �[32m[14,426 / 14,597]�[0m 1434 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:TargetLocatorTest-chrome; 127s remote, remote-cache ... (50 actions, 47 running)
    2599:  (15:42:50) �[32m[14,429 / 14,597]�[0m 1437 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:TargetLocatorTest-chrome; 132s remote, remote-cache ... (50 actions running)
    2600:  (15:42:55) �[32m[14,432 / 14,597]�[0m 1441 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:Internal/Logging/LogTest-chrome; 137s remote, remote-cache ... (50 actions running)
    2601:  (15:43:00) �[32m[14,440 / 14,597]�[0m 1449 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:DevTools/DevToolsTabsTest-chrome; 141s remote, remote-cache ... (50 actions running)
    2602:  (15:43:05) �[32m[14,444 / 14,597]�[0m 1452 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:DevTools/DevToolsTabsTest-chrome; 146s remote, remote-cache ... (50 actions running)
    2603:  (15:43:10) �[32m[14,447 / 14,597]�[0m 1455 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:DevTools/DevToolsTabsTest-chrome; 151s remote, remote-cache ... (50 actions running)
    2604:  (15:43:15) �[32m[14,454 / 14,597]�[0m 1462 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:DevTools/DevToolsTabsTest-chrome; 156s remote, remote-cache ... (50 actions running)
    2605:  (15:43:21) �[32m[14,458 / 14,597]�[0m 1466 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:DevTools/DevToolsTabsTest-chrome; 162s remote, remote-cache ... (50 actions, 49 running)
    2606:  (15:43:26) �[32m[14,463 / 14,597]�[0m 1471 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:DevTools/DevToolsTabsTest-chrome; 167s remote, remote-cache ... (50 actions, 48 running)
    2607:  (15:43:31) �[32m[14,482 / 14,597]�[0m 1490 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:NavigationTest-chrome; 171s remote, remote-cache ... (50 actions running)
    2608:  (15:43:37) �[32m[14,492 / 14,597]�[0m 1500 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:PageLoadingTest-chrome; 174s remote, remote-cache ... (50 actions, 48 running)
    2609:  (15:43:39) �[31m�[1mFAIL: �[0m//dotnet/test/common:JavascriptEnabledBrowserTest-edge (see /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild-ST-6ecfd75adae2/testlogs/dotnet/test/common/JavascriptEnabledBrowserTest-edge/test_attempts/attempt_1.log)
    2610:  (15:43:42) �[32m[14,505 / 14,597]�[0m 1514 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:PageLoadingTest-chrome; 179s remote, remote-cache ... (50 actions, 46 running)
    2611:  (15:43:47) �[32m[14,520 / 14,597]�[0m 1528 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:PageLoadingTest-chrome; 184s remote, remote-cache ... (50 actions, 48 running)
    2612:  (15:43:52) �[32m[14,529 / 14,597]�[0m 1537 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:PageLoadingTest-chrome; 189s remote, remote-cache ... (50 actions running)
    2613:  (15:43:57) �[32m[14,541 / 14,597]�[0m 1549 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:PageLoadingTest-chrome; 194s remote, remote-cache ... (50 actions, 49 running)
    ...
    
    2628:  Duration: 0.331 seconds
    2629:  Starting Microsoft Edge WebDriver 124.0.2478.105 (a4f60a4465d5a104d23614bed740efef0c5b0a50) on port 33313
    2630:  To submit feedback, report a bug, or suggest new features, please visit https://github.com/MicrosoftEdge/EdgeWebDriver
    2631:  Only local connections are allowed.
    2632:  Please see https://aka.ms/WebDriverSecurity for suggestions on keeping Microsoft Edge WebDriver safe.
    2633:  => OpenQA.Selenium.JavascriptEnabledBrowserTest
    2634:  15:43:21.680 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:33313)
    2635:  ---> System.Net.Sockets.SocketException (111): Connection refused
    2636:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    2647:  at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
    2648:  at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
    2649:  at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
    2650:  at OpenQA.Selenium.DriverService.<>c__DisplayClass51_0.<<get_IsInitialized>b__0>d.MoveNext()
    2651:  --- End of stack trace from previous location ---
    2652:  at OpenQA.Selenium.DriverService.get_IsInitialized()
    2653:  15:43:21.698 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:33313)
    2654:  ---> System.Net.Sockets.SocketException (111): Connection refused
    2655:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    3013:  }
    3014:  15:43:25.340 TRACE HttpCommandExecutor: << StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
    3015:  {
    3016:  Cache-Control: no-cache
    3017:  Content-Length: 126
    3018:  Content-Type: application/json; charset=utf-8
    3019:  }
    3020:  15:43:25.341 DEBUG HttpCommandExecutor: Response: ( Success: System.Collections.Generic.Dictionary`2[System.String,System.Object])
    3021:  15:43:25.345 DEBUG HttpCommandExecutor: Executing command: [75943ef9f1e62db1e9e6bf4168bf47f2]: executeScript {"script":"/* get-attribute */return (function(){return (function(){var d=this||self;function f(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a};var h=Array.prototype.indexOf?function(a,b){return Array.prototype.indexOf.call(a,b,void 0)}:function(a,b){if(\"string\"===typeof a)return\"string\"!==typeof b||1!=b.length?-1:a.indexOf(b,0);for(var c=0;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1},k=Array.prototype.forEach?function(a,b){Array.prototype.forEach.call(a,b,void 0)}:function(a,b){for(var c=a.length,e=\"string\"===typeof a?a.split(\"\"):a,g=0;g<c;g++)g in e&&b.call(void 0,e[g],g,a)};function l(a,b){this.code=a;this.a=m[a]||n;this.message=b||\"\";a=this.a.replace(/((?:^|\\s+)[a-z])/g,function(c){return c.toUpperCase().replace(/^[\\s\\xa0]+/g,\"\")});b=a.length-5;if(0>b||a.indexOf(\"Error\",b)!=b)a+=\"Error\";this.name=a;a=Error(this.message);a.name=this.name;this.stack=a.stack||\"\"}f(l,Error);var n=\"unknown error\",m={15:\"element not selectable\",11:\"element not visible\"};m[31]=n;m[30]=n;m[24]=\"invalid cookie domain\";m[29]=\"invalid element coordinates\";m[12]=\"invalid element state\";m[32]=\"invalid selector\";\nm[51]=\"invalid selector\";m[52]=\"invalid selector\";m[17]=\"javascript error\";m[405]=\"unsupported operation\";m[34]=\"move target out of bounds\";m[27]=\"no such alert\";m[7]=\"no such element\";m[8]=\"no such frame\";m[23]=\"no such window\";m[28]=\"script timeout\";m[33]=\"session not created\";m[10]=\"stale element reference\";m[21]=\"timeout\";m[25]=\"unable to set cookie\";m[26]=\"unexpected alert open\";m[13]=n;m[9]=\"unknown command\";var p;a:{var q=d.navigator;if(q){var r=q.userAgent;if(r){p=r;break a}}p=\"\"}function t(a){return-1!=p.indexOf(a)};function u(){return t(\"Firefox\")||t(\"FxiOS\")}function v(){return(t(\"Chrome\")||t(\"CriOS\"))&&!t(\"Edge\")};function w(){return t(\"iPhone\")&&!t(\"iPod\")&&!t(\"iPad\")};var y=t(\"Opera\"),z=t(\"Trident\")||t(\"MSIE\"),A=t(\"Edge\"),B=t(\"Gecko\")&&!(-1!=p.toLowerCase().indexOf(\"webkit\")&&!t(\"Edge\"))&&!(t(\"Trident\")||t(\"MSIE\"))&&!t(\"Edge\"),C=-1!=p.toLowerCase().indexOf(\"webkit\")&&!t(\"Edge\");function D(){var a=d.document;return a?a.documentMode:void 0}var E;\na:{var F=\"\",G=function(){var a=p;if(B)return/rv:([^\\);]+)(\\)|;)/.exec(a);if(A)return/Edge\\/([\\d\\.]+)/.exec(a);if(z)return/\\b(?:MSIE|rv)[: ]([^\\);]+)(\\)|;)/.exec(a);if(C)return/WebKit\\/(\\S+)/.exec(a);if(y)return/(?:Version)[ \\/]?(\\S+)/.exec(a)}();G&&(F=G?G[1]:\"\");if(z){var H=D();if(null!=H&&H>parseFloat(F)){E=String(H);break a}}E=F}var I;I=d.document&&z?D():void 0;var J=u(),K=w()||t(\"iPod\"),L=t(\"iPad\"),M=t(\"Android\")&&!(v()||u()||t(\"Opera\")||t(\"Silk\")),N=v(),aa=t(\"Safari\")&&!(v()||t(\"Coast\")||t(\"Opera\")||t(\"Edge\")||t(\"Edg/\")||t(\"OPR\")||u()||t(\"Silk\")||t(\"Android\"))&&!(w()||t(\"iPad\")||t(\"iPod\"));function O(a){return(a=a.exec(p))?a[1]:\"\"}(function(){if(J)return O(/Firefox\\/([0-9.]+)/);if(z||A||y)return E;if(N)return w()||t(\"iPad\")||t(\"iPod\")?O(/CriOS\\/([0-9.]+)/):O(/Chrome\\/([0-9.]+)/);if(aa&&!(w()||t(\"iPad\")||t(\"iPod\")))return O(/Version\\/([0-9.]+)/);if(K||L){var a=/Version\\/(\\S+).*Mobile\\/(\\S+)/.exec(p);if(a)return a[1]+\".\"+a[2]}else if(M)return(a=O(/Android\\s+([0-9.]+)/))?a:O(/Version\\/([0-9.]+)/);return\"\"})();var P=z&&!(8<=Number(I)),ba=z&&!(9<=Number(I));var ca={SCRIPT:1,STYLE:1,HEAD:1,IFRAME:1,OBJECT:1},Q={IMG:\" \",BR:\"\\n\"};function R(a,b,c){if(!(a.nodeName in ca))if(3==a.nodeType)c?b.push(String(a.nodeValue).replace(/(\\r\\n|\\r|\\n)/g,\"\")):b.push(a.nodeValue);else if(a.nodeName in Q)b.push(Q[a.nodeName]);else for(a=a.firstChild;a;)R(a,b,c),a=a.nextSibling};function S(a,b){b=b.toLowerCase();return\"style\"==b?da(a.style.cssText):P&&\"value\"==b&&T(a,\"INPUT\")?a.value:ba&&!0===a[b]?String(a.getAttribute(b)):(a=a.getAttributeNode(b))&&a.specified?a.value:null}var ea=/[;]+(?=(?:(?:[^\"]*\"){2})*[^\"]*$)(?=(?:(?:[^']*'){2})*[^']*$)(?=(?:[^()]*\\([^()]*\\))*[^()]*$)/;\nfunction da(a){var b=[];k(a.split(ea),function(c){var e=c.indexOf(\":\");0<e&&(c=[c.slice(0,e),c.slice(e+1)],2==c.length&&b.push(c[0].toLowerCase(),\":\",c[1],\";\"))});b=b.join(\"\");return b=\";\"==b.charAt(b.length-1)?b:b+\";\"}function U(a,b){P&&\"value\"==b&&T(a,\"OPTION\")&&null===S(a,\"value\")?(b=[],R(a,b,!1),a=b.join(\"\")):a=a[b];return a}function T(a,b){b&&\"string\"!==typeof b&&(b=b.toString());return!!a&&1==a.nodeType&&(!b||a.tagName.toUpperCase()==b)}\nfunction V(a){return T(a,\"OPTION\")?!0:T(a,\"INPUT\")?(a=a.type.toLowerCase(),\"checkbox\"==a||\"radio\"==a):!1};var fa={\"class\":\"className\",readonly:\"readOnly\"},ha=\"allowfullscreen allowpaymentrequest allowusermedia async autofocus autoplay checked compact complete controls declare default defaultchecked defaultselected defer disabled ended formnovalidate hidden indeterminate iscontenteditable ismap itemscope loop multiple muted nohref nomodule noresize noshade novalidate nowrap open paused playsinline pubdate readonly required reversed scoped seamless seeking selected truespeed typemustmatch willvalidate\".split(\" \");function W(a,b){var c=null,e=b.toLowerCase();if(\"style\"==e)return(c=a.style)&&\"string\"!=typeof c&&(c=c.cssText),c;if((\"selected\"==e||\"checked\"==e)&&V(a)){if(!V(a))throw new l(15,\"Element is not selectable\");b=\"selected\";c=a.type&&a.type.toLowerCase();if(\"checkbox\"==c||\"radio\"==c)b=\"checked\";return U(a,b)?\"true\":null}var g=T(a,\"A\");if(T(a,\"IMG\")&&\"src\"==e||g&&\"href\"==e)return(c=S(a,e))&&(c=U(a,e)),c;if(\"spellcheck\"==e){c=S(a,e);if(null!==c){if(\"false\"==c.toLowerCase())return\"false\";if(\"true\"==c.toLowerCase())return\"true\"}return U(a,\ne)+\"\"}g=fa[b]||b;if(0<=h(ha,e))return(c=null!==S(a,b)||U(a,g))?\"true\":null;try{var x=U(a,g)}catch(ia){}(e=null==x)||(e=typeof x,e=\"object\"==e&&null!=x||\"function\"==e);e?c=S(a,b):c=x;return null!=c?c.toString():null}var X=[\"_\"],Y=d;X[0]in Y||\"undefined\"==typeof Y.execScript||Y.execScript(\"var \"+X[0]);for(var Z;X.length&&(Z=X.shift());)X.length||void 0===W?Y[Z]&&Y[Z]!==Object.prototype[Z]?Y=Y[Z]:Y=Y[Z]={}:Y[Z]=W;; return this._.apply(null,arguments);}).apply({navigator:typeof window!='undefined'?window.navigator:null,document:typeof window!='undefined'?window.document:null}, arguments);}\n).apply(null, arguments);","args":[{"element-6066-11e4-a52e-4f735466cecf":"f.82D38148211AD410919EF31F3FC4D7ED.d.8F95C76179D65C154603FC760AAA6B67.e.98"},"name"]}
    ...
    
    3053:  }
    3054:  15:43:25.617 TRACE HttpCommandExecutor: << StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
    3055:  {
    3056:  Cache-Control: no-cache
    3057:  Content-Length: 127
    3058:  Content-Type: application/json; charset=utf-8
    3059:  }
    3060:  15:43:25.618 DEBUG HttpCommandExecutor: Response: ( Success: System.Collections.Generic.Dictionary`2[System.String,System.Object])
    3061:  15:43:25.619 DEBUG HttpCommandExecutor: Executing command: [75943ef9f1e62db1e9e6bf4168bf47f2]: executeScript {"script":"/* get-attribute */return (function(){return (function(){var d=this||self;function f(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a};var h=Array.prototype.indexOf?function(a,b){return Array.prototype.indexOf.call(a,b,void 0)}:function(a,b){if(\"string\"===typeof a)return\"string\"!==typeof b||1!=b.length?-1:a.indexOf(b,0);for(var c=0;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1},k=Array.prototype.forEach?function(a,b){Array.prototype.forEach.call(a,b,void 0)}:function(a,b){for(var c=a.length,e=\"string\"===typeof a?a.split(\"\"):a,g=0;g<c;g++)g in e&&b.call(void 0,e[g],g,a)};function l(a,b){this.code=a;this.a=m[a]||n;this.message=b||\"\";a=this.a.replace(/((?:^|\\s+)[a-z])/g,function(c){return c.toUpperCase().replace(/^[\\s\\xa0]+/g,\"\")});b=a.length-5;if(0>b||a.indexOf(\"Error\",b)!=b)a+=\"Error\";this.name=a;a=Error(this.message);a.name=this.name;this.stack=a.stack||\"\"}f(l,Error);var n=\"unknown error\",m={15:\"element not selectable\",11:\"element not visible\"};m[31]=n;m[30]=n;m[24]=\"invalid cookie domain\";m[29]=\"invalid element coordinates\";m[12]=\"invalid element state\";m[32]=\"invalid selector\";\nm[51]=\"invalid selector\";m[52]=\"invalid selector\";m[17]=\"javascript error\";m[405]=\"unsupported operation\";m[34]=\"move target out of bounds\";m[27]=\"no such alert\";m[7]=\"no such element\";m[8]=\"no such frame\";m[23]=\"no such window\";m[28]=\"script timeout\";m[33]=\"session not created\";m[10]=\"stale element reference\";m[21]=\"timeout\";m[25]=\"unable to set cookie\";m[26]=\"unexpected alert open\";m[13]=n;m[9]=\"unknown command\";var p;a:{var q=d.navigator;if(q){var r=q.userAgent;if(r){p=r;break a}}p=\"\"}function t(a){return-1!=p.indexOf(a)};function u(){return t(\"Firefox\")||t(\"FxiOS\")}function v(){return(t(\"Chrome\")||t(\"CriOS\"))&&!t(\"Edge\")};function w(){return t(\"iPhone\")&&!t(\"iPod\")&&!t(\"iPad\")};var y=t(\"Opera\"),z=t(\"Trident\")||t(\"MSIE\"),A=t(\"Edge\"),B=t(\"Gecko\")&&!(-1!=p.toLowerCase().indexOf(\"webkit\")&&!t(\"Edge\"))&&!(t(\"Trident\")||t(\"MSIE\"))&&!t(\"Edge\"),C=-1!=p.toLowerCase().indexOf(\"webkit\")&&!t(\"Edge\");function D(){var a=d.document;return a?a.documentMode:void 0}var E;\na:{var F=\"\",G=function(){var a=p;if(B)return/rv:([^\\);]+)(\\)|;)/.exec(a);if(A)return/Edge\\/([\\d\\.]+)/.exec(a);if(z)return/\\b(?:MSIE|rv)[: ]([^\\);]+)(\\)|;)/.exec(a);if(C)return/WebKit\\/(\\S+)/.exec(a);if(y)return/(?:Version)[ \\/]?(\\S+)/.exec(a)}();G&&(F=G?G[1]:\"\");if(z){var H=D();if(null!=H&&H>parseFloat(F)){E=String(H);break a}}E=F}var I;I=d.document&&z?D():void 0;var J=u(),K=w()||t(\"iPod\"),L=t(\"iPad\"),M=t(\"Android\")&&!(v()||u()||t(\"Opera\")||t(\"Silk\")),N=v(),aa=t(\"Safari\")&&!(v()||t(\"Coast\")||t(\"Opera\")||t(\"Edge\")||t(\"Edg/\")||t(\"OPR\")||u()||t(\"Silk\")||t(\"Android\"))&&!(w()||t(\"iPad\")||t(\"iPod\"));function O(a){return(a=a.exec(p))?a[1]:\"\"}(function(){if(J)return O(/Firefox\\/([0-9.]+)/);if(z||A||y)return E;if(N)return w()||t(\"iPad\")||t(\"iPod\")?O(/CriOS\\/([0-9.]+)/):O(/Chrome\\/([0-9.]+)/);if(aa&&!(w()||t(\"iPad\")||t(\"iPod\")))return O(/Version\\/([0-9.]+)/);if(K||L){var a=/Version\\/(\\S+).*Mobile\\/(\\S+)/.exec(p);if(a)return a[1]+\".\"+a[2]}else if(M)return(a=O(/Android\\s+([0-9.]+)/))?a:O(/Version\\/([0-9.]+)/);return\"\"})();var P=z&&!(8<=Number(I)),ba=z&&!(9<=Number(I));var ca={SCRIPT:1,STYLE:1,HEAD:1,IFRAME:1,OBJECT:1},Q={IMG:\" \",BR:\"\\n\"};function R(a,b,c){if(!(a.nodeName in ca))if(3==a.nodeType)c?b.push(String(a.nodeValue).replace(/(\\r\\n|\\r|\\n)/g,\"\")):b.push(a.nodeValue);else if(a.nodeName in Q)b.push(Q[a.nodeName]);else for(a=a.firstChild;a;)R(a,b,c),a=a.nextSibling};function S(a,b){b=b.toLowerCase();return\"style\"==b?da(a.style.cssText):P&&\"value\"==b&&T(a,\"INPUT\")?a.value:ba&&!0===a[b]?String(a.getAttribute(b)):(a=a.getAttributeNode(b))&&a.specified?a.value:null}var ea=/[;]+(?=(?:(?:[^\"]*\"){2})*[^\"]*$)(?=(?:(?:[^']*'){2})*[^']*$)(?=(?:[^()]*\\([^()]*\\))*[^()]*$)/;\nfunction da(a){var b=[];k(a.split(ea),function(c){var e=c.indexOf(\":\");0<e&&(c=[c.slice(0,e),c.slice(e+1)],2==c.length&&b.push(c[0].toLowerCase(),\":\",c[1],\";\"))});b=b.join(\"\");return b=\";\"==b.charAt(b.length-1)?b:b+\";\"}function U(a,b){P&&\"value\"==b&&T(a,\"OPTION\")&&null===S(a,\"value\")?(b=[],R(a,b,!1),a=b.join(\"\")):a=a[b];return a}function T(a,b){b&&\"string\"!==typeof b&&(b=b.toString());return!!a&&1==a.nodeType&&(!b||a.tagName.toUpperCase()==b)}\nfunction V(a){return T(a,\"OPTION\")?!0:T(a,\"INPUT\")?(a=a.type.toLowerCase(),\"checkbox\"==a||\"radio\"==a):!1};var fa={\"class\":\"className\",readonly:\"readOnly\"},ha=\"allowfullscreen allowpaymentrequest allowusermedia async autofocus autoplay checked compact complete controls declare default defaultchecked defaultselected defer disabled ended formnovalidate hidden indeterminate iscontenteditable ismap itemscope loop multiple muted nohref nomodule noresize noshade novalidate nowrap open paused playsinline pubdate readonly required reversed scoped seamless seeking selected truespeed typemustmatch willvalidate\".split(\" \");function W(a,b){var c=null,e=b.toLowerCase();if(\"style\"==e)return(c=a.style)&&\"string\"!=typeof c&&(c=c.cssText),c;if((\"selected\"==e||\"checked\"==e)&&V(a)){if(!V(a))throw new l(15,\"Element is not selectable\");b=\"selected\";c=a.type&&a.type.toLowerCase();if(\"checkbox\"==c||\"radio\"==c)b=\"checked\";return U(a,b)?\"true\":null}var g=T(a,\"A\");if(T(a,\"IMG\")&&\"src\"==e||g&&\"href\"==e)return(c=S(a,e))&&(c=U(a,e)),c;if(\"spellcheck\"==e){c=S(a,e);if(null!==c){if(\"false\"==c.toLowerCase())return\"false\";if(\"true\"==c.toLowerCase())return\"true\"}return U(a,\ne)+\"\"}g=fa[b]||b;if(0<=h(ha,e))return(c=null!==S(a,b)||U(a,g))?\"true\":null;try{var x=U(a,g)}catch(ia){}(e=null==x)||(e=typeof x,e=\"object\"==e&&null!=x||\"function\"==e);e?c=S(a,b):c=x;return null!=c?c.toString():null}var X=[\"_\"],Y=d;X[0]in Y||\"undefined\"==typeof Y.execScript||Y.execScript(\"var \"+X[0]);for(var Z;X.length&&(Z=X.shift());)X.length||void 0===W?Y[Z]&&Y[Z]!==Object.prototype[Z]?Y=Y[Z]:Y=Y[Z]={}:Y[Z]=W;; return this._.apply(null,arguments);}).apply({navigator:typeof window!='undefined'?window.navigator:null,document:typeof window!='undefined'?window.document:null}, arguments);}\n).apply(null, arguments);","args":[{"element-6066-11e4-a52e-4f735466cecf":"f.82D38148211AD410919EF31F3FC4D7ED.d.0B6713CE4463DF5F0DD9537B6BBACB7D.e.112"},"value"]}
    ...
    
    3079:  }
    3080:  15:43:25.741 TRACE HttpCommandExecutor: << StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
    3081:  {
    3082:  Cache-Control: no-cache
    3083:  Content-Length: 14
    3084:  Content-Type: application/json; charset=utf-8
    3085:  }
    3086:  15:43:25.743 DEBUG HttpCommandExecutor: Response: ( Success: )
    3087:  15:43:25.744 DEBUG HttpCommandExecutor: Executing command: [75943ef9f1e62db1e9e6bf4168bf47f2]: executeScript {"script":"/* get-attribute */return (function(){return (function(){var d=this||self;function f(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a};var h=Array.prototype.indexOf?function(a,b){return Array.prototype.indexOf.call(a,b,void 0)}:function(a,b){if(\"string\"===typeof a)return\"string\"!==typeof b||1!=b.length?-1:a.indexOf(b,0);for(var c=0;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1},k=Array.prototype.forEach?function(a,b){Array.prototype.forEach.call(a,b,void 0)}:function(a,b){for(var c=a.length,e=\"string\"===typeof a?a.split(\"\"):a,g=0;g<c;g++)g in e&&b.call(void 0,e[g],g,a)};function l(a,b){this.code=a;this.a=m[a]||n;this.message=b||\"\";a=this.a.replace(/((?:^|\\s+)[a-z])/g,function(c){return c.toUpperCase().replace(/^[\\s\\xa0]+/g,\"\")});b=a.length-5;if(0>b||a.indexOf(\"Error\",b)!=b)a+=\"Error\";this.name=a;a=Error(this.message);a.name=this.name;this.stack=a.stack||\"\"}f(l,Error);var n=\"unknown error\",m={15:\"element not selectable\",11:\"element not visible\"};m[31]=n;m[30]=n;m[24]=\"invalid cookie domain\";m[29]=\"invalid element coordinates\";m[12]=\"invalid element state\";m[32]=\"invalid selector\";\nm[51]=\"invalid selector\";m[52]=\"invalid selector\";m[17]=\"javascript error\";m[405]=\"unsupported operation\";m[34]=\"move target out of bounds\";m[27]=\"no such alert\";m[7]=\"no such element\";m[8]=\"no such frame\";m[23]=\"no such window\";m[28]=\"script timeout\";m[33]=\"session not created\";m[10]=\"stale element reference\";m[21]=\"timeout\";m[25]=\"unable to set cookie\";m[26]=\"unexpected alert open\";m[13]=n;m[9]=\"unknown command\";var p;a:{var q=d.navigator;if(q){var r=q.userAgent;if(r){p=r;break a}}p=\"\"}function t(a){return-1!=p.indexOf(a)};function u(){return t(\"Firefox\")||t(\"FxiOS\")}function v(){return(t(\"Chrome\")||t(\"CriOS\"))&&!t(\"Edge\")};function w(){return t(\"iPhone\")&&!t(\"iPod\")&&!t(\"iPad\")};var y=t(\"Opera\"),z=t(\"Trident\")||t(\"MSIE\"),A=t(\"Edge\"),B=t(\"Gecko\")&&!(-1!=p.toLowerCase().indexOf(\"webkit\")&&!t(\"Edge\"))&&!(t(\"Trident\")||t(\"MSIE\"))&&!t(\"Edge\"),C=-1!=p.toLowerCase().indexOf(\"webkit\")&&!t(\"Edge\");function D(){var a=d.document;return a?a.documentMode:void 0}var E;\na:{var F=\"\",G=function(){var a=p;if(B)return/rv:([^\\);]+)(\\)|;)/.exec(a);if(A)return/Edge\\/([\\d\\.]+)/.exec(a);if(z)return/\\b(?:MSIE|rv)[: ]([^\\);]+)(\\)|;)/.exec(a);if(C)return/WebKit\\/(\\S+)/.exec(a);if(y)return/(?:Version)[ \\/]?(\\S+)/.exec(a)}();G&&(F=G?G[1]:\"\");if(z){var H=D();if(null!=H&&H>parseFloat(F)){E=String(H);break a}}E=F}var I;I=d.document&&z?D():void 0;var J=u(),K=w()||t(\"iPod\"),L=t(\"iPad\"),M=t(\"Android\")&&!(v()||u()||t(\"Opera\")||t(\"Silk\")),N=v(),aa=t(\"Safari\")&&!(v()||t(\"Coast\")||t(\"Opera\")||t(\"Edge\")||t(\"Edg/\")||t(\"OPR\")||u()||t(\"Silk\")||t(\"Android\"))&&!(w()||t(\"iPad\")||t(\"iPod\"));function O(a){return(a=a.exec(p))?a[1]:\"\"}(function(){if(J)return O(/Firefox\\/([0-9.]+)/);if(z||A||y)return E;if(N)return w()||t(\"iPad\")||t(\"iPod\")?O(/CriOS\\/([0-9.]+)/):O(/Chrome\\/([0-9.]+)/);if(aa&&!(w()||t(\"iPad\")||t(\"iPod\")))return O(/Version\\/([0-9.]+)/);if(K||L){var a=/Version\\/(\\S+).*Mobile\\/(\\S+)/.exec(p);if(a)return a[1]+\".\"+a[2]}else if(M)return(a=O(/Android\\s+([0-9.]+)/))?a:O(/Version\\/([0-9.]+)/);return\"\"})();var P=z&&!(8<=Number(I)),ba=z&&!(9<=Number(I));var ca={SCRIPT:1,STYLE:1,HEAD:1,IFRAME:1,OBJECT:1},Q={IMG:\" \",BR:\"\\n\"};function R(a,b,c){if(!(a.nodeName in ca))if(3==a.nodeType)c?b.push(String(a.nodeValue).replace(/(\\r\\n|\\r|\\n)/g,\"\")):b.push(a.nodeValue);else if(a.nodeName in Q)b.push(Q[a.nodeName]);else for(a=a.firstChild;a;)R(a,b,c),a=a.nextSibling};function S(a,b){b=b.toLowerCase();return\"style\"==b?da(a.style.cssText):P&&\"value\"==b&&T(a,\"INPUT\")?a.value:ba&&!0===a[b]?String(a.getAttribute(b)):(a=a.getAttributeNode(b))&&a.specified?a.value:null}var ea=/[;]+(?=(?:(?:[^\"]*\"){2})*[^\"]*$)(?=(?:(?:[^']*'){2})*[^']*$)(?=(?:[^()]*\\([^()]*\\))*[^()]*$)/;\nfunction da(a){var b=[];k(a.split(ea),function(c){var e=c.indexOf(\":\");0<e&&(c=[c.slice(0,e),c.slice(e+1)],2==c.length&&b.push(c[0].toLowerCase(),\":\",c[1],\";\"))});b=b.join(\"\");return b=\";\"==b.charAt(b.length-1)?b:b+\";\"}function U(a,b){P&&\"value\"==b&&T(a,\"OPTION\")&&null===S(a,\"value\")?(b=[],R(a,b,!1),a=b.join(\"\")):a=a[b];return a}function T(a,b){b&&\"string\"!==typeof b&&(b=b.toString());return!!a&&1==a.nodeType&&(!b||a.tagName.toUpperCase()==b)}\nfunction V(a){return T(a,\"OPTION\")?!0:T(a,\"INPUT\")?(a=a.type.toLowerCase(),\"checkbox\"==a||\"radio\"==a):!1};var fa={\"class\":\"className\",readonly:\"readOnly\"},ha=\"allowfullscreen allowpaymentrequest allowusermedia async autofocus autoplay checked compact complete controls declare default defaultchecked defaultselected defer disabled ended formnovalidate hidden indeterminate iscontenteditable ismap itemscope loop multiple muted nohref nomodule noresize noshade novalidate nowrap open paused playsinline pubdate readonly required reversed scoped seamless seeking selected truespeed typemustmatch willvalidate\".split(\" \");function W(a,b){var c=null,e=b.toLowerCase();if(\"style\"==e)return(c=a.style)&&\"string\"!=typeof c&&(c=c.cssText),c;if((\"selected\"==e||\"checked\"==e)&&V(a)){if(!V(a))throw new l(15,\"Element is not selectable\");b=\"selected\";c=a.type&&a.type.toLowerCase();if(\"checkbox\"==c||\"radio\"==c)b=\"checked\";return U(a,b)?\"true\":null}var g=T(a,\"A\");if(T(a,\"IMG\")&&\"src\"==e||g&&\"href\"==e)return(c=S(a,e))&&(c=U(a,e)),c;if(\"spellcheck\"==e){c=S(a,e);if(null!==c){if(\"false\"==c.toLowerCase())return\"false\";if(\"true\"==c.toLowerCase())return\"true\"}return U(a,\ne)+\"\"}g=fa[b]||b;if(0<=h(ha,e))return(c=null!==S(a,b)||U(a,g))?\"true\":null;try{var x=U(a,g)}catch(ia){}(e=null==x)||(e=typeof x,e=\"object\"==e&&null!=x||\"function\"==e);e?c=S(a,b):c=x;return null!=c?c.toString():null}var X=[\"_\"],Y=d;X[0]in Y||\"undefined\"==typeof Y.execScript||Y.execScript(\"var \"+X[0]);for(var Z;X.length&&(Z=X.shift());)X.length||void 0===W?Y[Z]&&Y[Z]!==Object.prototype[Z]?Y=Y[Z]:Y=Y[Z]={}:Y[Z]=W;; return this._.apply(null,arguments);}).apply({navigator:typeof window!='undefined'?window.navigator:null,document:typeof window!='undefined'?window.document:null}, arguments);}\n).apply(null, arguments);","args":[{"element-6066-11e4-a52e-4f735466cecf":"f.82D38148211AD410919EF31F3FC4D7ED.d.0B6713CE4463DF5F0DD9537B6BBACB7D.e.112"},"value"]}
    ...
    
    3209:  {
    3210:  Cache-Control: no-cache
    3211:  Content-Length: 14
    3212:  Content-Type: application/json; charset=utf-8
    3213:  }
    3214:  15:43:26.744 DEBUG HttpCommandExecutor: Response: ( Success: )
    3215:  15:43:27.793 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:41003)
    3216:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3217:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    3232:  --- End of stack trace from previous location ---
    3233:  at OpenQA.Selenium.DriverService.get_IsInitialized()
    3234:  Starting Microsoft Edge WebDriver 124.0.2478.105 (a4f60a4465d5a104d23614bed740efef0c5b0a50) on port 41003
    3235:  To submit feedback, report a bug, or suggest new features, please visit https://github.com/MicrosoftEdge/EdgeWebDriver
    3236:  Only local connections are allowed.
    3237:  Please see https://aka.ms/WebDriverSecurity for suggestions on keeping Microsoft Edge WebDriver safe.
    3238:  15:43:27.804 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:41003)
    3239:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3240:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    3251:  at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
    3252:  at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
    3253:  at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
    3254:  at OpenQA.Selenium.DriverService.<>c__DisplayClass51_0.<<get_IsInitialized>b__0>d.MoveNext()
    3255:  --- End of stack trace from previous location ---
    3256:  at OpenQA.Selenium.DriverService.get_IsInitialized()
    3257:  15:43:27.807 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:41003)
    3258:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3259:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    3270:  at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
    3271:  at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
    3272:  at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
    3273:  at OpenQA.Selenium.DriverService.<>c__DisplayClass51_0.<<get_IsInitialized>b__0>d.MoveNext()
    3274:  --- End of stack trace from previous location ---
    3275:  at OpenQA.Selenium.DriverService.get_IsInitialized()
    3276:  15:43:27.817 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:41003)
    3277:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3278:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    3289:  at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
    3290:  at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
    3291:  at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
    3292:  at OpenQA.Selenium.DriverService.<>c__DisplayClass51_0.<<get_IsInitialized>b__0>d.MoveNext()
    3293:  --- End of stack trace from previous location ---
    3294:  at OpenQA.Selenium.DriverService.get_IsInitialized()
    3295:  15:43:27.829 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:41003)
    3296:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3297:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    3308:  at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
    3309:  at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
    3310:  at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
    3311:  at OpenQA.Selenium.DriverService.<>c__DisplayClass51_0.<<get_IsInitialized>b__0>d.MoveNext()
    3312:  --- End of stack trace from previous location ---
    3313:  at OpenQA.Selenium.DriverService.get_IsInitialized()
    3314:  15:43:27.833 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:41003)
    3315:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3316:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    3327:  at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
    3328:  at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
    3329:  at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
    3330:  at OpenQA.Selenium.DriverService.<>c__DisplayClass51_0.<<get_IsInitialized>b__0>d.MoveNext()
    3331:  --- End of stack trace from previous location ---
    3332:  at OpenQA.Selenium.DriverService.get_IsInitialized()
    3333:  15:43:27.836 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:41003)
    3334:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3335:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    3346:  at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
    3347:  at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
    3348:  at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
    3349:  at OpenQA.Selenium.DriverService.<>c__DisplayClass51_0.<<get_IsInitialized>b__0>d.MoveNext()
    3350:  --- End of stack trace from previous location ---
    3351:  at OpenQA.Selenium.DriverService.get_IsInitialized()
    3352:  15:43:27.838 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:41003)
    3353:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3354:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    3365:  at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
    3366:  at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
    3367:  at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
    3368:  at OpenQA.Selenium.DriverService.<>c__DisplayClass51_0.<<get_IsInitialized>b__0>d.MoveNext()
    3369:  --- End of stack trace from previous location ---
    3370:  at OpenQA.Selenium.DriverService.get_IsInitialized()
    3371:  15:43:27.841 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:41003)
    3372:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3373:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    3385:  at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
    3386:  at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
    3387:  at OpenQA.Selenium.DriverService.<>c__DisplayClass51_0.<<get_IsInitialized>b__0>d.MoveNext()
    3388:  --- End of stack trace from previous location ---
    3389:  at OpenQA.Selenium.DriverService.get_IsInitialized()
    3390:  Microsoft Edge WebDriver was started successfully.
    3391:  15:43:27.844 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:41003)
    3392:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3393:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    3430:  }
    3431:  15:43:29.366 TRACE HttpCommandExecutor: << StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
    3432:  {
    3433:  Cache-Control: no-cache
    3434:  Content-Length: 14
    3435:  Content-Type: application/json; charset=utf-8
    3436:  }
    3437:  15:43:29.367 DEBUG HttpCommandExecutor: Response: ( Success: )
    3438:  15:43:29.367 DEBUG HttpCommandExecutor: Executing command: [7cf37d33bf6a27ea35546b9e7781382b]: findElement {"using":"css selector","value":"#error"}
    ...
    
    3456:  }
    3457:  15:43:29.435 TRACE HttpCommandExecutor: << StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
    3458:  {
    3459:  Cache-Control: no-cache
    3460:  Content-Length: 14
    3461:  Content-Type: application/json; charset=utf-8
    3462:  }
    3463:  15:43:29.435 DEBUG HttpCommandExecutor: Response: ( Success: )
    3464:  15:43:29.436 DEBUG HttpCommandExecutor: Executing command: [7cf37d33bf6a27ea35546b9e7781382b]: findElement {"using":"css selector","value":"#error"}
    ...
    
    3578:  }
    3579:  15:43:29.978 DEBUG HttpCommandExecutor: Response: ( Success: System.Collections.Generic.Dictionary`2[System.String,System.Object])
    3580:  15:43:29.978 DEBUG HttpCommandExecutor: Executing command: [7cf37d33bf6a27ea35546b9e7781382b]: clickElement {"id":"f.7F7ED0225F64C0F0DFCD94EFE79AF95F.d.F5CFEAEEB4ADC7B9B9BF044CD256AC06.e.113"}
    3581:  15:43:29.978 TRACE HttpCommandExecutor: >> Method: POST, RequestUri: 'http://localhost:41003/session/7cf37d33bf6a27ea35546b9e7781382b/element/f.7F7ED0225F64C0F0DFCD94EFE79AF95F.d.F5CFEAEEB4ADC7B9B9BF044CD256AC06.e.113/click', Version: 1.1, Content: System.Net.Http.ByteArrayContent, Headers:
    3582:  {
    3583:  Accept: application/json; charset=utf-8
    3584:  Content-Type: application/json; charset=utf-8
    3585:  }
    3586:  15:43:30.129 TRACE HttpCommandExecutor: << StatusCode: 500, ReasonPhrase: 'Internal Server Error', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
    3587:  {
    3588:  Cache-Control: no-cache
    3589:  Content-Length: 1192
    3590:  Content-Type: application/json; charset=utf-8
    3591:  }
    3592:  15:43:30.137 DEBUG HttpCommandExecutor: Response: ( UnhandledError: System.Collections.Generic.Dictionary`2[System.String,System.Object])
    ...
    
    3598:  {
    3599:  Cache-Control: no-cache
    3600:  Content-Length: 14
    3601:  Content-Type: application/json; charset=utf-8
    3602:  }
    3603:  15:43:30.261 DEBUG HttpCommandExecutor: Response: ( Success: )
    3604:  15:43:31.299 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:38529)
    3605:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3606:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    3617:  at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
    3618:  at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
    3619:  at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
    3620:  at OpenQA.Selenium.DriverService.<>c__DisplayClass51_0.<<get_IsInitialized>b__0>d.MoveNext()
    3621:  --- End of stack trace from previous location ---
    3622:  at OpenQA.Selenium.DriverService.get_IsInitialized()
    3623:  15:43:31.304 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:38529)
    3624:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3625:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    3636:  at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
    3637:  at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
    3638:  at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
    3639:  at OpenQA.Selenium.DriverService.<>c__DisplayClass51_0.<<get_IsInitialized>b__0>d.MoveNext()
    3640:  --- End of stack trace from previous location ---
    3641:  at OpenQA.Selenium.DriverService.get_IsInitialized()
    3642:  15:43:31.308 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:38529)
    3643:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3644:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    3655:  at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
    3656:  at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
    3657:  at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
    3658:  at OpenQA.Selenium.DriverService.<>c__DisplayClass51_0.<<get_IsInitialized>b__0>d.MoveNext()
    3659:  --- End of stack trace from previous location ---
    3660:  at OpenQA.Selenium.DriverService.get_IsInitialized()
    3661:  15:43:31.312 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:38529)
    3662:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3663:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    3674:  at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
    3675:  at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
    3676:  at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
    3677:  at OpenQA.Selenium.DriverService.<>c__DisplayClass51_0.<<get_IsInitialized>b__0>d.MoveNext()
    3678:  --- End of stack trace from previous location ---
    3679:  at OpenQA.Selenium.DriverService.get_IsInitialized()
    3680:  15:43:31.322 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:38529)
    3681:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3682:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    3697:  --- End of stack trace from previous location ---
    3698:  at OpenQA.Selenium.DriverService.get_IsInitialized()
    3699:  Starting Microsoft Edge WebDriver 124.0.2478.105 (a4f60a4465d5a104d23614bed740efef0c5b0a50) on port 38529
    3700:  To submit feedback, report a bug, or suggest new features, please visit https://github.com/MicrosoftEdge/EdgeWebDriver
    3701:  Only local connections are allowed.
    3702:  Please see https://aka.ms/WebDriverSecurity for suggestions on keeping Microsoft Edge WebDriver safe.
    3703:  15:43:31.332 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:38529)
    3704:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3705:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    3716:  at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
    3717:  at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
    3718:  at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
    3719:  at OpenQA.Selenium.DriverService.<>c__DisplayClass51_0.<<get_IsInitialized>b__0>d.MoveNext()
    3720:  --- End of stack trace from previous location ---
    3721:  at OpenQA.Selenium.DriverService.get_IsInitialized()
    3722:  15:43:31.337 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:38529)
    3723:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3724:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.CreateException(SocketError error, Boolean forAsyncThrow)
    ...
    
    3753:  at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
    3754:  at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
    3755:  at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
    3756:  at OpenQA.Selenium.DriverService.<>c__DisplayClass51_0.<<get_IsInitialized>b__0>d.MoveNext()
    3757:  --- End of stack trace from previous location ---
    3758:  at OpenQA.Selenium.DriverService.get_IsInitialized()
    3759:  15:43:31.340 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:38529)
    3760:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3761:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    3772:  at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
    3773:  at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
    3774:  at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
    3775:  at OpenQA.Selenium.DriverService.<>c__DisplayClass51_0.<<get_IsInitialized>b__0>d.MoveNext()
    3776:  --- End of stack trace from previous location ---
    3777:  at OpenQA.Selenium.DriverService.get_IsInitialized()
    3778:  15:43:31.345 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:38529)
    3779:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3780:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.CreateException(SocketError error, Boolean forAsyncThrow)
    ...
    
    3809:  at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
    3810:  at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
    3811:  at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
    3812:  at OpenQA.Selenium.DriverService.<>c__DisplayClass51_0.<<get_IsInitialized>b__0>d.MoveNext()
    3813:  --- End of stack trace from previous location ---
    3814:  at OpenQA.Selenium.DriverService.get_IsInitialized()
    3815:  15:43:31.355 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:38529)
    3816:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3817:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    3828:  at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
    3829:  at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
    3830:  at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
    3831:  at OpenQA.Selenium.DriverService.<>c__DisplayClass51_0.<<get_IsInitialized>b__0>d.MoveNext()
    3832:  --- End of stack trace from previous location ---
    3833:  at OpenQA.Selenium.DriverService.get_IsInitialized()
    3834:  15:43:31.367 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:38529)
    3835:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3836:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    3847:  at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
    3848:  at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
    3849:  at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
    3850:  at OpenQA.Selenium.DriverService.<>c__DisplayClass51_0.<<get_IsInitialized>b__0>d.MoveNext()
    3851:  --- End of stack trace from previous location ---
    3852:  at OpenQA.Selenium.DriverService.get_IsInitialized()
    3853:  15:43:31.373 TRACE DriverService: System.Net.Http.HttpRequestException: Connection refused (localhost:38529)
    3854:  ---> System.Net.Sockets.SocketException (111): Connection refused
    3855:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    ...
    
    4048:  }
    4049:  15:43:34.692 TRACE HttpCommandExecutor: << StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
    4050:  {
    4051:  Cache-Control: no-cache
    4052:  Content-Length: 126
    4053:  Content-Type: application/json; charset=utf-8
    4054:  }
    4055:  15:43:34.692 DEBUG HttpCommandExecutor: Response: ( Success: System.Collections.Generic.Dictionary`2[System.String,System.Object])
    4056:  15:43:34.693 DEBUG HttpCommandExecutor: Executing command: [c2e3d7da6eb56bc79c93f98b6197a051]: executeScript {"script":"/* get-attribute */return (function(){return (function(){var d=this||self;function f(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a};var h=Array.prototype.indexOf?function(a,b){return Array.prototype.indexOf.call(a,b,void 0)}:function(a,b){if(\"string\"===typeof a)return\"string\"!==typeof b||1!=b.length?-1:a.indexOf(b,0);for(var c=0;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1},k=Array.prototype.forEach?function(a,b){Array.prototype.forEach.call(a,b,void 0)}:function(a,b){for(var c=a.length,e=\"string\"===typeof a?a.split(\"\"):a,g=0;g<c;g++)g in e&&b.call(void 0,e[g],g,a)};function l(a,b){this.code=a;this.a=m[a]||n;this.message=b||\"\";a=this.a.replace(/((?:^|\\s+)[a-z])/g,function(c){return c.toUpperCase().replace(/^[\\s\\xa0]+/g,\"\")});b=a.length-5;if(0>b||a.indexOf(\"Error\",b)!=b)a+=\"Error\";this.name=a;a=Error(this.message);a.name=this.name;this.stack=a.stack||\"\"}f(l,Error);var n=\"unknown error\",m={15:\"element not selectable\",11:\"element not visible\"};m[31]=n;m[30]=n;m[24]=\"invalid cookie domain\";m[29]=\"invalid element coordinates\";m[12]=\"invalid element state\";m[32]=\"invalid selector\";\nm[51]=\"invalid selector\";m[52]=\"invalid selector\";m[17]=\"javascript error\";m[405]=\"unsupported operation\";m[34]=\"move target out of bounds\";m[27]=\"no such alert\";m[7]=\"no such element\";m[8]=\"no such frame\";m[23]=\"no such window\";m[28]=\"script timeout\";m[33]=\"session not created\";m[10]=\"stale element reference\";m[21]=\"timeout\";m[25]=\"unable to set cookie\";m[26]=\"unexpected alert open\";m[13]=n;m[9]=\"unknown command\";var p;a:{var q=d.navigator;if(q){var r=q.userAgent;if(r){p=r;break a}}p=\"\"}function t(a){return-1!=p.indexOf(a)};function u(){return t(\"Firefox\")||t(\"FxiOS\")}function v(){return(t(\"Chrome\")||t(\"CriOS\"))&&!t(\"Edge\")};function w(){return t(\"iPhone\")&&!t(\"iPod\")&&!t(\"iPad\")};var y=t(\"Opera\"),z=t(\"Trident\")||t(\"MSIE\"),A=t(\"Edge\"),B=t(\"Gecko\")&&!(-1!=p.toLowerCase().indexOf(\"webkit\")&&!t(\"Edge\"))&&!(t(\"Trident\")||t(\"MSIE\"))&&!t(\"Edge\"),C=-1!=p.toLowerCase().indexOf(\"webkit\")&&!t(\"Edge\");function D(){var a=d.document;return a?a.documentMode:void 0}var E;\na:{var F=\"\",G=function(){var a=p;if(B)return/rv:([^\\);]+)(\\)|;)/.exec(a);if(A)return/Edge\\/([\\d\\.]+)/.exec(a);if(z)return/\\b(?:MSIE|rv)[: ]([^\\);]+)(\\)|;)/.exec(a);if(C)return/WebKit\\/(\\S+)/.exec(a);if(y)return/(?:Version)[ \\/]?(\\S+)/.exec(a)}();G&&(F=G?G[1]:\"\");if(z){var H=D();if(null!=H&&H>parseFloat(F)){E=String(H);break a}}E=F}var I;I=d.document&&z?D():void 0;var J=u(),K=w()||t(\"iPod\"),L=t(\"iPad\"),M=t(\"Android\")&&!(v()||u()||t(\"Opera\")||t(\"Silk\")),N=v(),aa=t(\"Safari\")&&!(v()||t(\"Coast\")||t(\"Opera\")||t(\"Edge\")||t(\"Edg/\")||t(\"OPR\")||u()||t(\"Silk\")||t(\"Android\"))&&!(w()||t(\"iPad\")||t(\"iPod\"));function O(a){return(a=a.exec(p))?a[1]:\"\"}(function(){if(J)return O(/Firefox\\/([0-9.]+)/);if(z||A||y)return E;if(N)return w()||t(\"iPad\")||t(\"iPod\")?O(/CriOS\\/([0-9.]+)/):O(/Chrome\\/([0-9.]+)/);if(aa&&!(w()||t(\"iPad\")||t(\"iPod\")))return O(/Version\\/([0-9.]+)/);if(K||L){var a=/Version\\/(\\S+).*Mobile\\/(\\S+)/.exec(p);if(a)return a[1]+\".\"+a[2]}else if(M)return(a=O(/Android\\s+([0-9.]+)/))?a:O(/Version\\/([0-9.]+)/);return\"\"})();var P=z&&!(8<=Number(I)),ba=z&&!(9<=Number(I));var ca={SCRIPT:1,STYLE:1,HEAD:1,IFRAME:1,OBJECT:1},Q={IMG:\" \",BR:\"\\n\"};function R(a,b,c){if(!(a.nodeName in ca))if(3==a.nodeType)c?b.push(String(a.nodeValue).replace(/(\\r\\n|\\r|\\n)/g,\"\")):b.push(a.nodeValue);else if(a.nodeName in Q)b.push(Q[a.nodeName]);else for(a=a.firstChild;a;)R(a,b,c),a=a.nextSibling};function S(a,b){b=b.toLowerCase();return\"style\"==b?da(a.style.cssText):P&&\"value\"==b&&T(a,\"INPUT\")?a.value:ba&&!0===a[b]?String(a.getAttribute(b)):(a=a.getAttributeNode(b))&&a.specified?a.value:null}var ea=/[;]+(?=(?:(?:[^\"]*\"){2})*[^\"]*$)(?=(?:(?:[^']*'){2})*[^']*$)(?=(?:[^()]*\\([^()]*\\))*[^()]*$)/;\nfunction da(a){var b=[];k(a.split(ea),function(c){var e=c.indexOf(\":\");0<e&&(c=[c.slice(0,e),c.slice(e+1)],2==c.length&&b.push(c[0].toLowerCase(),\":\",c[1],\";\"))});b=b.join(\"\");return b=\";\"==b.charAt(b.length-1)?b:b+\";\"}function U(a,b){P&&\"value\"==b&&T(a,\"OPTION\")&&null===S(a,\"value\")?(b=[],R(a,b,!1),a=b.join(\"\")):a=a[b];return a}function T(a,b){b&&\"string\"!==typeof b&&(b=b.toString());return!!a&&1==a.nodeType&&(!b||a.tagName.toUpperCase()==b)}\nfunction V(a){return T(a,\"OPTION\")?!0:T(a,\"INPUT\")?(a=a.type.toLowerCase(),\"checkbox\"==a||\"radio\"==a):!1};var fa={\"class\":\"className\",readonly:\"readOnly\"},ha=\"allowfullscreen allowpaymentrequest allowusermedia async autofocus autoplay checked compact complete controls declare default defaultchecked defaultselected defer disabled ended formnovalidate hidden indeterminate iscontenteditable ismap itemscope loop multiple muted nohref nomodule noresize noshade novalidate nowrap open paused playsinline pubdate readonly required reversed scoped seamless seeking selected truespeed typemustmatch willvalidate\".split(\" \");function W(a,b){var c=null,e=b.toLowerCase();if(\"style\"==e)return(c=a.style)&&\"string\"!=typeof c&&(c=c.cssText),c;if((\"selected\"==e||\"checked\"==e)&&V(a)){if(!V(a))throw new l(15,\"Element is not selectable\");b=\"selected\";c=a.type&&a.type.toLowerCase();if(\"checkbox\"==c||\"radio\"==c)b=\"checked\";return U(a,b)?\"true\":null}var g=T(a,\"A\");if(T(a,\"IMG\")&&\"src\"==e||g&&\"href\"==e)return(c=S(a,e))&&(c=U(a,e)),c;if(\"spellcheck\"==e){c=S(a,e);if(null!==c){if(\"false\"==c.toLowerCase())return\"false\";if(\"true\"==c.toLowerCase())return\"true\"}return U(a,\ne)+\"\"}g=fa[b]||b;if(0<=h(ha,e))return(c=null!==S(a,b)||U(a,g))?\"true\":null;try{var x=U(a,g)}catch(ia){}(e=null==x)||(e=typeof x,e=\"object\"==e&&null!=x||\"function\"==e);e?c=S(a,b):c=x;return null!=c?c.toString():null}var X=[\"_\"],Y=d;X[0]in Y||\"undefined\"==typeof Y.execScript||Y.execScript(\"var \"+X[0]);for(var Z;X.length&&(Z=X.shift());)X.length||void 0===W?Y[Z]&&Y[Z]!==Object.prototype[Z]?Y=Y[Z]:Y=Y[Z]={}:Y[Z]=W;; return this._.apply(null,arguments);}).apply({navigator:typeof window!='undefined'?window.navigator:null,document:typeof window!='undefined'?window.document:null}, arguments);}\n).apply(null, arguments);","args":[{"element-6066-11e4-a52e-4f735466cecf":"f.D4C88C39549C33A6FB112BAEFA20D202.d.71ED0CFA5D4F3DCEA8B3AC5D0CEA2955.e.77"},"id"]}
    ...
    
    4205:  15:43:35.980 TRACE HttpCommandExecutor: << StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
    4206:  {
    4207:  Cache-Control: no-cache
    4208:  Content-Length: 14
    4209:  Content-Type: application/json; charset=utf-8
    4210:  }
    4211:  15:43:35.981 DEBUG HttpCommandExecutor: Response: ( Success: )
    4212:  Standalone jar is /mnt/engflow/worker/work/1/exec/bazel-out/k8-fastbuild-ST-6ecfd75adae2/bin/dotnet/test/common/JavascriptEnabledBrowserTest-edge/net7.0/WebDriver.Common.Tests.dll.sh.runfiles/_main/java/test/org/openqa/selenium/environment/appserver 40005
    4213:  Errors, Failures and Warnings
    4214:  1) TearDown Error : OpenQA.Selenium.AssemblyFixture
    4215:  One or more child tests had errors
    4216:  TearDown : System.Net.Http.HttpRequestException : An error occurred while sending the request.
    ...
    
    4221:  at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
    4222:  at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
    4223:  at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
    4224:  at OpenQA.Selenium.Environment.TestWebServer.Stop()
    4225:  at OpenQA.Selenium.AssemblyFixture.RunAfterAnyTests()
    4226:  at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
    4227:  at System.Reflection.MethodInvoker.Invoke(Object obj, IntPtr* args, BindingFlags invokeAttr)
    4228:  --IOException
    4229:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
    4230:  at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource<System.Int32>.GetResult(Int16 token)
    4231:  at System.Net.Http.HttpConnection.InitialFillAsync(Boolean async)
    4232:  at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
    4233:  --SocketException
    4234:  2) Error : OpenQA.Selenium.JavascriptEnabledBrowserTest.ShouldBeAbleToFindElementAfterJavascriptCausesANewPageToLoad
    4235:  OpenQA.Selenium.WebDriverException : unknown error: unhandled inspector error: {"code":-32000,"message":"Inspected target navigated or closed"}
    4236:  (Session info: MicrosoftEdge=124.0.2478.105)
    4237:  at OpenQA.Selenium.WebDriver.UnpackAndThrowOnError(Response errorResponse, String commandToExecute)
    ...
    
    4243:  at OpenQA.Selenium.JavascriptEnabledBrowserTest.ShouldBeAbleToFindElementAfterJavascriptCausesANewPageToLoad()
    4244:  at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
    4245:  at System.Reflection.MethodInvoker.Invoke(Object obj, IntPtr* args, BindingFlags invokeAttr)
    4246:  Run Settings
    4247:  Number of Test Workers: 2
    4248:  Work Directory: /mnt/engflow/worker/work/1/exec/bazel-out/k8-fastbuild-ST-6ecfd75adae2/bin/dotnet/test/common/JavascriptEnabledBrowserTest-edge/net7.0/WebDriver.Common.Tests.dll.sh.runfiles/_main
    4249:  Internal Trace: Off
    4250:  Test Run Summary
    4251:  Overall result: Failed
    4252:  Test Count: 14, Passed: 13, Failed: 1, Warnings: 0, Inconclusive: 0, Skipped: 0
    4253:  Failed Tests - Failures: 0, Errors: 1, Invalid: 0
    4254:  Start time: 2024-05-20 15:43:17Z
    4255:  End time: 2024-05-20 15:43:37Z
    4256:  Duration: 19.747 seconds
    4257:  Results (nunit3) saved as /mnt/engflow/worker/work/1/exec/bazel-out/k8-fastbuild-ST-6ecfd75adae2/bin/dotnet/test/common/JavascriptEnabledBrowserTest-edge/net7.0/WebDriver.Common.Tests.dll.sh.runfiles/_main/TestResult.xml
    4258:  Execution result: https://gypsum.cluster.engflow.com/actions/executions/ChDwS77IclNGIK1D612ZAHYGEgdkZWZhdWx0GiUKIKy2PkdHJ3Ff_D9dDGQB9CR27_i3TisMUDzTmj0rT-zxEJ8D
    4259:  ================================================================================
    4260:  (15:44:03) �[32m[14,557 / 14,597]�[0m 1565 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:WindowSwitchingTest-firefox; 64s remote, remote-cache ... (40 actions running)
    4261:  (15:44:08) �[32m[14,567 / 14,597]�[0m 1576 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:WindowSwitchingTest-firefox; 69s remote, remote-cache ... (30 actions running)
    4262:  (15:44:13) �[32m[14,578 / 14,597]�[0m 1587 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:WindowSwitchingTest-firefox; 74s remote, remote-cache ... (19 actions running)
    4263:  (15:44:19) �[32m[14,585 / 14,597]�[0m 1593 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:WindowSwitchingTest-firefox; 79s remote, remote-cache ... (12 actions running)
    4264:  (15:44:25) �[32m[14,589 / 14,597]�[0m 1597 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:PageLoadingTest-edge; 49s remote, remote-cache ... (8 actions running)
    4265:  (15:44:32) �[32m[14,591 / 14,597]�[0m 1599 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:PageLoadingTest-edge; 55s remote, remote-cache ... (6 actions running)
    4266:  (15:44:39) �[32m[14,593 / 14,597]�[0m 1601 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:PageLoadingTest-edge; 62s remote, remote-cache ... (4 actions running)
    4267:  (15:44:47) �[32m[14,593 / 14,597]�[0m 1601 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:PageLoadingTest-edge; 71s remote, remote-cache ... (4 actions running)
    4268:  (15:45:03) �[32m[14,593 / 14,597]�[0m 1601 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:PageLoadingTest-edge; 87s remote, remote-cache ... (4 actions running)
    4269:  (15:45:09) �[32m[14,594 / 14,597]�[0m 1602 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:SessionHandlingTest-firefox; 88s remote, remote-cache ... (3 actions running)
    4270:  (15:45:16) �[32m[14,594 / 14,597]�[0m 1602 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:SessionHandlingTest-firefox; 95s remote, remote-cache ... (3 actions running)
    4271:  (15:45:24) �[32m[14,595 / 14,597]�[0m 1603 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:SessionHandlingTest-firefox; 103s remote, remote-cache ... (2 actions running)
    4272:  (15:45:30) �[32m[14,595 / 14,597]�[0m 1603 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:SessionHandlingTest-firefox; 109s remote, remote-cache ... (2 actions running)
    4273:  (15:45:55) �[32m[14,595 / 14,597]�[0m 1603 / 1605 tests, �[31m�[1m2 failed�[0m;�[0m Testing //dotnet/test/common:SessionHandlingTest-firefox; 135s remote, remote-cache ... (2 actions running)
    4274:  (15:45:58) �[32mINFO: �[0mFound 1605 test targets...
    4275:  (15:45:58) �[32mINFO: �[0mElapsed time: 575.293s, Critical Path: 363.36s
    4276:  (15:45:58) �[32mINFO: �[0m14018 processes: 6820 remote cache hit, 6673 internal, 49 local, 476 remote.
    4277:  (15:45:58) �[32mINFO: �[0mBuild completed, 2 tests FAILED, 14018 total actions
    ...
    
    4453:  //java/test/org/openqa/selenium:ElementFindingTest-edge         �[0m�[32m(cached) PASSED�[0m in 100.3s
    4454:  //java/test/org/openqa/selenium:ElementFindingTest-firefox-beta �[0m�[32m(cached) PASSED�[0m in 42.3s
    4455:  //java/test/org/openqa/selenium:ElementFindingTest-spotbugs     �[0m�[32m(cached) PASSED�[0m in 8.8s
    4456:  //java/test/org/openqa/selenium:ElementSelectingTest            �[0m�[32m(cached) PASSED�[0m in 31.0s
    4457:  //java/test/org/openqa/selenium:ElementSelectingTest-chrome     �[0m�[32m(cached) PASSED�[0m in 20.2s
    4458:  //java/test/org/openqa/selenium:ElementSelectingTest-edge       �[0m�[32m(cached) PASSED�[0m in 29.2s
    4459:  //java/test/org/openqa/selenium:ElementSelectingTest-firefox-beta �[0m�[32m(cached) PASSED�[0m in 33.0s
    4460:  //java/test/org/openqa/selenium:ElementSelectingTest-spotbugs   �[0m�[32m(cached) PASSED�[0m in 8.8s
    4461:  //java/test/org/openqa/selenium:ErrorsTest                      �[0m�[32m(cached) PASSED�[0m in 13.0s
    4462:  //java/test/org/openqa/selenium:ErrorsTest-chrome               �[0m�[32m(cached) PASSED�[0m in 11.4s
    4463:  //java/test/org/openqa/selenium:ErrorsTest-edge                 �[0m�[32m(cached) PASSED�[0m in 10.7s
    4464:  //java/test/org/openqa/selenium:ErrorsTest-firefox-beta         �[0m�[32m(cached) PASSED�[0m in 17.0s
    4465:  //java/test/org/openqa/selenium:ErrorsTest-spotbugs             �[0m�[32m(cached) PASSED�[0m in 8.3s
    ...
    
    5166:  //java/test/org/openqa/selenium/os:ExternalProcessTest          �[0m�[32m(cached) PASSED�[0m in 2.8s
    5167:  //java/test/org/openqa/selenium/os:ExternalProcessTest-spotbugs �[0m�[32m(cached) PASSED�[0m in 9.2s
    5168:  //java/test/org/openqa/selenium/os:OsProcessTest                �[0m�[32m(cached) PASSED�[0m in 4.4s
    5169:  //java/test/org/openqa/selenium/os:OsProcessTest-spotbugs       �[0m�[32m(cached) PASSED�[0m in 10.0s
    5170:  //java/test/org/openqa/selenium/remote:AugmenterTest            �[0m�[32m(cached) PASSED�[0m in 6.0s
    5171:  //java/test/org/openqa/selenium/remote:AugmenterTest-spotbugs   �[0m�[32m(cached) PASSED�[0m in 11.9s
    5172:  //java/test/org/openqa/selenium/remote:DesiredCapabilitiesTest  �[0m�[32m(cached) PASSED�[0m in 2.0s
    5173:  //java/test/org/openqa/selenium/remote:DesiredCapabilitiesTest-spotbugs �[0m�[32m(cached) PASSED�[0m in 10.4s
    5174:  //java/test/org/openqa/selenium/remote:ErrorCodecTest           �[0m�[32m(cached) PASSED�[0m in 2.9s
    5175:  //java/test/org/openqa/selenium/remote:ErrorCodecTest-spotbugs  �[0m�[32m(cached) PASSED�[0m in 9.2s
    5176:  //java/test/org/openqa/selenium/remote:ErrorHandlerTest         �[0m�[32m(cached) PASSED�[0m in 2.4s
    5177:  //java/test/org/openqa/selenium/remote:ErrorHandlerTest-spotbugs �[0m�[32m(cached) PASSED�[0m in 11.6s
    ...
    
    5487:  //py:common-firefox-test/selenium/webdriver/support/relative_by_tests.py �[0m�[32m(cached) PASSED�[0m in 7.3s
    5488:  //py:test-chrome-test/selenium/webdriver/chrome/chrome_network_emulation_tests.py �[0m�[32m(cached) PASSED�[0m in 4.3s
    5489:  //py:unit-test/unit/selenium/webdriver/chrome/chrome_options_tests.py �[0m�[32m(cached) PASSED�[0m in 2.5s
    5490:  //py:unit-test/unit/selenium/webdriver/common/cdp_module_fallback_tests.py �[0m�[32m(cached) PASSED�[0m in 3.9s
    5491:  //py:unit-test/unit/selenium/webdriver/common/common_options_tests.py �[0m�[32m(cached) PASSED�[0m in 3.0s
    5492:  //py:unit-test/unit/selenium/webdriver/common/print_page_options_tests.py �[0m�[32m(cached) PASSED�[0m in 2.6s
    5493:  //py:unit-test/unit/selenium/webdriver/edge/edge_options_tests.py �[0m�[32m(cached) PASSED�[0m in 2.4s
    5494:  //py:unit-test/unit/selenium/webdriver/firefox/firefox_options_tests.py �[0m�[32m(cached) PASSED�[0m in 2.4s
    5495:  //py:unit-test/unit/selenium/webdriver/remote/error_handler_tests.py �[0m�[32m(cached) PASSED�[0m in 2.8s
    ...
    
    5507:  //rb/spec/integration/selenium/webdriver:action_builder-firefox-beta �[0m�[32m(cached) PASSED�[0m in 59.2s
    5508:  //rb/spec/integration/selenium/webdriver:driver-chrome          �[0m�[32m(cached) PASSED�[0m in 42.5s
    5509:  //rb/spec/integration/selenium/webdriver:driver-edge            �[0m�[32m(cached) PASSED�[0m in 40.8s
    5510:  //rb/spec/integration/selenium/webdriver:driver-firefox         �[0m�[32m(cached) PASSED�[0m in 65.6s
    5511:  //rb/spec/integration/selenium/webdriver:driver-firefox-beta    �[0m�[32m(cached) PASSED�[0m in 59.0s
    5512:  //rb/spec/integration/selenium/webdriver:element-edge           �[0m�[32m(cached) PASSED�[0m in 40.4s
    5513:  //rb/spec/integration/selenium/webdriver:element-firefox        �[0m�[32m(cached) PASSED�[0m in 38.7s
    5514:  //rb/spec/integration/selenium/webdriver:element-firefox-beta   �[0m�[32m(cached) PASSED�[0m in 44.7s
    5515:  //rb/spec/integration/selenium/webdriver:error-chrome           �[0m�[32m(cached) PASSED�[0m in 19.8s
    5516:  //rb/spec/integration/selenium/webdriver:error-edge             �[0m�[32m(cached) PASSED�[0m in 19.4s
    5517:  //rb/spec/integration/selenium/webdriver:error-firefox          �[0m�[32m(cached) PASSED�[0m in 19.7s
    5518:  //rb/spec/integration/selenium/webdriver:error-firefox-beta     �[0m�[32m(cached) PASSED�[0m in 24.2s
    ...
    
    5720:  //dotnet/test/common:ElementFindingTest-edge                             �[0m�[32mPASSED�[0m in 26.8s
    5721:  //dotnet/test/common:ElementFindingTest-firefox                          �[0m�[32mPASSED�[0m in 42.6s
    5722:  //dotnet/test/common:ElementPropertyTest-chrome                          �[0m�[32mPASSED�[0m in 9.5s
    5723:  //dotnet/test/common:ElementPropertyTest-edge                            �[0m�[32mPASSED�[0m in 9.3s
    5724:  //dotnet/test/common:ElementPropertyTest-firefox                         �[0m�[32mPASSED�[0m in 14.4s
    5725:  //dotnet/test/common:ElementSelectingTest-chrome                         �[0m�[32mPASSED�[0m in 12.9s
    5726:  //dotnet/test/common:ElementSelectingTest-edge                           �[0m�[32mPASSED�[0m in 14.0s
    5727:  //dotnet/test/common:ElementSelectingTest-firefox                        �[0m�[32mPASSED�[0m in 24.1s
    5728:  //dotnet/test/common:ErrorsTest-chrome                                   �[0m�[32mPASSED�[0m in 9.6s
    5729:  //dotnet/test/common:ErrorsTest-edge                                     �[0m�[32mPASSED�[0m in 7.7s
    5730:  //dotnet/test/common:ErrorsTest-firefox                                  �[0m�[32mPASSED�[0m in 10.5s
    ...
    
    5873:  //dotnet/test/support/Extensions:ExecuteJavaScriptTest                   �[0m�[32mPASSED�[0m in 0.8s
    5874:  //dotnet/test/support/UI:DefaultWaitTest                                 �[0m�[32mPASSED�[0m in 4.9s
    5875:  //dotnet/test/support/UI:LoadableComponentTests                          �[0m�[32mPASSED�[0m in 0.6s
    5876:  //dotnet/test/support/UI:PopupWindowFinderTest-firefox                   �[0m�[32mPASSED�[0m in 20.2s
    5877:  //dotnet/test/support/UI:SelectBrowserTests-firefox                      �[0m�[32mPASSED�[0m in 21.8s
    5878:  //dotnet/test/support/UI:SelectTests                                     �[0m�[32mPASSED�[0m in 1.2s
    5879:  //dotnet/test/support/UI:SlowLoadableComponentTest                       �[0m�[32mPASSED�[0m in 1.1s
    5880:  //dotnet/test/support/UI:WebDriverWaitTest                               �[0m�[32mPASSED�[0m in 0.9s
    5881:  //dotnet/test/common:JavascriptEnabledBrowserTest-edge                    �[0m�[35mFLAKY�[0m, failed in 1 out of 2 in 20.6s
    5882:  Stats over 2 runs: max = 20.6s, min = 15.3s, avg = 17.9s, dev = 2.6s
    5883:  /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild-ST-6ecfd75adae2/testlogs/dotnet/test/common/JavascriptEnabledBrowserTest-edge/test_attempts/attempt_1.log
    5884:  //dotnet/test/support/Events:EventFiringWebDriverTest                    �[0m�[31m�[1mFAILED�[0m in 2 out of 2 in 1.3s
    5885:  Stats over 2 runs: max = 1.3s, min = 1.0s, avg = 1.2s, dev = 0.2s
    5886:  /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild-ST-6ecfd75adae2/testlogs/dotnet/test/support/Events/EventFiringWebDriverTest/test.log
    5887:  /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild-ST-6ecfd75adae2/testlogs/dotnet/test/support/Events/EventFiringWebDriverTest/test_attempts/attempt_1.log
    5888:  //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta     �[0m�[31m�[1mFAILED�[0m in 2 out of 2 in 48.1s
    5889:  Stats over 2 runs: max = 48.1s, min = 47.9s, avg = 48.0s, dev = 0.1s
    5890:  /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/firefox/driver-firefox-beta/test.log
    5891:  /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/firefox/driver-firefox-beta/test_attempts/attempt_1.log
    5892:  Executed 234 out of 1605 tests: 1603 tests pass and �[0m�[31m�[1m2 fail remotely�[0m.
    5893:  There were tests whose specified size is too big. Use the --test_verbose_timeout_warnings command line option to see which ones these are.
    5894:  (15:46:00) �[32mINFO: �[0mStreaming build results to: https://gypsum.cluster.engflow.com/invocation/7b5e7c4a-f20a-4e92-a100-8f741d76c9ff
    5895:  �[0m
    5896:  ##[error]Process completed with exit code 3.
    

    ✨ CI feedback usage guide:

    The CI feedback tool (/checks) automatically triggers when a PR has a failed check.
    The tool analyzes the failed checks and provides several feedbacks:

    • Failed stage
    • Failed test name
    • Failure summary
    • Relevant error logs

    In addition to being automatically triggered, the tool can also be invoked manually by commenting on a PR:

    /checks "https://github.com/{repo_name}/actions/runs/{run_number}/job/{job_number}"
    

    where {repo_name} is the name of the repository, {run_number} is the run number of the failed check, and {job_number} is the job number of the failed check.

    Configuration options

    • enable_auto_checks_feedback - if set to true, the tool will automatically provide feedback when a check is failed. Default is true.
    • excluded_checks_list - a list of checks to exclude from the feedback, for example: ["check1", "check2"]. Default is an empty list.
    • enable_help_text - if set to true, the tool will provide a help message with the feedback. Default is true.
    • persistent_comment - if set to true, the tool will overwrite a previous checks comment with the new feedback. Default is true.
    • final_update_message - if persistent_comment is true and updating a previous checks message, the tool will also create a new message: "Persistent checks updated to latest commit". Default is true.

    See more information about the checks tool in the docs.

    @titusfortner
    Copy link
    Member Author

    /help

    Copy link
    Contributor

    codiumai-pr-agent-pro bot commented May 16, 2024

    PR Agent Walkthrough 🤖

    Welcome to the PR Agent, an AI-powered tool for automated pull request analysis, feedback, suggestions and more.

    Here is a list of tools you can use to interact with the PR Agent:

    ToolDescriptionTrigger Interactively 💎

    DESCRIBE

    Generates PR description - title, type, summary, code walkthrough and labels
    • Run

    REVIEW

    Adjustable feedback about the PR, possible issues, security concerns, review effort and more
    • Run

    IMPROVE

    Code suggestions for improving the PR
    • Run

    UPDATE CHANGELOG

    Automatically updates the changelog
    • Run

    ADD DOCS 💎

    Generates documentation to methods/functions/classes that changed in the PR
    • Run

    TEST 💎

    Generates unit tests for a specific component, based on the PR code change
    • Run

    IMPROVE COMPONENT 💎

    Code suggestions for a specific component that changed in the PR
    • Run

    ANALYZE 💎

    Identifies code components that changed in the PR, and enables to interactively generate tests, docs, and code suggestions for each component
    • Run

    ASK

    Answering free-text questions about the PR

    [*]

    GENERATE CUSTOM LABELS 💎

    Generates custom labels for the PR, based on specific guidelines defined by the user

    [*]

    CI FEEDBACK 💎

    Generates feedback and analysis for a failed CI job

    [*]

    CUSTOM PROMPT 💎

    Generates custom suggestions for improving the PR code, derived only from a specific guidelines prompt defined by the user

    [*]

    SIMILAR ISSUE

    Automatically retrieves and presents similar issues

    [*]

    (1) Note that each tool be triggered automatically when a new PR is opened, or called manually by commenting on a PR.

    (2) Tools marked with [*] require additional parameters to be passed. For example, to invoke the /ask tool, you need to comment on a PR: /ask "<question content>". See the relevant documentation for each tool for more details.

    Copy link
    Contributor

    Persistent review updated to latest commit c405e23

    @titusfortner titusfortner force-pushed the dotnet_async branch 2 times, most recently from 59d6a17 to 01b6f29 Compare May 17, 2024 20:35
    @titusfortner
    Copy link
    Member Author

    @nvborisenko & @YevgeniyShunevych is this good enough to merge for now?
    I'm trying to get some proofs of concept implemented based on this pattern.

    /// <param name="driverCommandToExecute">Command that needs executing</param>
    /// <param name="parameters">Parameters needed for the command</param>
    /// <returns>A task object representing the asynchronous operation</returns>
    internal Task<Response> InternalExecuteAsync(string driverCommandToExecute,
    Copy link
    Contributor

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    If I got the idea of InternalExecuteAsync right, it is just a
    copy of ExecuteAsync but with internal access modifier. If so, let's maybe change the access modifier of ExecuteAsync from protected to protected internal, and then InternalExecuteAsync can be removed.

    A protected internal member is accessible from the current assembly or from types that are derived from the containing class.

    Copy link
    Member Author

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    I'm not sure why it's there. If we change it, it should be part of a different PR, though.



    /// <summary>
    /// Executes a command Asynchronously
    Copy link
    Contributor

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    Suggested change
    /// Executes a command Asynchronously
    /// Executes a command asynchronously.

    The capital letter fix. Additionally, I would recommend to end all sentences in XML docs (<summary>, <param>, etc.) with a period.

    }

    /// <summary>
    /// Executes a command Asynchronously
    Copy link
    Contributor

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    Suggested change
    /// Executes a command Asynchronously
    /// Executes a command asynchronously.

    @@ -184,7 +194,7 @@ public virtual Response Execute(Command commandToExecute)
    HttpResponseInfo responseInfo = null;
    try
    {
    responseInfo = Task.Run(async () => await this.MakeHttpRequest(requestInfo)).GetAwaiter().GetResult();
    responseInfo = await this.MakeHttpRequest(requestInfo);
    Copy link
    Contributor

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    I think it also makes sense to rename existing method MakeHttpRequest to MakeHttpRequestAsync.

    /// <summary>
    /// Encapsulates methods for working with asynchronous tasks.
    /// </summary>
    public static class AsyncHelper
    Copy link
    Contributor

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    The AsyncHelper implementation is similar to https://github.com/aspnet/AspNetIdentity/blob/main/src/Microsoft.AspNet.Identity.Core/AsyncHelper.cs. If you check the differences, this implementation lacks cultures set for async functions. Maybe worth adding as well, or cultures skipped intentionally for some reason? Also I would recommend making AsyncHelper class internal.

    Copy link
    Member Author

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    We either need to duplicate the helper class in both webdriver and support packages or make it public in webdriver to access it from support. This approach appears to be what other classes in the repo do.

    Copy link
    Member

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    Duplicate, it is not a criminal.

    Copy link
    Member Author

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    Agreed, in this case I'm following what appears to be done elsewhere

    public static class AsyncHelper
    {
    private static readonly TaskFactory _myTaskFactory = new TaskFactory(CancellationToken.None,
    TaskCreationOptions.None, TaskContinuationOptions.None, TaskScheduler.Default);
    Copy link
    Member

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    Also wandering should we deny attaching children tasks via TaskCreationOptions?

    @titusfortner
    Copy link
    Member Author

    Ok, I've redone this code a bit, and it's going to be easier to just create a new PR, so closing this.

    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.

    3 participants