Skip to content

Conversation

@selenium-ci
Copy link
Member

@selenium-ci selenium-ci commented Dec 8, 2025

User description

This PR to update Selenium Grid 4.39.0 and backward browser versions


PR Type

Enhancement


Description

  • Update Selenium Grid base version from 4.38.0 to 4.39.0

  • Add browser version 143 to Chrome, Edge, and Firefox workflows

  • Add Firefox version 145 support to test matrix

  • Update Chrome and Edge patch versions for backward compatibility

  • Add Selenium 4.39.0 to test matrix configuration


Diagram Walkthrough

flowchart LR
  A["Selenium 4.38.0"] -->|"Update to"| B["Selenium 4.39.0"]
  B -->|"Extends"| C["Browser Versions"]
  C -->|"Chrome/Edge"| D["Add v143"]
  C -->|"Firefox"| E["Add v145"]
  F["Test Matrix"] -->|"Updated with"| G["4.39.0 config"]
Loading

File Walkthrough

Relevant files
Configuration changes
Makefile
Update Selenium Grid version to 4.39.0                                     

Makefile

  • Update BASE_RELEASE from selenium-4.38.0 to selenium-4.39.0
  • Update BASE_VERSION from 4.38.0 to 4.39.0
  • Update VERSION and MVN_SELENIUM_VERSION from 4.38.0 to 4.39.0
  • Update BASE_VERSION_NIGHTLY from 4.39.0-SNAPSHOT to 4.40.0-SNAPSHOT
+6/-6     
release-chrome-for-testing-versions.yml
Add Chrome for Testing version 143 support                             

.github/workflows/release-chrome-for-testing-versions.yml

  • Add browser version 143 to the default browser-versions list
  • Extends Chrome for Testing supported versions from 142 to 143
+1/-1     
release-chrome-versions.yml
Add Chrome version 143 support                                                     

.github/workflows/release-chrome-versions.yml

  • Add browser version 143 to the default browser-versions list
  • Extends Chrome supported versions from 142 to 143
+1/-1     
release-edge-versions.yml
Add Edge version 143 support                                                         

.github/workflows/release-edge-versions.yml

  • Add browser version 143 to the default browser-versions list
  • Extends Edge supported versions from 142 to 143
+1/-1     
release-firefox-versions.yml
Add Firefox version 145 support                                                   

.github/workflows/release-firefox-versions.yml

  • Add browser version 145 to the default browser-versions list
  • Extends Firefox supported versions from 144 to 145
+1/-1     
browser-matrix.yml
Add Firefox 145 and update Chrome/Edge patch versions       

tests/build-backward-compatible/browser-matrix.yml

  • Add Firefox 145.0.2 with linux/amd64 and linux/arm64 platforms
  • Add Chrome, Edge, and CFT version 143 entries for backward
    compatibility
  • Update Chrome version 142 from 142.0.7444.59 to 142.0.7444.175
  • Update Edge version 142 from 142.0.3595.53 to 142.0.3595.94
+9/-3     
firefox-matrix.yml
Add Firefox version 145 to test matrix                                     

tests/build-backward-compatible/firefox-matrix.yml

  • Add Firefox version 145 with version 145.0.2
+2/-0     
selenium-matrix.yml
Add Selenium 4.39.0 to test matrix                                             

tests/build-backward-compatible/selenium-matrix.yml

  • Add Selenium 4.39.0 configuration with corresponding base release and
    binding version
  • Set browser list to empty array for 4.39.0 entry
+6/-0     

@qodo-code-review
Copy link
Contributor

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
🎫 No ticket provided
  • Create ticket/issue
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
🟢
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: Comprehensive Audit Trails

Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.

Status:
No audit logs: The added configuration changes introduce new build/test matrix entries without any
accompanying audit logging for critical actions, but as these are CI workflow configs
rather than runtime code, confirmation is needed whether separate logging exists in the
pipeline.

Referred Code
'145':
  FIREFOX_VERSION: 145.0.2
  FIREFOX_PLATFORMS: linux/amd64,linux/arm64
'144':
  FIREFOX_VERSION: 144.0.2
  FIREFOX_PLATFORMS: linux/amd64,linux/arm64
'143':
  FIREFOX_VERSION: 143.0.4
  FIREFOX_PLATFORMS: linux/amd64,linux/arm64
  CFT_VERSION: 143.0.7499.40
  CHROME_VERSION: google-chrome-stable=143.0.7499.40-1
  EDGE_VERSION: microsoft-edge-stable=143.0.3650.66-1
'142':
  FIREFOX_VERSION: 142.0.1
  FIREFOX_PLATFORMS: linux/amd64,linux/arm64
  CHROME_VERSION: google-chrome-stable=142.0.7444.175-1
  CFT_VERSION: 142.0.7444.175
  EDGE_VERSION: microsoft-edge-stable=142.0.3595.94-1

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:
No error handling: The newly added default browser version lists modify inputs but add no explicit error
handling for invalid versions or fetch failures, which may be handled elsewhere in the
workflow; verification is needed.

Referred Code
  description: 'Build date in format YYYYMMDD. Must provide if reusing base image'
  required: false
  type: string
  default: '20251101'
browser-name:
  description: 'Browser name to build. E.g: chrome'
  required: true
  type: string
  default: 'chrome'
browser-versions:
  description: 'List browser version to build. E.g: [130, 131]'
  required: true
  default: '[95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143]'
push-image:
  description: 'Push image after testing successfully'
  required: true
  type: boolean

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:
Input validation: The added default version list expands external inputs but adds no explicit validation or
sanity checks within the workflow inputs, which might be enforced by downstream jobs;
needs confirmation.

Referred Code
  description: 'Build date in format YYYYMMDD. Must provide if reusing base image'
  required: false
  type: string
  default: '20251101'
browser-name:
  description: 'Browser name to build. E.g: firefox'
  required: true
  type: string
  default: 'firefox'
browser-versions:
  description: 'List browser version to build. E.g: [130, 131]'
  required: true
  default: '[98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145]'
push-image:
  description: 'Push image after testing successfully'
  required: true
  type: boolean

Learn more about managing compliance generic rules or creating your own custom rules

Compliance status legend 🟢 - Fully Compliant
🟡 - Partial Compliant
🔴 - Not Compliant
⚪ - Requires Further Human Verification
🏷️ - Compliance label

@qodo-code-review
Copy link
Contributor

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Possible issue
Populate empty browser test list

The browser list for the new Selenium version 4.39.0 is empty; populate it with
browser versions to ensure backward compatibility tests are executed for this
new version.

tests/build-backward-compatible/selenium-matrix.yml [8-13]

 4.39.0:
   BASE_RELEASE: selenium-4.39.0
   BASE_VERSION: 4.39.0
   VERSION: 4.39.0
   BINDING_VERSION: 4.39.0
-  browser: []
+  browser:
+    - 120
+    - 119
+    - 118
+    - 117
+    - 116
+    - 115
+    - 114
+    - 113
+    - 112
+    - 111
+    - 110
+    - 109
  • Apply / Chat
Suggestion importance[1-10]: 9

__

Why: The suggestion correctly identifies that an empty browser list for Selenium 4.39.0 will cause backward compatibility tests to be skipped for this version, which is a significant oversight in the test configuration.

High
High-level
Centralize browser version management

To improve maintainability and reduce errors, consolidate the browser version
lists, which are currently duplicated across multiple GitHub workflow files,
into a single configuration file.

Examples:

.github/workflows/release-chrome-versions.yml [34]
        default: '[95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143]'
.github/workflows/release-edge-versions.yml [34]
        default: '[114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143]'

Solution Walkthrough:

Before:

# In .github/workflows/release-chrome-versions.yml
...
      browser-versions:
        description: 'List browser version to build. E.g: [130, 131]'
        required: true
        default: '[..., 141, 142, 143]'
...

# In .github/workflows/release-edge-versions.yml
...
      browser-versions:
        description: 'List browser version to build. E.g: [130, 131]'
        required: true
        default: '[..., 141, 142, 143]'
...

After:

# In a new file, e.g., .github/config/versions.yml
chrome: '[95, ..., 143]'
edge: '[114, ..., 143]'
firefox: '[98, ..., 145]'
chrome-for-testing: '[113, ..., 143]'

# In .github/workflows/release-chrome-versions.yml
# (Add a step to read the central config file)
...
      browser-versions:
        description: 'List browser version to build. E.g: [130, 131]'
        required: true
        default: ${{ steps.read_config.outputs.chrome_versions }}
...
Suggestion importance[1-10]: 6

__

Why: The suggestion correctly identifies redundant version management across multiple workflow files and proposes a valid architectural improvement for better maintainability, though it's not a critical issue.

Low
Learned
best practice
Align and pin version formats

Ensure CFT_VERSION includes the package suffix for consistent pinning or drop it
for both; also align CFT_VERSION and CHROME_VERSION formatting to the same
pinned scheme.

tests/build-backward-compatible/browser-matrix.yml [9-14]

 '143':
   FIREFOX_VERSION: 143.0.4
   FIREFOX_PLATFORMS: linux/amd64,linux/arm64
-  CFT_VERSION: 143.0.7499.40
+  CFT_VERSION: 143.0.7499.40-1
   CHROME_VERSION: google-chrome-stable=143.0.7499.40-1
   EDGE_VERSION: microsoft-edge-stable=143.0.3650.66-1
  • Apply / Chat
Suggestion importance[1-10]: 6

__

Why:
Relevant best practice - Pin external tool versions consistently and avoid mixing unpinned and pinned formats; keep Chrome and Chrome for Testing versions aligned.

Low
Standardize pinning suffix usage

Match CFT_VERSION pinning with CHROME_VERSION by including the -1 package suffix
so all 142 entries use the same scheme.

tests/build-backward-compatible/browser-matrix.yml [15-20]

 '142':
   FIREFOX_VERSION: 142.0.1
   FIREFOX_PLATFORMS: linux/amd64,linux/arm64
   CHROME_VERSION: google-chrome-stable=142.0.7444.175-1
-  CFT_VERSION: 142.0.7444.175
+  CFT_VERSION: 142.0.7444.175-1
   EDGE_VERSION: microsoft-edge-stable=142.0.3595.94-1
  • Apply / Chat
Suggestion importance[1-10]: 5

__

Why:
Relevant best practice - Keep version pinning style consistent across entries to prevent ambiguity and reduce drift.

Low
  • More

@VietND96 VietND96 merged commit 260e9e8 into trunk Dec 8, 2025
56 of 57 checks passed
@VietND96 VietND96 deleted the release-preparation branch December 8, 2025 20:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants