From 923e18114d1a47ed2d1e168fc9f486f6f2d920d7 Mon Sep 17 00:00:00 2001 From: Titus Fortner Date: Fri, 8 May 2026 12:13:51 +0200 Subject: [PATCH] [build] add test to prevent updating pinned chrome version before cdp --- common/BUILD.bazel | 2 ++ .../org/openqa/selenium/devtools/BUILD.bazel | 2 ++ scripts/BUILD.bazel | 11 ++++++++- scripts/pinned_browsers_test.py | 23 +++++++++++++++++++ 4 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 scripts/pinned_browsers_test.py diff --git a/common/BUILD.bazel b/common/BUILD.bazel index f267704b2dd06..068f7e768d410 100644 --- a/common/BUILD.bazel +++ b/common/BUILD.bazel @@ -2,6 +2,8 @@ load("@bazel_skylib//rules:common_settings.bzl", "bool_flag") package(default_visibility = ["//visibility:public"]) +exports_files(["repositories.bzl"]) + bool_flag( name = "pin_browsers", build_setting_default = True, diff --git a/java/src/org/openqa/selenium/devtools/BUILD.bazel b/java/src/org/openqa/selenium/devtools/BUILD.bazel index 5390e18c811e2..d929b84e2d578 100644 --- a/java/src/org/openqa/selenium/devtools/BUILD.bazel +++ b/java/src/org/openqa/selenium/devtools/BUILD.bazel @@ -1,6 +1,8 @@ load("//common:defs.bzl", "copy_file") load("//java:defs.bzl", "artifact", "java_binary", "java_library") +exports_files(["versions.bzl"]) + GENERATOR_SOURCES = [ "CdpClientGenerator.java", ] diff --git a/scripts/BUILD.bazel b/scripts/BUILD.bazel index 670d27ea0cd6a..5156f6e072b8f 100644 --- a/scripts/BUILD.bazel +++ b/scripts/BUILD.bazel @@ -1,5 +1,5 @@ load("@py_dev_requirements//:requirements.bzl", "requirement") -load("@rules_python//python:defs.bzl", "py_binary") +load("@rules_python//python:defs.bzl", "py_binary", "py_test") load("//java:defs.bzl", "artifact", "java_binary") py_binary( @@ -11,6 +11,15 @@ py_binary( ], ) +py_test( + name = "pinned_browsers_test", + srcs = ["pinned_browsers_test.py"], + data = [ + "//common:repositories.bzl", + "//java/src/org/openqa/selenium/devtools:versions.bzl", + ], +) + py_binary( name = "selenium_manager", srcs = ["selenium_manager.py"], diff --git a/scripts/pinned_browsers_test.py b/scripts/pinned_browsers_test.py new file mode 100644 index 0000000000000..eac6e0fc4418c --- /dev/null +++ b/scripts/pinned_browsers_test.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python + +import re +from pathlib import Path + +root = Path(__file__).resolve().parents[1] +repositories = (root / "common/repositories.bzl").read_text() +versions = (root / "java/src/org/openqa/selenium/devtools/versions.bzl").read_text() + +chrome_versions = set( + re.findall( + r'name = "(?:linux|mac)_chrome",\s+url = "[^"]+/(\d+)\.[^"]+/(?:linux64|mac-arm64)/chrome-[^"]+\.zip"', + repositories, + ) +) +devtools_versions = set(re.findall(r'"v(\d+)"', versions)) +unmatched_chrome_versions = chrome_versions - devtools_versions + +if unmatched_chrome_versions: + raise AssertionError( + f"Stable pinned Chrome versions {sorted(chrome_versions)} must be present in " + "CDP_VERSIONS; found {sorted(devtools_versions)}. " + )