Skip to content

[dotnet][rb][java][js][py] Automated Browser Version Update #16213

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

Merged
merged 4 commits into from
Aug 20, 2025

Conversation

selenium-ci
Copy link
Member

@selenium-ci selenium-ci commented Aug 20, 2025

User description

This is an automated pull request to update pinned browsers and drivers

Merge after verify the new browser versions properly passing the tests and no bugs need to be filed


PR Type

Other


Description

  • Update Firefox stable from 141.0.3 to 142.0

  • Update Firefox beta from 142.0b9 to 143.0b1

  • Update Chrome from 139.0.7258.68 to 139.0.7258.138

  • Update corresponding SHA256 checksums for all browsers


Diagram Walkthrough

flowchart LR
  A["Firefox 141.0.3"] --> B["Firefox 142.0"]
  C["Firefox Beta 142.0b9"] --> D["Firefox Beta 143.0b1"]
  E["Chrome 139.0.7258.68"] --> F["Chrome 139.0.7258.138"]
  B --> G["Updated SHA256"]
  D --> G
  F --> G
Loading

File Walkthrough

Relevant files
Configuration changes
repositories.bzl
Browser version and checksum updates                                         

common/repositories.bzl

  • Update Firefox stable version from 141.0.3 to 142.0
  • Update Firefox beta version from 142.0b9 to 143.0b1
  • Update Chrome version from 139.0.7258.68 to 139.0.7258.138
  • Update SHA256 checksums for all browser downloads
+16/-16 

@selenium-ci selenium-ci added the B-build Includes scripting, bazel and CI integrations label Aug 20, 2025
Copy link
Contributor

PR Reviewer Guide 🔍

Here are some key observations to aid the review process:

⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
🧪 No relevant tests
🔒 No security concerns identified
⚡ Recommended focus areas for review

Integrity Check

Verify that all updated SHA256 hashes match the downloaded artifacts for the new URLs across Linux/Mac Firefox stable/beta and Chrome/chromedriver to prevent fetch failures in CI.

http_archive(
    name = "linux_firefox",
    url = "https://ftp.mozilla.org/pub/firefox/releases/142.0/linux-x86_64/en-US/firefox-142.0.tar.xz",
    sha256 = "da8897a6a618e73878e6022a2bece76af509c304c73ae5c53dc523d35cb7bae6",
    build_file_content = """
Platform Parity

Ensure macOS and Linux URLs for Firefox beta and Chrome/chromedriver are aligned to the same versions and that downstream rules using these repositories don’t assume old paths or app names.

    dmg_archive(
        name = "mac_beta_firefox",
        url = "https://ftp.mozilla.org/pub/firefox/releases/143.0b1/mac/en-US/Firefox%20143.0b1.dmg",
        sha256 = "b111b0f4fea5f35280f2aae1e3590613412b57dcb87335d17abf3be32e056675",
        build_file_content = """
load("@aspect_rules_js//js:defs.bzl", "js_library")
package(default_visibility = ["//visibility:public"])

exports_files(["Firefox.app"])

js_library(
    name = "firefox-js",
    data = glob(["Firefox.app/**/*"]),
)
""",
    )

    http_archive(
        name = "linux_geckodriver",
        url = "https://github.com/mozilla/geckodriver/releases/download/v0.36.0/geckodriver-v0.36.0-linux64.tar.gz",
        sha256 = "0bde38707eb0a686a20c6bd50f4adcc7d60d4f73c60eb83ee9e0db8f65823e04",
        build_file_content = """
load("@aspect_rules_js//js:defs.bzl", "js_library")
package(default_visibility = ["//visibility:public"])

exports_files(["geckodriver"])

js_library(
    name = "geckodriver-js",
    data = ["geckodriver"],
)
""",
    )

    http_archive(
        name = "mac_geckodriver",
        url = "https://github.com/mozilla/geckodriver/releases/download/v0.36.0/geckodriver-v0.36.0-macos.tar.gz",
        sha256 = "b5627bfc29801b8752c9f1e7699018963c39c076aab6576dc14fcb1ce7a256f6",
        build_file_content = """
load("@aspect_rules_js//js:defs.bzl", "js_library")
package(default_visibility = ["//visibility:public"])

exports_files(["geckodriver"])

js_library(
    name = "geckodriver-js",
    data = ["geckodriver"],
)
""",
    )

    pkg_archive(
        name = "mac_edge",
        url = "https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/4d599f34-3ef7-4f04-bd4b-6f35be25008c/MicrosoftEdge-139.0.3405.102.pkg",
        sha256 = "c5edb687ac110cabedf989706a6e9fade4f30375ef194f155fade830fc8837be",
        move = {
            "MicrosoftEdge-139.0.3405.102.pkg/Payload/Microsoft Edge.app": "Edge.app",
        },
        build_file_content = """
load("@aspect_rules_js//js:defs.bzl", "js_library")
package(default_visibility = ["//visibility:public"])

exports_files(["Edge.app"])

js_library(
    name = "edge-js",
    data = glob(["Edge.app/**/*"]),
)
""",
    )

    deb_archive(
        name = "linux_edge",
        url = "https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/microsoft-edge-stable_139.0.3405.102-1_amd64.deb",
        sha256 = "ad8e90dec3080065ff64a395bf04a5e9cc6adb8481d4f8829fb6f5a4c5cc7a9b",
        build_file_content = """
load("@aspect_rules_js//js:defs.bzl", "js_library")
package(default_visibility = ["//visibility:public"])

filegroup(
    name = "files",
    srcs = glob(["**/*"]),
)

exports_files(["opt/microsoft/msedge/microsoft-edge"])

js_library(
    name = "edge-js",
    data = [":files"],
)
""",
    )

    http_archive(
        name = "linux_edgedriver",
        url = "https://msedgedriver.microsoft.com/139.0.3405.102/edgedriver_linux64.zip",
        sha256 = "e092178901c011ccfddc0556193742a01f206d71b5bb1a12cc1ba7a243262fc2",
        build_file_content = """
load("@aspect_rules_js//js:defs.bzl", "js_library")
package(default_visibility = ["//visibility:public"])

exports_files(["msedgedriver"])

js_library(
    name = "msedgedriver-js",
    data = ["msedgedriver"],
)
""",
    )

    http_archive(
        name = "mac_edgedriver",
        url = "https://msedgedriver.microsoft.com/139.0.3405.102/edgedriver_mac64.zip",
        sha256 = "98aa637081061ea610c1f70be09fdea6b5f5b3a46c94a87ca291e2285bad1328",
        build_file_content = """
load("@aspect_rules_js//js:defs.bzl", "js_library")
package(default_visibility = ["//visibility:public"])

exports_files(["msedgedriver"])

js_library(
    name = "msedgedriver-js",
    data = ["msedgedriver"],
)
""",
    )

    http_archive(
        name = "linux_chrome",
        url = "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.138/linux64/chrome-linux64.zip",
        sha256 = "a28ed679a017b8042747d81f7855cb86cc71402b268fc843b57533e69a835a17",
        build_file_content = """
load("@aspect_rules_js//js:defs.bzl", "js_library")
package(default_visibility = ["//visibility:public"])

filegroup(
    name = "files",
    srcs = glob(["**/*"]),
)

exports_files(["chrome-linux64/chrome"])

js_library(
    name = "chrome-js",
    data = [":files"],
)
""",
    )
    http_archive(
        name = "mac_chrome",
        url = "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.138/mac-x64/chrome-mac-x64.zip",
        sha256 = "e910233cc746230abb5d9c855a191fceee0729e299ac15cb562260be302fa64b",
        strip_prefix = "chrome-mac-x64",
        patch_cmds = [
            "mv 'Google Chrome for Testing.app' Chrome.app",
            "mv 'Chrome.app/Contents/MacOS/Google Chrome for Testing' Chrome.app/Contents/MacOS/Chrome",
        ],
        build_file_content = """
load("@aspect_rules_js//js:defs.bzl", "js_library")
package(default_visibility = ["//visibility:public"])

exports_files(["Chrome.app"])

js_library(
    name = "chrome-js",
    data = glob(["Chrome.app/**/*"]),
)
""",
    )
    http_archive(
        name = "linux_chromedriver",
        url = "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.138/linux64/chromedriver-linux64.zip",
        sha256 = "b5940d93d97da3d98dba0d4f5a67246b839a8e5634d69a6d625d0ad54bed8bb2",
        strip_prefix = "chromedriver-linux64",

Copy link
Contributor

qodo-merge-pro bot commented Aug 20, 2025

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
High-level
Verify platform parity changes

Bumping Firefox stable/beta and Chrome plus corresponding drivers can introduce
capability or protocol changes that break bindings across languages
(rb/java/js/py) or OS-specific packaging (mac dmg rename, linux tar layout).
Before merging, run the full cross-language, cross-platform CI matrix (including
arm64 where applicable) to confirm no regressions in launch arguments, binary
paths, or driver-browser version compatibility, especially around macOS app
bundle names and chromedriver protocol alignment.

Examples:

common/repositories.bzl [221-229]
    http_archive(
        name = "mac_chrome",
        url = "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.138/mac-x64/chrome-mac-x64.zip",
        sha256 = "e910233cc746230abb5d9c855a191fceee0729e299ac15cb562260be302fa64b",
        strip_prefix = "chrome-mac-x64",
        patch_cmds = [
            "mv 'Google Chrome for Testing.app' Chrome.app",
            "mv 'Chrome.app/Contents/MacOS/Google Chrome for Testing' Chrome.app/Contents/MacOS/Chrome",
        ],

Solution Walkthrough:

Before:

# PR Merge Process
1. Update browser/driver versions and hashes.
2. Create Pull Request.
3. Merge after basic checks.

After:

# PR Merge Process
1. Update browser/driver versions and hashes.
2. Create Pull Request.
3. Run full cross-platform/language CI matrix.
4. Specifically verify against regressions in:
   - Binary paths and launch arguments
   - OS-specific packaging (e.g., macOS .app structure)
   - Driver-to-browser protocol compatibility
5. Merge once all checks pass.
Suggestion importance[1-10]: 9

__

Why: This suggestion correctly identifies the main risk of this PR—potential breakages due to dependency updates—and provides specific, actionable areas to verify, which is crucial for maintaining stability across platforms.

High
General
Remove fragile chromedriver strip_prefix

Chromedriver zips occasionally change the top-level directory name or include
nested folders. Hard-coding strip_prefix = "chromedriver-linux64" risks failing
the repository fetch. Remove the strip_prefix and handle the location in the
generated BUILD or with a patch command.

common/repositories.bzl [242-247]

 http_archive(
     name = "linux_chromedriver",
     url = "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.138/linux64/chromedriver-linux64.zip",
     sha256 = "b5940d93d97da3d98dba0d4f5a67246b839a8e5634d69a6d625d0ad54bed8bb2",
-    strip_prefix = "chromedriver-linux64",
     build_file_content = """
  • Apply / Chat
Suggestion importance[1-10]: 6

__

Why: The suggestion correctly identifies that hardcoding strip_prefix can be brittle and proposes removing it, which improves the robustness and maintainability of the build configuration.

Low
Make mac chromedriver fetch resilient

The mac chromedriver archive may ship with chromedriver-mac-arm64 on Apple
Silicon or change folder names across builds. Using a fixed strip_prefix can
cause fetch failures on different runners. Drop strip_prefix and let the archive
extract as-is; refer to discovered paths in build files if needed.

common/repositories.bzl [260-265]

 http_archive(
     name = "mac_chromedriver",
     url = "https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.138/mac-x64/chromedriver-mac-x64.zip",
     sha256 = "c6e2a630d72e0017649d54f29a93caa617fac0f846c23b2bd6494d8fe92e4479",
-    strip_prefix = "chromedriver-mac-x64",
     build_file_content = """
  • Apply / Chat
Suggestion importance[1-10]: 6

__

Why: The suggestion correctly identifies that hardcoding strip_prefix can be brittle and proposes removing it, which improves the robustness and maintainability of the build configuration.

Low
  • Update

@navin772 navin772 merged commit 66f738e into trunk Aug 20, 2025
32 checks passed
@navin772 navin772 deleted the pinned-browser-updates branch August 20, 2025 12:02
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 Review effort 2/5
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants