# Selenium selenium-4.48.0 — Selenium 4.48.0
- Product: Selenium (https://whatsnew.fyi/product/selenium)
- Vendor: Selenium project
- Date: 2026-08-27
- Version: selenium-4.48.0
- Original notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.48.0
- Permalink: https://whatsnew.fyi/product/selenium/releases/selenium-4.48.0
What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog.
Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'.
---
- **fixed** — Normalize empty custom locator results in JavaScript
- **fixed** — Fix W3C capabilities built from a list of options (create_matches) in Python
- **added** — Add low-level BiDi protocol integration specs in Ruby
- **fixed** — Stop forwarding se:remoteUrl past the Node that consumes it in Grid
- **added** — Forward file upload/download for Kubernetes, Docker and relay sessions in Grid
- **fixed** — Fix two flaky BiDi tests that left timing-dependent state behind in Java
- **added** — Add warn annotation for undeclared field while JSON coercion in Java
- **fixed** — Fix Safari test failures in Ruby
- **fixed** — Fix silent hang on oversized WebSocket frames in Ruby
- **fixed** — Ensure BiDi is not exposed on Driver in JavaScript
- **changed** — Honour the DO_NOT_TRACK env var
- **fixed** — Always reject a missing required inbound BiDi field in Ruby
- **fixed** — Accept a whole-valued float for an integer BiDi field in Ruby
- **added** — Add serialization and domain layer in JavaScript
- **changed** — Generate the internal BiDi protocol layer from the shared binding-neutral schema in Python
- **fixed** — Throw in case of unknown discriminator in DotNet BiDi
- **fixed** — Reject an inbound BiDi scalar outside its union's declared arms in Ruby
- **added** — Add BiDi connection-level event subscription in JavaScript
- **added** — Add SetMediaFeaturesOverride command in Emulation module in DotNet
##### Detailed Changelogs by Component
**[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)** |
**[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)** |
**[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)** |
**[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)** |
**[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
##### What's Changed
* [js] Normalize empty custom locator results by @munawiki in https://github.com/SeleniumHQ/selenium/pull/17851
* [py]: fix W3C capabilities built from a list of options (create_matches) by @navin772 in https://github.com/SeleniumHQ/selenium/pull/17897
* [rb] add low-level BiDi protocol integration specs by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17878
* Fix badge for CI build on the default branch by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17901
* [py] Fix broken reStructuredText link in docs by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17902
* [grid] stop forwarding se:remoteUrl past the Node that consumes it by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17908
* [grid] Forward file upload/download for Kubernetes, Docker and relay sessions by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17914
* [build] reduce github cache churn and aggressively prune CodeQL caches by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17909
* [java] fix two flaky BiDi tests that left timing-dependent state behind by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17918
* [java] Add warn annotation for undeclared field while JSON coercion by @pujagani in https://github.com/SeleniumHQ/selenium/pull/17917
* [py] temporarily disable nightly TestPyPI publishing by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17920
* [rb] fix Safari test failures by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17922
* [build] fix the issues that caused the release workflow to fail during last release by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17921
* Revert "[py] temporarily disable nightly TestPyPI publishing (#17920)" by @diemol in https://github.com/SeleniumHQ/selenium/pull/17924
* [rb] fix silent hang on oversized WebSocket frames by @aguspe in https://github.com/SeleniumHQ/selenium/pull/17655
* [js] Ensure BiDi is not exposed on Driver by @pujagani in https://github.com/SeleniumHQ/selenium/pull/17926
* [docs] charter: link the accepted BiDi support boundary record by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/17928
* Honour the `DO_NOT_TRACK` env var by @shs96c in https://github.com/SeleniumHQ/selenium/pull/17931
* [build] record flaky tests on trunk and report weekly offenders to Slack by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17930
* [build] ignore .bazelbsp/ IDE-generated directory by @diemol in https://github.com/SeleniumHQ/selenium/pull/17932
* [adr] Install browser extensions from the driver directly by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17817
* [py] generate the internal BiDi protocol layer from the shared binding-neutral schema by @titusf
_[Truncated at 4000 characters — full notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.48.0]_