Skip to content

Conversation

@titusfortner
Copy link
Member

@titusfortner titusfortner commented Dec 30, 2025

User description

🔗 Related Issues

Python implementation of #16809

We are mostly relying on RBE to tell us if there is a problem, this is supposed to be extra information that strikes a good balance between information and execution time.

💥 What does this PR do?

  • First, I made it so that remote isn't tied to one browser. Bazel supports chrome and firefox, but this is quickly adjustable

  • ci.yml kicks off on every commit. It runs the new and improved check-bazel-targets.sh

  • Instead of just checking to see if there are any py targets and running the whole ci-python workflow, the unique set of applicable test targets are passed from the script to ci-python.yml and browser tests are only run on those

  • Additionally, docs/steep/unit tests are only run if the PR includes "[py]" or is executed manually (passed into ci-python.yml from ci.yml with a run-full-suite argument.

  • Even if tagged [py], if only a subset of python tests are matched, only those will be run

  • Removed build instead of gating all tests on it. Most of the build is executed by the applicable tests as necessary. If there is something weird that breaks building, it'll get detected in nightly run

  • As far as browser tests changed, it removes the edge tests for now for consistency with other bindings

💡 Additional Considerations

We may want to filter this further, and I'd like to add testing on beta versions of chrome/firefox
Is there a reason why the remote tests are running on Windows and not in RBE? Can we remove skip-rbe and try to run more things in RBE?


PR Type

Enhancement, Tests


Description

  • Decouple remote testing from specific browser driver

  • Filter Python tests by affected files in CI workflow

  • Conditionally run docs/typing/unit tests on [py] tag

  • Generate separate remote test targets for Chrome and Firefox

  • Remove build job dependency from test execution


Diagram Walkthrough

flowchart LR
  A["CI Workflow"] -->|"check-bazel-targets.sh"| B["Affected Files"]
  B -->|"bazel query"| C["Test Targets"]
  C -->|"targets output"| D["ci-python.yml"]
  D -->|"run-full-suite"| E["Docs/Typing/Unit Tests"]
  D -->|"filter-targets"| F["Browser Tests"]
  F -->|"--remote flag"| G["Remote Driver"]
  G -->|"Chrome/Firefox"| H["Test Execution"]
Loading

File Walkthrough

Relevant files
Enhancement
conftest.py
Decouple remote testing from driver class                               

py/conftest.py

  • Removed remote from static drivers list and added --remote
    command-line option
  • Decoupled remote testing from driver class, now uses is_remote
    property
  • Updated _initialize_driver() to use webdriver.Remote() when --remote
    flag is set
  • Simplified fixture logic in firefox_options and chromium_options to
    check --remote flag instead of driver class
  • Removed remote-specific option handling and
    SupportedBidiDrivers.remote entry
+33/-31 
check-bazel-targets.sh
Improve target filtering with universe limits                       

scripts/github-actions/check-bazel-targets.sh

  • Added strict error handling with set -euo pipefail
  • Limited universe to binding roots only using BINDINGS_UNIVERSE
    variable
  • Fixed bazel query to properly map changed files to targets
  • Excluded manual test tags from results
  • Added deduplication of returned targets
+23/-14 
ci-python.yml
Refactor CI workflow with conditional test execution         

.github/workflows/ci-python.yml

  • Added workflow inputs for targets and run-full-suite parameters
  • Removed build job dependency from all test jobs
  • Made docs, typing, and unit-tests conditional on run-full-suite input
  • Added new filter-targets job to filter targets for Python
  • Replaced test-remote with test-chrome-remote and test-firefox-remote
    targets
  • Changed browser matrix from [chrome, firefox, chrome-bidi, edge] to
    [chrome, firefox, chrome-bidi, chrome-remote]
  • Updated test execution to use tag filters instead of hardcoded test
    targets
+45/-23 
ci.yml
Add target filtering to Python workflow trigger                   

.github/workflows/ci.yml

  • Pass targets and run-full-suite outputs from check job to Python
    workflow
  • Set run-full-suite to true only for scheduled runs, manual dispatch,
    or [py] tag in PR title
  • Removed commit message check for [py] tag
+9/-1     
BUILD.bazel
Generate per-browser remote test targets                                 

py/BUILD.bazel

  • Replaced single test-remote target with generated targets for Chrome
    and Firefox
  • Added --remote flag to test arguments instead of --driver=remote
  • Added browser-specific test sources and arguments to remote test
    targets
  • Added tag filters chrome-remote and firefox-remote for test selection
  • Removed Edge from remote tests for consistency
+37/-27 

@selenium-ci selenium-ci added C-py Python Bindings B-build Includes scripting, bazel and CI integrations labels Dec 30, 2025
@qodo-code-review
Copy link
Contributor

qodo-code-review bot commented Dec 30, 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
🟡
🎫 #16809
🟢 Ensure test results are reported/organized by binding (maintainer ownership).
🔴 Add upstream browser regression detection (beta browser testing).
Standardize or add missing target categories per binding (e.g., remote execution, beta
versions, etc.).
Per-PR coverage plan includes Windows/macOS/Linux GitHub Actions variations, including
Selenium Manager and alternate interpreter unit tests where applicable.
Track or respect skip mechanisms like skip-rbe and .skipped-tests as part of the plan.
Keep per-PR CI signal fast and scoped to the change by filtering jobs/tests based on
affected Bazel targets.
Improve GitHub Actions granularity so changes trigger only the relevant binding/category
workflows rather than full suites unnecessarily.
Scheduled (GHA) runs should execute broader coverage compared to per-PR filtered runs.
🟡
🎫 #1234
🟡
🎫 #5678
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: 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: Robust Error Handling and Edge Case Management

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

Status:
Incorrect bazel query: The script attempts to map changed files to Bazel targets but runs bazel query with the
literal string file (and suppresses errors), so it can silently produce incorrect or empty
target sets instead of reliably handling failures and edge cases.

Referred Code
# Map changed files to target labels
bazel_targets=()
for file in $affected_files; do
  if query_output=$(bazel query --keep_going --noshow_progress "file" 2>/dev/null); then
    bazel_targets+=(${query_output})
  fi
done

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:
Remote config validation: When --remote is set the code instantiates webdriver.Remote(**kwargs) without showing how
the remote endpoint/capabilities are validated or constrained, which may be safe if
configured elsewhere but cannot be confirmed from this diff alone.

Referred Code
@property
def is_remote(self):
    return self._request.config.getoption("remote")

def _initialize_driver(self):
    kwargs = {}
    if self.options is not None:
        kwargs["options"] = self.options
    if self.is_remote:
        # Use Remote driver with the specified browser's options
        return webdriver.Remote(**kwargs)
    if self.driver_path is not None:
        kwargs["service"] = self.service
    return getattr(webdriver, self.driver_class)(**kwargs)

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 30, 2025

PR Code Suggestions ✨

Latest suggestions up to 6f7fd0d

CategorySuggestion                                                                                                                                    Impact
Possible issue
Provide remote endpoint for driver

Pass the remote server URL to webdriver.Remote via the command_executor argument
to ensure tests connect to the correct endpoint.

py/conftest.py [306-308]

 if self.is_remote:
     # Use Remote driver with the specified browser's options
-    return webdriver.Remote(**kwargs)
+    remote_url = os.environ.get("SELENIUM_REMOTE_URL", "http://localhost:4444")
+    return webdriver.Remote(command_executor=remote_url, **kwargs)
  • Apply / Chat
Suggestion importance[1-10]: 9

__

Why: The suggestion correctly identifies that webdriver.Remote() is called without a command_executor, which would cause remote tests to fail by trying to connect to a hardcoded default address instead of the dynamically started grid server.

High
Force correct browser selection

Add the --driver=%s argument to the remote test suites in py/BUILD.bazel to
ensure each suite runs against the correct browser.

py/BUILD.bazel [528-531]

 args = [
     "--instafail",
     "--remote",
+    "--driver=%s" % browser,
 ] + BROWSERS[browser]["args"],
  • Apply / Chat
Suggestion importance[1-10]: 9

__

Why: The suggestion correctly points out that the new remote test suites are missing the --driver argument, which would cause all remote tests to run against the default browser (Chrome) instead of the intended one (e.g., Firefox), leading to incorrect test execution.

High
Learned
best practice
Guard PR-only workflow fields

Guard access to github.event.pull_request.title so the workflow doesn't rely on
a PR-only field for non-PR events; use a null-safe fallback or an explicit PR
presence check.

.github/workflows/ci.yml [81-93]

 run-full-suite: >-
   ${{
     github.event_name == 'schedule' ||
     github.event_name == 'workflow_dispatch' ||
     github.event_name == 'workflow_call' ||
-    contains(github.event.pull_request.title, '[py]')
+    contains(github.event.pull_request.title || '', '[py]')
   }}
 if: >
   github.event_name == 'schedule' ||
   github.event_name == 'workflow_dispatch' ||
   github.event_name == 'workflow_call' ||
   contains(needs.check.outputs.targets, '//py') ||
-  contains(github.event.pull_request.title, '[py]')
+  contains(github.event.pull_request.title || '', '[py]')
  • Apply / Chat
Suggestion importance[1-10]: 6

__

Why:
Relevant best practice - Add explicit validation/guards at GitHub Actions integration boundaries (e.g., PR-only fields like github.event.pull_request.title) before using them in expressions.

Low
Centralize repeated remote-test gating

Extract the repeated “remote directory requires --remote” check into a small
helper used by driver, firefox_options, and chromium_options to keep the
behavior consistent and easier to update.

py/conftest.py [332-334]

+def _skip_if_remote_tests_without_flag(request):
+    if request.node.path.parts[-2] == "remote" and not request.config.getoption("remote"):
+        pytest.skip("Remote tests require the --remote flag")
+
 # skip tests in the 'remote' directory if not running with --remote flag
-if request.node.path.parts[-2] == "remote" and not selenium_driver.is_remote:
-    pytest.skip("Remote tests require the --remote flag")
+_skip_if_remote_tests_without_flag(request)
  • Apply / Chat
Suggestion importance[1-10]: 5

__

Why:
Relevant best practice - Reduce duplication by centralizing repeated logic (e.g., remote-test gating checks) into a shared helper.

Low
  • Update

Previous suggestions

Suggestions up to commit 84bc272
CategorySuggestion                                                                                                                                    Impact
Possible issue
Fix incorrect and inefficient bazel query

Fix the broken bazel query by using the correct variable for the filename and
improve efficiency by running a single query for all affected files instead of
looping.

scripts/github-actions/check-bazel-targets.sh [17-21]

-for file in $affected_files; do
-  if query_output=$(bazel query --keep_going --noshow_progress "file" 2>/dev/null); then
+if [[ -n "$affected_files" ]]; then
+  # The query below finds all targets that are "path-dependent" on any of the affected files.
+  # This is a more robust way to find which targets need to be tested.
+  query_output=$(bazel query --keep_going --noshow_progress "somepath(//..., set(${affected_files// / }))" 2>/dev/null)
+  if [[ -n "$query_output" ]]; then
     bazel_targets+=(${query_output})
   fi
-done
+fi
Suggestion importance[1-10]: 10

__

Why: The suggestion correctly identifies a critical bug where the bazel query uses a literal string "file" instead of the loop variable, and proposes a more correct and efficient solution that is crucial for the CI script's functionality.

High
General
Improve shell script robustness for parsing

To prevent potential word-splitting issues, read the targets input into a bash
array instead of iterating over an unquoted variable.

.github/workflows/ci-python.yml [86-98]

 run: |
-  targets="${{ inputs.targets }}"
+  read -r -a targets <<< "${{ inputs.targets }}"
   filtered=()
 
-  for t in $targets; do
+  for t in "${targets[@]}"; do
     [[ "$t" == //py* ]] && filtered+=("$t")
   done
 
   if [ ${#filtered[@]} -eq 0 ]; then
     echo "targets=//py/..." >> "$GITHUB_OUTPUT"
   else
     echo "targets=${filtered[*]}" >> "$GITHUB_OUTPUT"
   fi
Suggestion importance[1-10]: 4

__

Why: The suggestion correctly points out a potential word-splitting issue with an unquoted variable, but the risk is low as bazel targets are unlikely to contain spaces, making this a minor improvement for robustness.

Low

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR refactors how Python tests are filtered and executed in GitHub Actions CI to improve efficiency and granularity of test runs.

Key Changes:

  • Transforms "remote" from a driver type to a command-line flag (--remote), allowing any browser to run tests against a Selenium Grid
  • Enhances check-bazel-targets.sh to intelligently filter test targets based on changed files, enabling targeted test execution
  • Modifies CI workflows to conditionally run full test suites (docs, typing, unit tests) only when explicitly requested or when [py] tag is present, while always running affected browser tests

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
scripts/github-actions/check-bazel-targets.sh Improved Bazel target detection with better error handling and filtering logic for test targets across bindings
py/conftest.py Removed "remote" as a driver type and added --remote flag; updated fixtures to support running any browser remotely
py/BUILD.bazel Refactored remote test targets to generate separate test-<browser>-remote targets for chrome and firefox instead of a single generic remote target
.github/workflows/ci.yml Added targets and run-full-suite parameters to the Python workflow call for conditional test execution
.github/workflows/ci-python.yml Added input handling, target filtering job, and updated browser test matrix to use tag-based filtering with targeted test execution

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@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: Python / Browser Tests (firefox, windows) / Browser Tests (firefox, windows)

Failed stage: Run Bazel [❌]

Failed test name: py/test/selenium/webdriver/common/bidi_emulation_tests.py::test_set_geolocation_override_with_coordinates_in_user_context[firefox]

Failure summary:

The GitHub Action failed because Bazel reported a failing pytest target:
//py:test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py (Windows, Firefox).

Within that target, 4 tests failed with the same error:
-
py/test/selenium/webdriver/common/bidi_emulation_tests.py::test_set_geolocation_override_with_coordinates_in_user_context[firefox]
failed at py/test/selenium/webdriver/common/bidi_emulation_tests.py:151 with TypeError: argument of
type 'NoneType' is not iterable when evaluating assert "error" not in result (meaning result was
None).
-
py/test/selenium/webdriver/common/bidi_emulation_tests.py::test_set_geolocation_override_all_coords[firefox]
failed at py/test/selenium/webdriver/common/bidi_emulation_tests.py:171 with the same TypeError
(result was None).
-
py/test/selenium/webdriver/common/bidi_emulation_tests.py::test_set_geolocation_override_with_multiple_contexts[firefox]
failed at py/test/selenium/webdriver/common/bidi_emulation_tests.py:199 with the same TypeError
(result1 was None).
-
py/test/selenium/webdriver/common/bidi_emulation_tests.py::test_set_geolocation_override_with_multiple_user_contexts[firefox]
failed at py/test/selenium/webdriver/common/bidi_emulation_tests.py:235 with the same TypeError
(result1 was None).
The overall Bazel run ended with Build completed, 1 test FAILED and the job
exited with code 1.

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

591:  �[32mAnalyzing:�[0m 121 targets (212 packages loaded, 8819 targets configured)
592:  �[32mAnalyzing:�[0m 121 targets (214 packages loaded, 8869 targets configured)
593:  �[32mAnalyzing:�[0m 121 targets (214 packages loaded, 8869 targets configured)
594:  �[32mAnalyzing:�[0m 121 targets (214 packages loaded, 8869 targets configured)
595:  �[32mAnalyzing:�[0m 121 targets (216 packages loaded, 8908 targets configured)
596:  �[32mAnalyzing:�[0m 121 targets (216 packages loaded, 8908 targets configured)
597:  �[32mAnalyzing:�[0m 121 targets (218 packages loaded, 8928 targets configured)
598:  �[32mAnalyzing:�[0m 121 targets (218 packages loaded, 8928 targets configured)
599:  �[32mAnalyzing:�[0m 121 targets (220 packages loaded, 9108 targets configured)
600:  �[32mAnalyzing:�[0m 121 targets (230 packages loaded, 9127 targets configured)
601:  �[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:
602:  org.seleniumhq.selenium:selenium-api
603:  org.seleniumhq.selenium:selenium-remote-driver
604:  �[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:
605:  com.google.code.findbugs:jsr305
606:  com.google.errorprone:error_prone_annotations
607:  com.google.guava:guava (versions: 30.1.1-jre, 31.0.1-android)
608:  �[32mAnalyzing:�[0m 121 targets (235 packages loaded, 9163 targets configured)
609:  �[32mAnalyzing:�[0m 121 targets (253 packages loaded, 9367 targets configured)
610:  �[32mAnalyzing:�[0m 121 targets (254 packages loaded, 9381 targets configured)
611:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/org/checkerframework/checker-qual/3.43.0/checker-qual-3.43.0.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
612:  �[32mAnalyzing:�[0m 121 targets (256 packages loaded, 9387 targets configured)
613:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/com/google/dagger/dagger-spi/2.43.2/dagger-spi-2.43.2.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
614:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/com/squareup/javapoet/1.13.0/javapoet-1.13.0.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
615:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/com/google/guava/guava-beta-checker/1.0/guava-beta-checker-1.0.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
616:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/net/ltgt/gradle/incap/incap/0.2/incap-0.2.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
617:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/org/jetbrains/kotlinx/kotlinx-metadata-jvm/0.5.0/kotlinx-metadata-jvm-0.5.0.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
618:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/com/google/guava/failureaccess/1.0.2/failureaccess-1.0.2.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
619:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.0/kotlin-stdlib-jdk7-1.8.0.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
620:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/com/google/guava/guava/33.4.0-jre/guava-33.4.0-jre.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
621:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/com/google/dagger/dagger-compiler/2.43.2/dagger-compiler-2.43.2.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
622:  �[32mAnalyzing:�[0m 121 targets (289 packages loaded, 9547 targets configured)
623:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/com/google/devtools/ksp/symbol-processing-api/1.7.0-1.0.6/symbol-processing-api-1.7.0-1.0.6.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
624:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/com/google/googlejavaformat/google-java-format/1.18.1/google-java-format-1.18.1.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
625:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.11.0/auto-value-annotations-1.11.0.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
626:  �[32mAnalyzing:�[0m 121 targets (328 packages loaded, 9712 targets configured)
627:  �[32mAnalyzing:�[0m 121 targets (328 packages loaded, 9712 targets configured)
628:  �[32mAnalyzing:�[0m 121 targets (328 packages loaded, 9712 targets configured)
629:  �[32mAnalyzing:�[0m 121 targets (337 packages loaded, 9958 targets configured)
630:  �[32mAnalyzing:�[0m 121 targets (351 packages loaded, 10820 targets configured)
631:  �[32mAnalyzing:�[0m 121 targets (373 packages loaded, 12290 targets configured)
632:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.0/kotlin-stdlib-jdk8-1.8.0.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
633:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
634:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.8.0/kotlin-stdlib-common-1.8.0.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
635:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.8.0/kotlin-stdlib-1.8.0.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
636:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/com/google/auto/value/auto-value/1.10.4/auto-value-1.10.4.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
637:  �[32mAnalyzing:�[0m 121 targets (403 packages loaded, 13106 targets configured)
...

675:  �[32m[927 / 3,010]�[0m Creating launcher for //py:test-firefox-test/selenium/webdriver/common/text_handling_tests.py; 0s local ... (3 actions, 2 running)
676:  �[32m[1,135 / 3,061]�[0m Creating launcher for //py:test-firefox-test/selenium/webdriver/common/visibility_tests.py; 0s local ... (2 actions running)
677:  �[32m[1,356 / 3,134]�[0m Building Python zip: //common/devtools:pdl_to_json [for tool]; 0s local ... (3 actions running)
678:  �[32m[1,475 / 3,222]�[0m Building Python zip: //common/devtools:pdl_to_json [for tool]; 1s local ... (3 actions, 2 running)
679:  �[32m[1,656 / 3,304]�[0m Building Python zip: //common/devtools:pdl_to_json [for tool]; 2s local ... (4 actions running)
680:  �[32m[1,720 / 3,355]�[0m Building Python zip: //common/devtools:pdl_to_json [for tool]; 3s local ... (4 actions, 3 running)
681:  �[32m[1,735 / 3,362]�[0m Building Python zip: //common/devtools:pdl_to_json [for tool]; 4s local ... (4 actions running)
682:  �[32mINFO: �[0mFrom Compiling absl/debugging/leak_check.cc [for tool]:
683:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
684:  �[32m[1,736 / 3,362]�[0m Building Python zip: //common/devtools:pdl_to_json [for tool]; 5s local ... (4 actions running)
685:  �[32m[1,738 / 3,362]�[0m Building Python zip: //common/devtools:pdl_to_json [for tool]; 7s local ... (4 actions running)
686:  �[32m[1,739 / 3,362]�[0m Building Python zip: //common/devtools:pdl_to_json [for tool]; 8s local ... (4 actions, 3 running)
687:  �[32mINFO: �[0mFrom Compiling absl/log/internal/nullguard.cc [for tool]:
688:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
689:  �[32m[1,746 / 3,362]�[0m Building Python zip: //common/devtools:pdl_to_json [for tool]; 9s local ... (4 actions, 3 running)
690:  �[32mINFO: �[0mFrom Compiling absl/base/internal/strerror.cc [for tool]:
691:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
...

762:  �[32mINFO: �[0mFrom Compiling absl/time/internal/cctz/src/civil_time_detail.cc [for tool]:
763:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
764:  �[32m[1,859 / 3,362]�[0m Compiling Rust rlib syn v2.0.98 (96 files) [for tool]; 16s local ... (4 actions, 3 running)
765:  �[32m[1,862 / 3,362]�[0m Executing genrule //common/devtools/chromium/v141:js_protocol; 14s local ... (4 actions, 3 running)
766:  �[32mINFO: �[0mFrom Compiling absl/base/log_severity.cc [for tool]:
767:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
768:  �[32m[1,865 / 3,362]�[0m Executing genrule //common/devtools/chromium/v141:js_protocol; 15s local ... (4 actions, 3 running)
769:  �[32m[1,866 / 3,362]�[0m Executing genrule //common/devtools/chromium/v141:js_protocol; 16s local ... (4 actions running)
770:  �[32m[1,868 / 3,362]�[0m Executing genrule //common/devtools/chromium/v141:js_protocol; 17s local ... (4 actions running)
771:  �[32m[1,869 / 3,362]�[0m Executing genrule //common/devtools/chromium/v141:js_protocol; 19s local ... (4 actions running)
772:  �[32mINFO: �[0mFrom Compiling third_party/utf8_range/utf8_range.c [for tool]:
773:  external/protobuf+/third_party/utf8_range/utf8_range.c(32): warning C4141: 'inline': used more than once
774:  external/protobuf+/third_party/utf8_range/utf8_range.c(39): warning C4141: 'inline': used more than once
775:  external/protobuf+/third_party/utf8_range/utf8_range.c(43): warning C4141: 'inline': used more than once
776:  external/protobuf+/third_party/utf8_range/utf8_range.c(178): warning C4141: 'inline': used more than once
777:  �[32m[1,878 / 3,362]�[0m Compiling Rust proc-macro thiserror_impl v1.0.69 (10 files) [for tool]; 6s local ... (4 actions running)
778:  external/protobuf+/upb/mem/arena.c(226): warning C4047: '=': 'uintptr_t' differs in levels of indirection from 'void *'
...

1817:  �[32mINFO: �[0mFrom Compiling src/google/protobuf/compiler/java/lite/enum_field.cc [for tool]:
1818:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
1819:  �[32m[2,994 / 3,362]�[0m Compiling src/google/protobuf/compiler/java/lite/string_field.cc [for tool]; 5s local ... (4 actions running)
1820:  �[32m[2,995 / 3,362]�[0m Compiling src/google/protobuf/compiler/java/lite/string_field.cc [for tool]; 8s local ... (4 actions, 3 running)
1821:  �[32m[2,996 / 3,362]�[0m Compiling src/google/protobuf/compiler/java/lite/string_field.cc [for tool]; 9s local ... (4 actions running)
1822:  �[32mINFO: �[0mFrom Compiling src/google/protobuf/compiler/java/lite/string_field.cc [for tool]:
1823:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
1824:  �[32m[2,997 / 3,362]�[0m Compiling src/google/protobuf/compiler/java/message_serialization.cc [for tool]; 7s local ... (4 actions, 3 running)
1825:  �[32m[2,997 / 3,362]�[0m Compiling src/google/protobuf/compiler/java/message_serialization.cc [for tool]; 8s local ... (4 actions running)
1826:  �[32mINFO: �[0mFrom Compiling src/google/protobuf/compiler/java/message_serialization.cc [for tool]:
1827:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
1828:  �[32m[2,998 / 3,362]�[0m Compiling src/google/protobuf/compiler/java/lite/extension.cc [for tool]; 9s local ... (4 actions, 3 running)
1829:  �[32m[2,999 / 3,362]�[0m Compiling src/google/protobuf/compiler/java/lite/extension.cc [for tool]; 10s local ... (4 actions, 3 running)
1830:  �[32mINFO: �[0mFrom Compiling src/google/protobuf/compiler/java/lite/extension.cc [for tool]:
1831:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
1832:  �[32m[3,000 / 3,362]�[0m Compiling Rust proc-macro thiserror_impl v1.0.69 (10 files) [for tool]; 7s local ... (4 actions, 3 running)
1833:  �[32m[3,000 / 3,362]�[0m Compiling Rust proc-macro thiserror_impl v1.0.69 (10 files) [for tool]; 9s local ... (4 actions running)
1834:  �[32m[3,001 / 3,362]�[0m Compiling src/google/protobuf/compiler/java/lite/primitive_field.cc [for tool]; 7s local ... (4 actions, 3 running)
1835:  �[32m[3,002 / 3,362]�[0m Compiling src/google/protobuf/compiler/java/lite/primitive_field.cc [for tool]; 9s local ... (4 actions running)
1836:  �[32mINFO: �[0mFrom Compiling src/google/protobuf/compiler/java/lite/make_field_gens.cc [for tool]:
1837:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
1838:  �[32m[3,003 / 3,362]�[0m Compiling src/google/protobuf/compiler/java/lite/primitive_field.cc [for tool]; 17s local ... (4 actions, 3 running)
1839:  �[32mINFO: �[0mFrom Compiling src/google/protobuf/compiler/java/lite/primitive_field.cc [for tool]:
1840:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
1841:  �[32m[3,004 / 3,362]�[0m Compiling src/google/protobuf/compiler/java/full/service.cc [for tool]; 15s local ... (4 actions, 3 running)
1842:  �[32mINFO: �[0mFrom Compiling src/google/protobuf/compiler/java/full/service.cc [for tool]:
1843:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
1844:  �[32m[3,005 / 3,362]�[0m Compiling Rust proc-macro thiserror_impl v2.0.17 (11 files) [for tool]; 12s local ... (4 actions, 3 running)
1845:  �[32m[3,008 / 3,362]�[0m Compiling src/google/protobuf/compiler/java/lite/map_field.cc [for tool]; 4s local ... (4 actions running)
...

5406:  �[32m[3,471 / 3,483]�[0m 109 / 121 tests;�[0m Testing //py:test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py; 476s local ... (4 actions, 2 running)
5407:  �[32m[3,471 / 3,483]�[0m 109 / 121 tests;�[0m Testing //py:test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py; 485s local ... (4 actions, 2 running)
5408:  �[32m[3,471 / 3,483]�[0m 109 / 121 tests;�[0m Testing //py:test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py; 499s local ... (4 actions, 3 running)
5409:  �[32m[3,472 / 3,483]�[0m 110 / 121 tests;�[0m Testing //py:test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py; 500s local ... (4 actions, 2 running)
5410:  �[32m[3,472 / 3,483]�[0m 110 / 121 tests;�[0m Testing //py:test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py; 502s local ... (4 actions, 2 running)
5411:  �[32m[3,472 / 3,483]�[0m 110 / 121 tests;�[0m Testing //py:test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py; 510s local ... (4 actions, 2 running)
5412:  �[32m[3,472 / 3,483]�[0m 110 / 121 tests;�[0m Testing //py:test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py; 523s local ... (4 actions, 2 running)
5413:  �[32m[3,473 / 3,483]�[0m 111 / 121 tests;�[0m Testing //py:test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py; 524s local ... (4 actions, 1 running)
5414:  �[32m[3,473 / 3,483]�[0m 111 / 121 tests;�[0m Testing //py:test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py; 526s local ... (4 actions, 1 running)
5415:  �[32m[3,473 / 3,483]�[0m 111 / 121 tests;�[0m Testing //py:test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py; 534s local ... (4 actions, 1 running)
5416:  �[32m[3,473 / 3,483]�[0m 111 / 121 tests;�[0m Testing //py:test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py; 565s local ... (4 actions, 1 running)
5417:  �[32m[3,473 / 3,483]�[0m 111 / 121 tests;�[0m Testing //py:test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py; 625s local ... (4 actions, 1 running)
5418:  �[32m[3,473 / 3,483]�[0m 111 / 121 tests;�[0m Testing //py:test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py; 686s local ... (4 actions, 1 running)
5419:  �[32m[3,473 / 3,483]�[0m 111 / 121 tests;�[0m Testing //py:test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py; 711s local ... (4 actions, 2 running)
5420:  �[31m�[1mFAIL: �[0m//py:test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py (see D:/b/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/py/test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py/test.log)
5421:  �[31m�[1mFAILED: �[0m//py:test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py (Summary)
5422:  D:/b/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/py/test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py/test.log
5423:  D:/b/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/py/test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py/test_attempts/attempt_1.log
5424:  D:/b/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/py/test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py/test_attempts/attempt_2.log
5425:  �[32mINFO: �[0mFrom Testing //py:test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py:
5426:  ==================== Test output for //py:test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py:
5427:  ============================= test session starts =============================
5428:  platform win32 -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0
5429:  rootdir: C:\Users\RUNNER~1\AppData\Local\Temp\Bazel.runfiles_oahf4_cl\runfiles\_main\py
5430:  configfile: pyproject.toml
5431:  plugins: instafail-0.5.0, trio-0.8.0, mock-3.15.1
5432:  collected 34 items
5433:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_emulation_initialized[firefox] PASSED [  2%]
5434:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_coordinates_in_context[firefox] XFAIL [  5%]
5435:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_coordinates_in_user_context[firefox] FAILED [  8%]
5436:  ___ test_set_geolocation_override_with_coordinates_in_user_context[firefox] ___
5437:  driver = <selenium.webdriver.firefox.webdriver.WebDriver (session="77e2cb5b-6016-473b-83a8-4ec3ce27eecb")>
5438:  pages = <conftest.pages.<locals>.Pages object at 0x0000026BD3F8F9A0>
5439:  def test_set_geolocation_override_with_coordinates_in_user_context(driver, pages):
5440:  # Create a user context
5441:  user_context = driver.browser.create_user_context()
5442:  context_id = driver.browsing_context.create(type=WindowTypes.TAB, user_context=user_context)
5443:  driver.switch_to.window(context_id)
5444:  pages.load("blank.html")
5445:  coords = GeolocationCoordinates(45.5, -122.4194, accuracy=10.0)
5446:  driver.emulation.set_geolocation_override(coordinates=coords, user_contexts=[user_context])
5447:  result = get_browser_geolocation(driver, user_context=user_context)
5448:  >       assert "error" not in result, f"Geolocation error: {result.get('error')}"
5449:  E       TypeError: argument of type 'NoneType' is not iterable
5450:  py\test\selenium\webdriver\common\bidi_emulation_tests.py:151: TypeError
5451:  ----------------------------- live log logreport ------------------------------
5452:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5453:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_all_coords[firefox] FAILED [ 11%]
5454:  ______________ test_set_geolocation_override_all_coords[firefox] ______________
5455:  driver = <selenium.webdriver.firefox.webdriver.WebDriver (session="471bb6c4-be59-41be-80f4-f82d59f6bb50")>
5456:  pages = <conftest.pages.<locals>.Pages object at 0x0000026BD2F23940>
5457:  def test_set_geolocation_override_all_coords(driver, pages):
5458:  context_id = driver.current_window_handle
5459:  pages.load("blank.html")
5460:  coords = GeolocationCoordinates(
5461:  45.5, -122.4194, accuracy=10.0, altitude=100.2, altitude_accuracy=5.0, heading=183.2, speed=10.0
5462:  )
5463:  driver.emulation.set_geolocation_override(coordinates=coords, contexts=[context_id])
5464:  result = get_browser_geolocation(driver)
5465:  >       assert "error" not in result, f"Geolocation error: {result.get('error')}"
5466:  E       TypeError: argument of type 'NoneType' is not iterable
5467:  py\test\selenium\webdriver\common\bidi_emulation_tests.py:171: TypeError
5468:  ----------------------------- live log logreport ------------------------------
5469:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5470:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_multiple_contexts[firefox] FAILED [ 14%]
5471:  ________ test_set_geolocation_override_with_multiple_contexts[firefox] ________
5472:  driver = <selenium.webdriver.firefox.webdriver.WebDriver (session="a7b9896e-592d-46e0-ae42-309a055255eb")>
5473:  pages = <conftest.pages.<locals>.Pages object at 0x0000026BD298A380>
5474:  def test_set_geolocation_override_with_multiple_contexts(driver, pages):
5475:  # Create two browsing contexts
5476:  context1_id = driver.browsing_context.create(type=WindowTypes.TAB)
5477:  context2_id = driver.browsing_context.create(type=WindowTypes.TAB)
5478:  coords = GeolocationCoordinates(45.5, -122.4194, accuracy=10.0)
5479:  driver.emulation.set_geolocation_override(coordinates=coords, contexts=[context1_id, context2_id])
5480:  # Test first context
5481:  driver.switch_to.window(context1_id)
5482:  pages.load("blank.html")
5483:  result1 = get_browser_geolocation(driver)
5484:  >       assert "error" not in result1, f"Geolocation error in context1: {result1.get('error')}"
5485:  E       TypeError: argument of type 'NoneType' is not iterable
5486:  py\test\selenium\webdriver\common\bidi_emulation_tests.py:199: TypeError
5487:  ----------------------------- live log logreport ------------------------------
5488:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5489:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_multiple_user_contexts[firefox] FAILED [ 17%]
5490:  _____ test_set_geolocation_override_with_multiple_user_contexts[firefox] ______
5491:  driver = <selenium.webdriver.firefox.webdriver.WebDriver (session="51eb7b71-0204-4a85-ab12-5312bb040ad3")>
5492:  pages = <conftest.pages.<locals>.Pages object at 0x0000026BD66A2F20>
5493:  def test_set_geolocation_override_with_multiple_user_contexts(driver, pages):
5494:  # Create two user contexts
5495:  user_context1 = driver.browser.create_user_context()
5496:  user_context2 = driver.browser.create_user_context()
5497:  context1_id = driver.browsing_context.create(type=WindowTypes.TAB, user_context=user_context1)
5498:  context2_id = driver.browsing_context.create(type=WindowTypes.TAB, user_context=user_context2)
5499:  coords = GeolocationCoordinates(45.5, -122.4194, accuracy=10.0)
5500:  driver.emulation.set_geolocation_override(coordinates=coords, user_contexts=[user_context1, user_context2])
5501:  # Test first user context
5502:  driver.switch_to.window(context1_id)
5503:  pages.load("blank.html")
5504:  result1 = get_browser_geolocation(driver, user_context=user_context1)
5505:  >       assert "error" not in result1, f"Geolocation error in user_context1: {result1.get('error')}"
5506:  E       TypeError: argument of type 'NoneType' is not iterable
5507:  py\test\selenium\webdriver\common\bidi_emulation_tests.py:235: TypeError
5508:  ----------------------------- live log logreport ------------------------------
5509:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5510:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_error[firefox] XFAIL [ 20%]
5511:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_timezone_override_with_context[firefox] PASSED [ 23%]
5512:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_timezone_override_with_user_context[firefox] PASSED [ 26%]
5513:  ------------------------------ live log teardown ------------------------------
5514:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5515:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_timezone_override_using_offset[firefox] XFAIL [ 29%]
5516:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_contexts[firefox-de-DE-u-co-phonebk-de-DE] PASSED [ 32%]
5517:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_contexts[firefox-fr-ca-fr-CA] PASSED [ 35%]
5518:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_contexts[firefox-FR-CA-fr-CA] PASSED [ 38%]
5519:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_contexts[firefox-fR-cA-fr-CA] PASSED [ 41%]
5520:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_contexts[firefox-en-t-zh-en] PASSED [ 44%]
5521:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_user_contexts[firefox-en] PASSED [ 47%]
5522:  ------------------------------ live log teardown ------------------------------
5523:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5524:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_user_contexts[firefox-en-US] PASSED [ 50%]
5525:  ------------------------------ live log teardown ------------------------------
5526:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5527:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_user_contexts[firefox-sr-Latn] PASSED [ 52%]
5528:  ------------------------------ live log teardown ------------------------------
5529:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5530:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_user_contexts[firefox-zh-Hans-CN] PASSED [ 55%]
5531:  ------------------------------ live log teardown ------------------------------
5532:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5533:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_scripting_enabled_with_contexts[firefox] XFAIL [ 58%]
5534:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_scripting_enabled_with_user_contexts[firefox] XFAIL [ 61%]
5535:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_contexts[firefox] PASSED [ 64%]
5536:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-Portrait-portrait-primary-0] PASSED [ 67%]
5537:  ------------------------------ live log teardown ------------------------------
5538:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5539:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-portrait-portrait-secondary-180] PASSED [ 70%]
5540:  ------------------------------ live log teardown ------------------------------
5541:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5542:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-portrait-landscape-primary-90] PASSED [ 73%]
5543:  ------------------------------ live log teardown ------------------------------
5544:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5545:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-portrait-landscape-secondary-270] PASSED [ 76%]
5546:  ------------------------------ live log teardown ------------------------------
5547:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5548:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-Landscape-Portrait-Primary-90] PASSED [ 79%]
5549:  ------------------------------ live log teardown ------------------------------
5550:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5551:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-landscape-portrait-secondary-270] PASSED [ 82%]
5552:  ------------------------------ live log teardown ------------------------------
5553:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5554:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-landscape-landscape-primary-0] PASSED [ 85%]
5555:  ------------------------------ live log teardown ------------------------------
5556:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5557:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-landscape-landscape-secondary-180] PASSED [ 88%]
5558:  ------------------------------ live log teardown ------------------------------
5559:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5560:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_user_agent_override_with_contexts[firefox] PASSED [ 91%]
5561:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_user_agent_override_with_user_contexts[firefox] PASSED [ 94%]
5562:  ------------------------------ live log teardown ------------------------------
5563:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5564:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_network_conditions_offline_with_context[firefox] XFAIL [ 97%]
5565:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_network_conditions_offline_with_user_context[firefox] XFAIL [100%]
5566:  =========================== short test summary info ===========================
5567:  XFAIL py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_coordinates_in_context[firefox] - Firefox BiDi geolocation override does not work with contexts parameter
5568:  XFAIL py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_error[firefox]
5569:  XFAIL py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_timezone_override_using_offset[firefox] - Firefox returns UTC as timezone string in case of offset.
5570:  XFAIL py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_scripting_enabled_with_contexts[firefox] - Not yet supported
5571:  XFAIL py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_scripting_enabled_with_user_contexts[firefox] - Not yet supported
5572:  XFAIL py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_network_conditions_offline_with_context[firefox]
5573:  XFAIL py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_network_conditions_offline_with_user_context[firefox]
5574:  FAILED py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_coordinates_in_user_context[firefox] - TypeError: argument of type 'NoneType' is not iterable
5575:  FAILED py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_all_coords[firefox] - TypeError: argument of type 'NoneType' is not iterable
5576:  FAILED py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_multiple_contexts[firefox] - TypeError: argument of type 'NoneType' is not iterable
5577:  FAILED py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_multiple_user_contexts[firefox] - TypeError: argument of type 'NoneType' is not iterable
5578:  ============= 4 failed, 23 passed, 7 xfailed in 177.87s (0:02:57) =============
5579:  ================================================================================
5580:  ==================== Test output for //py:test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py:
5581:  ============================= test session starts =============================
5582:  platform win32 -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0
5583:  rootdir: C:\Users\RUNNER~1\AppData\Local\Temp\Bazel.runfiles_ydj1ay4s\runfiles\_main\py
5584:  configfile: pyproject.toml
5585:  plugins: instafail-0.5.0, trio-0.8.0, mock-3.15.1
5586:  collected 34 items
5587:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_emulation_initialized[firefox] PASSED [  2%]
5588:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_coordinates_in_context[firefox] XFAIL [  5%]
5589:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_coordinates_in_user_context[firefox] FAILED [  8%]
5590:  ___ test_set_geolocation_override_with_coordinates_in_user_context[firefox] ___
5591:  driver = <selenium.webdriver.firefox.webdriver.WebDriver (session="19bfb966-2231-4ec1-976b-a95c809e06da")>
5592:  pages = <conftest.pages.<locals>.Pages object at 0x0000024533DA3C10>
5593:  def test_set_geolocation_override_with_coordinates_in_user_context(driver, pages):
5594:  # Create a user context
5595:  user_context = driver.browser.create_user_context()
5596:  context_id = driver.browsing_context.create(type=WindowTypes.TAB, user_context=user_context)
5597:  driver.switch_to.window(context_id)
5598:  pages.load("blank.html")
5599:  coords = GeolocationCoordinates(45.5, -122.4194, accuracy=10.0)
5600:  driver.emulation.set_geolocation_override(coordinates=coords, user_contexts=[user_context])
5601:  result = get_browser_geolocation(driver, user_context=user_context)
5602:  >       assert "error" not in result, f"Geolocation error: {result.get('error')}"
5603:  E       TypeError: argument of type 'NoneType' is not iterable
5604:  py\test\selenium\webdriver\common\bidi_emulation_tests.py:151: TypeError
5605:  ----------------------------- live log logreport ------------------------------
5606:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5607:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_all_coords[firefox] FAILED [ 11%]
5608:  ______________ test_set_geolocation_override_all_coords[firefox] ______________
5609:  driver = <selenium.webdriver.firefox.webdriver.WebDriver (session="464bde2d-3441-42e0-bd74-21b9c1197afd")>
5610:  pages = <conftest.pages.<locals>.Pages object at 0x0000024533B89060>
5611:  def test_set_geolocation_override_all_coords(driver, pages):
5612:  context_id = driver.current_window_handle
5613:  pages.load("blank.html")
5614:  coords = GeolocationCoordinates(
5615:  45.5, -122.4194, accuracy=10.0, altitude=100.2, altitude_accuracy=5.0, heading=183.2, speed=10.0
5616:  )
5617:  driver.emulation.set_geolocation_override(coordinates=coords, contexts=[context_id])
5618:  result = get_browser_geolocation(driver)
5619:  >       assert "error" not in result, f"Geolocation error: {result.get('error')}"
5620:  E       TypeError: argument of type 'NoneType' is not iterable
5621:  py\test\selenium\webdriver\common\bidi_emulation_tests.py:171: TypeError
5622:  ----------------------------- live log logreport ------------------------------
5623:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5624:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_multiple_contexts[firefox] FAILED [ 14%]
5625:  ________ test_set_geolocation_override_with_multiple_contexts[firefox] ________
5626:  driver = <selenium.webdriver.firefox.webdriver.WebDriver (session="2ed87271-4e41-48f6-af68-05b92a0918a9")>
5627:  pages = <conftest.pages.<locals>.Pages object at 0x0000024533DA04C0>
5628:  def test_set_geolocation_override_with_multiple_contexts(driver, pages):
5629:  # Create two browsing contexts
5630:  context1_id = driver.browsing_context.create(type=WindowTypes.TAB)
5631:  context2_id = driver.browsing_context.create(type=WindowTypes.TAB)
5632:  coords = GeolocationCoordinates(45.5, -122.4194, accuracy=10.0)
5633:  driver.emulation.set_geolocation_override(coordinates=coords, contexts=[context1_id, context2_id])
5634:  # Test first context
5635:  driver.switch_to.window(context1_id)
5636:  pages.load("blank.html")
5637:  result1 = get_browser_geolocation(driver)
5638:  >       assert "error" not in result1, f"Geolocation error in context1: {result1.get('error')}"
5639:  E       TypeError: argument of type 'NoneType' is not iterable
5640:  py\test\selenium\webdriver\common\bidi_emulation_tests.py:199: TypeError
5641:  ----------------------------- live log logreport ------------------------------
5642:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5643:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_multiple_user_contexts[firefox] FAILED [ 17%]
5644:  _____ test_set_geolocation_override_with_multiple_user_contexts[firefox] ______
5645:  driver = <selenium.webdriver.firefox.webdriver.WebDriver (session="3361e491-35b0-4767-ba00-b4b9f19967b5")>
5646:  pages = <conftest.pages.<locals>.Pages object at 0x000002453418C8E0>
5647:  def test_set_geolocation_override_with_multiple_user_contexts(driver, pages):
5648:  # Create two user contexts
5649:  user_context1 = driver.browser.create_user_context()
5650:  user_context2 = driver.browser.create_user_context()
5651:  context1_id = driver.browsing_context.create(type=WindowTypes.TAB, user_context=user_context1)
5652:  context2_id = driver.browsing_context.create(type=WindowTypes.TAB, user_context=user_context2)
5653:  coords = GeolocationCoordinates(45.5, -122.4194, accuracy=10.0)
5654:  driver.emulation.set_geolocation_override(coordinates=coords, user_contexts=[user_context1, user_context2])
5655:  # Test first user context
5656:  driver.switch_to.window(context1_id)
5657:  pages.load("blank.html")
5658:  result1 = get_browser_geolocation(driver, user_context=user_context1)
5659:  >       assert "error" not in result1, f"Geolocation error in user_context1: {result1.get('error')}"
5660:  E       TypeError: argument of type 'NoneType' is not iterable
5661:  py\test\selenium\webdriver\common\bidi_emulation_tests.py:235: TypeError
5662:  ----------------------------- live log logreport ------------------------------
5663:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5664:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_error[firefox] XFAIL [ 20%]
5665:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_timezone_override_with_context[firefox] PASSED [ 23%]
5666:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_timezone_override_with_user_context[firefox] PASSED [ 26%]
5667:  ------------------------------ live log teardown ------------------------------
5668:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5669:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_timezone_override_using_offset[firefox] XFAIL [ 29%]
5670:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_contexts[firefox-de-DE-u-co-phonebk-de-DE] PASSED [ 32%]
5671:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_contexts[firefox-fr-ca-fr-CA] PASSED [ 35%]
5672:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_contexts[firefox-FR-CA-fr-CA] PASSED [ 38%]
5673:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_contexts[firefox-fR-cA-fr-CA] PASSED [ 41%]
5674:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_contexts[firefox-en-t-zh-en] PASSED [ 44%]
5675:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_user_contexts[firefox-en] PASSED [ 47%]
5676:  ------------------------------ live log teardown ------------------------------
5677:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5678:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_user_contexts[firefox-en-US] PASSED [ 50%]
5679:  ------------------------------ live log teardown ------------------------------
5680:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5681:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_user_contexts[firefox-sr-Latn] PASSED [ 52%]
5682:  ------------------------------ live log teardown ------------------------------
5683:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5684:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_user_contexts[firefox-zh-Hans-CN] PASSED [ 55%]
5685:  ------------------------------ live log teardown ------------------------------
5686:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5687:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_scripting_enabled_with_contexts[firefox] XFAIL [ 58%]
5688:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_scripting_enabled_with_user_contexts[firefox] XFAIL [ 61%]
5689:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_contexts[firefox] PASSED [ 64%]
5690:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-Portrait-portrait-primary-0] PASSED [ 67%]
5691:  ------------------------------ live log teardown ------------------------------
5692:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5693:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-portrait-portrait-secondary-180] PASSED [ 70%]
5694:  ------------------------------ live log teardown ------------------------------
5695:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5696:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-portrait-landscape-primary-90] PASSED [ 73%]
5697:  ------------------------------ live log teardown ------------------------------
5698:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5699:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-portrait-landscape-secondary-270] PASSED [ 76%]
5700:  ------------------------------ live log teardown ------------------------------
5701:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5702:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-Landscape-Portrait-Primary-90] PASSED [ 79%]
5703:  ------------------------------ live log teardown ------------------------------
5704:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5705:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-landscape-portrait-secondary-270] PASSED [ 82%]
5706:  ------------------------------ live log teardown ------------------------------
5707:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5708:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-landscape-landscape-primary-0] PASSED [ 85%]
5709:  ------------------------------ live log teardown ------------------------------
5710:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5711:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-landscape-landscape-secondary-180] PASSED [ 88%]
5712:  ------------------------------ live log teardown ------------------------------
5713:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5714:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_user_agent_override_with_contexts[firefox] PASSED [ 91%]
5715:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_user_agent_override_with_user_contexts[firefox] PASSED [ 94%]
5716:  ------------------------------ live log teardown ------------------------------
5717:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5718:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_network_conditions_offline_with_context[firefox] XFAIL [ 97%]
5719:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_network_conditions_offline_with_user_context[firefox] XFAIL [100%]
5720:  =========================== short test summary info ===========================
5721:  XFAIL py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_coordinates_in_context[firefox] - Firefox BiDi geolocation override does not work with contexts parameter
5722:  XFAIL py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_error[firefox]
5723:  XFAIL py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_timezone_override_using_offset[firefox] - Firefox returns UTC as timezone string in case of offset.
5724:  XFAIL py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_scripting_enabled_with_contexts[firefox] - Not yet supported
5725:  XFAIL py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_scripting_enabled_with_user_contexts[firefox] - Not yet supported
5726:  XFAIL py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_network_conditions_offline_with_context[firefox]
5727:  XFAIL py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_network_conditions_offline_with_user_context[firefox]
5728:  FAILED py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_coordinates_in_user_context[firefox] - TypeError: argument of type 'NoneType' is not iterable
5729:  FAILED py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_all_coords[firefox] - TypeError: argument of type 'NoneType' is not iterable
5730:  FAILED py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_multiple_contexts[firefox] - TypeError: argument of type 'NoneType' is not iterable
5731:  FAILED py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_multiple_user_contexts[firefox] - TypeError: argument of type 'NoneType' is not iterable
5732:  ============= 4 failed, 23 passed, 7 xfailed in 177.36s (0:02:57) =============
5733:  ================================================================================
5734:  ==================== Test output for //py:test-firefox-bidi-test/selenium/webdriver/common/bidi_emulation_tests.py:
5735:  ============================= test session starts =============================
5736:  platform win32 -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0
5737:  rootdir: C:\Users\RUNNER~1\AppData\Local\Temp\Bazel.runfiles_12e0di6d\runfiles\_main\py
5738:  configfile: pyproject.toml
5739:  plugins: instafail-0.5.0, trio-0.8.0, mock-3.15.1
5740:  collected 34 items
5741:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_emulation_initialized[firefox] PASSED [  2%]
5742:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_coordinates_in_context[firefox] XFAIL [  5%]
5743:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_coordinates_in_user_context[firefox] FAILED [  8%]
5744:  ___ test_set_geolocation_override_with_coordinates_in_user_context[firefox] ___
5745:  driver = <selenium.webdriver.firefox.webdriver.WebDriver (session="3ce630ff-b481-4426-9124-56b62fcc0a8f")>
5746:  pages = <conftest.pages.<locals>.Pages object at 0x0000027C210E93F0>
5747:  def test_set_geolocation_override_with_coordinates_in_user_context(driver, pages):
5748:  # Create a user context
5749:  user_context = driver.browser.create_user_context()
5750:  context_id = driver.browsing_context.create(type=WindowTypes.TAB, user_context=user_context)
5751:  driver.switch_to.window(context_id)
5752:  pages.load("blank.html")
5753:  coords = GeolocationCoordinates(45.5, -122.4194, accuracy=10.0)
5754:  driver.emulation.set_geolocation_override(coordinates=coords, user_contexts=[user_context])
5755:  result = get_browser_geolocation(driver, user_context=user_context)
5756:  >       assert "error" not in result, f"Geolocation error: {result.get('error')}"
5757:  E       TypeError: argument of type 'NoneType' is not iterable
5758:  py\test\selenium\webdriver\common\bidi_emulation_tests.py:151: TypeError
5759:  ----------------------------- live log logreport ------------------------------
5760:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5761:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_all_coords[firefox] FAILED [ 11%]
5762:  ______________ test_set_geolocation_override_all_coords[firefox] ______________
5763:  driver = <selenium.webdriver.firefox.webdriver.WebDriver (session="390fbb00-00b0-40d9-ab57-840d17dc79ea")>
5764:  pages = <conftest.pages.<locals>.Pages object at 0x0000027C21851AE0>
5765:  def test_set_geolocation_override_all_coords(driver, pages):
5766:  context_id = driver.current_window_handle
5767:  pages.load("blank.html")
5768:  coords = GeolocationCoordinates(
5769:  45.5, -122.4194, accuracy=10.0, altitude=100.2, altitude_accuracy=5.0, heading=183.2, speed=10.0
5770:  )
5771:  driver.emulation.set_geolocation_override(coordinates=coords, contexts=[context_id])
5772:  result = get_browser_geolocation(driver)
5773:  >       assert "error" not in result, f"Geolocation error: {result.get('error')}"
5774:  E       TypeError: argument of type 'NoneType' is not iterable
5775:  py\test\selenium\webdriver\common\bidi_emulation_tests.py:171: TypeError
5776:  ----------------------------- live log logreport ------------------------------
5777:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5778:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_multiple_contexts[firefox] FAILED [ 14%]
5779:  ________ test_set_geolocation_override_with_multiple_contexts[firefox] ________
5780:  driver = <selenium.webdriver.firefox.webdriver.WebDriver (session="1fc7daf8-808f-4ec7-8cc7-569b1dfcb055")>
5781:  pages = <conftest.pages.<locals>.Pages object at 0x0000027C210E8910>
5782:  def test_set_geolocation_override_with_multiple_contexts(driver, pages):
5783:  # Create two browsing contexts
5784:  context1_id = driver.browsing_context.create(type=WindowTypes.TAB)
5785:  context2_id = driver.browsing_context.create(type=WindowTypes.TAB)
5786:  coords = GeolocationCoordinates(45.5, -122.4194, accuracy=10.0)
5787:  driver.emulation.set_geolocation_override(coordinates=coords, contexts=[context1_id, context2_id])
5788:  # Test first context
5789:  driver.switch_to.window(context1_id)
5790:  pages.load("blank.html")
5791:  result1 = get_browser_geolocation(driver)
5792:  >       assert "error" not in result1, f"Geolocation error in context1: {result1.get('error')}"
5793:  E       TypeError: argument of type 'NoneType' is not iterable
5794:  py\test\selenium\webdriver\common\bidi_emulation_tests.py:199: TypeError
5795:  ----------------------------- live log logreport ------------------------------
5796:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5797:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_multiple_user_contexts[firefox] FAILED [ 17%]
5798:  _____ test_set_geolocation_override_with_multiple_user_contexts[firefox] ______
5799:  driver = <selenium.webdriver.firefox.webdriver.WebDriver (session="54282185-1b88-4efd-8805-6c9d3b6ef17e")>
5800:  pages = <conftest.pages.<locals>.Pages object at 0x0000027C21853AC0>
5801:  def test_set_geolocation_override_with_multiple_user_contexts(driver, pages):
5802:  # Create two user contexts
5803:  user_context1 = driver.browser.create_user_context()
5804:  user_context2 = driver.browser.create_user_context()
5805:  context1_id = driver.browsing_context.create(type=WindowTypes.TAB, user_context=user_context1)
5806:  context2_id = driver.browsing_context.create(type=WindowTypes.TAB, user_context=user_context2)
5807:  coords = GeolocationCoordinates(45.5, -122.4194, accuracy=10.0)
5808:  driver.emulation.set_geolocation_override(coordinates=coords, user_contexts=[user_context1, user_context2])
5809:  # Test first user context
5810:  driver.switch_to.window(context1_id)
5811:  pages.load("blank.html")
5812:  result1 = get_browser_geolocation(driver, user_context=user_context1)
5813:  >       assert "error" not in result1, f"Geolocation error in user_context1: {result1.get('error')}"
5814:  E       TypeError: argument of type 'NoneType' is not iterable
5815:  py\test\selenium\webdriver\common\bidi_emulation_tests.py:235: TypeError
5816:  ----------------------------- live log logreport ------------------------------
5817:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5818:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_error[firefox] XFAIL [ 20%]
5819:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_timezone_override_with_context[firefox] PASSED [ 23%]
5820:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_timezone_override_with_user_context[firefox] PASSED [ 26%]
5821:  ------------------------------ live log teardown ------------------------------
5822:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5823:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_timezone_override_using_offset[firefox] XFAIL [ 29%]
5824:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_contexts[firefox-de-DE-u-co-phonebk-de-DE] PASSED [ 32%]
5825:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_contexts[firefox-fr-ca-fr-CA] PASSED [ 35%]
5826:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_contexts[firefox-FR-CA-fr-CA] PASSED [ 38%]
5827:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_contexts[firefox-fR-cA-fr-CA] PASSED [ 41%]
5828:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_contexts[firefox-en-t-zh-en] PASSED [ 44%]
5829:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_user_contexts[firefox-en] PASSED [ 47%]
5830:  ------------------------------ live log teardown ------------------------------
5831:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5832:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_user_contexts[firefox-en-US] PASSED [ 50%]
5833:  ------------------------------ live log teardown ------------------------------
5834:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5835:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_user_contexts[firefox-sr-Latn] PASSED [ 52%]
5836:  ------------------------------ live log teardown ------------------------------
5837:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5838:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_locale_override_with_user_contexts[firefox-zh-Hans-CN] PASSED [ 55%]
5839:  ------------------------------ live log teardown ------------------------------
5840:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5841:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_scripting_enabled_with_contexts[firefox] XFAIL [ 58%]
5842:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_scripting_enabled_with_user_contexts[firefox] XFAIL [ 61%]
5843:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_contexts[firefox] PASSED [ 64%]
5844:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-Portrait-portrait-primary-0] PASSED [ 67%]
5845:  ------------------------------ live log teardown ------------------------------
5846:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5847:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-portrait-portrait-secondary-180] PASSED [ 70%]
5848:  ------------------------------ live log teardown ------------------------------
5849:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5850:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-portrait-landscape-primary-90] PASSED [ 73%]
5851:  ------------------------------ live log teardown ------------------------------
5852:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5853:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-portrait-landscape-secondary-270] PASSED [ 76%]
5854:  ------------------------------ live log teardown ------------------------------
5855:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5856:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-Landscape-Portrait-Primary-90] PASSED [ 79%]
5857:  ------------------------------ live log teardown ------------------------------
5858:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5859:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-landscape-portrait-secondary-270] PASSED [ 82%]
5860:  ------------------------------ live log teardown ------------------------------
5861:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5862:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-landscape-landscape-primary-0] PASSED [ 85%]
5863:  ------------------------------ live log teardown ------------------------------
5864:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5865:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_screen_orientation_override_with_user_contexts[firefox-landscape-landscape-secondary-180] PASSED [ 88%]
5866:  ------------------------------ live log teardown ------------------------------
5867:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5868:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_user_agent_override_with_contexts[firefox] PASSED [ 91%]
5869:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_user_agent_override_with_user_contexts[firefox] PASSED [ 94%]
5870:  ------------------------------ live log teardown ------------------------------
5871:  ERROR    websocket:_logging.py:77 fin=1 opcode=8 data=b'\x03\xe8' - goodbye
5872:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_network_conditions_offline_with_context[firefox] XFAIL [ 97%]
5873:  py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_network_conditions_offline_with_user_context[firefox] XFAIL [100%]
5874:  =========================== short test summary info ===========================
5875:  XFAIL py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_coordinates_in_context[firefox] - Firefox BiDi geolocation override does not work with contexts parameter
5876:  XFAIL py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_geolocation_override_with_error[firefox]
5877:  XFAIL py\test\selenium\webdriver\common\bidi_emulation_tests.py::test_set_timezone_override_using_offset[firefox] - Firefox returns UTC as timezone string in case of offset.
5878:  XFAIL py\test\selenium\webdr...

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-py Python Bindings Review effort 4/5

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants