- 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 8.6k
Releasing Selenium
While Selenium code is tied to Chrome versions, the goal is to release a minor version of Selenium between Early Stable and Stable release dates as specified in Chromium Release Schedule. Make sure the release you are targeting has been announced on the Release Blog
- Communicate in Selenium Chat a reminder of upcoming releases
- Blockers should be tracked the applicable Release Milestone
- Check Pull Requests for anything that needs to be added to the milestone
- Ensure CI is passing, both RBE and CI; note that the Scheduled CI are the only ones guaranteed to have everything run.
Click to see Java prerequisites
After the sunsetting of OSSRH for maven central publishing, we are using the existing OSSRH API that is also available on the new Central Portal: https://central.sonatype.org/publish/publish-portal-ossrh-staging-api/
- Get a Sonatype Central account. Go through the initial setup if you do not have a user
- Generate a User Token to get a username and password
- Install GnuPG. Detailed instructions can be seen here. Follow the section that mentions how to distribute the GnuPG public key. GitHub also has good instructions to generate a key.
- Use mvn -empto encrypt your passphrase
- Make sure your ~/.m2/settings.xmlcontains the following lines in the<servers>and<settingsSecurity>sections:
    <server>
        <id>sonatype-nexus-snapshots</id>
        <username>_your-username-for-oss.sonatype.org_</username>
        <password>_your-password_</password>
    </server>
    <server>
        <id>sonatype-nexus-staging</id>
        <username>_your-username-for-oss.sonatype.org_</username>
        <password>_your-password_</password>
        <settingsSecurity>
            <master>{your_encrypted_passphrase}</master>
        </settingsSecurity>
    </server>
Click to see .NET prerequisites
To release a new version you will need to be registered as an owner on Nuget Obtain an API Key and store it in NUGET_API_KEY environment variable
Click to see Ruby prerequisites
To release a new gem you will need to be registered as a gem owner on rubygems.org
Generate an API key from rubygems and store it in GEM_HOST_API_KEY environment variable
Click to see Python prerequisites
To release a new version you need to be registered as a Owner/Maintainer on pypi.python.org
Create a token on pypi and put it in your .pypirc file.
Make sure you have installed twine and it is available on your PATH (pip install twine)
Click to see JavaScript prerequisites
To release a new version you need to be registered as a Owner/Maintainer on npmjs
- Make sure you are authenticated to npmjs.com. You can do that withnpm adduser
- Obtain an access token from npmjs
- Create or edit the .npmrc file in your project directory or home directory (~/.npmrc).
- Add a line with your token: //registry.npmjs.org/:_authToken=<YOUR_TOKEN_HERE>.
There is a GitHub Actions Workflow that can be manually executed to make all appropriate updates to files in preparation for a release.
This workflow:
- Updates Rust version
- Builds and publishes Selenium Manager
- Updates CDP version
- Pins latest Selenium Manager location
- Updates Java Maven dependencies
- Updates Authors File
- Updates versions for all bindings
- Adds commit messages to changelogs
- Creates PR
- Starts Tests
The GitHub workflow adds the commits to the change logs, but these need to be manually updated for format and clarity
- Pull the PR gh pr checkout <PR_NUMBER>
- Manually edit the change log files
- Push the changes git push
When all tests have passed and the change logs have been updated, merge the PR. This will be the commit that gets tagged and released.
Merging the PR will now kick off an additional workflow that will do the tagging, generate a draft Selenium Release with all assets and changes populated, and create and auto-merge a PR with updated API Docs.
./go all:releaseThis command builds & publishes everything (with prompts for permissions as applicable)
When everything is complete:
- review and publish the draft release - https://github.com/SeleniumHQ/selenium/releases
- bump the versions to nightly with ./go all:version[nightly]
For the given language:
- Update the version: ./go <language>:version[4.14.1]
- That auto-generates a changelog update which needs to be edited for conciseness and readability
- Commit / Push
- Tag / Push using the full name (e.g., selenium-4.14.1-java)
- Build and publish: ./go <language>:release
- Update the documentation using Update Documentation Workflow. Be sure to specify the exact tag name
- Reset the version back to a nightly version:
./go <language>:version
git commit -am "updating version to nightly"
git pushWhether major or minor release, Java has a few extra steps.
Note: See the Prerequisites section because things changed in March 2025.
Follow these steps:
  1. Go to https://central.sonatype.com/, log in
  2. Navigate to https://central.sonatype.com/publishing
  3. Look at the content and make sure all jars and signed files are there
  4. Click on "publish"
  5. Wait until the status is "published", which can take several minutes.  
## IE Driver Server
<details>
<summary>Click to see IE Driver release steps</summary>
1. Update Atoms (optional)
   * `bazel build //javascript/ie-driver:header`
   * copy `bazel-bin/javascript/ie-driver/atoms.h` to `cpp/iedriver/Generated` directory
1. Open cpp/IEDriverServer.sln in Visual Studio 2022
2. In Solution Explorer tab, right click IEDriver/Resource Files/IEDriver.rc & view code
3. Update version number in 4 places: `FILEVERSION`, `PRODUCTVERSION`, `FileVersion`, `ProductVersion`
4. In Solution Explorer tab, right click IEDriverServer/Resource Files/IEDriverServer.rc & view code
3. Update version number in 4 places: `FILEVERSION`, `PRODUCTVERSION`, `FileVersion`, `ProductVersion`
1. Solution Configurations Dropdown in toolbar at top, select `Release`, 
1. In Solution Platform Dropdown, select `x64` & in Build menu, select `Build Solution`
1. In Solution Platform Dropdown, select `x86` & in Build menu, select `Build Solution`
1. In build/cpp/x64/Release/IEDriverServer.exe compress file as `IEDriverServer_x64_x.y.z.zip` & upload it to Github Release
1. In build/cpp/Win32/Release/IEDriverServer.exe compress file as `IEDriverServer_Win32_x.y.z.zip` & upload it to Github Release
</details>
# Selenium Documentation Repo
## Examples updates
* Update versions (either)
  * Review [Renovate's](https://github.com/SeleniumHQ/seleniumhq.github.io/issues/1617) PRs (preferred).
  * Do it immediately: `./scripts/update-versions.sh ${SE_VERSION}`
* Add new examples — is there anything new in this version that needs example code?
* **Review / Commit / Push**
* Make sure everything is passing — https://github.com/SeleniumHQ/seleniumhq.github.io/actions
## Website updates
* Update versions and start a blog — `./scripts/release-updates.sh ${SE_VERSION}`
* Update the newly created blog post as necessary
* Copy the GitHub user information in the console to the correct places in a blog post
* Make sure dates are properly updated in `selenium-clients-and-webdriver-bindings.html`
* **Review / Commit / Push**
# Social Media
* Twitter
* LinkedIn
* Mastodon
* BlueSky
* Threads
This wiki is not where you want to be! Visit the Wiki Home for more useful links
Getting Involved 
Triaging Issues 
Releasing Selenium
Ruby Development 
Python Bindings 
Ruby Bindings 
WebDriverJs
This content is being evaluated for where it belongs
Architectural Overview 
Automation Atoms 
HtmlUnitDriver 
Lift Style API 
LoadableComponent 
Logging 
PageFactory 
RemoteWebDriver 
Xpath In WebDriver
Moved to Official Documentation
Bot Style Tests 
Buck 
Continuous Integration 
Crazy Fun Build 
Design Patterns 
Desired Capabilities 
Developer Tips 
Domain Driven Design 
Firefox Driver 
Firefox Driver Internals 
Focus Stealing On Linux 
Frequently Asked Questions 
Google Summer Of Code 
Grid Platforms 
History 
Internet Explorer Driver 
InternetExplorerDriver Internals 
Next Steps 
PageObjects 
RemoteWebDriverServer 
Roadmap 
Scaling WebDriver 
SeIDE Release Notes 
Selenium Emulation 
Selenium Grid 4 
Selenium Help 
Shipping Selenium 3 
The Team 
TLC Meetings 
Untrusted SSL Certificates 
WebDriver For Mobile Browsers 
Writing New Drivers