# 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]_