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] change source of navigation alias #13960

Merged
merged 1 commit into from
May 17, 2024
Merged

[dotnet] change source of navigation alias #13960

merged 1 commit into from
May 17, 2024

Conversation

titusfortner
Copy link
Member

@titusfortner titusfortner commented May 17, 2024

User description

Description

Put the navigation command execution in the navigation class and have the driver property call the method instead of the other way around

Motivation and Context

Useful for when updating to async since properties can't be executed async; Shouldn't have any side effects

Note: need to check null in both overloaded methods because calling ToString() on a null gives an exception


PR Type

enhancement


Description

  • Refactored URL handling in WebDriver and Navigator classes to improve code structure and future maintenance.
  • In Navigator.cs, added robust null checking and parameter setup for URL navigation, ensuring better error handling.
  • In WebDriver.cs, simplified URL property by delegating URL setting to the Navigator class, enhancing code readability and reuse.
  • This change prepares the codebase for future asynchronous handling by avoiding direct property manipulation.

Changes walkthrough 📝

Relevant files
Enhancement
Navigator.cs
Enhance URL Navigation Handling in Navigator Class             

dotnet/src/webdriver/Navigator.cs

  • Added null check and exception throwing for null URL in GoToUrl(string
    url).
  • Replaced direct property setting with method call to handle URL
    navigation.
  • Added dictionary setup for parameters in GoToUrl(string url).
  • +13/-2   
    WebDriver.cs
    Refactor WebDriver URL Property to Use Navigator                 

    dotnet/src/webdriver/WebDriver.cs

  • Removed URL property setter logic.
  • Integrated Navigator class for URL setting to encapsulate navigation
    logic.
  • +1/-11   

    💡 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 (2ddc605)

    Copy link
    Contributor

    PR Review 🔍

    ⏱️ Estimated effort to review [1-5]

    2, because the changes are localized to specific methods in two files and involve straightforward refactoring and error handling enhancements. The logic is not complex, and the modifications are well-described in the PR description.

    🧪 Relevant tests

    No

    ⚡ Possible issues

    Possible Bug: The change in WebDriver.cs where the URL setter now uses new Navigator(this).GoToUrl(value); could potentially create a new instance of Navigator each time the URL is set. This might not be efficient or could lead to unexpected behavior if Navigator maintains any state or if its instantiation is heavy.

    🔒 Security concerns

    No

    Copy link
    Contributor

    PR Code Suggestions ✨

    CategorySuggestion                                                                                                                                    Score
    Possible issue
    Reinstate null check in the Url property setter

    Restore the null check for the 'value' parameter in the Url property setter to ensure
    robustness against null values.

    dotnet/src/webdriver/WebDriver.cs [112]

    -set => new Navigator(this).GoToUrl(value);
    +set
    +{
    +    if (value == null)
    +    {
    +        throw new ArgumentNullException(nameof(value), "URL cannot be null.");
    +    }
    +    new Navigator(this).GoToUrl(value);
    +}
     
    Suggestion importance[1-10]: 9

    Why: Restoring the null check is critical to ensure the robustness of the URL setter, preventing potential runtime errors from null values.

    9
    Add checks for empty or whitespace URLs

    Consider checking for empty or whitespace URLs in addition to null checks to prevent
    invalid URLs from being processed.

    dotnet/src/webdriver/Navigator.cs [62-64]

    -if (url == null)
    +if (string.IsNullOrWhiteSpace(url))
     {
    -    throw new ArgumentNullException(nameof(url), "URL cannot be null.");
    +    throw new ArgumentException("URL cannot be null or empty.", nameof(url));
     }
     
    Suggestion importance[1-10]: 8

    Why: Enhancing the URL validation to include checks for empty or whitespace strings is crucial for robustness and prevents processing invalid URLs.

    8
    Enhancement
    Use object initializer for dictionary creation

    Replace the direct instantiation of Dictionary<string, object> with a more concise object
    initializer to improve readability.

    dotnet/src/webdriver/Navigator.cs [67-69]

    -Dictionary<string, object> parameters = new Dictionary<string, object>
    +var parameters = new Dictionary<string, object>
     {
    -    { "url", url }
    +    ["url"] = url
     };
     
    Suggestion importance[1-10]: 5

    Why: The suggestion improves readability by using a more concise object initializer syntax, although it's a minor enhancement.

    5

    Copy link
    Contributor

    CI Failure Feedback 🧐

    Action: Test / All RBE tests

    Failed stage: Run Bazel [❌]

    Failed test name: Selenium::WebDriver::Firefox::Driver#install_addon install and uninstall xpi file

    Failure summary:

    The action failed due to the test Selenium::WebDriver::Firefox::Driver#install_addon install and
    uninstall xpi file failing. The failure was caused by an attempt to install a corrupt add-on file,
    resulting in an UnknownError with the message "Could not install add-on: ERROR_CORRUPT_FILE: The
    file appears to be corrupt."

    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
    ...
    
    1684:  (17:33:15) �[32mAnalyzing:�[0m 1605 targets (414 packages loaded, 4591 targets configured)
    1685:  �[32m[1 / 1]�[0m checking cached actions
    1686:  (17:33:17) �[33mDEBUG: �[0m/home/runner/.bazel/external/rules_jvm_external~/coursier.bzl:754:18: Found duplicate artifact versions
    1687:  com.google.code.gson:gson has multiple versions 2.10.1, 2.8.9
    1688:  com.google.guava:guava has multiple versions 33.2.0-jre, 31.1-jre
    1689:  org.mockito:mockito-core has multiple versions 5.12.0, 4.3.1
    1690:  Please remove duplicate artifacts from the artifact list so you do not get unexpected artifact versions
    1691:  (17:33:19) �[33mDEBUG: �[0m/home/runner/.bazel/external/rules_jvm_external~/coursier.bzl:754:18: Found duplicate artifact versions
    1692:  com.google.errorprone:error_prone_annotations has multiple versions 2.11.0, 2.9.0
    ...
    
    1736:  �[32m[2,441 / 3,403]�[0m 71 / 78 tests;�[0m Compiling src/google/protobuf/stubs/strutil.cc [for tool]; 0s remote, remote-cache ... (49 actions, 0 running)
    1737:  (17:34:17) �[32mINFO: �[0mFrom Compiling generator [for tool]:
    1738:  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
    1739:  (17:34:18) �[32mINFO: �[0mFrom Building external/protobuf~/java/core/liblite_runtime_only.jar (91 source files) [for tool]:
    1740:  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
    1741:  AccessController.doPrivileged(
    1742:  ^
    1743:  (17:34:19) �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (66 source files):
    1744:  java/src/org/openqa/selenium/remote/ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1745:  private final ErrorCodes errorCodes;
    1746:  ^
    1747:  java/src/org/openqa/selenium/remote/ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1748:  this.errorCodes = new ErrorCodes();
    1749:  ^
    1750:  java/src/org/openqa/selenium/remote/ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1751:  public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {
    1752:  ^
    1753:  java/src/org/openqa/selenium/remote/Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1754:  ErrorCodes errorCodes = new ErrorCodes();
    1755:  ^
    1756:  java/src/org/openqa/selenium/remote/Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1757:  ErrorCodes errorCodes = new ErrorCodes();
    1758:  ^
    1759:  java/src/org/openqa/selenium/remote/ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1760:  response.setStatus(ErrorCodes.SUCCESS);
    1761:  ^
    1762:  java/src/org/openqa/selenium/remote/ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1763:  response.setState(ErrorCodes.SUCCESS_STRING);
    1764:  ^
    1765:  java/src/org/openqa/selenium/remote/W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1766:  new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));
    1767:  ^
    1768:  java/src/org/openqa/selenium/remote/W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1769:  new ErrorCodes().getExceptionType((String) rawError);
    1770:  ^
    1771:  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
    1772:  private final ErrorCodes errorCodes = new ErrorCodes();
    1773:  ^
    1774:  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
    1775:  private final ErrorCodes errorCodes = new ErrorCodes();
    1776:  ^
    1777:  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
    1778:  int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;
    1779:  ^
    1780:  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
    1781:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
    1782:  ^
    1783:  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
    1784:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
    1785:  ^
    1786:  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
    1787:  response.setStatus(ErrorCodes.SUCCESS);
    1788:  ^
    1789:  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
    1790:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
    1791:  ^
    1792:  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
    1793:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
    1794:  ^
    1795:  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
    1796:  private final ErrorCodes errorCodes = new ErrorCodes();
    1797:  ^
    1798:  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
    1799:  private final ErrorCodes errorCodes = new ErrorCodes();
    1800:  ^
    1801:  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
    1802:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
    1803:  ^
    1804:  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
    1805:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
    1806:  ^
    1807:  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
    1808:  response.setStatus(ErrorCodes.SUCCESS);
    ...
    
    1865:  * `Zip::InputStream`
    1866:  * `Zip::OutputStream`
    1867:  Please ensure that your Gemfiles and .gemspecs are suitably restrictive
    1868:  to avoid an unexpected breakage when 3.0 is released (e.g. ~> 2.3.0).
    1869:  See https://github.com/rubyzip/rubyzip for details. The Changelog also
    1870:  lists other enhancements and bugfixes that have been implemented since
    1871:  version 2.3.0.
    1872:  (17:34:25) �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (66 source files):
    1873:  java/src/org/openqa/selenium/remote/ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1874:  private final ErrorCodes errorCodes;
    1875:  ^
    1876:  java/src/org/openqa/selenium/remote/ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1877:  this.errorCodes = new ErrorCodes();
    1878:  ^
    1879:  java/src/org/openqa/selenium/remote/ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1880:  public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {
    1881:  ^
    1882:  java/src/org/openqa/selenium/remote/Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1883:  ErrorCodes errorCodes = new ErrorCodes();
    1884:  ^
    1885:  java/src/org/openqa/selenium/remote/Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1886:  ErrorCodes errorCodes = new ErrorCodes();
    1887:  ^
    1888:  java/src/org/openqa/selenium/remote/ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1889:  response.setStatus(ErrorCodes.SUCCESS);
    1890:  ^
    1891:  java/src/org/openqa/selenium/remote/ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1892:  response.setState(ErrorCodes.SUCCESS_STRING);
    1893:  ^
    1894:  java/src/org/openqa/selenium/remote/W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1895:  new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));
    1896:  ^
    1897:  java/src/org/openqa/selenium/remote/W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1898:  new ErrorCodes().getExceptionType((String) rawError);
    1899:  ^
    1900:  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
    1901:  private final ErrorCodes errorCodes = new ErrorCodes();
    1902:  ^
    1903:  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
    1904:  private final ErrorCodes errorCodes = new ErrorCodes();
    1905:  ^
    1906:  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
    1907:  int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;
    1908:  ^
    1909:  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
    1910:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
    1911:  ^
    1912:  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
    1913:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
    1914:  ^
    1915:  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
    1916:  response.setStatus(ErrorCodes.SUCCESS);
    1917:  ^
    1918:  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
    1919:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
    1920:  ^
    1921:  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
    1922:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
    1923:  ^
    1924:  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
    1925:  private final ErrorCodes errorCodes = new ErrorCodes();
    1926:  ^
    1927:  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
    1928:  private final ErrorCodes errorCodes = new ErrorCodes();
    1929:  ^
    1930:  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
    1931:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
    1932:  ^
    1933:  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
    1934:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
    1935:  ^
    1936:  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
    1937:  response.setStatus(ErrorCodes.SUCCESS);
    ...
    
    1940:  �[32m[5,987 / 6,865]�[0m 74 / 348 tests;�[0m Creating source manifest for //dotnet/test/common:TextHandlingTest-chrome; 0s local ... (39 actions, 2 running)
    1941:  (17:34:31) �[32mAnalyzing:�[0m 1605 targets (1182 packages loaded, 35438 targets configured)
    1942:  �[32m[8,255 / 9,049]�[0m 76 / 681 tests;�[0m Compiling webdriver (internals ref-only dll); 2s remote, remote-cache ... (41 actions, 0 running)
    1943:  (17:34:36) �[32mAnalyzing:�[0m 1605 targets (1182 packages loaded, 35603 targets configured)
    1944:  �[32m[8,284 / 9,343]�[0m 76 / 792 tests;�[0m Testing //rb/spec/integration/selenium/webdriver:manager-chrome; 4s remote, remote-cache ... (50 actions, 2 running)
    1945:  (17:34:41) �[32mAnalyzing:�[0m 1605 targets (1182 packages loaded, 35630 targets configured)
    1946:  �[32m[8,769 / 9,663]�[0m 120 / 834 tests;�[0m Compiling webdriver; 9s remote, remote-cache ... (50 actions, 6 running)
    1947:  (17:34:45) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/remote/libsmall-tests-test-lib.jar (5 source files) and running annotation processors (AutoServiceProcessor):
    1948:  java/test/org/openqa/selenium/remote/WebDriverFixture.java:170: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1949:  response.setStatus(new ErrorCodes().toStatus(state, Optional.of(400)));
    ...
    
    1971:  Optional<Map<String, List<String>>> data = FormEncodedData.getData(request);
    1972:  ^
    1973:  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
    1974:  Optional<Map<String, List<String>>> data = FormEncodedData.getData(request);
    1975:  ^
    1976:  (17:34:46) �[32mAnalyzing:�[0m 1605 targets (1182 packages loaded, 35630 targets configured)
    1977:  �[32m[9,435 / 9,998]�[0m 272 / 834 tests;�[0m Compiling webdriver; 14s remote, remote-cache ... (50 actions, 2 running)
    1978:  (17:34:47) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/json/JsonTest.jar (1 source file):
    1979:  java/test/org/openqa/selenium/json/JsonTest.java:430: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1980:  assertThat(response.getState()).isEqualTo(new ErrorCodes().toState(0));
    1981:  ^
    1982:  java/test/org/openqa/selenium/json/JsonTest.java:441: 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:454: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1986:  assertThat(response.getState()).isEqualTo(new ErrorCodes().toState(32));
    1987:  ^
    1988:  (17:34:48) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/remote/codec/w3c/W3CHttpResponseCodecTest.jar (1 source file):
    1989:  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
    1990:  import static org.openqa.selenium.remote.ErrorCodes.METHOD_NOT_ALLOWED;
    1991:  ^
    1992:  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
    1993:  assertThat(decoded.getStatus().intValue()).isEqualTo(ErrorCodes.SUCCESS);
    1994:  ^
    1995:  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
    1996:  assertThat(decoded.getStatus()).isEqualTo(ErrorCodes.UNHANDLED_ERROR);
    1997:  ^
    1998:  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
    1999:  assertThat(decoded.getStatus()).isEqualTo(ErrorCodes.UNHANDLED_ERROR);
    2000:  ^
    2001:  (17:34:49) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/remote/RemotableByTest.jar (1 source file) and running annotation processors (AutoServiceProcessor):
    2002:  java/test/org/openqa/selenium/remote/RemotableByTest.java:23: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2003:  import static org.openqa.selenium.remote.ErrorCodes.SUCCESS_STRING;
    2004:  ^
    2005:  java/test/org/openqa/selenium/remote/RemotableByTest.java:23: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2006:  import static org.openqa.selenium.remote.ErrorCodes.SUCCESS_STRING;
    2007:  ^
    2008:  java/test/org/openqa/selenium/remote/RemotableByTest.java:23: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2009:  import static org.openqa.selenium.remote.ErrorCodes.SUCCESS_STRING;
    2010:  ^
    2011:  java/test/org/openqa/selenium/remote/RemotableByTest.java:45: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2012:  private final ErrorCodes errorCodes = new ErrorCodes();
    2013:  ^
    2014:  java/test/org/openqa/selenium/remote/RemotableByTest.java:45: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2015:  private final ErrorCodes errorCodes = new ErrorCodes();
    2016:  ^
    2017:  java/test/org/openqa/selenium/remote/RemotableByTest.java:45: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2018:  private final ErrorCodes errorCodes = new ErrorCodes();
    2019:  ^
    2020:  java/test/org/openqa/selenium/remote/RemotableByTest.java:45: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2021:  private final ErrorCodes errorCodes = new ErrorCodes();
    2022:  ^
    2023:  (17:34:50) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/remote/ErrorHandlerTest.jar (1 source file) and running annotation processors (AutoServiceProcessor):
    2024:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:79: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2025:  handler.throwIfResponseFailed(createResponse(ErrorCodes.SUCCESS), 100);
    2026:  ^
    2027:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:85: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2028:  assertThrowsCorrectExceptionType(ErrorCodes.NO_SUCH_WINDOW, NoSuchWindowException.class);
    2029:  ^
    2030:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:86: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2031:  assertThrowsCorrectExceptionType(ErrorCodes.NO_SUCH_FRAME, NoSuchFrameException.class);
    2032:  ^
    2033:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:87: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2034:  assertThrowsCorrectExceptionType(ErrorCodes.NO_SUCH_ELEMENT, NoSuchElementException.class);
    2035:  ^
    2036:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:88: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2037:  assertThrowsCorrectExceptionType(ErrorCodes.UNKNOWN_COMMAND, UnsupportedCommandException.class);
    2038:  ^
    2039:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:90: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2040:  ErrorCodes.METHOD_NOT_ALLOWED, UnsupportedCommandException.class);
    2041:  ^
    2042:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:92: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2043:  ErrorCodes.STALE_ELEMENT_REFERENCE, StaleElementReferenceException.class);
    2044:  ^
    2045:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:94: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2046:  ErrorCodes.INVALID_ELEMENT_STATE, InvalidElementStateException.class);
    2047:  ^
    2048:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:95: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2049:  assertThrowsCorrectExceptionType(ErrorCodes.XPATH_LOOKUP_ERROR, InvalidSelectorException.class);
    2050:  ^
    2051:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:107: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2052:  Response response = createResponse(ErrorCodes.UNHANDLED_ERROR);
    2053:  ^
    2054:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:120: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2055:  createResponse(ErrorCodes.UNHANDLED_ERROR, "boom"), 123))
    2056:  ^
    2057:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:133: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2058:  createResponse(ErrorCodes.UNHANDLED_ERROR, ImmutableMap.of("message", "boom")),
    2059:  ^
    2060:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:147: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2061:  ErrorCodes.UNHANDLED_ERROR,
    2062:  ^
    2063:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:167: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2064:  ErrorCodes.UNHANDLED_ERROR,
    2065:  ^
    2066:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:193: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2067:  createResponse(ErrorCodes.UNHANDLED_ERROR, toMap(serverError)), 123))
    2068:  ^
    2069:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:214: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2070:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2071:  ^
    2072:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:248: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2073:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2074:  ^
    2075:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:280: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2076:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2077:  ^
    2078:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:308: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2079:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2080:  ^
    2081:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:327: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2082:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2083:  ^
    2084:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:355: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2085:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2086:  ^
    2087:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:394: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2088:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2089:  ^
    2090:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:426: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2091:  createResponse(ErrorCodes.UNHANDLED_ERROR, toMap(serverError)), 123))
    2092:  ^
    2093:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:435: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2094:  exceptions.put(ErrorCodes.NO_SUCH_SESSION, NoSuchSessionException.class);
    2095:  ^
    2096:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:436: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2097:  exceptions.put(ErrorCodes.NO_SUCH_ELEMENT, NoSuchElementException.class);
    2098:  ^
    2099:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:437: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2100:  exceptions.put(ErrorCodes.NO_SUCH_FRAME, NoSuchFrameException.class);
    2101:  ^
    2102:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:438: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2103:  exceptions.put(ErrorCodes.UNKNOWN_COMMAND, UnsupportedCommandException.class);
    2104:  ^
    2105:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:439: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2106:  exceptions.put(ErrorCodes.STALE_ELEMENT_REFERENCE, StaleElementReferenceException.class);
    2107:  ^
    2108:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:440: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2109:  exceptions.put(ErrorCodes.INVALID_ELEMENT_STATE, InvalidElementStateException.class);
    2110:  ^
    2111:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:441: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2112:  exceptions.put(ErrorCodes.UNHANDLED_ERROR, WebDriverException.class);
    2113:  ^
    2114:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:442: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2115:  exceptions.put(ErrorCodes.JAVASCRIPT_ERROR, JavascriptException.class);
    2116:  ^
    2117:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:443: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2118:  exceptions.put(ErrorCodes.XPATH_LOOKUP_ERROR, InvalidSelectorException.class);
    2119:  ^
    2120:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:444: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2121:  exceptions.put(ErrorCodes.TIMEOUT, TimeoutException.class);
    2122:  ^
    2123:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:445: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2124:  exceptions.put(ErrorCodes.NO_SUCH_WINDOW, NoSuchWindowException.class);
    2125:  ^
    2126:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:446: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2127:  exceptions.put(ErrorCodes.INVALID_COOKIE_DOMAIN, InvalidCookieDomainException.class);
    2128:  ^
    2129:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:447: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2130:  exceptions.put(ErrorCodes.UNABLE_TO_SET_COOKIE, UnableToSetCookieException.class);
    2131:  ^
    2132:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:448: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2133:  exceptions.put(ErrorCodes.UNEXPECTED_ALERT_PRESENT, UnhandledAlertException.class);
    2134:  ^
    2135:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:449: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2136:  exceptions.put(ErrorCodes.NO_ALERT_PRESENT, NoAlertPresentException.class);
    2137:  ^
    2138:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:450: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2139:  exceptions.put(ErrorCodes.ASYNC_SCRIPT_TIMEOUT, ScriptTimeoutException.class);
    2140:  ^
    2141:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:451: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2142:  exceptions.put(ErrorCodes.INVALID_SELECTOR_ERROR, InvalidSelectorException.class);
    2143:  ^
    2144:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:452: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2145:  exceptions.put(ErrorCodes.SESSION_NOT_CREATED, SessionNotCreatedException.class);
    2146:  ^
    2147:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:453: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2148:  exceptions.put(ErrorCodes.MOVE_TARGET_OUT_OF_BOUNDS, MoveTargetOutOfBoundsException.class);
    2149:  ^
    2150:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:454: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2151:  exceptions.put(ErrorCodes.INVALID_XPATH_SELECTOR, InvalidSelectorException.class);
    2152:  ^
    2153:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:455: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2154:  exceptions.put(ErrorCodes.INVALID_XPATH_SELECTOR_RETURN_TYPER, InvalidSelectorException.class);
    2155:  ^
    2156:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:469: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2157:  ? ErrorCodes.INVALID_SELECTOR_ERROR
    2158:  ^
    2159:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:471: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2160:  assertThat(new ErrorCodes().toStatusCode(e)).isEqualTo(expected);
    2161:  ^
    2162:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:483: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2163:  response.setState(new ErrorCodes().toState(status));
    ...
    
    2202:  (17:35:05) �[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
    2203:  (17:35:05) �[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
    2204:  (17:35:05) �[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
    2205:  (17:35:05) �[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
    2206:  (17:35:05) �[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
    2207:  (17:35:05) �[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
    2208:  (17:35:05) �[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
    2209:  (17:35:05) �[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
    2210:  (17:35:05) �[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
    ...
    
    2352:  (17:40:23) �[32m[14,577 / 14,597]�[0m 1585 / 1605 tests;�[0m Testing //dotnet/test/common:UnexpectedAlertBehaviorTest-firefox; 203s remote, remote-cache ... (20 actions running)
    2353:  (17:40:31) �[32m[14,587 / 14,597]�[0m 1595 / 1605 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta; 76s remote, remote-cache ... (10 actions running)
    2354:  (17:40:37) �[32m[14,587 / 14,597]�[0m 1595 / 1605 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta; 81s remote, remote-cache ... (10 actions running)
    2355:  (17:40:43) �[32m[14,590 / 14,597]�[0m 1598 / 1605 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta; 88s remote, remote-cache ... (7 actions running)
    2356:  (17:40:51) �[32m[14,591 / 14,597]�[0m 1599 / 1605 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta; 96s remote, remote-cache ... (6 actions running)
    2357:  (17:40:56) �[32m[14,592 / 14,597]�[0m 1600 / 1605 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta; 101s remote, remote-cache ... (5 actions running)
    2358:  (17:41:04) �[32m[14,592 / 14,597]�[0m 1600 / 1605 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta; 109s remote, remote-cache ... (5 actions running)
    2359:  (17:41:07) �[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)
    2360:  �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta (Summary)
    ...
    
    2372:  Selenium::WebDriver::Firefox::Driver
    2373:  can get and set context
    2374:  #print_options
    2375:  returns base64 for print command
    2376:  prints with orientation
    2377:  prints with valid params
    2378:  prints full page
    2379:  #install_addon
    2380:  install and uninstall xpi file (FAILED - 1)
    2381:  install and uninstall signed zip file (FAILED - 2)
    2382:  install and uninstall unsigned zip file
    2383:  install and uninstall signed directory (FAILED - 3)
    2384:  install and uninstall unsigned directory
    2385:  Failures:
    2386:  1) Selenium::WebDriver::Firefox::Driver#install_addon install and uninstall xpi file
    2387:  Failure/Error: id = driver.install_addon(ext)
    2388:  Selenium::WebDriver::Error::UnknownError:
    2389:  Could not install add-on: /tmp/addon-656253b8-e01b-4e02-8dec-ede55c607d4a.xpi: ERROR_CORRUPT_FILE: The file appears to be corrupt.
    2390:  # RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    2391:  # WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    2392:  # UnknownError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:832:5
    ...
    
    2397:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:101:in `create_response'
    2398:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    2399:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    2400:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:630:in `execute'
    2401:  # ./rb/lib/selenium/webdriver/firefox/features.rb:49:in `install_addon'
    2402:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_addons.rb:33:in `install_addon'
    2403:  # ./rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb:68:in `block in Firefox'
    2404:  2) Selenium::WebDriver::Firefox::Driver#install_addon install and uninstall signed zip file
    2405:  Failure/Error: id = driver.install_addon(ext)
    2406:  Selenium::WebDriver::Error::UnknownError:
    2407:  Could not install add-on: /tmp/addon-7c817884-4d44-46cb-a527-c80c4c2e3098.xpi: ERROR_CORRUPT_FILE: The file appears to be corrupt.
    2408:  # RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    2409:  # WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    2410:  # UnknownError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:832:5
    ...
    
    2415:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:101:in `create_response'
    2416:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    2417:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    2418:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:630:in `execute'
    2419:  # ./rb/lib/selenium/webdriver/firefox/features.rb:49:in `install_addon'
    2420:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_addons.rb:33:in `install_addon'
    2421:  # ./rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb:83:in `block in Firefox'
    2422:  3) Selenium::WebDriver::Firefox::Driver#install_addon install and uninstall signed directory
    2423:  Failure/Error: id = driver.install_addon(ext)
    2424:  Selenium::WebDriver::Error::UnknownError:
    2425:  Could not install add-on: /tmp/addon-f259ca8c-45a5-45a7-95c1-ce7e9ff99e62.xpi: ERROR_CORRUPT_FILE: The file appears to be corrupt.
    2426:  # RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    2427:  # WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    2428:  # UnknownError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:832:5
    ...
    
    2433:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:101:in `create_response'
    2434:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    2435:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    2436:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:630:in `execute'
    2437:  # ./rb/lib/selenium/webdriver/firefox/features.rb:49:in `install_addon'
    2438:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_addons.rb:33:in `install_addon'
    2439:  # ./rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb:114:in `block in Firefox'
    2440:  Finished in 31.98 seconds (files took 3.26 seconds to load)
    2441:  10 examples, 3 failures
    2442:  Failed examples:
    ...
    
    2456:  Selenium::WebDriver::Firefox::Driver
    2457:  can get and set context
    2458:  #print_options
    2459:  returns base64 for print command
    2460:  prints with orientation
    2461:  prints with valid params
    2462:  prints full page
    2463:  #install_addon
    2464:  install and uninstall xpi file (FAILED - 1)
    2465:  install and uninstall signed zip file (FAILED - 2)
    2466:  install and uninstall unsigned zip file
    2467:  install and uninstall signed directory (FAILED - 3)
    2468:  install and uninstall unsigned directory
    2469:  Failures:
    2470:  1) Selenium::WebDriver::Firefox::Driver#install_addon install and uninstall xpi file
    2471:  Failure/Error: id = driver.install_addon(ext)
    2472:  Selenium::WebDriver::Error::UnknownError:
    2473:  Could not install add-on: /tmp/addon-6bb26368-82ab-4914-aa83-af037e064827.xpi: ERROR_CORRUPT_FILE: The file appears to be corrupt.
    2474:  # RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    2475:  # WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    2476:  # UnknownError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:832:5
    ...
    
    2481:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:101:in `create_response'
    2482:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    2483:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    2484:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:630:in `execute'
    2485:  # ./rb/lib/selenium/webdriver/firefox/features.rb:49:in `install_addon'
    2486:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_addons.rb:33:in `install_addon'
    2487:  # ./rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb:68:in `block in Firefox'
    2488:  2) Selenium::WebDriver::Firefox::Driver#install_addon install and uninstall signed zip file
    2489:  Failure/Error: id = driver.install_addon(ext)
    2490:  Selenium::WebDriver::Error::UnknownError:
    2491:  Could not install add-on: /tmp/addon-151a0559-c616-4425-b578-80da2cdcdcb4.xpi: ERROR_CORRUPT_FILE: The file appears to be corrupt.
    2492:  # RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    2493:  # WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    2494:  # UnknownError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:832:5
    ...
    
    2499:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:101:in `create_response'
    2500:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    2501:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    2502:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:630:in `execute'
    2503:  # ./rb/lib/selenium/webdriver/firefox/features.rb:49:in `install_addon'
    2504:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_addons.rb:33:in `install_addon'
    2505:  # ./rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb:83:in `block in Firefox'
    2506:  3) Selenium::WebDriver::Firefox::Driver#install_addon install and uninstall signed directory
    2507:  Failure/Error: id = driver.install_addon(ext)
    2508:  Selenium::WebDriver::Error::UnknownError:
    2509:  Could not install add-on: /tmp/addon-51191788-4ac4-4078-b5a8-e0733946323d.xpi: ERROR_CORRUPT_FILE: The file appears to be corrupt.
    2510:  # RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
    2511:  # WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
    2512:  # UnknownError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:832:5
    ...
    
    2517:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:101:in `create_response'
    2518:  # ./rb/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    2519:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    2520:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:630:in `execute'
    2521:  # ./rb/lib/selenium/webdriver/firefox/features.rb:49:in `install_addon'
    2522:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_addons.rb:33:in `install_addon'
    2523:  # ./rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb:114:in `block in Firefox'
    2524:  Finished in 26.59 seconds (files took 2.07 seconds to load)
    2525:  10 examples, 3 failures
    2526:  Failed examples:
    2527:  rspec ./rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb:66 # Selenium::WebDriver::Firefox::Driver#install_addon install and uninstall xpi file
    2528:  rspec ./rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb:81 # Selenium::WebDriver::Firefox::Driver#install_addon install and uninstall signed zip file
    2529:  rspec ./rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb:111 # Selenium::WebDriver::Firefox::Driver#install_addon install and uninstall signed directory
    2530:  Execution result: https://gypsum.cluster.engflow.com/actions/executions/ChDRP1ioExFLargZS6Ya6QTbEgdkZWZhdWx0GiUKIGZYPX06yXS8t8swNrP_YmQzbYW925o_dnnSEG8lhM99EJ8D
    2531:  ================================================================================
    2532:  (17:41:10) �[32m[14,594 / 14,597]�[0m 1602 / 1605 tests, �[31m�[1m1 failed�[0m;�[0m Testing //dotnet/test/common:PageLoadingTest-firefox; 94s remote, remote-cache ... (3 actions running)
    2533:  (17:41:16) �[32m[14,596 / 14,597]�[0m 1604 / 1605 tests, �[31m�[1m1 failed�[0m;�[0m Testing //dotnet/test/common:PageLoadingTest-firefox; 101s remote, remote-cache
    2534:  (17:41:25) �[32m[14,596 / 14,597]�[0m 1604 / 1605 tests, �[31m�[1m1 failed�[0m;�[0m Testing //dotnet/test/common:PageLoadingTest-firefox; 110s remote, remote-cache
    2535:  (17:41:55) �[32m[14,596 / 14,597]�[0m 1604 / 1605 tests, �[31m�[1m1 failed�[0m;�[0m Testing //dotnet/test/common:PageLoadingTest-firefox; 140s remote, remote-cache
    2536:  (17:42:01) �[32m[14,596 / 14,597]�[0m 1605 / 1605 tests, �[31m�[1m1 failed�[0m;�[0m Testing //dotnet/test/common:PageLoadingTest-firefox; 145s remote, remote-cache
    2537:  (17:42:01) �[32mINFO: �[0mFound 1605 test targets...
    2538:  (17:42:01) �[32mINFO: �[0mElapsed time: 540.260s, Critical Path: 350.42s
    2539:  (17:42:01) �[32mINFO: �[0m14018 processes: 6820 remote cache hit, 6677 internal, 49 local, 472 remote.
    2540:  (17:42:01) �[32mINFO: �[0mBuild completed, 1 test FAILED, 14018 total actions
    ...
    
    2716:  //java/test/org/openqa/selenium:ElementFindingTest-edge         �[0m�[32m(cached) PASSED�[0m in 100.3s
    2717:  //java/test/org/openqa/selenium:ElementFindingTest-firefox-beta �[0m�[32m(cached) PASSED�[0m in 42.3s
    2718:  //java/test/org/openqa/selenium:ElementFindingTest-spotbugs     �[0m�[32m(cached) PASSED�[0m in 8.8s
    2719:  //java/test/org/openqa/selenium:ElementSelectingTest            �[0m�[32m(cached) PASSED�[0m in 31.0s
    2720:  //java/test/org/openqa/selenium:ElementSelectingTest-chrome     �[0m�[32m(cached) PASSED�[0m in 20.2s
    2721:  //java/test/org/openqa/selenium:ElementSelectingTest-edge       �[0m�[32m(cached) PASSED�[0m in 29.2s
    2722:  //java/test/org/openqa/selenium:ElementSelectingTest-firefox-beta �[0m�[32m(cached) PASSED�[0m in 33.0s
    2723:  //java/test/org/openqa/selenium:ElementSelectingTest-spotbugs   �[0m�[32m(cached) PASSED�[0m in 8.8s
    2724:  //java/test/org/openqa/selenium:ErrorsTest                      �[0m�[32m(cached) PASSED�[0m in 13.0s
    2725:  //java/test/org/openqa/selenium:ErrorsTest-chrome               �[0m�[32m(cached) PASSED�[0m in 11.4s
    2726:  //java/test/org/openqa/selenium:ErrorsTest-edge                 �[0m�[32m(cached) PASSED�[0m in 10.7s
    2727:  //java/test/org/openqa/selenium:ErrorsTest-firefox-beta         �[0m�[32m(cached) PASSED�[0m in 17.0s
    2728:  //java/test/org/openqa/selenium:ErrorsTest-spotbugs             �[0m�[32m(cached) PASSED�[0m in 8.3s
    ...
    
    3429:  //java/test/org/openqa/selenium/os:ExternalProcessTest          �[0m�[32m(cached) PASSED�[0m in 2.8s
    3430:  //java/test/org/openqa/selenium/os:ExternalProcessTest-spotbugs �[0m�[32m(cached) PASSED�[0m in 9.2s
    3431:  //java/test/org/openqa/selenium/os:OsProcessTest                �[0m�[32m(cached) PASSED�[0m in 4.4s
    3432:  //java/test/org/openqa/selenium/os:OsProcessTest-spotbugs       �[0m�[32m(cached) PASSED�[0m in 10.0s
    3433:  //java/test/org/openqa/selenium/remote:AugmenterTest            �[0m�[32m(cached) PASSED�[0m in 6.0s
    3434:  //java/test/org/openqa/selenium/remote:AugmenterTest-spotbugs   �[0m�[32m(cached) PASSED�[0m in 11.9s
    3435:  //java/test/org/openqa/selenium/remote:DesiredCapabilitiesTest  �[0m�[32m(cached) PASSED�[0m in 2.0s
    3436:  //java/test/org/openqa/selenium/remote:DesiredCapabilitiesTest-spotbugs �[0m�[32m(cached) PASSED�[0m in 10.4s
    3437:  //java/test/org/openqa/selenium/remote:ErrorCodecTest           �[0m�[32m(cached) PASSED�[0m in 2.9s
    3438:  //java/test/org/openqa/selenium/remote:ErrorCodecTest-spotbugs  �[0m�[32m(cached) PASSED�[0m in 9.2s
    3439:  //java/test/org/openqa/selenium/remote:ErrorHandlerTest         �[0m�[32m(cached) PASSED�[0m in 2.4s
    3440:  //java/test/org/openqa/selenium/remote:ErrorHandlerTest-spotbugs �[0m�[32m(cached) PASSED�[0m in 11.6s
    ...
    
    3750:  //py:common-firefox-test/selenium/webdriver/support/relative_by_tests.py �[0m�[32m(cached) PASSED�[0m in 7.3s
    3751:  //py:test-chrome-test/selenium/webdriver/chrome/chrome_network_emulation_tests.py �[0m�[32m(cached) PASSED�[0m in 4.3s
    3752:  //py:unit-test/unit/selenium/webdriver/chrome/chrome_options_tests.py �[0m�[32m(cached) PASSED�[0m in 2.5s
    3753:  //py:unit-test/unit/selenium/webdriver/common/cdp_module_fallback_tests.py �[0m�[32m(cached) PASSED�[0m in 3.9s
    3754:  //py:unit-test/unit/selenium/webdriver/common/common_options_tests.py �[0m�[32m(cached) PASSED�[0m in 3.0s
    3755:  //py:unit-test/unit/selenium/webdriver/common/print_page_options_tests.py �[0m�[32m(cached) PASSED�[0m in 2.6s
    3756:  //py:unit-test/unit/selenium/webdriver/edge/edge_options_tests.py �[0m�[32m(cached) PASSED�[0m in 2.4s
    3757:  //py:unit-test/unit/selenium/webdriver/firefox/firefox_options_tests.py �[0m�[32m(cached) PASSED�[0m in 2.4s
    3758:  //py:unit-test/unit/selenium/webdriver/remote/error_handler_tests.py �[0m�[32m(cached) PASSED�[0m in 2.8s
    ...
    
    3770:  //rb/spec/integration/selenium/webdriver:action_builder-firefox-beta �[0m�[32m(cached) PASSED�[0m in 59.2s
    3771:  //rb/spec/integration/selenium/webdriver:driver-chrome          �[0m�[32m(cached) PASSED�[0m in 42.5s
    3772:  //rb/spec/integration/selenium/webdriver:driver-edge            �[0m�[32m(cached) PASSED�[0m in 40.8s
    3773:  //rb/spec/integration/selenium/webdriver:driver-firefox         �[0m�[32m(cached) PASSED�[0m in 65.6s
    3774:  //rb/spec/integration/selenium/webdriver:driver-firefox-beta    �[0m�[32m(cached) PASSED�[0m in 59.0s
    3775:  //rb/spec/integration/selenium/webdriver:element-edge           �[0m�[32m(cached) PASSED�[0m in 40.4s
    3776:  //rb/spec/integration/selenium/webdriver:element-firefox        �[0m�[32m(cached) PASSED�[0m in 38.7s
    3777:  //rb/spec/integration/selenium/webdriver:element-firefox-beta   �[0m�[32m(cached) PASSED�[0m in 44.7s
    3778:  //rb/spec/integration/selenium/webdriver:error-chrome           �[0m�[32m(cached) PASSED�[0m in 19.8s
    3779:  //rb/spec/integration/selenium/webdriver:error-edge             �[0m�[32m(cached) PASSED�[0m in 19.4s
    3780:  //rb/spec/integration/selenium/webdriver:error-firefox          �[0m�[32m(cached) PASSED�[0m in 19.7s
    3781:  //rb/spec/integration/selenium/webdriver:error-firefox-beta     �[0m�[32m(cached) PASSED�[0m in 24.2s
    ...
    
    3983:  //dotnet/test/common:ElementFindingTest-edge                             �[0m�[32mPASSED�[0m in 33.7s
    3984:  //dotnet/test/common:ElementFindingTest-firefox                          �[0m�[32mPASSED�[0m in 39.5s
    3985:  //dotnet/test/common:ElementPropertyTest-chrome                          �[0m�[32mPASSED�[0m in 6.3s
    3986:  //dotnet/test/common:ElementPropertyTest-edge                            �[0m�[32mPASSED�[0m in 7.8s
    3987:  //dotnet/test/common:ElementPropertyTest-firefox                         �[0m�[32mPASSED�[0m in 21.8s
    3988:  //dotnet/test/common:ElementSelectingTest-chrome                         �[0m�[32mPASSED�[0m in 12.8s
    3989:  //dotnet/test/common:ElementSelectingTest-edge                           �[0m�[32mPASSED�[0m in 15.5s
    3990:  //dotnet/test/common:ElementSelectingTest-firefox                        �[0m�[32mPASSED�[0m in 22.3s
    3991:  //dotnet/test/common:ErrorsTest-chrome                                   �[0m�[32mPASSED�[0m in 7.8s
    3992:  //dotnet/test/common:ErrorsTest-edge                                     �[0m�[32mPASSED�[0m in 8.0s
    3993:  //dotnet/test/common:ErrorsTest-firefox                                  �[0m�[32mPASSED�[0m in 12.7s
    ...
    
    4138:  //dotnet/test/support/Extensions:ExecuteJavaScriptTest                   �[0m�[32mPASSED�[0m in 1.1s
    4139:  //dotnet/test/support/UI:DefaultWaitTest                                 �[0m�[32mPASSED�[0m in 5.1s
    4140:  //dotnet/test/support/UI:LoadableComponentTests                          �[0m�[32mPASSED�[0m in 0.7s
    4141:  //dotnet/test/support/UI:PopupWindowFinderTest-firefox                   �[0m�[32mPASSED�[0m in 21.0s
    4142:  //dotnet/test/support/UI:SelectBrowserTests-firefox                      �[0m�[32mPASSED�[0m in 24.6s
    4143:  //dotnet/test/support/UI:SelectTests                                     �[0m�[32mPASSED�[0m in 0.8s
    4144:  //dotnet/test/support/UI:SlowLoadableComponentTest                       �[0m�[32mPASSED�[0m in 1.5s
    4145:  //dotnet/test/support/UI:WebDriverWaitTest                               �[0m�[32mPASSED�[0m in 1.2s
    4146:  //rb/spec/integration/selenium/webdriver/firefox:driver-firefox-beta     �[0m�[31m�[1mFAILED�[0m in 2 out of 2 in 47.7s
    4147:  Stats over 2 runs: max = 47.7s, min = 37.5s, avg = 42.6s, dev = 5.1s
    4148:  /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/firefox/driver-firefox-beta/test.log
    4149:  /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/firefox/driver-firefox-beta/test_attempts/attempt_1.log
    4150:  Executed 234 out of 1605 tests: 1604 tests pass and �[0m�[31m�[1m1 fails remotely�[0m.
    4151:  There were tests whose specified size is too big. Use the --test_verbose_timeout_warnings command line option to see which ones these are.
    4152:  (17:42:03) �[32mINFO: �[0mStreaming build results to: https://gypsum.cluster.engflow.com/invocation/a1a9591d-e762-48f0-9083-93b9ebb9142a
    4153:  �[0m
    4154:  ##[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 titusfortner merged commit 22386f6 into trunk May 17, 2024
    10 of 11 checks passed
    @titusfortner titusfortner deleted the dotnet_nav branch May 17, 2024 18:10
    sandeepsuryaprasad pushed a commit to sandeepsuryaprasad/selenium that referenced this pull request Oct 29, 2024
    [dotnet] have url property setter call navigation method instead of the other way around
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    None yet
    Development

    Successfully merging this pull request may close these issues.

    1 participant