Skip to content
Draft
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci-python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:
name: Unit Tests (${{ matrix.python-version }}, ${{ matrix.os }})
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
run: bazel test --local_test_jobs 1 //py:unit
run: bazel test --local_test_jobs 1 //py:unit //py:verify-bidi-protocol

remote-tests:
name: Remote Tests
Expand Down
38 changes: 37 additions & 1 deletion py/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ load("@bazel_skylib//rules:select_file.bzl", "select_file")
load("@py_dev_requirements//:requirements.bzl", "requirement")
load("@rules_pkg//pkg:mappings.bzl", "pkg_files", "strip_prefix")
load("@rules_pkg//pkg:pkg.bzl", "pkg_tar")
load("@rules_python//python:defs.bzl", "py_binary", "py_library")
load("@rules_python//python:defs.bzl", "py_binary", "py_library", "py_test")
load("@rules_python//python:packaging.bzl", "py_package", "py_wheel")
load("@rules_python//python:pip.bzl", "compile_pip_requirements")
load("@rules_python//python/entry_points:py_console_script_binary.bzl", "py_console_script_binary")
Expand Down Expand Up @@ -532,6 +532,7 @@ py_library(
visibility = ["//visibility:public"],
deps = [
":bidi",
":bidi_protocol",
":chrome",
":chromium",
":common",
Expand Down Expand Up @@ -561,6 +562,7 @@ py_package(
"py.selenium",
"py.selenium.common",
"py.selenium.webdriver",
"py.selenium.webdriver._bidi",
"py.selenium.webdriver.chrome",
"py.selenium.webdriver.chromium",
"py.selenium.webdriver.common",
Expand Down Expand Up @@ -748,6 +750,39 @@ generate_bidi(
spec_version = "1.0",
)

# Schema-driven BiDi protocol layer (ADR 17701): generated from the shared BiDi
# schema into the checked-in, internal `selenium/webdriver/_bidi/` package.
# Check-in mode β€” the committed files are the build input; verify-bidi-protocol
# guards them against staleness / hand-edits.
py_binary(
name = "generate-bidi-protocol",
srcs = ["generate_bidi_protocol.py"],
args = ["$(location //javascript/selenium-webdriver:create-bidi-src_schema)"],
data = ["//javascript/selenium-webdriver:create-bidi-src_schema"],
main = "generate_bidi_protocol.py",
visibility = ["//visibility:public"],
)

py_library(
name = "bidi_protocol",
srcs = glob(["selenium/webdriver/_bidi/**/*.py"]),
imports = ["."],
visibility = ["//visibility:public"],
deps = [":exceptions"],
)

py_test(
name = "verify-bidi-protocol",
size = "small",
srcs = [
"generate_bidi_protocol.py",
"verify_bidi_protocol.py",
],
args = ["$(location //javascript/selenium-webdriver:create-bidi-src_schema)"],
data = ["//javascript/selenium-webdriver:create-bidi-src_schema"] + glob(["selenium/webdriver/_bidi/*.py"]),
main = "verify_bidi_protocol.py",
)

py_test_suite(
name = "unit",
size = "small",
Expand Down Expand Up @@ -1036,6 +1071,7 @@ FEATURE_SUITE_DEFS = {
target_compatible_with = BROWSERS[browser]["target_compatible_with"],
test_suffix = "%s-bidi" % browser,
deps = [
":bidi_protocol", # bidi_protocol_tests.py imports the generated _bidi layer directly
":common_alert", # bidi_browsing_context_tests.py calls EC.alert_is_present()
":init-tree",
":webserver",
Expand Down
Loading
Loading