-
- Notifications
You must be signed in to change notification settings - Fork 2.6k
Docker: Build Node/Standalone includes browser ChromeForTesting #3014
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
Conversation
PR Compliance Guide 🔍(Compliance updated until commit 0f25a58)Below is a summary of compliance checks for this PR:
Compliance status legend🟢 - Fully Compliant🟡 - Partial Compliant 🔴 - Not Compliant ⚪ - Requires Further Human Verification 🏷️ - Compliance label Previous compliance checksCompliance check up to commit a97b3b7
| |||||||||||||||||||||||||||||||||||||||||||||||||
a97b3b7 to 4d9c085 Compare PR Code Suggestions ✨Explore these optional code suggestions:
| ||||||||||||||||||
15ad3b0 to 66f8e63 Compare Signed-off-by: Viet Nguyen Duc <nguyenducviet4496@gmail.com>
66f8e63 to 0f25a58 Compare
User description
Thanks for contributing to the Docker-Selenium project!
A PR well described will help maintainers to quickly review and merge it
Before submitting your PR, please check our contributing guidelines, applied for this repository.
Avoid large PRs, help reviewers by making them as simple and short as possible.
Description
Fixes #3013
Chrome for Testing Support
Overview
The
chrome-for-testingbranch extends the Docker Selenium images to ship Google Chrome for Testing (CFT) alongside the existing stable Chrome builds. CFT provides reproducible binaries that align with ChromeDriver versions, and the branch introduces everything required to build, tag, test, and release those images through the existing automation.Image Build Changes
NodeChrome/Dockerfilenow acceptsINSTALL_CFTandCFT_VERSIONbuild arguments and emits aCHROME_FOR_TESTINGflag so runtime consumers can detect when the CFT binary is present.NodeChrome/install-chrome-for-testing.sh) pulls the requested version fromchrome-for-testing-public, installs its dependencies from the bundleddeb.depsmanifest, and symlinks the binary to/usr/bin/google-chrome.chrome-for-testing,standalone_chrome-for-testing, plusdev,beta, andcanarychannels). The targets are guarded so they only run onlinux/amd64, which is the sole platform CFT currently supports.Release and Tagging Flow
tag_and_push_browser_images.shunderstands a newchrome-for-testingbrowser type and produces tags based on both the long and short Chrome/ChromeDriver version pairs as well as the build date and Grid revision.generate_release_notes.shnow records the installed CFT version next to the other browser artifacts when preparing release notes.Makefilerelease recipes push the new images for every tagging cadence (latest, semver, and legacy tags).Version Management Automation
tests/build-backward-compatible/browser-matrix.ymlcarriesCFT_VERSIONentries per Chrome major version so the automation can map Grid releases to the correct browser payload.tests/build-backward-compatible/fetch_chrome_for_testing_version.pypopulates those entries fromknown-good-versions.json, filtered to stable line releases.tests/build-backward-compatible/update_workflow_versions.pynow collects CFT majors, writes them into workflow matrices, and keeps the most recent versions to ensure CFT builds are kept up to date..github/workflows/release-chrome-for-testing-versions.yml) to build arbitrary CFT majors, while the existing Chrome/Edge/Firefox workflows were extended with the latest major defaults. The dev/beta updater workflow also schedules CFTdev,beta, andcanarychannels.Test Coverage
tests/test.pymaps the new image names so existing Selenium smoke suites exercise the CFT variants.Makefileincludestest_chrome-for-testing*targets that reuse the grid bootstrap harness for node, standalone, and Java bindings.tests/SeleniumTests/__init__.pynow guards against an empty download list before asserting on managed downloads, preventing flakiness introduced by CFT runs.Usage Notes
make chrome-for-testingormake standalone_chrome-for-testing; append_dev,_beta, or_canaryfor pre-release channels.make test_chrome-for-testing(and the standalone variants) to validate the images locally.Deploy specific Chrome for Testing versionworkflow when releasing historical majors; it bootstraps the build, runs the Selenium test suites, and prepares changelog artifacts.make update_browser_versions_matrix,make tag_and_push_browser_images, andgenerate_release_notes.sh) now cover Chrome for Testing automatically, so downstream processes pick up the new artifacts without further changes.Motivation and Context
Types of changes
Checklist
PR Type
Enhancement
Description
Add Chrome for Testing (CFT) Docker image support
Create installation script for Chrome for Testing browser
Integrate CFT into build, test, and release workflows
Update browser matrix with CFT versions for all supported Chrome versions
Diagram Walkthrough
File Walkthrough
11 files
New Chrome for Testing installation scriptAdd CFT build arguments and conditional installationAdd CFT build targets and test commandsAdd CFT image tagging and push logicInclude CFT version in release notesNew workflow for CFT version releasesAdd CFT dev/beta/canary channel buildsNew script to fetch CFT versions from APIAdd CFT version filtering and workflow updatesAdd CFT build and tag logic to bootstrapAdd CFT image mappings to test configuration4 files
Update Chrome version range to 142Update Firefox version range to 144Update Edge version range to 141Add CFT versions for all Chrome major versions1 files
Fix download file test race condition