Skip to content

[grid] Add Node session-history endpoint and write to local file for other utility to consume #15879

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

Open
wants to merge 7 commits into
base: trunk
Choose a base branch
from

Conversation

VietND96
Copy link
Member

@VietND96 VietND96 commented Jun 8, 2025

User description

🔗 Related Issues

💥 What does this PR do?

  • Add Node endpoint /se/grid/node/session-history to access all sessions belong to that Node (include sessionId, startTime, stopTime)
curl http://localhost:5555/se/grid/node/session-history --header 'X-REGISTRATION-SECRET;'
{
  "value": [
    {
      "stopTime": "2025-06-08T20:34:29.339926511Z",
      "startTime": "2025-06-08T20:32:48.041564547Z",
      "sessionId": "772498a931cb26ac81ad1eb25e2c100f"
    },
    {
      "stopTime": "2025-06-08T20:32:46.547703796Z",
      "startTime": "2025-06-08T20:31:03.356500138Z",
      "sessionId": "9f60bed0406b87a6eec26e9deda2634b"
    },
  ]
}
  • Add Node config --status-to-file to write Node status JSON to the given location (for internal utility consumption), it is triggered together with event NodeHeartBeatEvent
  • Add Node config --session-history-to-file to write Node session history JSON to the given location (for internal utility consumption), it is triggered when events SessionStartedEvent and SessionStopedEvent fire.

🔧 Implementation Notes

Other utility running sidecare with Node (e.g, video recording), is doing a query to the Node endpoint (/status) in a very short interval (e.g, 2s) to catch up sessions frequently.
Instead of access via remote endpoint, provide another option to write local file (since those processes are running in the same host, others can consume the resource), and the output is updated by event-driven (it's more effective than a static interval hitting the status endpoint).

💡 Additional Considerations

🔄 Types of changes

  • Cleanup (formatting, renaming)
  • Bug fix (backwards compatible)
  • New feature (non-breaking change which adds functionality and tests!)
  • Breaking change (fix or feature that would cause existing functionality to change)

PR Type

Enhancement, Tests


Description

  • Add Node endpoint /se/grid/node/session-history for session tracking

  • Implement Node config options to write status and session history to file

  • Track session start/stop events and persist to file

  • Add comprehensive unit tests for new features


Changes walkthrough 📝

Relevant files
Enhancement
11 files
SessionHistoryEntry.java
Add SessionHistoryEntry for session tracking metadata       
+66/-0   
SessionStartedEvent.java
Introduce SessionStartedEvent for session lifecycle           
+40/-0   
SessionStatus.java
Add SessionStatus enum for session outcome                             
+23/-0   
GetNodeSessionHistory.java
Add HTTP handler for session-history endpoint                       
+45/-0   
Node.java
Add getSessionHistory() and session-history endpoint         
+7/-0     
NodeFlags.java
Add CLI/config flags for status and session history files
+21/-0   
NodeOptions.java
Add accessors for status and session history file config 
+8/-0     
LocalNode.java
Implement file writing and session history tracking in LocalNode
+133/-3 
LocalNodeFactory.java
Pass status/session history file config to LocalNode         
+4/-1     
SessionSlot.java
Fire SessionStartedEvent on session creation                         
+2/-0     
RemoteNode.java
Implement getSessionHistory() for remote nodes                     
+12/-0   
Tests
4 files
SessionClosedEventTest.java
Add tests for SessionClosedEvent and SessionStatus             
+73/-0   
GetNodeSessionHistoryTest.java
Add tests for session-history endpoint handler                     
+149/-0 
NodeOptionsTest.java
Add tests for NodeOptions status/session history config   
+33/-0   
LocalNodeTest.java
Add tests for file writing and session history in LocalNode
+142/-0 

Need help?
  • Type /help how to ... in the comments thread for any questions about Qodo Merge usage.
  • Check out the documentation for more information.
  • @selenium-ci selenium-ci added B-grid Everything grid and server related C-java Java Bindings labels Jun 8, 2025
    Copy link
    Contributor

    qodo-merge-pro bot commented Jun 8, 2025

    PR Reviewer Guide 🔍

    Here are some key observations to aid the review process:

    🎫 Ticket compliance analysis ❌

    1234 - Not compliant

    Non-compliant requirements:

    • Fix JavaScript execution in link's href attribute when click() is called
    • Ensure compatibility with Firefox 42.0 32bit on 64bit machine
    • Restore functionality that worked in version 2.47.1 but broke in 2.48.0 and 2.48.2

    5678 - Not compliant

    Non-compliant requirements:

    • Fix ChromeDriver ConnectFailure error on Ubuntu 16.04.4 with Chrome 65.0.3325.181
    • Resolve connection refused errors for subsequent ChromeDriver instances
    • Ensure first ChromeDriver instance works without console errors
    ⏱️ Estimated effort to review: 4 🔵🔵🔵🔵⚪
    🧪 PR contains tests
    🔒 No security concerns identified
    ⚡ Recommended focus areas for review

    File I/O Risk

    File writing operations in writeStatusToFile and writeSessionHistoryToFile methods lack proper error handling and could cause performance issues if called frequently. The methods write to disk synchronously on every heartbeat and session event.

    private void writeStatusToFile(NodeStatus status) {
      if (statusFilePath.isEmpty()) {
        return;
      }
    
      try {
        String statusJson = JSON.toJson(status);
        Files.write(
            statusFilePath.get(),
            statusJson.getBytes(),
            StandardOpenOption.CREATE,
            StandardOpenOption.WRITE,
            StandardOpenOption.TRUNCATE_EXISTING);
      } catch (IOException e) {
        LOG.log(Level.WARNING, "Failed to write status to file: " + statusFilePath.get(), e);
      }
    }
    
    private void recordSessionStart(SessionId sessionId) {
      if (!isSessionOwner(sessionId)) {
        return;
      }
      Instant startTime = Instant.now();
      sessionStartTimes.put(sessionId, startTime);
      sessionHistory.add(new SessionHistoryEntry(sessionId, startTime, null));
      writeSessionHistoryToFile();
    }
    
    private void recordSessionStop(SessionId sessionId) {
      if (!isSessionOwner(sessionId)) {
        return;
      }
      Instant stopTime = Instant.now();
      Instant startTime = sessionStartTimes.remove(sessionId);
      if (startTime != null) {
        // Find and update the existing history entry
        sessionHistory.stream()
            .filter(entry -> entry.getSessionId().equals(sessionId))
            .findFirst()
            .ifPresent(entry -> entry.setStopTime(stopTime));
        writeSessionHistoryToFile();
      }
    }
    
    private void writeSessionHistoryToFile() {
      if (sessionHistoryFilePath.isPresent()) {
        try {
          List<SessionHistoryEntry> sortedHistory = new ArrayList<>(sessionHistory);
          sortedHistory.sort((a, b) -> a.getStartTime().compareTo(b.getStartTime()));
    
          String historyJson = JSON.toJson(sortedHistory);
          Files.write(
              sessionHistoryFilePath.get(),
              historyJson.getBytes(),
              StandardOpenOption.CREATE,
              StandardOpenOption.TRUNCATE_EXISTING);
        } catch (IOException e) {
          LOG.log(Level.WARNING, "Unable to write session history to file", e);
        }
      }
    }
    Memory Leak

    The sessionHistory queue and sessionStartTimes map grow indefinitely without any cleanup mechanism, potentially causing memory leaks in long-running nodes with many sessions.

    private final Queue<SessionHistoryEntry> sessionHistory = new ConcurrentLinkedQueue<>();
    private final Map<SessionId, Instant> sessionStartTimes = new ConcurrentHashMap<>();
    Race Condition

    Session history recording methods access shared collections without proper synchronization, which could lead to inconsistent state when multiple sessions start/stop concurrently.

    private void recordSessionStart(SessionId sessionId) {
      if (!isSessionOwner(sessionId)) {
        return;
      }
      Instant startTime = Instant.now();
      sessionStartTimes.put(sessionId, startTime);
      sessionHistory.add(new SessionHistoryEntry(sessionId, startTime, null));
      writeSessionHistoryToFile();
    }
    
    private void recordSessionStop(SessionId sessionId) {
      if (!isSessionOwner(sessionId)) {
        return;
      }
      Instant stopTime = Instant.now();
      Instant startTime = sessionStartTimes.remove(sessionId);
      if (startTime != null) {
        // Find and update the existing history entry
        sessionHistory.stream()
            .filter(entry -> entry.getSessionId().equals(sessionId))
            .findFirst()
            .ifPresent(entry -> entry.setStopTime(stopTime));
        writeSessionHistoryToFile();
      }
    }

    Copy link
    Contributor

    qodo-merge-pro bot commented Jun 8, 2025

    PR Code Suggestions ✨

    Latest suggestions up to b182d49

    CategorySuggestion                                                                                                                                    Impact
    General
    Use atomic file writes

    File write operations should use atomic writes to prevent corruption if the
    process is interrupted during writing. Write to a temporary file first, then
    rename it to the target file.

    java/src/org/openqa/selenium/grid/node/local/LocalNode.java [1188-1203]

     private void writeSessionHistoryToFile() {
       if (sessionHistoryFilePath.isPresent()) {
         try {
           List<SessionHistoryEntry> sortedHistory = new ArrayList<>(sessionHistory);
           String historyJson = JSON.toJson(sortedHistory);
    -      Files.write(
    -          sessionHistoryFilePath.get(),
    -          historyJson.getBytes(),
    -          StandardOpenOption.CREATE,
    -          StandardOpenOption.WRITE,
    -          StandardOpenOption.TRUNCATE_EXISTING);
    +      Path tempFile = Files.createTempFile(sessionHistoryFilePath.get().getParent(), "session-history", ".tmp");
    +      Files.write(tempFile, historyJson.getBytes(), StandardOpenOption.CREATE, StandardOpenOption.WRITE);
    +      Files.move(tempFile, sessionHistoryFilePath.get(), StandardCopyOption.REPLACE_EXISTING);
         } catch (IOException e) {
           LOG.log(Level.WARNING, "Unable to write session history to file", e);
         }
       }
     }
    • Apply / Chat
    Suggestion importance[1-10]: 7

    __

    Why: The suggestion correctly points out that writing directly to the final file is not atomic and can lead to corruption. The proposed solution of writing to a temporary file and then moving it is a standard and robust pattern for ensuring file write atomicity, improving the reliability of the feature.

    Medium
    Add cleanup threshold buffer

    The cleanup method should use a configurable threshold (e.g., 150) instead of
    checking against the exact limit (100) to prevent frequent cleanup operations
    when the history size fluctuates around the limit.

    java/src/org/openqa/selenium/grid/node/local/LocalNode.java [1157-1161]

     private void cleanupSessionHistory(NodeStatus status) {
       int maxHistorySize = 100;
    -  if (!status.getNodeId().equals(getId()) || sessionHistory.size() < maxHistorySize) {
    +  int cleanupThreshold = maxHistorySize + 50; // Add buffer to prevent frequent cleanups
    +  if (!status.getNodeId().equals(getId()) || sessionHistory.size() < cleanupThreshold) {
         return;
       }
       ...
     }

    [To ensure code accuracy, apply this suggestion manually]

    Suggestion importance[1-10]: 6

    __

    Why: The suggestion correctly identifies a potential for performance degradation due to frequent cleanup operations. Adding a buffer to the cleanup threshold is a good practice to prevent this "thrashing" when the history size hovers around the maximum limit.

    Low
    Incremental [*]
    Specify UTF-8 charset explicitly

    Specify UTF-8 charset explicitly when converting string to bytes to ensure
    consistent encoding across different platforms and avoid potential character
    encoding issues

    java/src/org/openqa/selenium/grid/node/local/LocalNode.java [1193-1198]

     Files.write(
         sessionHistoryFilePath.get(),
    -    historyJson.getBytes(),
    +    historyJson.getBytes(StandardCharsets.UTF_8),
         StandardOpenOption.CREATE,
         StandardOpenOption.WRITE,
         StandardOpenOption.TRUNCATE_EXISTING);
    • Apply / Chat
    Suggestion importance[1-10]: 6

    __

    Why: The suggestion correctly recommends specifying a charset when converting a string to bytes. Using getBytes() without a charset relies on the platform's default encoding, which can lead to inconsistencies. Explicitly using StandardCharsets.UTF_8 ensures predictable behavior across different environments.

    Low
    • Update

    Previous suggestions

    ✅ Suggestions up to commit 9436e06
    CategorySuggestion                                                                                                                                    Impact
    Possible issue
    Add missing write permission
    Suggestion Impact:The suggestion was directly implemented - StandardOpenOption.WRITE was added to the Files.write operation exactly as suggested

    code diff:

    +            StandardOpenOption.WRITE,

    The file write operation should include StandardOpenOption.WRITE to ensure
    proper write permissions. Without this option, the write operation might fail on
    some file systems or when the file already exists.

    java/src/org/openqa/selenium/grid/node/local/LocalNode.java [1188-1202]

     private void writeSessionHistoryToFile() {
       if (sessionHistoryFilePath.isPresent()) {
         try {
           List<SessionHistoryEntry> sortedHistory = new ArrayList<>(sessionHistory);
           String historyJson = JSON.toJson(sortedHistory);
           Files.write(
               sessionHistoryFilePath.get(),
               historyJson.getBytes(),
               StandardOpenOption.CREATE,
    +          StandardOpenOption.WRITE,
               StandardOpenOption.TRUNCATE_EXISTING);
         } catch (IOException e) {
           LOG.log(Level.WARNING, "Unable to write session history to file", e);
         }
       }
     }

    [Suggestion processed]

    Suggestion importance[1-10]: 7

    __

    Why: The suggestion correctly identifies that StandardOpenOption.WRITE is missing. While Files.write can work without it if the file is new, explicitly adding WRITE makes the intent clearer and ensures the operation works correctly if the file already exists, improving robustness.

    Medium
    Incremental [*]
    Use static empty list
    Suggestion Impact:The suggestion was directly implemented - the code was changed from "return new ArrayList<>();" to "return Collections.emptyList();" exactly as suggested

    code diff:

    -    return new ArrayList<>();
    +    return Collections.emptyList();

    The default implementation returns a new empty ArrayList each time, which could
    be inefficient if called frequently. Consider returning a static empty list or
    Collections.emptyList() to avoid unnecessary object creation.

    java/src/org/openqa/selenium/grid/node/Node.java [277-279]

     public List<SessionHistoryEntry> getSessionHistory() {
    -  return new ArrayList<>();
    +  return Collections.emptyList();
     }

    [Suggestion processed]

    Suggestion importance[1-10]: 4

    __

    Why: The suggestion correctly points out that using Collections.emptyList() is more efficient than new ArrayList<>() for returning an empty list, as it avoids unnecessary object allocation. This is a good practice for code quality and performance, although its impact is minor in this context.

    Low
    ✅ Suggestions up to commit 830b966
    CategorySuggestion                                                                                                                                    Impact
    General
    Prevent unbounded memory growth
    Suggestion Impact:The commit implements a comprehensive cleanup mechanism for session history that prevents unbounded memory growth. It adds a cleanupSessionHistory method that limits the history to 100 completed sessions plus all ongoing sessions, triggered by NodeHeartBeatEvent. This is a more sophisticated solution than the simple size limit suggested.

    code diff:

    +    bus.addListener(NodeHeartBeatEvent.listener(this::cleanupSessionHistory));
     
         shutdown =
             () -> {
    @@ -1138,33 +1137,58 @@
           return;
         }
         Instant startTime = Instant.now();
    -    sessionStartTimes.put(sessionId, startTime);
         sessionHistory.add(new SessionHistoryEntry(sessionId, startTime, null));
         writeSessionHistoryToFile();
       }
     
       private void recordSessionStop(SessionId sessionId) {
    -    if (!isSessionOwner(sessionId)) {
    +    Instant stopTime = Instant.now();
    +    // Find and update the existing history entry
    +    sessionHistory.stream()
    +        .filter(entry -> entry.getSessionId().equals(sessionId))
    +        .findFirst()
    +        .ifPresent(
    +            entry -> {
    +              entry.setStopTime(stopTime);
    +              writeSessionHistoryToFile();
    +            });
    +  }
    +
    +  private void cleanupSessionHistory(NodeStatus status) {
    +    int maxHistorySize = 100;
    +    if (!status.getNodeId().equals(getId()) || sessionHistory.size() < maxHistorySize) {
           return;
         }
    -    Instant stopTime = Instant.now();
    -    Instant startTime = sessionStartTimes.remove(sessionId);
    -    if (startTime != null) {
    -      // Find and update the existing history entry
    -      sessionHistory.stream()
    -          .filter(entry -> entry.getSessionId().equals(sessionId))
    -          .findFirst()
    -          .ifPresent(entry -> entry.setStopTime(stopTime));
    -      writeSessionHistoryToFile();
    -    }
    +
    +    // Keep only the last 100 completed sessions
    +    List<SessionHistoryEntry> completedSessions =
    +        sessionHistory.stream()
    +            .filter(entry -> entry.getStopTime() != null)
    +            .sorted(
    +                (a, b) ->
    +                    b.getStartTime().compareTo(a.getStartTime())) // Sort by start time descending
    +            .limit(100)
    +            .collect(Collectors.toList());
    +
    +    // Keep all ongoing sessions
    +    List<SessionHistoryEntry> ongoingSessions =
    +        sessionHistory.stream()
    +            .filter(entry -> entry.getStopTime() == null)
    +            .collect(Collectors.toList());
    +
    +    // Clear and rebuild the history queue
    +    sessionHistory.clear();
    +    sessionHistory.addAll(completedSessions);
    +    sessionHistory.addAll(ongoingSessions);
    +
    +    // Write the cleaned history to file
    +    writeSessionHistoryToFile();
       }

    The session history queue can grow unbounded over time, potentially causing
    memory issues in long-running nodes. Consider implementing a size limit or
    cleanup mechanism to prevent excessive memory usage.

    java/src/org/openqa/selenium/grid/node/local/LocalNode.java [1136-1144]

     private void recordSessionStart(SessionId sessionId) {
       if (!isSessionOwner(sessionId)) {
         return;
       }
       Instant startTime = Instant.now();
       sessionStartTimes.put(sessionId, startTime);
       sessionHistory.add(new SessionHistoryEntry(sessionId, startTime, null));
    +  
    +  // Limit history size to prevent memory issues
    +  while (sessionHistory.size() > 1000) {
    +    sessionHistory.poll();
    +  }
    +  
       writeSessionHistoryToFile();
     }

    [Suggestion processed]

    Suggestion importance[1-10]: 8

    __

    Why: The suggestion correctly identifies that the sessionHistory queue can grow indefinitely, which could lead to memory issues in long-running nodes. Proposing a mechanism to limit its size is a valuable improvement for the system's stability and robustness.

    Medium

    @SeleniumHQ SeleniumHQ deleted a comment from qodo-merge-pro bot Jun 8, 2025
    VietND96 and others added 3 commits June 9, 2025 03:33
    Co-authored-by: qodo-merge-pro[bot] <151058649+qodo-merge-pro[bot]@users.noreply.github.com>
    Co-authored-by: qodo-merge-pro[bot] <151058649+qodo-merge-pro[bot]@users.noreply.github.com>
    Copy link
    Contributor

    qodo-merge-pro bot commented Jun 8, 2025

    CI Feedback 🧐

    (Feedback updated until commit 93f6f3e)

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

    Action: Test / All RBE tests

    Failed stage: Run Bazel [❌]

    Failure summary:

    The action failed due to multiple compilation and test failures:
    • Compilation failures in Java
    files:
    - LocalNodeTest.java:459 and LocalNodeTest.java:508: incompatible types - Node cannot be
    converted to LocalNode
    - LocalNodeTest.java:573: cannot find symbol SessionHistoryEntry class
    -
    GetNodeSessionHistoryTest.java:481 and GetNodeSessionHistoryTest.java:486: cannot find symbol method
    getContentString() in HttpResponse
    - GetNodeSessionHistoryTest.java:490: TestNode class does not
    override abstract method isReady() from HasReadyState
    • SpotBugs violations in LocalNode.java at
    lines 1126 and 1195: found reliance on default encoding in String.getBytes() calls
    • Test failures:

    - StorageCommandsTest.canGetAllCookies() failed with assertion error (expected true but was false)
    at line 283
    - DefaultWheelTest.shouldScrollFromViewportByGivenAmount() failed with assertion error
    (expected true but was false) at line 151

    Relevant error logs:
    1:  ##[group]Runner Image Provisioner
    2:  Hosted Compute Agent
    ...
    
    947:  Package 'php-sql-formatter' is not installed, so not removed
    948:  Package 'php8.3-ssh2' is not installed, so not removed
    949:  Package 'php-ssh2-all-dev' is not installed, so not removed
    950:  Package 'php8.3-stomp' is not installed, so not removed
    951:  Package 'php-stomp-all-dev' is not installed, so not removed
    952:  Package 'php-swiftmailer' is not installed, so not removed
    953:  Package 'php-symfony' is not installed, so not removed
    954:  Package 'php-symfony-asset' is not installed, so not removed
    955:  Package 'php-symfony-asset-mapper' is not installed, so not removed
    956:  Package 'php-symfony-browser-kit' is not installed, so not removed
    957:  Package 'php-symfony-clock' is not installed, so not removed
    958:  Package 'php-symfony-debug-bundle' is not installed, so not removed
    959:  Package 'php-symfony-doctrine-bridge' is not installed, so not removed
    960:  Package 'php-symfony-dom-crawler' is not installed, so not removed
    961:  Package 'php-symfony-dotenv' is not installed, so not removed
    962:  Package 'php-symfony-error-handler' is not installed, so not removed
    963:  Package 'php-symfony-event-dispatcher' is not installed, so not removed
    ...
    
    1141:  Package 'php-twig-html-extra' is not installed, so not removed
    1142:  Package 'php-twig-i18n-extension' is not installed, so not removed
    1143:  Package 'php-twig-inky-extra' is not installed, so not removed
    1144:  Package 'php-twig-intl-extra' is not installed, so not removed
    1145:  Package 'php-twig-markdown-extra' is not installed, so not removed
    1146:  Package 'php-twig-string-extra' is not installed, so not removed
    1147:  Package 'php8.3-uopz' is not installed, so not removed
    1148:  Package 'php-uopz-all-dev' is not installed, so not removed
    1149:  Package 'php8.3-uploadprogress' is not installed, so not removed
    1150:  Package 'php-uploadprogress-all-dev' is not installed, so not removed
    1151:  Package 'php8.3-uuid' is not installed, so not removed
    1152:  Package 'php-uuid-all-dev' is not installed, so not removed
    1153:  Package 'php-validate' is not installed, so not removed
    1154:  Package 'php-vlucas-phpdotenv' is not installed, so not removed
    1155:  Package 'php-voku-portable-ascii' is not installed, so not removed
    1156:  Package 'php-wmerrors' is not installed, so not removed
    1157:  Package 'php-xdebug-all-dev' is not installed, so not removed
    ...
    
    1853:  (20:37:29) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/webdriver/BUILD.bazel:66:19: runfiles symlink javascript/webdriver/test/testutil.js -> javascript/webdriver/test/testutil.js obscured by javascript/webdriver/test -> bazel-out/k8-fastbuild/bin/javascript/webdriver/test
    1854:  (20:37:29) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/webdriver/BUILD.bazel:66:19: runfiles symlink javascript/webdriver/test/testutil_test.js -> javascript/webdriver/test/testutil_test.js obscured by javascript/webdriver/test -> bazel-out/k8-fastbuild/bin/javascript/webdriver/test
    1855:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397:19: runfiles symlink javascript/atoms/test/action_test.html -> javascript/atoms/test/action_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1856:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397:19: runfiles symlink javascript/atoms/test/attribute_test.html -> javascript/atoms/test/attribute_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1857:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397:19: runfiles symlink javascript/atoms/test/child_locator_test.html -> javascript/atoms/test/child_locator_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1858:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397:19: runfiles symlink javascript/atoms/test/click_link_test.html -> javascript/atoms/test/click_link_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1859:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397: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
    1860:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397: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
    1861:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397: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
    1862:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397: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
    1863:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397:19: runfiles symlink javascript/atoms/test/deps.js -> javascript/atoms/test/deps.js obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1864:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397: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
    1865:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397: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
    1866:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397: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
    1867:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397: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
    1868:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397: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
    1869:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397:19: runfiles symlink javascript/atoms/test/events_test.html -> javascript/atoms/test/events_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    ...
    
    1938:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397:19: runfiles symlink javascript/atoms/test/text_table_test.html -> javascript/atoms/test/text_table_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1939:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397:19: runfiles symlink javascript/atoms/test/text_test.html -> javascript/atoms/test/text_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1940:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397:19: runfiles symlink javascript/atoms/test/text_util.js -> javascript/atoms/test/text_util.js obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1941:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397:19: runfiles symlink javascript/atoms/test/toolbar_test.html -> javascript/atoms/test/toolbar_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1942:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397:19: runfiles symlink javascript/atoms/test/touchscreen_test.html -> javascript/atoms/test/touchscreen_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1943:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397:19: runfiles symlink javascript/atoms/test/type_test.html -> javascript/atoms/test/type_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1944:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397:19: runfiles symlink javascript/atoms/test/useragent_quirks_test.html -> javascript/atoms/test/useragent_quirks_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1945:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397:19: runfiles symlink javascript/atoms/test/useragent_test.html -> javascript/atoms/test/useragent_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1946:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397:19: runfiles symlink javascript/atoms/test/useragent_test.js -> javascript/atoms/test/useragent_test.js obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1947:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397:19: runfiles symlink javascript/atoms/test/window_scroll_into_view_test.html -> javascript/atoms/test/window_scroll_into_view_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1948:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397:19: runfiles symlink javascript/atoms/test/window_scroll_test.html -> javascript/atoms/test/window_scroll_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1949:  (20:37:30) �[35mWARNING: �[0m/home/runner/work/selenium/selenium/javascript/atoms/BUILD.bazel:397:19: runfiles symlink javascript/atoms/test/window_size_test.html -> javascript/atoms/test/window_size_test.html obscured by javascript/atoms/test -> bazel-out/k8-fastbuild/bin/javascript/atoms/test
    1950:  (20:37:33) �[32mAnalyzing:�[0m 2369 targets (1629 packages loaded, 51489 targets configured)
    1951:  �[32m[6,488 / 9,314]�[0m 78 / 1449 tests;�[0m Extracting npm package @mui/[email protected]_60647716; 4s remote, remote-cache ... (44 actions, 26 running)
    1952:  (20:37:37) �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (69 source files):
    1953:  java/src/org/openqa/selenium/remote/ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1954:  private final ErrorCodes errorCodes;
    1955:  ^
    1956:  java/src/org/openqa/selenium/remote/ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1957:  this.errorCodes = new ErrorCodes();
    1958:  ^
    1959:  java/src/org/openqa/selenium/remote/ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1960:  public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {
    1961:  ^
    1962:  java/src/org/openqa/selenium/remote/Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1963:  ErrorCodes errorCodes = new ErrorCodes();
    1964:  ^
    1965:  java/src/org/openqa/selenium/remote/Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1966:  ErrorCodes errorCodes = new ErrorCodes();
    1967:  ^
    1968:  java/src/org/openqa/selenium/remote/ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1969:  response.setStatus(ErrorCodes.SUCCESS);
    1970:  ^
    1971:  java/src/org/openqa/selenium/remote/ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1972:  response.setState(ErrorCodes.SUCCESS_STRING);
    1973:  ^
    1974:  java/src/org/openqa/selenium/remote/W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1975:  new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));
    1976:  ^
    1977:  java/src/org/openqa/selenium/remote/W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    1978:  new ErrorCodes().getExceptionType((String) rawError);
    1979:  ^
    1980:  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
    1981:  private final ErrorCodes errorCodes = new ErrorCodes();
    1982:  ^
    1983:  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
    1984:  private final ErrorCodes errorCodes = new ErrorCodes();
    1985:  ^
    1986:  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
    1987:  int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;
    1988:  ^
    1989:  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
    1990:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
    1991:  ^
    1992:  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
    1993:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
    1994:  ^
    1995:  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
    1996:  response.setStatus(ErrorCodes.SUCCESS);
    1997:  ^
    1998:  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
    1999:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
    2000:  ^
    2001:  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
    2002:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
    2003:  ^
    2004:  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
    2005:  private final ErrorCodes errorCodes = new ErrorCodes();
    2006:  ^
    2007:  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
    2008:  private final ErrorCodes errorCodes = new ErrorCodes();
    2009:  ^
    2010:  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
    2011:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
    2012:  ^
    2013:  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
    2014:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
    2015:  ^
    2016:  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
    2017:  response.setStatus(ErrorCodes.SUCCESS);
    2018:  ^
    ...
    
    2180:  �[32m[10,414 / 12,272]�[0m 187 / 2016 tests;�[0m [Prepa] Testing //rb/spec/unit/selenium/webdriver/common/interactions:typing_interactions; 4s ... (50 actions, 2 running)
    2181:  (20:38:19) �[32mAnalyzing:�[0m 2369 targets (1680 packages loaded, 64933 targets configured)
    2182:  �[32m[10,549 / 12,531]�[0m 231 / 2101 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:element-chrome; 1s remote, remote-cache ... (50 actions, 2 running)
    2183:  (20:38:24) �[32mAnalyzing:�[0m 2369 targets (1680 packages loaded, 65109 targets configured)
    2184:  �[32m[10,856 / 12,852]�[0m 314 / 2276 tests;�[0m Building java/src/org/openqa/selenium/grid/node/libnode.jar (21 source files); 2s remote, remote-cache ... (49 actions, 3 running)
    2185:  (20:38:28) �[32mINFO: �[0mAnalyzed 2369 targets (1681 packages loaded, 65255 targets configured).
    2186:  (20:38:29) �[32m[11,238 / 13,220]�[0m 416 / 2369 tests;�[0m Building java/src/org/openqa/selenium/grid/sessionmap/libsessionmap.jar (6 source files); 2s remote, remote-cache ... (48 actions, 10 running)
    2187:  (20:38:34) �[32m[11,967 / 13,735]�[0m 488 / 2369 tests;�[0m Testing //py:common-chrome-test/selenium/webdriver/common/frame_switching_tests.py; 0s remote, remote-cache ... (49 actions, 1 running)
    2188:  (20:38:39) �[32m[12,280 / 13,823]�[0m 590 / 2369 tests;�[0m Building java/src/org/openqa/selenium/grid/sessionmap/config/libconfig.jar (2 source files) and running annotation processors (AutoServiceProcessor); 4s remote, remote-cache ... (50 actions, 4 running)
    2189:  (20:38:40) �[32mINFO: �[0mFrom Running Cargo build script bzip2-sys:
    2190:  Build Script Warning: bzip2-1.0.8/compress.c: In function ‘sendMTFValues’:
    2191:  Build Script Warning: bzip2-1.0.8/compress.c:243:19: warning: variable ‘nBytes’ set but not used [-Wunused-but-set-variable]
    2192:  Build Script Warning:   243 |    Int32 nGroups, nBytes;
    2193:  Build Script Warning:       |                   ^~~~~~
    2194:  (20:38:41) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/remote/libsmall-tests-test-lib.jar (5 source files) and running annotation processors (AutoServiceProcessor):
    2195:  java/test/org/openqa/selenium/remote/WebDriverFixture.java:170: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2196:  response.setStatus(new ErrorCodes().toStatus(state, Optional.of(400)));
    2197:  ^
    2198:  (20:38:44) �[32m[12,983 / 14,234]�[0m 743 / 2369 tests;�[0m [Sched] Testing //java/src/org/openqa/selenium/grid/node:node-spotbugs; 7s ... (43 actions, 10 running)
    2199:  (20:38:45) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/remote/codec/w3c/W3CHttpResponseCodecTest.jar (1 source file):
    2200:  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
    2201:  import static org.openqa.selenium.remote.ErrorCodes.METHOD_NOT_ALLOWED;
    2202:  ^
    2203:  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
    2204:  assertThat(decoded.getStatus()).isEqualTo(ErrorCodes.SUCCESS);
    2205:  ^
    2206:  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
    2207:  assertThat(decoded.getStatus()).isEqualTo(ErrorCodes.UNHANDLED_ERROR);
    2208:  ^
    2209:  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
    2210:  assertThat(decoded.getStatus()).isEqualTo(ErrorCodes.UNHANDLED_ERROR);
    2211:  ^
    2212:  (20:38:48) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/json/JsonTest.jar (1 source file):
    2213:  java/test/org/openqa/selenium/json/JsonTest.java:430: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2214:  assertThat(response.getState()).isEqualTo(new ErrorCodes().toState(0));
    2215:  ^
    2216:  java/test/org/openqa/selenium/json/JsonTest.java:441: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2217:  assertThat(response.getState()).isEqualTo(new ErrorCodes().toState(0));
    2218:  ^
    2219:  java/test/org/openqa/selenium/json/JsonTest.java:454: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2220:  assertThat(response.getState()).isEqualTo(new ErrorCodes().toState(32));
    2221:  ^
    2222:  (20:38:49) �[32m[13,728 / 14,883]�[0m 829 / 2369 tests;�[0m Building java/src/org/openqa/selenium/grid/distributor/selector/libselector.jar (2 source files); 5s remote, remote-cache ... (50 actions, 8 running)
    2223:  (20:38:52) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/remote/RemotableByTest.jar (1 source file) and running annotation processors (AutoServiceProcessor):
    2224:  java/test/org/openqa/selenium/remote/RemotableByTest.java:23: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2225:  import static org.openqa.selenium.remote.ErrorCodes.SUCCESS_STRING;
    2226:  ^
    2227:  java/test/org/openqa/selenium/remote/RemotableByTest.java:23: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2228:  import static org.openqa.selenium.remote.ErrorCodes.SUCCESS_STRING;
    2229:  ^
    2230:  java/test/org/openqa/selenium/remote/RemotableByTest.java:23: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2231:  import static org.openqa.selenium.remote.ErrorCodes.SUCCESS_STRING;
    2232:  ^
    2233:  java/test/org/openqa/selenium/remote/RemotableByTest.java:45: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2234:  private final ErrorCodes errorCodes = new ErrorCodes();
    2235:  ^
    2236:  java/test/org/openqa/selenium/remote/RemotableByTest.java:45: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2237:  private final ErrorCodes errorCodes = new ErrorCodes();
    2238:  ^
    2239:  java/test/org/openqa/selenium/remote/RemotableByTest.java:45: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2240:  private final ErrorCodes errorCodes = new ErrorCodes();
    2241:  ^
    2242:  java/test/org/openqa/selenium/remote/RemotableByTest.java:45: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2243:  private final ErrorCodes errorCodes = new ErrorCodes();
    2244:  ^
    2245:  (20:38:52) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/remote/ErrorHandlerTest.jar (1 source file) and running annotation processors (AutoServiceProcessor):
    2246:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:79: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2247:  handler.throwIfResponseFailed(createResponse(ErrorCodes.SUCCESS), 100);
    2248:  ^
    2249:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:85: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2250:  assertThrowsCorrectExceptionType(ErrorCodes.NO_SUCH_WINDOW, NoSuchWindowException.class);
    2251:  ^
    2252:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:86: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2253:  assertThrowsCorrectExceptionType(ErrorCodes.NO_SUCH_FRAME, NoSuchFrameException.class);
    2254:  ^
    2255:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:87: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2256:  assertThrowsCorrectExceptionType(ErrorCodes.NO_SUCH_ELEMENT, NoSuchElementException.class);
    2257:  ^
    2258:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:88: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2259:  assertThrowsCorrectExceptionType(ErrorCodes.UNKNOWN_COMMAND, UnsupportedCommandException.class);
    2260:  ^
    2261:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:90: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2262:  ErrorCodes.METHOD_NOT_ALLOWED, UnsupportedCommandException.class);
    2263:  ^
    2264:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:92: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2265:  ErrorCodes.STALE_ELEMENT_REFERENCE, StaleElementReferenceException.class);
    2266:  ^
    2267:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:94: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2268:  ErrorCodes.INVALID_ELEMENT_STATE, InvalidElementStateException.class);
    2269:  ^
    2270:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:95: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2271:  assertThrowsCorrectExceptionType(ErrorCodes.XPATH_LOOKUP_ERROR, InvalidSelectorException.class);
    2272:  ^
    2273:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:107: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2274:  Response response = createResponse(ErrorCodes.UNHANDLED_ERROR);
    2275:  ^
    2276:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:120: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2277:  createResponse(ErrorCodes.UNHANDLED_ERROR, "boom"), 123))
    2278:  ^
    2279:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:133: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2280:  createResponse(ErrorCodes.UNHANDLED_ERROR, ImmutableMap.of("message", "boom")),
    2281:  ^
    2282:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:147: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2283:  ErrorCodes.UNHANDLED_ERROR,
    2284:  ^
    2285:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:167: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2286:  ErrorCodes.UNHANDLED_ERROR,
    2287:  ^
    2288:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:193: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2289:  createResponse(ErrorCodes.UNHANDLED_ERROR, toMap(serverError)), 123))
    2290:  ^
    2291:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:214: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2292:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2293:  ^
    2294:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:248: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2295:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2296:  ^
    2297:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:280: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2298:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2299:  ^
    2300:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:308: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2301:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2302:  ^
    2303:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:327: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2304:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2305:  ^
    2306:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:355: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2307:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2308:  ^
    2309:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:394: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2310:  createResponse(ErrorCodes.UNHANDLED_ERROR, data), 123))
    2311:  ^
    2312:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:426: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2313:  createResponse(ErrorCodes.UNHANDLED_ERROR, toMap(serverError)), 123))
    2314:  ^
    2315:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:435: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2316:  exceptions.put(ErrorCodes.NO_SUCH_SESSION, NoSuchSessionException.class);
    2317:  ^
    2318:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:436: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2319:  exceptions.put(ErrorCodes.NO_SUCH_ELEMENT, NoSuchElementException.class);
    2320:  ^
    2321:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:437: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2322:  exceptions.put(ErrorCodes.NO_SUCH_FRAME, NoSuchFrameException.class);
    2323:  ^
    2324:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:438: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2325:  exceptions.put(ErrorCodes.UNKNOWN_COMMAND, UnsupportedCommandException.class);
    2326:  ^
    2327:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:439: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2328:  exceptions.put(ErrorCodes.STALE_ELEMENT_REFERENCE, StaleElementReferenceException.class);
    2329:  ^
    2330:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:440: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2331:  exceptions.put(ErrorCodes.INVALID_ELEMENT_STATE, InvalidElementStateException.class);
    2332:  ^
    2333:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:441: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2334:  exceptions.put(ErrorCodes.UNHANDLED_ERROR, WebDriverException.class);
    2335:  ^
    2336:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:442: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2337:  exceptions.put(ErrorCodes.JAVASCRIPT_ERROR, JavascriptException.class);
    2338:  ^
    2339:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:443: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2340:  exceptions.put(ErrorCodes.XPATH_LOOKUP_ERROR, InvalidSelectorException.class);
    2341:  ^
    2342:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:444: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2343:  exceptions.put(ErrorCodes.TIMEOUT, TimeoutException.class);
    2344:  ^
    2345:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:445: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2346:  exceptions.put(ErrorCodes.NO_SUCH_WINDOW, NoSuchWindowException.class);
    2347:  ^
    2348:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:446: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2349:  exceptions.put(ErrorCodes.INVALID_COOKIE_DOMAIN, InvalidCookieDomainException.class);
    2350:  ^
    2351:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:447: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2352:  exceptions.put(ErrorCodes.UNABLE_TO_SET_COOKIE, UnableToSetCookieException.class);
    2353:  ^
    2354:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:448: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2355:  exceptions.put(ErrorCodes.UNEXPECTED_ALERT_PRESENT, UnhandledAlertException.class);
    2356:  ^
    2357:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:449: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2358:  exceptions.put(ErrorCodes.NO_ALERT_PRESENT, NoAlertPresentException.class);
    2359:  ^
    2360:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:450: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2361:  exceptions.put(ErrorCodes.ASYNC_SCRIPT_TIMEOUT, ScriptTimeoutException.class);
    2362:  ^
    2363:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:451: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2364:  exceptions.put(ErrorCodes.INVALID_SELECTOR_ERROR, InvalidSelectorException.class);
    2365:  ^
    2366:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:452: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2367:  exceptions.put(ErrorCodes.SESSION_NOT_CREATED, SessionNotCreatedException.class);
    2368:  ^
    2369:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:453: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2370:  exceptions.put(ErrorCodes.MOVE_TARGET_OUT_OF_BOUNDS, MoveTargetOutOfBoundsException.class);
    2371:  ^
    2372:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:454: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2373:  exceptions.put(ErrorCodes.INVALID_XPATH_SELECTOR, InvalidSelectorException.class);
    2374:  ^
    2375:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:455: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2376:  exceptions.put(ErrorCodes.INVALID_XPATH_SELECTOR_RETURN_TYPER, InvalidSelectorException.class);
    2377:  ^
    2378:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:469: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2379:  ? ErrorCodes.INVALID_SELECTOR_ERROR
    2380:  ^
    2381:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:471: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2382:  assertThat(new ErrorCodes().toStatusCode(e)).isEqualTo(expected);
    2383:  ^
    2384:  java/test/org/openqa/selenium/remote/ErrorHandlerTest.java:483: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
    2385:  response.setState(new ErrorCodes().toState(status));
    2386:  ^
    ...
    
    2429:  dotnet/src/webdriver/DevTools/v136/V136Network.cs(320,90): warning CS8601: Possible null reference assignment.
    2430:  dotnet/src/webdriver/BiDi/Script/RemoteValue.cs(253,31): warning CS8766: Nullability of reference types in return type of 'string? NodeRemoteValue.SharedId.get' doesn't match implicitly implemented member 'string ISharedReference.SharedId.get' (possibly because of nullability attributes).
    2431:  (20:38:55) �[32mINFO: �[0mFrom Compiling webdriver-netstandard2.0 (internals ref-only dll):
    2432:  dotnet/src/webdriver/Response.cs(207,2): warning CS3016: Arrays as attribute arguments is not CLS-compliant
    2433:  dotnet/src/webdriver/Command.cs(171,2): warning CS3016: Arrays as attribute arguments is not CLS-compliant
    2434:  (20:38:55) �[32mINFO: �[0mFrom Compiling webdriver-net8.0 (internals ref-only dll):
    2435:  dotnet/src/webdriver/BiDi/Script/RemoteValue.cs(253,31): warning CS8766: Nullability of reference types in return type of 'string? NodeRemoteValue.SharedId.get' doesn't match implicitly implemented member 'string ISharedReference.SharedId.get' (possibly because of nullability attributes).
    2436:  dotnet/src/webdriver/Response.cs(207,2): warning CS3016: Arrays as attribute arguments is not CLS-compliant
    2437:  dotnet/src/webdriver/Command.cs(171,2): warning CS3016: Arrays as attribute arguments is not CLS-compliant
    2438:  (20:38:59) �[32m[14,829 / 15,594]�[0m 1356 / 2369 tests;�[0m Building java/src/org/openqa/selenium/grid/node/docker/libdocker.jar (5 source files) and running annotation processors (AutoServiceProcessor); 9s remote, remote-cache ... (49 actions, 4 running)
    2439:  (20:39:04) �[32m[15,339 / 15,835]�[0m 1561 / 2369 tests;�[0m [Sched] Building java/src/org/openqa/selenium/grid/node/remote/libremote.jar (1 source file); 12s ... (45 actions, 4 running)
    2440:  (20:39:09) �[32m[15,575 / 15,945]�[0m 1696 / 2369 tests;�[0m [Sched] Building java/test/org/openqa/selenium/grid/node/relay/RelayOptionsTest.jar (1 source file); 13s ... (50 actions, 4 running)
    2441:  (20:39:14) �[32m[15,808 / 16,052]�[0m 1821 / 2369 tests;�[0m [Sched] Building java/test/org/openqa/selenium/grid/node/relay/RelayOptionsTest.jar (1 source file); 18s ... (50 actions, 4 running)
    2442:  (20:39:21) �[32m[15,944 / 16,059]�[0m 1953 / 2369 tests;�[0m [Sched] Building java/test/org/openqa/selenium/grid/distributor/selector/DefaultSlotSelectorTest.jar (1 source file); 17s ... (18 actions, 5 running)
    2443:  (20:39:27) �[32m[15,950 / 16,065]�[0m 1956 / 2369 tests;�[0m [Sched] Building java/test/org/openqa/selenium/grid/node/CustomLocatorHandlerTest.jar (1 source file); 21s ... (18 actions, 5 running)
    2444:  (20:39:27) �[31m�[1mERROR: �[0m/home/runner/work/selenium/selenium/java/test/org/openqa/selenium/grid/node/local/BUILD.bazel:4:16: Building java/test/org/openqa/selenium/grid/node/local/LocalNodeTest.jar (1 source file) failed: (Exit 1): java failed: error executing Javac command (from target //java/test/org/openqa/selenium/grid/node/local:LocalNodeTest) 
    2445:  (cd /home/runner/.bazel/execroot/_main && \
    2446:  exec env - \
    2447:  BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 \
    2448:  HOME=/home/dev \
    2449:  JRUBY_OPTS=--dev \
    2450:  LC_CTYPE=en_US.UTF-8 \
    2451:  PATH=/bin:/usr/bin:/usr/local/bin \
    2452:  external/rules_java++toolchains+remotejdk21_linux/bin/java '--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.resources=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED' '--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED' '--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED' '--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED' '--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED' '--add-opens=java.base/java.nio=ALL-UNNAMED' '--add-opens=java.base/java.lang=ALL-UNNAMED' '-Dsun.io.useCanonCaches=false' -XX:-CompactStrings -Xlog:disable '-Xlog:all=warning:stderr:uptime,level,tags' -jar external/rules_java++toolchains+remote_java_tools/java_tools/JavaBuilder_deploy.jar @bazel-out/k8-fastbuild/bin/java/test/org/openqa/selenium/grid/node/local/LocalNodeTest.jar-0.params @bazel-out/k8-fastbuild/bin/java/test/org/openqa/selenium/grid/node/local/LocalNodeTest.jar-1.params)
    2453:  # Configuration: 6fa19129d1da8292102fad122203887c89491db0e7c8ba9f9a5e86a3d6d3d109
    2454:  # Execution platform: //common/remote-build:platform
    2455:  Execution result: https://gypsum.cluster.engflow.com/actions/executions/ChCJ64MDaFNaTKaxhA61oWzrEgdkZWZhdWx0GiUKIPNQSXx1LbCOMnh90wMozMShEdFyPBjaBIByZaMHMpHwELcD
    2456:  java/test/org/openqa/selenium/grid/node/local/LocalNodeTest.java:459: error: incompatible types: Node cannot be converted to LocalNode
    2457:  .build();
    2458:  ^
    2459:  java/test/org/openqa/selenium/grid/node/local/LocalNodeTest.java:508: error: incompatible types: Node cannot be converted to LocalNode
    2460:  .build();
    2461:  ^
    2462:  java/test/org/openqa/selenium/grid/node/local/LocalNodeTest.java:573: error: cannot find symbol
    2463:  List<SessionHistoryEntry> history = localNode.getSessionHistory();
    2464:  ^
    2465:  symbol:   class SessionHistoryEntry
    2466:  location: class LocalNodeTest
    2467:  (20:39:34) �[32m[15,959 / 16,071]�[0m 1961 / 2369 tests, �[31m�[1m2 failed�[0m;�[0m [Sched] Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge; 26s ... (27 actions, 4 running)
    2468:  (20:39:36) �[31m�[1mERROR: �[0m/home/runner/work/selenium/selenium/java/test/org/openqa/selenium/grid/node/BUILD.bazel:4:16: Building java/test/org/openqa/selenium/grid/node/GetNodeSessionHistoryTest.jar (1 source file) failed: (Exit 1): java failed: error executing Javac command (from target //java/test/org/openqa/selenium/grid/node:GetNodeSessionHistoryTest) 
    2469:  (cd /home/runner/.bazel/execroot/_main && \
    2470:  exec env - \
    2471:  BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 \
    2472:  HOME=/home/dev \
    2473:  JRUBY_OPTS=--dev \
    2474:  LC_CTYPE=en_US.UTF-8 \
    2475:  PATH=/bin:/usr/bin:/usr/local/bin \
    2476:  external/rules_java++toolchains+remotejdk21_linux/bin/java '--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.resources=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED' '--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED' '--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED' '--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED' '--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED' '--add-opens=java.base/java.nio=ALL-UNNAMED' '--add-opens=java.base/java.lang=ALL-UNNAMED' '-Dsun.io.useCanonCaches=false' -XX:-CompactStrings -Xlog:disable '-Xlog:all=warning:stderr:uptime,level,tags' -jar external/rules_java++toolchains+remote_java_tools/java_tools/JavaBuilder_deploy.jar @bazel-out/k8-fastbuild/bin/java/test/org/openqa/selenium/grid/node/GetNodeSessionHistoryTest.jar-0.params @bazel-out/k8-fastbuild/bin/java/test/org/openqa/selenium/grid/node/GetNodeSessionHistoryTest.jar-1.params)
    2477:  # Configuration: 6fa19129d1da8292102fad122203887c89491db0e7c8ba9f9a5e86a3d6d3d109
    2478:  # Execution platform: //common/remote-build:platform
    2479:  Execution result: https://gypsum.cluster.engflow.com/actions/executions/ChCknz9aNepWeLJvtQpOTtrxEgdkZWZhdWx0GiUKIHHi970MZwY6j0Hh6-VR78Xvota8IxmHh9fZsM5HzAyHELcD
    2480:  java/test/org/openqa/selenium/grid/node/GetNodeSessionHistoryTest.java:48: error: cannot find symbol
    2481:  String content = response.getContentString();
    2482:  ^
    2483:  symbol:   method getContentString()
    2484:  location: variable response of type HttpResponse
    2485:  java/test/org/openqa/selenium/grid/node/GetNodeSessionHistoryTest.java:65: error: cannot find symbol
    2486:  String content = response.getContentString();
    2487:  ^
    2488:  symbol:   method getContentString()
    2489:  location: variable response of type HttpResponse
    2490:  java/test/org/openqa/selenium/grid/node/GetNodeSessionHistoryTest.java:70: error: TestNode is not abstract and does not override abstract method isReady() in HasReadyState
    2491:  private static class TestNode extends Node {
    2492:  ^
    2493:  (20:39:39) �[32m[15,966 / 16,076]�[0m 1966 / 2369 tests, �[31m�[1m4 failed�[0m;�[0m [Sched] Testing //java/test/org/openqa/selenium/grid/node/config:SessionCapabilitiesMutatorTest; 21s ... (25 actions, 4 running)
    2494:  (20:39:44) �[32m[15,968 / 16,076]�[0m 1968 / 2369 tests, �[31m�[1m4 failed�[0m;�[0m [Sched] Testing //java/test/org/openqa/selenium/grid/node/relay:RelayOptionsTest; 22s ... (23 actions, 4 running)
    2495:  (20:39:50) �[32m[15,970 / 16,076]�[0m 1970 / 2369 tests, �[31m�[1m4 failed�[0m;�[0m [Sched] Testing //java/test/org/openqa/selenium/grid/distributor/selector:DefaultSlotSelectorTest; 20s ... (21 actions, 5 running)
    2496:  (20:39:55) �[32m[15,974 / 16,076]�[0m 1974 / 2369 tests, �[31m�[1m4 failed�[0m;�[0m [Sched] Compiling Java headers java/src/org/openqa/selenium/grid/distributor/remote/libremote-hjar.jar (1 source file); 25s ... (17 actions, 5 running)
    2497:  (20:40:02) �[32m[15,979 / 16,077]�[0m 1976 / 2369 tests, �[31m�[1m4 failed�[0m;�[0m [Sched] Compiling Java headers java/src/org/openqa/selenium/grid/sessionqueue/local/liblocal-hjar.jar (1 source file); 31s ... (13 actions, 6 running)
    2498:  (20:40:07) �[32m[15,986 / 16,079]�[0m 1978 / 2369 tests, �[31m�[1m4 failed�[0m;�[0m [Sched] Testing //java/test/org/openqa/selenium/grid/node:NodeTest; 35s ... (12 actions, 6 running)
    2499:  (20:40:13) �[32m[15,992 / 16,081]�[0m 1980 / 2369 tests, �[31m�[1m4 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge; 38s remote, remote-cache ... (16 actions, 6 running)
    2500:  (20:40:19) �[32m[15,997 / 16,082]�[0m 1984 / 2369 tests, �[31m�[1m4 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge; 43s remote, remote-cache ... (12 actions, 6 running)
    2501:  (20:40:20) �[31m�[1mFAIL: �[0m//java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge (see /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/java/test/org/openqa/selenium/bidi/storage/StorageCommandsTest-edge/test_attempts/attempt_1.log)
    2502:  (20:40:22) �[31m�[1mFAIL: �[0m//java/src/org/openqa/selenium/grid/node/local:local-spotbugs (see /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/java/src/org/openqa/selenium/grid/node/local/local-spotbugs/test_attempts/attempt_1.log)
    2503:  (20:40:24) �[32m[15,999 / 16,083]�[0m 1985 / 2369 tests, �[31m�[1m4 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge; 48s remote, remote-cache ... (11 actions, 8 running)
    2504:  (20:40:29) �[32m[16,007 / 16,087]�[0m 1988 / 2369 tests, �[31m�[1m4 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge; 54s remote, remote-cache ... (13 actions, 7 running)
    2505:  (20:40:36) �[32m[16,011 / 16,091]�[0m 1990 / 2369 tests, �[31m�[1m4 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge; 60s remote, remote-cache ... (13 actions, 7 running)
    2506:  (20:40:42) �[32m[16,018 / 16,095]�[0m 1993 / 2369 tests, �[31m�[1m4 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge; 66s remote, remote-cache ... (12 actions, 7 running)
    2507:  (20:40:47) �[32m[16,020 / 16,097]�[0m 1994 / 2369 tests, �[31m�[1m4 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge; 72s remote, remote-cache ... (12 actions, 8 running)
    2508:  (20:40:54) �[32m[16,029 / 16,105]�[0m 1998 / 2369 tests, �[31m�[1m4 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge; 78s remote, remote-cache ... (12 actions, 7 running)
    2509:  (20:40:55) �[31m�[1mFAIL: �[0m//java/src/org/openqa/selenium/grid/node/local:local-spotbugs (see /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/java/src/org/openqa/selenium/grid/node/local/local-spotbugs/test.log)
    2510:  �[31m�[1mFAILED: �[0m//java/src/org/openqa/selenium/grid/node/local:local-spotbugs (Summary)
    2511:  /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/java/src/org/openqa/selenium/grid/node/local/local-spotbugs/test.log
    2512:  /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/java/src/org/openqa/selenium/grid/node/local/local-spotbugs/test_attempts/attempt_1.log
    2513:  (20:40:55) �[32mINFO: �[0mFrom Testing //java/src/org/openqa/selenium/grid/node/local:local-spotbugs:
    2514:  ==================== Test output for //java/src/org/openqa/selenium/grid/node/local:local-spotbugs:
    2515:  H I Dm: Found reliance on default encoding in org.openqa.selenium.grid.node.local.LocalNode.writeStatusToFile(NodeStatus): String.getBytes()  At LocalNode.java:[line 1126]
    2516:  H I Dm: Found reliance on default encoding in org.openqa.selenium.grid.node.local.LocalNode.writeSessionHistoryToFile(): String.getBytes()  At LocalNode.java:[line 1195]
    2517:  Execution result: https://gypsum.cluster.engflow.com/actions/executions/ChAEAlOdAO5QlYblP_yU6sdiEgdkZWZhdWx0GiUKIKDa0nH8qfkM_8lpR0u4ux4UlyYOlLcrj9szAqqQXNbqELwD
    2518:  ================================================================================
    2519:  ==================== Test output for //java/src/org/openqa/selenium/grid/node/local:local-spotbugs:
    2520:  H I Dm: Found reliance on default encoding in org.openqa.selenium.grid.node.local.LocalNode.writeStatusToFile(NodeStatus): String.getBytes()  At LocalNode.java:[line 1126]
    2521:  H I Dm: Found reliance on default encoding in org.openqa.selenium.grid.node.local.LocalNode.writeSessionHistoryToFile(): String.getBytes()  At LocalNode.java:[line 1195]
    2522:  Execution result: https://gypsum.cluster.engflow.com/actions/executions/ChAEAlOdAO5QlYblP_yU6sdiEgdkZWZhdWx0GiUKIKDa0nH8qfkM_8lpR0u4ux4UlyYOlLcrj9szAqqQXNbqELwD
    2523:  ================================================================================
    2524:  (20:41:01) �[32m[16,033 / 16,105]�[0m 2002 / 2369 tests, �[31m�[1m5 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge; 86s remote, remote-cache ... (8 actions, 7 running)
    2525:  (20:41:06) �[32m[16,038 / 16,105]�[0m 2006 / 2369 tests, �[31m�[1m5 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge; 91s remote, remote-cache ... (4 actions, 3 running)
    2526:  (20:41:11) �[32m[16,044 / 16,234]�[0m 2007 / 2369 tests, �[31m�[1m5 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge; 96s remote, remote-cache ... (49 actions, 6 running)
    2527:  (20:41:18) �[32m[16,045 / 16,308]�[0m 2007 / 2369 tests, �[31m�[1m5 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge; 103s remote, remote-cache ... (50 actions, 6 running)
    2528:  (20:41:24) �[32m[16,048 / 16,311]�[0m 2008 / 2369 tests, �[31m�[1m5 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge; 108s remote, remote-cache ... (50 actions, 8 running)
    2529:  (20:41:29) �[32m[16,049 / 16,312]�[0m 2008 / 2369 tests, �[31m�[1m5 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge; 113s remote, remote-cache ... (50 actions, 8 running)
    2530:  (20:41:34) �[32m[16,050 / 16,313]�[0m 2008 / 2369 tests, �[31m�[1m5 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge; 118s remote, remote-cache ... (50 actions, 8 running)
    2531:  (20:41:39) �[32m[16,050 / 16,313]�[0m 2008 / 2369 tests, �[31m�[1m5 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge; 124s remote, remote-cache ... (50 actions, 9 running)
    2532:  (20:41:44) �[32m[16,052 / 16,314]�[0m 2009 / 2369 tests, �[31m�[1m5 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge; 129s remote, remote-cache ... (50 actions, 8 running)
    2533:  (20:41:54) �[32m[16,054 / 16,317]�[0m 2009 / 2369 tests, �[31m�[1m5 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge; 138s remote, remote-cache ... (50 actions, 8 running)
    2534:  (20:41:59) �[32m[16,054 / 16,317]�[0m 2009 / 2369 tests, �[31m�[1m5 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge; 143s remote, remote-cache ... (50 actions, 8 running)
    2535:  (20:42:02) �[31m�[1mFAIL: �[0m//java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge (see /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/java/test/org/openqa/selenium/bidi/storage/StorageCommandsTest-edge/test.log)
    2536:  �[31m�[1mFAILED: �[0m//java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge (Summary)
    2537:  /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/java/test/org/openqa/selenium/bidi/storage/StorageCommandsTest-edge/test.log
    2538:  /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/java/test/org/openqa/selenium/bidi/storage/StorageCommandsTest-edge/test_attempts/attempt_1.log
    2539:  (20:42:02) �[32mINFO: �[0mFrom Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge:
    2540:  ==================== Test output for //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge:
    2541:  Failures: 1
    2542:  1) canGetAllCookies() (org.openqa.selenium.bidi.storage.StorageCommandsTest)
    2543:  org.opentest4j.AssertionFailedError: 
    2544:  Expecting value to be true but was false
    2545:  at org.openqa.selenium.bidi.storage.StorageCommandsTest.canGetAllCookies(StorageCommandsTest.java:283)
    2546:  Execution result: https://gypsum.cluster.engflow.com/actions/executions/ChA-6W_NpUFQ54Dgk2XNuH38EgdkZWZhdWx0GiUKIIQa1mN7CUp_CKvSuES5HS0yYvJjsUhm4fIGi0g59LhNELwD
    2547:  ================================================================================
    2548:  ==================== Test output for //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-edge:
    2549:  Failures: 1
    2550:  1) canGetAllCookies() (org.openqa.selenium.bidi.storage.StorageCommandsTest)
    2551:  org.opentest4j.AssertionFailedError: 
    2552:  Expecting value to be true but was false
    2553:  at org.openqa.selenium.bidi.storage.StorageCommandsTest.canGetAllCookies(StorageCommandsTest.java:283)
    2554:  Execution result: https://gypsum.cluster.engflow.com/actions/executions/ChA-6W_NpUFQ54Dgk2XNuH38EgdkZWZhdWx0GiUKIIQa1mN7CUp_CKvSuES5HS0yYvJjsUhm4fIGi0g59LhNELwD
    2555:  ================================================================================
    2556:  (20:42:06) �[32m[16,056 / 16,317]�[0m 2011 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/script:ScriptCommandsTest-edge-remote; 56s remote, remote-cache ... (50 actions, 9 running)
    2557:  (20:42:14) �[32m[16,058 / 16,317]�[0m 2013 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/script:ScriptCommandsTest-edge-remote; 64s remote, remote-cache ... (50 actions, 8 running)
    2558:  (20:42:19) �[32m[16,059 / 16,317]�[0m 2014 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/script:ScriptCommandsTest-edge-remote; 69s remote, remote-cache ... (50 actions, 10 running)
    2559:  (20:42:28) �[32m[16,059 / 16,317]�[0m 2014 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/script:ScriptCommandsTest-edge-remote; 79s remote, remote-cache ... (50 actions, 10 running)
    2560:  (20:42:34) �[32m[16,060 / 16,317]�[0m 2015 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/script:ScriptCommandsTest-edge-remote; 84s remote, remote-cache ... (50 actions, 10 running)
    2561:  (20:42:39) �[32m[16,062 / 16,318]�[0m 2015 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/script:ScriptCommandsTest-edge-remote; 89s remote, remote-cache ... (50 actions, 10 running)
    2562:  (20:42:45) �[32m[16,065 / 16,318]�[0m 2017 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/script:ScriptCommandsTest-edge-remote; 96s remote, remote-cache ... (50 actions, 11 running)
    2563:  (20:42:53) �[32m[16,066 / 16,318]�[0m 2018 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/script:ScriptCommandsTest-edge-remote; 103s remote, remote-cache ... (50 actions, 12 running)
    2564:  (20:42:59) �[32m[16,067 / 16,318]�[0m 2019 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m [Sched] Testing //java/test/org/openqa/selenium/interactions:DefaultWheelTest-remote; 107s ... (50 actions, 12 running)
    2565:  (20:43:04) �[32m[16,068 / 16,318]�[0m 2020 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m [Sched] Testing //java/test/org/openqa/selenium/devtools:ConsoleEventsTest-remote; 112s ... (50 actions, 12 running)
    2566:  (20:43:09) �[32m[16,068 / 16,318]�[0m 2020 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m [Sched] Testing //java/test/org/openqa/selenium/devtools:ConsoleEventsTest-remote; 117s ... (50 actions, 12 running)
    2567:  (20:43:18) �[32m[16,069 / 16,318]�[0m 2022 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m [Sched] Testing //java/test/org/openqa/selenium/bidi:BiDiTest-remote; 126s ... (50 actions, 12 running)
    2568:  (20:43:24) �[32m[16,071 / 16,318]�[0m 2023 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m [Sched] Testing //java/test/org/openqa/selenium/edge:EdgeDriverServiceTest-remote; 132s ... (50 actions, 12 running)
    2569:  (20:43:29) �[32m[16,074 / 16,318]�[0m 2026 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m [Sched] Testing //java/test/org/openqa/selenium/devtools:WindowSwitchingTest-edge-remote; 136s ... (50 actions, 12 running)
    2570:  (20:43:34) �[32m[16,075 / 16,318]�[0m 2027 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m [Sched] Building java/test/org/openqa/selenium/grid/router/RouterTest.jar (1 source file); 142s ... (50 actions, 13 running)
    2571:  (20:43:41) �[32m[16,076 / 16,320]�[0m 2027 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m [Sched] Building java/test/org/openqa/selenium/grid/gridui/OverallGridTest.jar (1 source file); 149s ... (50 actions, 13 running)
    2572:  (20:43:46) �[32m[16,079 / 16,320]�[0m 2030 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m [Sched] Building java/test/org/openqa/selenium/grid/router/ProxyWebsocketTest.jar (1 source file); 148s ... (50 actions, 15 running)
    2573:  (20:43:52) �[32m[16,084 / 16,322]�[0m 2034 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m [Sched] Building java/test/org/openqa/selenium/grid/router/ReverseProxyEndToEndTest.jar (1 source file); 132s ... (50 actions, 16 running)
    2574:  (20:43:59) �[32m[16,086 / 16,322]�[0m 2035 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m [Sched] Building java/test/org/openqa/selenium/grid/router/SessionQueueGridTest.jar (1 source file); 134s ... (50 actions, 16 running)
    2575:  (20:44:05) �[32m[16,089 / 16,326]�[0m 2036 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m [Sched] Testing //java/test/org/openqa/selenium/bidi/browser:BrowserCommandsTest-chrome-remote; 119s ... (50 actions, 17 running)
    2576:  (20:44:10) �[32m[16,093 / 16,333]�[0m 2036 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-remote; 95s remote, remote-cache ... (50 actions, 17 running)
    2577:  (20:44:19) �[32m[16,095 / 16,333]�[0m 2038 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-remote; 104s remote, remote-cache ... (50 actions, 16 running)
    2578:  (20:44:24) �[32m[16,099 / 16,335]�[0m 2041 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-remote; 109s remote, remote-cache ... (50 actions, 16 running)
    2579:  (20:44:30) �[32m[16,101 / 16,335]�[0m 2042 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-remote; 115s remote, remote-cache ... (50 actions, 17 running)
    2580:  (20:44:36) �[32m[16,105 / 16,335]�[0m 2046 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-remote; 121s remote, remote-cache ... (50 actions, 19 running)
    2581:  (20:44:41) �[32m[16,106 / 16,335]�[0m 2048 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/storage:StorageCommandsTest-remote; 126s remote, remote-cache ... (50 actions, 19 running)
    2582:  (20:44:46) �[32m[16,111 / 16,335]�[0m 2052 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/browsingcontext:BrowsingContextTest-edge-remote; 120s remote, remote-cache ... (50 actions, 18 running)
    2583:  (20:44:54) �[32m[16,113 / 16,336]�[0m 2053 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/browsingcontext:BrowsingContextTest-edge-remote; 128s remote, remote-cache ... (50 actions, 18 running)
    2584:  (20:44:59) �[32m[16,114 / 16,336]�[0m 2054 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/browsingcontext:BrowsingContextTest-edge-remote; 133s remote, remote-cache ... (50 actions, 19 running)
    2585:  (20:45:05) �[32m[16,115 / 16,336]�[0m 2055 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/browsingcontext:BrowsingContextTest-edge-remote; 139s remote, remote-cache ... (50 actions, 19 running)
    2586:  (20:45:10) �[32m[16,117 / 16,338]�[0m 2056 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/browsingcontext:BrowsingContextTest-edge-remote; 144s remote, remote-cache ... (50 actions, 19 running)
    2587:  (20:45:16) �[32m[16,120 / 16,338]�[0m 2058 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/browsingcontext:BrowsingContextTest-edge-remote; 150s remote, remote-cache ... (50 actions, 22 running)
    2588:  (20:45:21) �[32m[16,124 / 16,338]�[0m 2062 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/browsingcontext:BrowsingContextTest-chrome-remote; 71s remote, remote-cache ... (50 actions, 24 running)
    2589:  (20:45:28) �[32m[16,126 / 16,339]�[0m 2063 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/browsingcontext:BrowsingContextTest-chrome-remote; 78s remote, remote-cache ... (50 actions, 25 running)
    2590:  (20:45:33) �[32m[16,133 / 16,343]�[0m 2066 / 2369 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/test/org/openqa/selenium/bidi/browsingcontext:BrowsingContex...

    @VietND96 VietND96 requested a review from diemol June 8, 2025 20:52
    Copy link
    Member

    @diemol diemol left a comment

    Choose a reason for hiding this comment

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

    I don't understand the goal of the PR.

    I've also thought about keeping a history of the sessions, but my thought was to add an extra column with the session status to the current structure, and retrieve them through a query parameters through the same endpoint.

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    B-grid Everything grid and server related C-java Java Bindings Review effort 4/5
    Projects
    None yet
    Development

    Successfully merging this pull request may close these issues.

    3 participants