WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Conversation

@titusfortner
Copy link
Member

@titusfortner titusfortner commented Dec 22, 2025

User description

🔗 Related Issues

.NET equivalent of #16756

💥 What does this PR do?

  • Testing selenium manager in all three OS with .NET
  • Adding shared cache per OS for github
  • Not sure why the integration test suite was changed to "small" putting it back to large

🔧 Implementation Notes

This could be split out in each of the browser directories instead of all handled in one test

💡 Additional Considerations


PR Type

Tests, Enhancement


Description

  • Add Selenium Manager tests for .NET across Windows, macOS, and Ubuntu

  • Verify driver and browser path discovery via DriverFinder

  • Validate driver service startup with discovered paths

  • Configure CI workflow with OS-specific caching and test matrix

  • Skip Safari and IE browsers as they don't require Selenium Manager


Diagram Walkthrough

flowchart LR
  A["SeleniumManagerTest.cs"] -->|Tests| B["DriverFinder paths"]
  A -->|Tests| C["DriverService startup"]
  D["ci-dotnet.yml"] -->|Adds| E["Manager Tests job"]
  E -->|Runs on| F["Windows, macOS, Ubuntu"]
  E -->|Tests| G["Chrome, Firefox, Edge"]
  H["BUILD.bazel"] -->|Updates| I["Test suite size"]
Loading

File Walkthrough

Relevant files
Tests
SeleniumManagerTest.cs
New Selenium Manager test suite for .NET                                 

dotnet/test/common/SeleniumManagerTest.cs

  • New test class with 97 lines testing Selenium Manager functionality
  • Tests DriverFinder.GetDriverPath() and GetBrowserPath() methods
  • Validates driver and browser paths exist and contain cache directory
  • Tests DriverService.Start() with discovered driver paths
  • Supports Chrome, Firefox, and Edge browsers with factory methods
  • Skips IE, Safari, and Remote browsers via IgnoreBrowser attributes
+97/-0   
B-build
ci-dotnet.yml
Add CI workflow for Selenium Manager tests                             

.github/workflows/ci-dotnet.yml

  • Add new manager-tests job running on Windows, macOS, and Ubuntu
  • Configure test matrix with OS-specific cache keys
  • Run Selenium Manager tests for Chrome, Firefox, and Edge browsers
  • Set test environment variables for browser download and driver path
    handling
  • Update build job with matrix strategy for Windows and macOS
  • Simplify integration tests job by removing 8dot3name configuration
  • Change cache-key strategy from false to OS-specific keys
+38/-7   
Configuration changes
BUILD.bazel
Update test suite configuration                                                   

dotnet/test/common/BUILD.bazel

  • Change AllTests suite size from "small" to "large"
  • Remove commented-out copy_file rule for manager-macos
+1/-7     

@selenium-ci selenium-ci added C-dotnet .NET Bindings B-build Includes scripting, bazel and CI integrations labels Dec 22, 2025
@qodo-code-review
Copy link
Contributor

qodo-code-review bot commented Dec 22, 2025

PR Compliance Guide 🔍

Below is a summary of compliance checks for this PR:

Security Compliance
🟢
No security concerns identified No security vulnerabilities detected by AI analysis. Human verification advised for critical code.
Ticket Compliance
🟡
🎫 #1234
🔴 Ensure that clicking a link whose href contains JavaScript (e.g., javascript:...) triggers
the JavaScript execution in Selenium 2.48+ (regression vs 2.47.1), specifically in Firefox
42.
Add/adjust coverage (tests) to prevent regression of JavaScript-in-href click behavior.
🟡
🎫 #5678
🔴 Prevent or resolve repeated ChromeDriver instantiation errors reporting ConnectFailure
(Connection refused) after the first driver instance on Ubuntu (as described).
Add/adjust logging, handling, or tests to cover repeated ChromeDriver instantiation
stability.
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
🟢
Generic: Comprehensive Audit Trails

Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Meaningful Naming and Self-Documenting Code

Objective: Ensure all identifiers clearly express their purpose and intent, making code
self-documenting

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Robust Error Handling and Edge Case Management

Objective: Ensure comprehensive error handling that provides meaningful context and graceful
degradation

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Error Handling

Objective: To prevent the leakage of sensitive system information through error messages while
providing sufficient detail for internal debugging.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Logging Practices

Objective: To ensure logs are useful for debugging and auditing without exposing sensitive
information like PII, PHI, or cardholder data.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Security-First Input Validation and Data Handling

Objective: Ensure all data inputs are validated, sanitized, and handled securely to prevent
vulnerabilities

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

  • Update
Compliance status legend 🟢 - Fully Compliant
🟡 - Partial Compliant
🔴 - Not Compliant
⚪ - Requires Further Human Verification
🏷️ - Compliance label

@qodo-code-review
Copy link
Contributor

qodo-code-review bot commented Dec 22, 2025

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Possible issue
Pass driver directory to service

Pass the driver's directory path to CreateDefaultService methods by using
Path.GetDirectoryName() instead of passing the full driver file path.

dotnet/test/common/SeleniumManagerTest.cs [51-60]

 private DriverService CreateServiceForCurrentBrowser(string driverPath)
 {
+    string driverDirectory = Path.GetDirectoryName(driverPath);
     return EnvironmentManager.Instance.Browser switch
     {
-        Browser.Chrome => ChromeDriverService.CreateDefaultService(driverPath),
-        Browser.Firefox => FirefoxDriverService.CreateDefaultService(driverPath),
-        Browser.Edge => EdgeDriverService.CreateDefaultService(driverPath),
+        Browser.Chrome => ChromeDriverService.CreateDefaultService(driverDirectory),
+        Browser.Firefox => FirefoxDriverService.CreateDefaultService(driverDirectory),
+        Browser.Edge => EdgeDriverService.CreateDefaultService(driverDirectory),
         _ => throw new NotSupportedException($"Browser {EnvironmentManager.Instance.Browser} is not supported for Selenium Manager tests")
     };
 }
  • Apply / Chat
Suggestion importance[1-10]: 9

__

Why: The suggestion correctly identifies a critical bug in the new test code; the CreateDefaultService methods expect a directory path, but are given a file path, which would cause the test to fail.

High
Normalize cache path assertions
Suggestion Impact:The commit improved cross-platform path handling/robustness around the cache directory by changing CacheDirectory to use Path.Combine and by switching one assertion to use Is.SubPathOf(CacheDirectory) instead of a raw string Contains check, though it did not implement Path.GetFullPath normalization as suggested.

code diff:

-    private static readonly string CacheDirectory = System.Environment.GetEnvironmentVariable("SE_CACHE") ?? ".cache/selenium";
+    private static readonly string CacheDirectory = System.Environment.GetEnvironmentVariable("SE_CACHE") ?? Path.Combine(".cache", "selenium");
 
     private DriverOptions CreateOptionsForCurrentBrowser()
     {
@@ -70,7 +70,7 @@
 
         Assert.That(File.Exists(driverPath), Is.True, $"Driver path should exist: {driverPath}");
         Assert.That(File.Exists(browserPath), Is.True, $"Browser path should exist: {browserPath}");
-        Assert.That(driverPath, Does.Contain(CacheDirectory), $"Driver path should contain cache directory: {driverPath}");
+        Assert.That(driverPath, Is.SubPathOf(CacheDirectory), $"Driver path should be nested under the cache directory: {driverPath}");
         Assert.That(browserPath, Does.Contain(CacheDirectory), $"Browser path should contain cache directory: {browserPath}");

Normalize the CacheDirectory path using Path.GetFullPath before using it in
assertions to ensure cross-platform compatibility.

dotnet/test/common/SeleniumManagerTest.cs [73-74]

-Assert.That(driverPath, Does.Contain(CacheDirectory), $"Driver path should contain cache directory: {driverPath}");
-Assert.That(browserPath, Does.Contain(CacheDirectory), $"Browser path should contain cache directory: {browserPath}");
+var normalizedCacheDir = Path.GetFullPath(CacheDirectory);
+Assert.That(driverPath, Does.Contain(normalizedCacheDir), $"Driver path should contain cache directory: {driverPath}");
+Assert.That(browserPath, Does.Contain(normalizedCacheDir), $"Browser path should contain cache directory: {browserPath}");

[Suggestion processed]

Suggestion importance[1-10]: 5

__

Why: The suggestion improves the robustness of the test assertions by normalizing the cache directory path, which helps prevent potential failures due to OS-specific path separators.

Low
High-level
Optimize CI by adding Ubuntu build

The build CI job runs on Windows and macOS, while the dependent manager-tests
job also runs on Ubuntu. To enable caching and avoid redundant builds, add
'ubuntu' to the build job's OS matrix.

Examples:

.github/workflows/ci-dotnet.yml [11-28]
    strategy:
      fail-fast: false
      matrix:
        os: ['windows', 'macos']
    with:
      name: Build (${{ matrix.os }})
      cache-key: dotnet-${{ matrix.os }}-test
      os: ${{ matrix.os }}
      run: bazel build //dotnet:all


 ... (clipped 8 lines)

Solution Walkthrough:

Before:

# .github/workflows/ci-dotnet.yml
jobs:
  build:
    strategy:
      matrix:
        os: ['windows', 'macos']
    with:
      run: bazel build //dotnet:all

  manager-tests:
    needs: build
    strategy:
      matrix:
        os: ['windows', 'macos', 'ubuntu']
    with:
      run: >
        bazel test ...

After:

# .github/workflows/ci-dotnet.yml
jobs:
  build:
    strategy:
      matrix:
        os: ['windows', 'macos', 'ubuntu'] # Added 'ubuntu'
    with:
      run: bazel build //dotnet:all

  manager-tests:
    needs: build
    strategy:
      matrix:
        os: ['windows', 'macos', 'ubuntu']
    with:
      run: >
        bazel test ...
Suggestion importance[1-10]: 7

__

Why: The suggestion correctly identifies a significant inefficiency in the new CI workflow, where the Ubuntu test job lacks a corresponding build job, leading to redundant builds and longer execution times.

Medium
General
Use 'using' for IDisposable objects

Replace the try...finally block with a using statement to manage the IDisposable
DriverService instance idiomatically.

dotnet/test/common/SeleniumManagerTest.cs [77-96]

 [Test]
 public void ShouldStartDriverService()
 {
     var options = CreateOptionsForCurrentBrowser();
     var driverFinder = new DriverFinder(options);
 
     string driverPath = driverFinder.GetDriverPath();
-    var service = CreateServiceForCurrentBrowser(driverPath);
-
-    try
+    using (var service = CreateServiceForCurrentBrowser(driverPath))
     {
         service.Start();
         Assert.That(service.ServiceUrl, Is.Not.Null);
         Assert.That(service.ServiceUrl.IsAbsoluteUri, Is.True);
     }
-    finally
-    {
-        service.Dispose();
-    }
 }
  • Apply / Chat
Suggestion importance[1-10]: 4

__

Why: The suggestion improves code readability and adheres to C# best practices by replacing a try...finally block with a using statement for an IDisposable object.

Low
  • Update

@qodo-code-review
Copy link
Contributor

CI Feedback 🧐

A test triggered by this PR failed. Here is an AI-generated analysis of the failure:

Action: .NET / Selenium Manager Tests (windows) / Manager Tests (windows)

Failed stage: Run Bazel [❌]

Failed test name: OpenQA.Selenium.SeleniumManagerTest.ShouldGetDriverAndBrowserPaths

Failure summary:

The action failed because Bazel test execution on Windows reported 2 failing test targets (exit code
1):
- //dotnet/test/common:SeleniumManagerTest-edge failed due to an assertion failure in
OpenQA.Selenium.SeleniumManagerTest.ShouldGetDriverAndBrowserPaths at
dotnet/test/common/SeleniumManagerTest.cs:line 96. The test expected the browser path to include the
Selenium cache directory (C:\Users\runneradmin.cache\selenium), but the actual Edge browser path
resolved to the system install location (C:\Program Files
(x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe).
-
//dotnet/test/common:SeleniumManagerTest-firefox failed because the Windows test runner could not
start the test process: GetShortPathNameW(...) / AsExecutablePathForCreateProcess(...) failed with
cannot shorten the path enough, indicating the generated .bat path was too long for Windows process
creation.

Relevant error logs:
1:  ##[group]Runner Image Provisioner
2:  Hosted Compute Agent
...

482:  �[32mAnalyzing:�[0m 3 targets (113 packages loaded, 44 targets configured)
483:  �[32mAnalyzing:�[0m 3 targets (145 packages loaded, 1109 targets configured)
484:  �[32mAnalyzing:�[0m 3 targets (160 packages loaded, 2435 targets configured)
485:  �[33mDEBUG: �[0mD:/b/external/aspect_rules_js+/npm/private/npm_translate_lock_state.bzl:27:14: 
486:  WARNING: `update_pnpm_lock` attribute in `npm_translate_lock(name = "npm")` is not yet supported on Windows. This feature
487:  will be disabled for this build.
488:  �[32mAnalyzing:�[0m 3 targets (164 packages loaded, 2448 targets configured)
489:  �[32mAnalyzing:�[0m 3 targets (173 packages loaded, 4356 targets configured)
490:  �[32mAnalyzing:�[0m 3 targets (173 packages loaded, 8541 targets configured)
491:  �[32mAnalyzing:�[0m 3 targets (181 packages loaded, 8644 targets configured)
492:  �[33mDEBUG: �[0mD:/b/external/rules_jvm_external+/private/extensions/maven.bzl:295:14: WARNING: The following maven modules appear in multiple sub-modules with potentially different versions. Consider adding one of these to your root module to ensure consistent versions:
493:  org.seleniumhq.selenium:selenium-api
494:  org.seleniumhq.selenium:selenium-remote-driver
495:  �[33mDEBUG: �[0mD:/b/external/rules_jvm_external+/private/extensions/maven.bzl:295:14: WARNING: The following maven modules appear in multiple sub-modules with potentially different versions. Consider adding one of these to your root module to ensure consistent versions:
496:  com.google.code.findbugs:jsr305
497:  com.google.errorprone:error_prone_annotations
498:  com.google.guava:guava (versions: 30.1.1-jre, 31.0.1-android)
...

613:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
614:  �[32mINFO: �[0mFrom Compiling absl/log/internal/nullguard.cc [for tool]:
615:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
616:  �[32mINFO: �[0mFrom Compiling absl/profiling/internal/exponential_biased.cc [for tool]:
617:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
618:  �[32mINFO: �[0mFrom Compiling absl/base/internal/tracing.cc [for tool]:
619:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
620:  �[32mINFO: �[0mFrom Compiling absl/base/log_severity.cc [for tool]:
621:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
622:  �[32mINFO: �[0mFrom Compiling absl/debugging/internal/decode_rust_punycode.cc [for tool]:
623:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
624:  �[32mINFO: �[0mFrom Compiling absl/debugging/internal/demangle_rust.cc [for tool]:
625:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
626:  �[32mINFO: �[0mFrom Compiling absl/numeric/int128.cc [for tool]:
627:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
628:  �[32mINFO: �[0mFrom Compiling absl/base/internal/strerror.cc [for tool]:
629:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
...

4239:  dotnet\test\common\SeleniumManagerTest.cs(42,15): warning CS8632: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.
4240:  �[32m[1,788 / 2,499]�[0m Compiling Rust bin runner (1 files) [for tool]; 3s local, disk-cache ... (4 actions, 3 running)
4241:  �[32m[1,789 / 2,499]�[0m Compiling SeleniumManagerTest-edge; 4s local, disk-cache ... (4 actions, 3 running)
4242:  �[32mINFO: �[0mFrom Compiling SeleniumManagerTest-edge:
4243:  dotnet\test\common\SeleniumManagerTest.cs(42,15): warning CS8632: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.
4244:  �[32m[1,798 / 2,499]�[0m Compiling SeleniumManagerTest-chrome; 2s local, disk-cache ... (4 actions, 3 running)
4245:  �[32mINFO: �[0mFrom Compiling SeleniumManagerTest-chrome:
4246:  dotnet\test\common\SeleniumManagerTest.cs(42,15): warning CS8632: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.
4247:  �[32m[1,801 / 2,499]�[0m Compiling Rust rlib proc_macro2 v1.0.93 (17 files) [for tool]; 1s local, disk-cache ... (3 actions, 2 running)
4248:  �[32m[1,806 / 2,499]�[0m Compiling Rust rlib proc_macro2 v1.0.93 (17 files) [for tool]; 2s local, disk-cache ... (4 actions, 3 running)
4249:  �[32m[1,811 / 2,499]�[0m Compiling Rust rlib proc_macro2 v1.0.93 (17 files) [for tool]; 4s local, disk-cache ... (4 actions, 3 running)
4250:  �[32m[1,817 / 2,499]�[0m Compiling Rust rlib quote v1.0.38 (16 files) [for tool]; 0s local, disk-cache ... (4 actions, 3 running)
4251:  �[32m[1,825 / 2,499]�[0m Running Cargo build script serde [for tool]; 0s local, disk-cache ... (4 actions running)
4252:  �[32m[1,835 / 2,499]�[0m Compiling Rust rlib syn v2.0.98 (96 files) [for tool]; 1s local, disk-cache ... (3 actions running)
4253:  �[32m[1,837 / 2,499]�[0m Compiling Rust rlib syn v2.0.98 (96 files) [for tool]; 2s local, disk-cache
4254:  �[32m[1,838 / 2,499]�[0m [Prepa] Compiling Rust proc-macro thiserror_impl v1.0.69 (10 files) [for tool] ... (4 actions, 0 running)
4255:  �[32m[1,838 / 2,499]�[0m Compiling Rust proc-macro serde_derive v1.0.217 (18 files) [for tool]; 1s local, disk-cache ... (4 actions running)
...

4489:  �[32m[2,470 / 2,499]�[0m [Prepa] Compiling Rust rlib apple_xar v0.20.0 (5 files)
4490:  �[32m[2,471 / 2,499]�[0m Compiling Rust rlib apple_flat_package v0.20.0 (5 files); 0s local, disk-cache
4491:  �[32m[2,472 / 2,499]�[0m [Prepa] Compiling Rust rlib selenium_manager (19 files)
4492:  �[32m[2,472 / 2,499]�[0m Compiling Rust rlib selenium_manager (19 files); 1s local, disk-cache
4493:  �[32m[2,473 / 2,499]�[0m [Prepa] Compiling Rust bin selenium-manager v0.4.40-nightly (1 files)
4494:  �[32m[2,473 / 2,499]�[0m Compiling Rust bin selenium-manager v0.4.40-nightly (1 files); 1s local, disk-cache
4495:  �[32m[2,476 / 2,499]�[0m Building Java resource jar; 0s local, disk-cache
4496:  �[32m[2,477 / 2,499]�[0m [Prepa] MergeJars java/src/org/openqa/selenium/manager/manager-project.jar
4497:  �[32m[2,477 / 2,499]�[0m MergeJars java/src/org/openqa/selenium/manager/manager-project.jar; 1s local, disk-cache
4498:  �[32m[2,478 / 2,499]�[0m [Prepa] Action java/src/org/openqa/selenium/manager/manager-module-module-info.jar
4499:  �[32m[2,479 / 2,499]�[0m [Prepa] Action java/src/org/openqa/selenium/manager/libmanager-module.jar
4500:  �[32m[2,479 / 2,499]�[0m Action java/src/org/openqa/selenium/manager/libmanager-module.jar; 1s local, disk-cache
4501:  �[32m[2,480 / 2,499]�[0m [Prepa] Extracting interface for jar bazel-out/x64_windows-fastbuild/bin/java/src/org/openqa/selenium/manager/libmanager-module.jar
4502:  �[32m[2,486 / 2,499]�[0m Building java/src/org/openqa/selenium/remote/libapi-class.jar (63 source files); 1s disk-cache, multiplex-worker
4503:  �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (63 source files):
4504:  java\src\org\openqa\selenium\remote\ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
4505:  private final ErrorCodes errorCodes;
4506:  ^
4507:  java\src\org\openqa\selenium\remote\ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
4508:  this.errorCodes = new ErrorCodes();
4509:  ^
4510:  java\src\org\openqa\selenium\remote\ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
4511:  public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {
4512:  ^
4513:  java\src\org\openqa\selenium\remote\Response.java:100: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
4514:  ErrorCodes errorCodes = new ErrorCodes();
4515:  ^
4516:  java\src\org\openqa\selenium\remote\Response.java:100: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
4517:  ErrorCodes errorCodes = new ErrorCodes();
4518:  ^
4519:  java\src\org\openqa\selenium\remote\ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
4520:  response.setStatus(ErrorCodes.SUCCESS);
4521:  ^
4522:  java\src\org\openqa\selenium\remote\ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
4523:  response.setState(ErrorCodes.SUCCESS_STRING);
4524:  ^
4525:  java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
4526:  new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));
4527:  ^
4528:  java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
4529:  new ErrorCodes().getExceptionType((String) rawError);
4530:  ^
4531:  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
4532:  private final ErrorCodes errorCodes = new ErrorCodes();
4533:  ^
4534:  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
4535:  private final ErrorCodes errorCodes = new ErrorCodes();
4536:  ^
4537:  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
4538:  int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;
4539:  ^
4540:  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
4541:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
4542:  ^
4543:  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
4544:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
4545:  ^
4546:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:117: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
4547:  response.setStatus(ErrorCodes.SUCCESS);
4548:  ^
4549:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:118: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
4550:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
4551:  ^
4552:  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
4553:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
4554:  ^
4555:  java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:69: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
4556:  private final ErrorCodes errorCodes = new ErrorCodes();
4557:  ^
4558:  java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:69: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
4559:  private final ErrorCodes errorCodes = new ErrorCodes();
4560:  ^
4561:  java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
4562:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
4563:  ^
4564:  java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:102: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
4565:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
4566:  ^
4567:  java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:149: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
4568:  response.setStatus(ErrorCodes.SUCCESS);
4569:  ^
...

4577:  �[32m[2,499 / 2,502]�[0m [Sched] Testing //dotnet/test/common:SeleniumManagerTest-chrome ... (3 actions, 1 running)
4578:  �[32m[2,499 / 2,502]�[0m [Sched] Testing //dotnet/test/common:SeleniumManagerTest-chrome ... (3 actions, 1 running)
4579:  �[32m[2,499 / 2,502]�[0m [Sched] Testing //dotnet/test/common:SeleniumManagerTest-chrome; 33s ... (3 actions, 1 running)
4580:  �[32m[2,499 / 2,502]�[0m [Sched] Testing //dotnet/test/common:SeleniumManagerTest-firefox; 71s ... (3 actions, 2 running)
4581:  �[31m�[1mFAIL: �[0m//dotnet/test/common:SeleniumManagerTest-edge (see D:/b/execroot/_main/bazel-out/x64_windows-fastbuild-ST-89742bf2ae83/testlogs/dotnet/test/common/SeleniumManagerTest-edge/test_attempts/attempt_1.log)
4582:  �[32m[2,499 / 2,502]�[0m [Sched] Testing //dotnet/test/common:SeleniumManagerTest-firefox; 73s ... (3 actions, 2 running)
4583:  �[32m[2,499 / 2,502]�[0m Testing //dotnet/test/common:SeleniumManagerTest-edge; 90s local, disk-cache ... (3 actions running)
4584:  �[31m�[1mFAIL: �[0m//dotnet/test/common:SeleniumManagerTest-firefox (see D:/b/execroot/_main/bazel-out/x64_windows-fastbuild-ST-89742bf2ae83/testlogs/dotnet/test/common/SeleniumManagerTest-firefox/test_attempts/attempt_1.log)
4585:  �[32m[2,500 / 2,502]�[0m 1 / 3 tests;�[0m Testing //dotnet/test/common:SeleniumManagerTest-edge; 91s local, disk-cache ... (2 actions running)
4586:  �[32m[2,500 / 2,502]�[0m 1 / 3 tests;�[0m Testing //dotnet/test/common:SeleniumManagerTest-edge; 94s local, disk-cache ... (2 actions running)
4587:  �[31m�[1mFAIL: �[0m//dotnet/test/common:SeleniumManagerTest-edge (see D:/b/execroot/_main/bazel-out/x64_windows-fastbuild-ST-89742bf2ae83/testlogs/dotnet/test/common/SeleniumManagerTest-edge/test_attempts/attempt_2.log)
4588:  �[31m�[1mFAIL: �[0m//dotnet/test/common:SeleniumManagerTest-firefox (see D:/b/execroot/_main/bazel-out/x64_windows-fastbuild-ST-89742bf2ae83/testlogs/dotnet/test/common/SeleniumManagerTest-firefox/test_attempts/attempt_2.log)
4589:  �[32m[2,500 / 2,502]�[0m 1 / 3 tests;�[0m Testing //dotnet/test/common:SeleniumManagerTest-edge; 95s local, disk-cache ... (2 actions running)
4590:  �[32m[2,500 / 2,502]�[0m 1 / 3 tests;�[0m Testing //dotnet/test/common:SeleniumManagerTest-edge; 98s local, disk-cache ... (2 actions running)
4591:  �[31m�[1mFAIL: �[0m//dotnet/test/common:SeleniumManagerTest-edge (see D:/b/execroot/_main/bazel-out/x64_windows-fastbuild-ST-89742bf2ae83/testlogs/dotnet/test/common/SeleniumManagerTest-edge/test.log)
4592:  �[31m�[1mFAILED: �[0m//dotnet/test/common:SeleniumManagerTest-edge (Summary)
4593:  D:/b/execroot/_main/bazel-out/x64_windows-fastbuild-ST-89742bf2ae83/testlogs/dotnet/test/common/SeleniumManagerTest-edge/test.log
...

4621:  17:55:05.351 TRACE SeleniumManager: INFO Driver path: C:\Users\runneradmin\.cache\selenium\msedgedriver\win64\143.0.3650.96\msedgedriver.exe
4622:  17:55:05.351 TRACE SeleniumManager: INFO Browser path: C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe
4623:  17:55:05.351 TRACE SeleniumManager: Driver path: C:\Users\runneradmin\.cache\selenium\msedgedriver\win64\143.0.3650.96\msedgedriver.exe
4624:  17:55:05.351 TRACE SeleniumManager: Browser path: C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe
4625:  => OpenQA.Selenium.SeleniumManagerTest.ShouldStartDriverService
4626:  17:55:05.483 TRACE SeleniumManager: DEBUG msedgedriver not found in PATH
4627:  17:55:05.483 TRACE SeleniumManager: DEBUG Required browser: MicrosoftEdge 143.0.3650.96
4628:  17:55:05.483 TRACE SeleniumManager: DEBUG MicrosoftEdge 143.0.3650.96 already exists
4629:  17:55:05.483 TRACE SeleniumManager: DEBUG MicrosoftEdge 143.0.3650.96 is available at C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe
4630:  17:55:05.483 TRACE SeleniumManager: DEBUG Required driver: msedgedriver 143.0.3650.96
4631:  17:55:05.483 TRACE SeleniumManager: DEBUG msedgedriver 143.0.3650.96 already in the cache
4632:  17:55:05.483 TRACE SeleniumManager: INFO Driver path: C:\Users\runneradmin\.cache\selenium\msedgedriver\win64\143.0.3650.96\msedgedriver.exe
4633:  17:55:05.483 TRACE SeleniumManager: INFO Browser path: C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe
4634:  17:55:05.483 TRACE SeleniumManager: Driver path: C:\Users\runneradmin\.cache\selenium\msedgedriver\win64\143.0.3650.96\msedgedriver.exe
4635:  17:55:05.483 TRACE SeleniumManager: Browser path: C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe
4636:  Errors, Failures and Warnings
4637:  1) Failed : OpenQA.Selenium.SeleniumManagerTest.ShouldGetDriverAndBrowserPaths
4638:  Browser path should contain cache directory: C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe
4639:  Expected: String containing "C:\Users\runneradmin\.cache\selenium"
4640:  But was:  "C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe"
4641:  at OpenQA.Selenium.SeleniumManagerTest.ShouldGetDriverAndBrowserPaths() in .\dotnet\test\common\SeleniumManagerTest.cs:line 96
4642:  Run Settings
4643:  Number of Test Workers: 4
4644:  Work Directory: D:\b\execroot\_main\bazel-out\x64_windows-fastbuild-ST-89742bf2ae83\bin\dotnet\test\common\SeleniumManagerTest-edge\net8.0\WebDriver.Common.Tests.dll.bat.runfiles\_main
4645:  Internal Trace: Off
4646:  Test Run Summary
4647:  Overall result: Failed
4648:  Test Count: 2, Passed: 1, Failed: 1, Warnings: 0, Inconclusive: 0, Skipped: 0
4649:  Failed Tests - Failures: 1, Errors: 0, Invalid: 0
4650:  Start time: 2025-12-24 17:53:56Z
...

4674:  17:55:28.637 TRACE SeleniumManager: INFO Driver path: C:\Users\runneradmin\.cache\selenium\msedgedriver\win64\143.0.3650.96\msedgedriver.exe
4675:  17:55:28.637 TRACE SeleniumManager: INFO Browser path: C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe
4676:  17:55:28.637 TRACE SeleniumManager: Driver path: C:\Users\runneradmin\.cache\selenium\msedgedriver\win64\143.0.3650.96\msedgedriver.exe
4677:  17:55:28.637 TRACE SeleniumManager: Browser path: C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe
4678:  => OpenQA.Selenium.SeleniumManagerTest.ShouldStartDriverService
4679:  17:55:28.717 TRACE SeleniumManager: DEBUG msedgedriver not found in PATH
4680:  17:55:28.717 TRACE SeleniumManager: DEBUG Required browser: MicrosoftEdge 143.0.3650.96
4681:  17:55:28.717 TRACE SeleniumManager: DEBUG MicrosoftEdge 143.0.3650.96 already exists
4682:  17:55:28.717 TRACE SeleniumManager: DEBUG MicrosoftEdge 143.0.3650.96 is available at C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe
4683:  17:55:28.717 TRACE SeleniumManager: DEBUG Required driver: msedgedriver 143.0.3650.96
4684:  17:55:28.717 TRACE SeleniumManager: DEBUG msedgedriver 143.0.3650.96 already in the cache
4685:  17:55:28.717 TRACE SeleniumManager: INFO Driver path: C:\Users\runneradmin\.cache\selenium\msedgedriver\win64\143.0.3650.96\msedgedriver.exe
4686:  17:55:28.717 TRACE SeleniumManager: INFO Browser path: C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe
4687:  17:55:28.717 TRACE SeleniumManager: Driver path: C:\Users\runneradmin\.cache\selenium\msedgedriver\win64\143.0.3650.96\msedgedriver.exe
4688:  17:55:28.717 TRACE SeleniumManager: Browser path: C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe
4689:  Errors, Failures and Warnings
4690:  1) Failed : OpenQA.Selenium.SeleniumManagerTest.ShouldGetDriverAndBrowserPaths
4691:  Browser path should contain cache directory: C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe
4692:  Expected: String containing "C:\Users\runneradmin\.cache\selenium"
4693:  But was:  "C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe"
4694:  at OpenQA.Selenium.SeleniumManagerTest.ShouldGetDriverAndBrowserPaths() in .\dotnet\test\common\SeleniumManagerTest.cs:line 96
4695:  Run Settings
4696:  Number of Test Workers: 4
4697:  Work Directory: D:\b\execroot\_main\bazel-out\x64_windows-fastbuild-ST-89742bf2ae83\bin\dotnet\test\common\SeleniumManagerTest-edge\net8.0\WebDriver.Common.Tests.dll.bat.runfiles\_main
4698:  Internal Trace: Off
4699:  Test Run Summary
4700:  Overall result: Failed
4701:  Test Count: 2, Passed: 1, Failed: 1, Warnings: 0, Inconclusive: 0, Skipped: 0
4702:  Failed Tests - Failures: 1, Errors: 0, Invalid: 0
4703:  Start time: 2025-12-24 17:55:26Z
...

4727:  17:55:32.381 TRACE SeleniumManager: INFO Driver path: C:\Users\runneradmin\.cache\selenium\msedgedriver\win64\143.0.3650.96\msedgedriver.exe
4728:  17:55:32.381 TRACE SeleniumManager: INFO Browser path: C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe
4729:  17:55:32.382 TRACE SeleniumManager: Driver path: C:\Users\runneradmin\.cache\selenium\msedgedriver\win64\143.0.3650.96\msedgedriver.exe
4730:  17:55:32.382 TRACE SeleniumManager: Browser path: C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe
4731:  => OpenQA.Selenium.SeleniumManagerTest.ShouldStartDriverService
4732:  17:55:32.463 TRACE SeleniumManager: DEBUG msedgedriver not found in PATH
4733:  17:55:32.463 TRACE SeleniumManager: DEBUG Required browser: MicrosoftEdge 143.0.3650.96
4734:  17:55:32.463 TRACE SeleniumManager: DEBUG MicrosoftEdge 143.0.3650.96 already exists
4735:  17:55:32.463 TRACE SeleniumManager: DEBUG MicrosoftEdge 143.0.3650.96 is available at C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe
4736:  17:55:32.463 TRACE SeleniumManager: DEBUG Required driver: msedgedriver 143.0.3650.96
4737:  17:55:32.463 TRACE SeleniumManager: DEBUG msedgedriver 143.0.3650.96 already in the cache
4738:  17:55:32.463 TRACE SeleniumManager: INFO Driver path: C:\Users\runneradmin\.cache\selenium\msedgedriver\win64\143.0.3650.96\msedgedriver.exe
4739:  17:55:32.463 TRACE SeleniumManager: INFO Browser path: C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe
4740:  17:55:32.463 TRACE SeleniumManager: Driver path: C:\Users\runneradmin\.cache\selenium\msedgedriver\win64\143.0.3650.96\msedgedriver.exe
4741:  17:55:32.463 TRACE SeleniumManager: Browser path: C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe
4742:  Errors, Failures and Warnings
4743:  1) Failed : OpenQA.Selenium.SeleniumManagerTest.ShouldGetDriverAndBrowserPaths
4744:  Browser path should contain cache directory: C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe
4745:  Expected: String containing "C:\Users\runneradmin\.cache\selenium"
4746:  But was:  "C:\Program Files (x86)\Microsoft\Edge\Application\143.0.3650.96\msedge.exe"
4747:  at OpenQA.Selenium.SeleniumManagerTest.ShouldGetDriverAndBrowserPaths() in .\dotnet\test\common\SeleniumManagerTest.cs:line 96
4748:  Run Settings
4749:  Number of Test Workers: 4
4750:  Work Directory: D:\b\execroot\_main\bazel-out\x64_windows-fastbuild-ST-89742bf2ae83\bin\dotnet\test\common\SeleniumManagerTest-edge\net8.0\WebDriver.Common.Tests.dll.bat.runfiles\_main
4751:  Internal Trace: Off
4752:  Test Run Summary
4753:  Overall result: Failed
4754:  Test Count: 2, Passed: 1, Failed: 1, Warnings: 0, Inconclusive: 0, Skipped: 0
4755:  Failed Tests - Failures: 1, Errors: 0, Invalid: 0
4756:  Start time: 2025-12-24 17:55:30Z
4757:  End time: 2025-12-24 17:55:33Z
4758:  Duration: 3.087 seconds
4759:  Results (nunit3) saved as D:\b\execroot\_main\bazel-out\x64_windows-fastbuild-ST-89742bf2ae83\bin\dotnet\test\common\SeleniumManagerTest-edge\net8.0\WebDriver.Common.Tests.dll.bat.runfiles\_main\TestResult.xml
4760:  ================================================================================
4761:  �[31m�[1mFAIL: �[0m//dotnet/test/common:SeleniumManagerTest-firefox (see D:/b/execroot/_main/bazel-out/x64_windows-fastbuild-ST-89742bf2ae83/testlogs/dotnet/test/common/SeleniumManagerTest-firefox/test.log)
4762:  �[31m�[1mFAILED: �[0m//dotnet/test/common:SeleniumManagerTest-firefox (Summary)
4763:  D:/b/execroot/_main/bazel-out/x64_windows-fastbuild-ST-89742bf2ae83/testlogs/dotnet/test/common/SeleniumManagerTest-firefox/test.log
4764:  D:/b/execroot/_main/bazel-out/x64_windows-fastbuild-ST-89742bf2ae83/testlogs/dotnet/test/common/SeleniumManagerTest-firefox/test_attempts/attempt_1.log
4765:  D:/b/execroot/_main/bazel-out/x64_windows-fastbuild-ST-89742bf2ae83/testlogs/dotnet/test/common/SeleniumManagerTest-firefox/test_attempts/attempt_2.log
4766:  �[32mINFO: �[0mFrom Testing //dotnet/test/common:SeleniumManagerTest-firefox:
4767:  ==================== Test output for //dotnet/test/common:SeleniumManagerTest-firefox:
4768:  ERROR(tools/test/windows/tw.cc:1302) ERROR: src/main/native/windows/process.cc(95): WaitableProcess::Create(D:\b\execroot\_main\bazel-out\x64_windows-fastbuild-ST-89742bf2ae83\bin\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat.runfiles\_main\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat): ERROR: src/main/native/windows/util.cc(292): AsExecutablePathForCreateProcess(D:\b\execroot\_main\bazel-out\x64_windows-fastbuild-ST-89742bf2ae83\bin\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat.runfiles\_main\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat): ERROR: src/main/native/windows/util.cc(262): GetShortPathNameW(\\?\D:\b\execroot\_main\bazel-out\x64_windows-fastbuild-ST-89742bf2ae83\bin\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat.runfiles\_main\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat): cannot shorten the path enough
4769:  ERROR(tools/test/windows/tw.cc:1479) Failed to start test process (arg: D:\b\execroot\_main\bazel-out\x64_windows-fastbuild-ST-89742bf2ae83\bin\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat.runfiles\_main\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat)
4770:  ================================================================================
4771:  ==================== Test output for //dotnet/test/common:SeleniumManagerTest-firefox:
4772:  ERROR(tools/test/windows/tw.cc:1302) ERROR: src/main/native/windows/process.cc(95): WaitableProcess::Create(D:\b\execroot\_main\bazel-out\x64_windows-fastbuild-ST-89742bf2ae83\bin\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat.runfiles\_main\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat): ERROR: src/main/native/windows/util.cc(292): AsExecutablePathForCreateProcess(D:\b\execroot\_main\bazel-out\x64_windows-fastbuild-ST-89742bf2ae83\bin\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat.runfiles\_main\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat): ERROR: src/main/native/windows/util.cc(262): GetShortPathNameW(\\?\D:\b\execroot\_main\bazel-out\x64_windows-fastbuild-ST-89742bf2ae83\bin\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat.runfiles\_main\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat): cannot shorten the path enough
4773:  ERROR(tools/test/windows/tw.cc:1479) Failed to start test process (arg: D:\b\execroot\_main\bazel-out\x64_windows-fastbuild-ST-89742bf2ae83\bin\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat.runfiles\_main\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat)
4774:  ================================================================================
4775:  ==================== Test output for //dotnet/test/common:SeleniumManagerTest-firefox:
4776:  ERROR(tools/test/windows/tw.cc:1302) ERROR: src/main/native/windows/process.cc(95): WaitableProcess::Create(D:\b\execroot\_main\bazel-out\x64_windows-fastbuild-ST-89742bf2ae83\bin\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat.runfiles\_main\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat): ERROR: src/main/native/windows/util.cc(292): AsExecutablePathForCreateProcess(D:\b\execroot\_main\bazel-out\x64_windows-fastbuild-ST-89742bf2ae83\bin\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat.runfiles\_main\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat): ERROR: src/main/native/windows/util.cc(262): GetShortPathNameW(\\?\D:\b\execroot\_main\bazel-out\x64_windows-fastbuild-ST-89742bf2ae83\bin\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat.runfiles\_main\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat): cannot shorten the path enough
4777:  ERROR(tools/test/windows/tw.cc:1479) Failed to start test process (arg: D:\b\execroot\_main\bazel-out\x64_windows-fastbuild-ST-89742bf2ae83\bin\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat.runfiles\_main\dotnet\test\common\SeleniumManagerTest-firefox\net8.0\WebDriver.Common.Tests.dll.bat)
4778:  ================================================================================
4779:  �[32mINFO: �[0mFound 3 test targets...
4780:  �[32mINFO: �[0mElapsed time: 601.370s, Critical Path: 301.12s
4781:  �[32mINFO: �[0m2502 processes: 788 disk cache hit, 761 internal, 909 local, 44 worker.
4782:  �[32mINFO: �[0mBuild completed, 2 tests FAILED, 2502 total actions
4783:  //dotnet/test/common:SeleniumManagerTest-chrome                          �[0m�[32mPASSED�[0m in 19.1s
4784:  //dotnet/test/common:SeleniumManagerTest-edge                            �[0m�[31m�[1mFAILED�[0m in 3 out of 3 in 71.2s
4785:  Stats over 3 runs: max = 71.2s, min = 3.6s, avg = 26.2s, dev = 31.8s
4786:  D:/b/execroot/_main/bazel-out/x64_windows-fastbuild-ST-89742bf2ae83/testlogs/dotnet/test/common/SeleniumManagerTest-edge/test.log
4787:  D:/b/execroot/_main/bazel-out/x64_windows-fastbuild-ST-89742bf2ae83/testlogs/dotnet/test/common/SeleniumManagerTest-edge/test_attempts/attempt_1.log
4788:  D:/b/execroot/_main/bazel-out/x64_windows-fastbuild-ST-89742bf2ae83/testlogs/dotnet/test/common/SeleniumManagerTest-edge/test_attempts/attempt_2.log
4789:  //dotnet/test/common:SeleniumManagerTest-firefox                         �[0m�[31m�[1mFAILED�[0m in 3 out of 3 in 0.2s
4790:  Stats over 3 runs: max = 0.2s, min = 0.1s, avg = 0.1s, dev = 0.1s
4791:  D:/b/execroot/_main/bazel-out/x64_windows-fastbuild-ST-89742bf2ae83/testlogs/dotnet/test/common/SeleniumManagerTest-firefox/test.log
4792:  D:/b/execroot/_main/bazel-out/x64_windows-fastbuild-ST-89742bf2ae83/testlogs/dotnet/test/common/SeleniumManagerTest-firefox/test_attempts/attempt_1.log
4793:  D:/b/execroot/_main/bazel-out/x64_windows-fastbuild-ST-89742bf2ae83/testlogs/dotnet/test/common/SeleniumManagerTest-firefox/test_attempts/attempt_2.log
4794:  Executed 3 out of 3 tests: 1 test passes and �[0m�[31m�[1m2 fail locally�[0m.
4795:  �[0m
4796:  There were tests whose specified size is too big. Use the --test_verbose_timeout_warnings command line option to see which ones these are.
4797:  ##[error]Process completed with exit code 1.
4798:  ##[group]Run actions/upload-artifact@v5

@nvborisenko
Copy link
Member

In my opinion this is bad precedent. What we test... We should test that binding "invokes external dependency with proper parameters" and properly parse response. That's it.

Testing... how to test... i don't see real unit tests. No clue.

@titusfortner
Copy link
Member Author

Well, needing unit tests in dotnet is a completely separate issue. 😂

Even then, this should be part of a slightly bigger change, and applied across the bindings.

@titusfortner
Copy link
Member Author

But also, something is weird on Windows... SM is not seeing the environment variables I'm passing in. Not sure if it is how the test is wired up, or an issue with how .NET is calling it. Once I figure out why, then we'll know if a unit test would have caught it. 😄

@nvborisenko
Copy link
Member

Even then, this should be part of a slightly bigger change, and applied across the bindings.

I don't mind having one integration test to invoke SM executing on GHA. +1

Comment on lines +106 to +117
var service = CreateServiceForCurrentBrowser(driverPath);

try
{
service.Start();
Assert.That(service.ServiceUrl, Is.Not.Null);
Assert.That(service.ServiceUrl.IsAbsoluteUri, Is.True);
}
finally
{
service.Dispose();
}
Copy link
Member

Choose a reason for hiding this comment

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

using statement

Comment on lines +49 to +53
string homeDirectory = System.Environment.GetFolderPath(System.Environment.SpecialFolder.UserProfile);
if (!string.IsNullOrWhiteSpace(homeDirectory))
{
return Path.Combine(homeDirectory, ".cache", "selenium");
}
Copy link
Member

Choose a reason for hiding this comment

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

This is responsibility of SM, dotnet should not know about this folder.

Copy link
Member Author

Choose a reason for hiding this comment

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

This is a way for us to see that it has in fact been downloaded and not just using the current installation. The contract is SE_CACHE_PATH which we check first. This is currently failing in windows, and again, depending on why would validate the need for this test. 😄

We could also set SE_CACHE_PATH as part of the test which would exercise the contract that way. That might be the right way to do this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

B-build Includes scripting, bazel and CI integrations C-dotnet .NET Bindings Review effort 3/5

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants