-{{< gh-user "https://api.github.com/users/JefferyVin" >}}
{{< gh-user "https://api.github.com/users/KrishnaSuravarapu" >}}
{{< gh-user "https://api.github.com/users/Sean-Gomez" >}}
{{< gh-user "https://api.github.com/users/manuelsblanco" >}}
diff --git a/website_and_docs/content/blog/2023/selenium-4-9-0-released.md b/website_and_docs/content/blog/2023/selenium-4-9-0-released.md
index 3a5470773e86..279a3595e9f8 100644
--- a/website_and_docs/content/blog/2023/selenium-4-9-0-released.md
+++ b/website_and_docs/content/blog/2023/selenium-4-9-0-released.md
@@ -33,8 +33,7 @@ Links to everything can be found on our [downloads page][downloads].
{{< gh-user "https://api.github.com/users/atrnh" >}}
-{{< gh-user "https://api.github.com/users/nvborisenko" >}}
-{{< gh-user "https://api.github.com/users/dev-ardi" >}}
+{{< gh-user "https://api.github.com/users/nvborisenko" >}}
{{< gh-user "https://api.github.com/users/arnonax-tr" >}}
{{< gh-user "https://api.github.com/users/robotdana" >}}
{{< gh-user "https://api.github.com/users/iampopovich" >}}
diff --git a/website_and_docs/content/blog/2024/selenium-4-22-released.md b/website_and_docs/content/blog/2024/selenium-4-22-released.md
index 10987af8b08e..bcaa36af21a4 100644
--- a/website_and_docs/content/blog/2024/selenium-4-22-released.md
+++ b/website_and_docs/content/blog/2024/selenium-4-22-released.md
@@ -103,7 +103,6 @@ have rolled out in Ruby, Python and JavaScript
{{< gh-user "https://api.github.com/users/alaahong" >}}
{{< gh-user "https://api.github.com/users/aguspe" >}}
{{< gh-user "https://api.github.com/users/digitalvoice-nz" >}}
-{{< gh-user "https://api.github.com/users/josh-pinwheelapi" >}}
{{< gh-user "https://api.github.com/users/pallavigitwork" >}}
{{< gh-user "https://api.github.com/users/sangcnguyen" >}}
diff --git a/website_and_docs/content/blog/2024/selenium-4-26-released.md b/website_and_docs/content/blog/2024/selenium-4-26-released.md
new file mode 100644
index 000000000000..3008954f4a29
--- /dev/null
+++ b/website_and_docs/content/blog/2024/selenium-4-26-released.md
@@ -0,0 +1,187 @@
+---
+title: "Selenium 4.26 Released!"
+linkTitle: "Selenium 4.26 Released!"
+date: 2024-11-03
+tags: ["selenium"]
+categories: ["releases"]
+author: Diego Molina [@diemol](https://www.diemol.com)
+images:
+ - "/images/blog/2024/selenium_4.26.jpg"
+description: >
+ Today we're happy to announce that Selenium 4.26 has been released!
+---
+
+We're very happy to announce the release of Selenium 4.26 for
+Javascript, Ruby, Python, .NET, Java and the Grid!
+Links to everything can be found on our [downloads page][downloads].
+
+Selenium 4.26.0 release introduces new features, key enhancements, and numerous bug fixes across
+different languages and components. This version focuses on improving compatibility, updating
+dependencies, enhancing internal logging, and providing broader WebDriver capabilities. Here are
+the most important updates:
+
+## General Highlights
+- **Chrome DevTools support** is now: v130, v129, and v128 (Firefox still uses v85 for all versions)
+- **Selenium has at least** [4.8M active users](https://plausible.io/manager.selenium.dev) in the last 30 days. 800K more than 1 month ago!
+- **Selenium Manager Enhancements**: Added better handling for invalid browser versions and improved logging, helping to streamline browser management.
+- **Expanded BiDi (Bidirectional WebDriver Protocol) Support for .NET**: Continuing the work on BiDi for .NET, this release includes improved WebSocket communication, CDP DevTools integration, and expanded logging, advancing real-time and bidirectional interactions.
+- **Grid UI Enhancements**: New sorting options by Platform, Status, and ID, session timeout display, and WebSocket connection management for better performance and user experience.
+- **CI/CD Pipeline Improvements**: Numerous updates for CI workflows, such as artifact handling and new testing configurations, to boost stability and developer productivity.
+
+
+
+### .NET
+- Updated WebSocket communication and DevTools integration in the BiDi implementation, adding extensive internal logs to improve diagnostics ([#14566](https://github.com/SeleniumHQ/selenium/pull/14566), [#14558](https://github.com/SeleniumHQ/selenium/pull/14558)).
+- Added support for the `GetLog` command in the Remote WebDriver ([#14549](https://github.com/SeleniumHQ/selenium/pull/14549)).
+- Enhanced configuration for `PrintOptions`, allowing direct control over `PageDimensions` and `PageMargins` ([#14593](https://github.com/SeleniumHQ/selenium/pull/14593)).
+- Deprecated several old constructors for cleaner exception handling and improved compatibility with Ahead-of-Time (AOT) compilation ([#14574](https://github.com/SeleniumHQ/selenium/pull/14574)).
+
+
+
+### Java
+- Increased property scope for improved compatibility with Appium ([#14183](https://github.com/SeleniumHQ/selenium/pull/14183)).
+- Updated SpotBugs settings and fixed issues in `ChromiumDriver` and `PortProber` for cleaner code ([#14589](https://github.com/SeleniumHQ/selenium/pull/14589)).
+- Added PAC proxy URL support for Selenium Manager to expand proxy configuration capabilities ([#14506](https://github.com/SeleniumHQ/selenium/pull/14506)).
+
+
+
+### Python
+- Added more internal logging for CDP, and configured WebDriver HTTP client settings for enhanced performance ([#14668](https://github.com/SeleniumHQ/selenium/pull/14668), [#13286](https://github.com/SeleniumHQ/selenium/pull/13286)).
+ > Explore the various configuration parameters for the [WebDriver HTTP client](https://www.selenium.dev/documentation/webdriver/drivers/http_client/).
+- Removed deprecated EdgeService parameters and eliminated Python 2.x code from various test files ([#14563](https://github.com/SeleniumHQ/selenium/pull/14563), [#14502](https://github.com/SeleniumHQ/selenium/pull/14502)).
+- Set consistent polling for `WebDriverWait` methods to align behavior between Java and Python implementations ([#14626](https://github.com/SeleniumHQ/selenium/pull/14626)).
+- Improves binding extensibility for seamless integration of Selenium into Appium's Python client. ([#14587](https://github.com/SeleniumHQ/selenium/pull/14587)).
+
+
+
+### JavaScript
+- Closed BiDi WebSocket connection on session end, improving session management in BiDi ([#14507](https://github.com/SeleniumHQ/selenium/pull/14507)).
+- Fixed issues with `sendKeys` command, addressing errors in `FileDetector` handling ([#14663](https://github.com/SeleniumHQ/selenium/pull/14663)).
+
+
+
+### Ruby
+- Added RBS type support for BiDi-related classes, aligning with updates for Ruby BiDi compatibility ([#14611](https://github.com/SeleniumHQ/selenium/pull/14611)).
+- Updated BiDi script structures to match recent specifications for consistent implementation ([#14236](https://github.com/SeleniumHQ/selenium/pull/14236)).
+
+
+
+### Selenium Grid
+- New Grid UI features for sorting and WebSocket management, adding clarity and control to session management ([#14571](https://github.com/SeleniumHQ/selenium/pull/14571), [#14598](https://github.com/SeleniumHQ/selenium/pull/14598), [#14599](https://github.com/SeleniumHQ/selenium/pull/14599)).
+- Enabled async requests in `httpclient` to enhance request handling performance ([#14409](https://github.com/SeleniumHQ/selenium/pull/14409)).
+- Improved node handling for better scalability and stability ([#14628](https://github.com/SeleniumHQ/selenium/pull/14628)).
+
+
+
+### Docker Selenium
+- Updated FFmpeg v7.1 in video recorder ([#2439](https://github.com/SeleniumHQ/docker-selenium/pull/2439)).
+- Updated in Helm chart for Selenium Grid deployment to Kubernetes
+ - Add GraphQL metrics exporter for monitoring ([#2425](https://github.com/SeleniumHQ/docker-selenium/pull/2425)).
+ - Add templates for Relay node ([#2453](https://github.com/SeleniumHQ/docker-selenium/pull/2453)).
+ - Allow to overwrite config videoRecorder in each node ([#2445](https://github.com/SeleniumHQ/docker-selenium/pull/2445)).
+
+
+
+## Contributors
+
+**Special shout-out to everyone who helped the Selenium Team get this release out!**
+
+### [Selenium](https://github.com/SeleniumHQ/selenium)
+
+
+
+
+{{< gh-user "https://api.github.com/users/BlitzDestroyer" >}}
+{{< gh-user "https://api.github.com/users/Delta456" >}}
+{{< gh-user "https://api.github.com/users/Mr0grog" >}}
+{{< gh-user "https://api.github.com/users/RenderMichael" >}}
+{{< gh-user "https://api.github.com/users/aguspe" >}}
+{{< gh-user "https://api.github.com/users/dbernhard-0x7CD" >}}
+{{< gh-user "https://api.github.com/users/garg3133" >}}
+{{< gh-user "https://api.github.com/users/iampopovich" >}}
+{{< gh-user "https://api.github.com/users/mk868" >}}
+{{< gh-user "https://api.github.com/users/navin772" >}}
+{{< gh-user "https://api.github.com/users/shbenzer" >}}
+
+
+
+
+
+### [Selenium Docs & Website](https://github.com/SeleniumHQ/seleniumhq.github.io)
+
+
+
+
+{{< gh-user "https://api.github.com/users/Abdelrhman-Ellithy" >}}
+{{< gh-user "https://api.github.com/users/AishIngale" >}}
+{{< gh-user "https://api.github.com/users/Delta456" >}}
+{{< gh-user "https://api.github.com/users/alaahong" >}}
+{{< gh-user "https://api.github.com/users/harshitBhardwaj97" >}}
+{{< gh-user "https://api.github.com/users/pallavigitwork" >}}
+{{< gh-user "https://api.github.com/users/shbenzer" >}}
+{{< gh-user "https://api.github.com/users/zipperer" >}}
+
+
+
+
+### [Docker Selenium](https://github.com/SeleniumHQ/docker-selenium)
+
+
+
+
+{{< gh-user "https://api.github.com/users/brunobritorj" >}}
+
+
+
+
+### [Selenium Team Members][team]
+
+**Thanks as well to all the team members who contributed to this release:**
+
+
+
+
+{{< gh-user "https://api.github.com/users/AutomatedTester" >}}
+{{< gh-user "https://api.github.com/users/bonigarcia" >}}
+{{< gh-user "https://api.github.com/users/diemol" >}}
+{{< gh-user "https://api.github.com/users/harsha509" >}}
+{{< gh-user "https://api.github.com/users/joerg1985" >}}
+{{< gh-user "https://api.github.com/users/nvborisenko" >}}
+{{< gh-user "https://api.github.com/users/p0deje" >}}
+{{< gh-user "https://api.github.com/users/pujagani" >}}
+{{< gh-user "https://api.github.com/users/shs96c" >}}
+{{< gh-user "https://api.github.com/users/titusfortner" >}}
+{{< gh-user "https://api.github.com/users/VietND96" >}}
+
+
+
+
+## Project Highlights
+
+This year marks a monumental milestone—20 years of Selenium transforming browser automation!
+Since its inception as a modest open-source project, Selenium has grown into the world’s most
+trusted tool for web automation, powering testing and development for countless users globally.
+From revolutionizing open-source collaboration to shaping automation practices, Selenium has
+impacted developers, testers, and organizations worldwide.
+
+To honor this journey, the Selenium team hosted a special webinar on October 28th, 2024, where
+the leadership team shared insights on Selenium’s evolution, the latest advancements in WebDriver
+BiDi, and exciting prospects for the future. If you’d like to learn more about Selenium’s
+incredible journey and future plans, head to the official blog post
+[here](https://www.selenium.dev/blog/2024/selenium-milestone-20yrs-blog/).
+
+Special thanks to the Selenium community for your continued support and contributions, to
+the entire Selenium team for their dedication and hard work,
+and to [Pallavi Sharma](https://www.linkedin.com/in/pallavimuse/) and
+[Maaret Pyhäjärvi](https://www.linkedin.com/in/maaret/) for organizing and leading this event.
+
+
+
+Stay tuned for updates by following SeleniumHQ on [X (Formerly Twitter)](https://twitter.com/seleniumhq) or [LinkedIn](https://www.linkedin.com/company/selenium/)!
+
+Happy automating!
+
+[downloads]: /downloads
+[bindings]: /downloads#bindings
+[team]: /project/structure
+[BiDi]: https://github.com/w3c/webdriver-bidi
diff --git a/website_and_docs/content/blog/2024/selenium-4-27-released.md b/website_and_docs/content/blog/2024/selenium-4-27-released.md
new file mode 100644
index 000000000000..5c25525cda3c
--- /dev/null
+++ b/website_and_docs/content/blog/2024/selenium-4-27-released.md
@@ -0,0 +1,186 @@
+---
+title: "Selenium 4.27 Released!"
+linkTitle: "Selenium 4.27 Released!"
+date: 2024-11-27
+tags: ["selenium"]
+categories: ["releases"]
+author: Diego Molina [@diemol](https://www.diemol.com)
+images:
+ - "/images/blog/2024/selenium_4.27.webp"
+description: >
+ Today we're happy to announce that Selenium 4.27 has been released!
+---
+We're very happy to announce the release of Selenium 4.27 for
+Javascript, Ruby, Python, .NET, Java and the Grid!
+Links to everything can be found on our [downloads page][downloads].
+
+Here is the latest iteration of the world’s most popular browser automation tool! This release
+brings significant updates across all supported languages, enhancing functionality, performance,
+and compatibility. From new features like FedCM command support in Python and improved BiDi
+handling in .NET to critical deprecations like CDP methods for Firefox.
+
+## General Highlights
+
+- **Chrome DevTools support** is now: v131, v128, and v127 (Firefox still uses v85 for all versions)
+- **Selenium has over** [5.1M active users](https://plausible.io/manager.selenium.dev) in the last 30 days. 300K more than 1 month ago!
+- **Deprecation of CDP methods for Firefox** across several bindings to align with evolving automation standards.
+- **Enhanced Selenium Grid** with improved session handling, distributed retry logic, and faster server shutdown processes.
+- **Updates for .NET and Java** to modernize exception handling, improve BiDi support, and address compatibility warnings.
+- **Deprecation of `getAttribute`** in multiple languages as part of Selenium's evolution.
+
+
+
+
+### Python
+- Deprecated CDP methods for Firefox. ([e2e9ac5f7e](https://github.com/SeleniumHQ/selenium/commit/e2e9ac5f7e5ca2a2326bea9d16425525ce43da57))
+- Replaced `imghdr` with `filetype` for better compatibility. ([b1828bf108](https://github.com/SeleniumHQ/selenium/commit/b1828bf1087d7d4acfd437d83ef6168617286191))
+- Moved project metadata from `setup.py` to `pyproject.toml`. ([673d2c78be](https://github.com/SeleniumHQ/selenium/commit/673d2c78be76f1ccbb2e1017e5240d52f428b400))
+- Added FedCM command support. ([d3d8070d50](https://github.com/SeleniumHQ/selenium/commit/d3d8070d50b481d2c6da98223322bc843cc25a01))
+- Introduced backward compatibility for `AppiumConnection`. ([3a3c46b3c1](https://github.com/SeleniumHQ/selenium/commit/3a3c46b3c144b0a350dea3598481edd2761f11c5))
+- Added user agent and extra headers via `ClientConfig`. ([e2023893c7](https://github.com/SeleniumHQ/selenium/commit/e2023893c7f37f69b2f7106a3907e0275bd9fbe1))
+- Addressed `DetachedShadowRoot` exception handling. ([7aabb8d1b4](https://github.com/SeleniumHQ/selenium/commit/7aabb8d1b48c1cae74ae97710009daea960dc9a3))
+
+
+
+### Ruby
+- Deprecated CDP methods for Firefox. ([e9c09a200e](https://github.com/SeleniumHQ/selenium/commit/e9c09a200e374bba63acb0ef605175abb125e82e))
+- Resolved deprecation warnings for the `uri` gem. ([751bacb6bc](https://github.com/SeleniumHQ/selenium/commit/751bacb6bc934436ec9dec2416a022d8d577e30a))
+- Added BiDi navigation commands and support for network interception. ([573c8fe961](https://github.com/SeleniumHQ/selenium/commit/573c8fe9612c9c81406642e3e7a917cb5314eb3c))
+
+
+
+
+### Java
+- Enhanced error messages for `NoSuchElementException`. ([4a0d05e50e](https://github.com/SeleniumHQ/selenium/commit/4a0d05e50ea1750482211e04ece8062436eb5c6b))
+- Deprecated `WebElement.getAttribute()`. ([cd7303c437](https://github.com/SeleniumHQ/selenium/commit/cd7303c437b0702d3a17c9ef43594375c11016eb))
+- Introduced methods for selecting options containing specific text. ([b4b8aaba2b](https://github.com/SeleniumHQ/selenium/commit/b4b8aaba2bd3df57cae31164c614aec5f377c443))
+- Added Firefox CDP deprecation warnings. ([19fc217985](https://github.com/SeleniumHQ/selenium/commit/19fc2179855d0f70b7241a6c4cfbd9152e023609))
+
+
+
+### .NET
+- Added CDP deprecation warnings for Firefox. ([8f725b3a80](https://github.com/SeleniumHQ/selenium/commit/8f725b3a80c3f3d621821e94a87db346ea91a8b1))
+- Improved BiDi and async support across modules. ([9054e892cc](https://github.com/SeleniumHQ/selenium/commit/9054e892ccabfb470243e2bad585f0474901dd31))
+- Enabled nullability annotations for better type safety. ([d9149acc09](https://github.com/SeleniumHQ/selenium/commit/d9149acc097531d336e611bd92d897381a0316c6))
+- Introduced compatibility improvements for actions with clashing device names. ([a9ec9ca682](https://github.com/SeleniumHQ/selenium/commit/a9ec9ca6821fd466e8e9d6e966d0feb150b0a5a4))
+- **Deprecated `GetAttribute` method** for WebElements. ([ac523a5d0a](https://github.com/SeleniumHQ/selenium/commit/ac523a5d0aa5a980a71c5adda3f4dafb0a560409))
+
+
+
+
+### JavaScript
+- Enabled BiDi tests for locating nodes with Chrome and Edge. ([339421538b](https://github.com/SeleniumHQ/selenium/commit/339421538b790c0ac2cf0a1a0aad62d0e76349eb))
+- Enhanced support for authentication handlers in BiDi commands. ([25551adfe8](https://github.com/SeleniumHQ/selenium/commit/25551adfe80f788453ec38fac7933c5369616d4f))
+- Updated dependencies to resolve security alerts. ([3906742748](https://github.com/SeleniumHQ/selenium/commit/3906742748d8b94b2eac074aeaf839eed20a95fa))
+
+
+
+### Rust
+- Selenium Manager now honors full browser versions. ([fe5b1985e5](https://github.com/SeleniumHQ/selenium/commit/fe5b1985e570bae90bf757c23439d461ef0dda9c))
+- Updated logic to prioritize stable versions for Firefox management. ([0d2dda17b4](https://github.com/SeleniumHQ/selenium/commit/0d2dda17b4c4aba6ab0537f9d28910527c45a38b))
+
+
+
+### Selenium Grid
+- Improved retry logic for session creation in distributed grids. ([e4ab299ea4](https://github.com/SeleniumHQ/selenium/commit/e4ab299ea4d16943c18e8c31e9db1f7738ed9493))
+- Improved session handling in Selenium Grid and reduced test flakiness. ([b0464e1adf](https://github.com/SeleniumHQ/selenium/commit/b0464e1adf8b4367dab9a98c26c800a7172cc0f8))
+- Enhanced server shutdown for faster termination. ([62aa0e551e](https://github.com/SeleniumHQ/selenium/commit/62aa0e551e79176f21e3e1658518bc40855f81ae))
+- Implemented graceful handling of stale sessions and client timeouts. ([b0464e1adf](https://github.com/SeleniumHQ/selenium/commit/b0464e1adf8b4367dab9a98c26c800a7172cc0f8))
+- Improved detection of unsupported HTTP methods during request handling. ([f56b3d07d9](https://github.com/SeleniumHQ/selenium/commit/f56b3d07d932f81bafc80b90d9b3cb059fba133e))
+
+
+
+### Docker Selenium
+- K8s: Allow multiple nodes of the same type in Helm configuration ([#2475](https://github.com/SeleniumHQ/docker-selenium/pull/2475))
+- [See all changes](https://github.com/SeleniumHQ/docker-selenium/releases/tag/4.27.0-20241127)
+
+
+
+## Contributors
+
+**Special shout-out to everyone who helped the Selenium Team get this release out!**
+
+### [Selenium](https://github.com/SeleniumHQ/selenium)
+
+
+
+
+{{< gh-user "https://api.github.com/users/Delta456" >}}
+{{< gh-user "https://api.github.com/users/Earlopain" >}}
+{{< gh-user "https://api.github.com/users/RenderMichael" >}}
+{{< gh-user "https://api.github.com/users/andrew" >}}
+{{< gh-user "https://api.github.com/users/emanlove" >}}
+{{< gh-user "https://api.github.com/users/iampopovich" >}}
+{{< gh-user "https://api.github.com/users/josegomezr" >}}
+{{< gh-user "https://api.github.com/users/mk868" >}}
+{{< gh-user "https://api.github.com/users/navin772" >}}
+{{< gh-user "https://api.github.com/users/pnatashap" >}}
+{{< gh-user "https://api.github.com/users/sandeepsuryaprasad" >}}
+{{< gh-user "https://api.github.com/users/shbenzer" >}}
+{{< gh-user "https://api.github.com/users/syber911911" >}}
+
+
+
+
+
+### [Selenium Docs & Website](https://github.com/SeleniumHQ/seleniumhq.github.io)
+
+
+
+
+{{< gh-user "https://api.github.com/users/AishIngale" >}}
+{{< gh-user "https://api.github.com/users/RenderMichael" >}}
+{{< gh-user "https://api.github.com/users/YevgeniyShunevych" >}}
+{{< gh-user "https://api.github.com/users/alaahong" >}}
+{{< gh-user "https://api.github.com/users/jasonren0403" >}}
+{{< gh-user "https://api.github.com/users/navin772" >}}
+{{< gh-user "https://api.github.com/users/pallavigitwork" >}}
+{{< gh-user "https://api.github.com/users/shbenzer" >}}
+{{< gh-user "https://api.github.com/users/zipperer" >}}
+
+
+
+
+### [Docker Selenium](https://github.com/SeleniumHQ/docker-selenium)
+
+
+
+
+{{< gh-user "https://api.github.com/users/VietND96" >}}
+
+
+
+
+### [Selenium Team Members][team]
+
+**Thanks as well to all the team members who contributed to this release:**
+
+
+
+
+{{< gh-user "https://api.github.com/users/aguspe" >}}
+{{< gh-user "https://api.github.com/users/AutomatedTester" >}}
+{{< gh-user "https://api.github.com/users/bonigarcia" >}}
+{{< gh-user "https://api.github.com/users/diemol" >}}
+{{< gh-user "https://api.github.com/users/harsha509" >}}
+{{< gh-user "https://api.github.com/users/joerg1985" >}}
+{{< gh-user "https://api.github.com/users/nvborisenko" >}}
+{{< gh-user "https://api.github.com/users/p0deje" >}}
+{{< gh-user "https://api.github.com/users/pujagani" >}}
+{{< gh-user "https://api.github.com/users/shs96c" >}}
+{{< gh-user "https://api.github.com/users/titusfortner" >}}
+{{< gh-user "https://api.github.com/users/VietND96" >}}
+
+
+
+
+
+
+Stay tuned for updates by following SeleniumHQ on [X (Formerly Twitter)](https://twitter.com/seleniumhq) or [LinkedIn](https://www.linkedin.com/company/selenium/)!
+
+Happy automating!
+
+[downloads]: /downloads
+[bindings]: /downloads#bindings
+[team]: /project/structure
+[BiDi]: https://github.com/w3c/webdriver-bidi
diff --git a/website_and_docs/content/blog/2024/selenium-community-live-episode1.md b/website_and_docs/content/blog/2024/selenium-community-live-episode1.md
new file mode 100644
index 000000000000..7130d6924011
--- /dev/null
+++ b/website_and_docs/content/blog/2024/selenium-community-live-episode1.md
@@ -0,0 +1,49 @@
+---
+title: "Selenium Community Live - Episode 1"
+linkTitle: "Selenium Community Live - Episode 1"
+date: 2024-12-25
+tags: ["webinar", "meetup", "talks","community"]
+categories: ["webinar"]
+author:
Pallavi Sharma
+images:
+description: >
+ Selenium Community Live - Episode 1
+---
+
+At the eve of celebration of 20 years of Selenium, the current **
Project Leadership Committee of Selenium** decided on starting Selenium Community Live event, an idea helmed by **
Maaret Pyhäjärvi** .
+The first episode happened on Dec 18th, 2024: **
Selenium Community Live - Episode 1**
+
+**Selenium Community Live - Episode 1**
+
+Collaboration, communication and community are the force behind the success of the Selenium Project in open source for last twenty years.
+Jason Huggins and Simon Stewart with their respective projects Selenium and WebDriver collaborated and brought together Selenium WebDriver.
+Eventually WebDriver became a W3C standard for browser automation, and Jim Evans and Manoj Kumar in the first episode of Selenium Community Live
+discuss all about Selenium, and making of the WebDriver standard. They shed light on the process and people behind building these specifications.
+They also spoke about various browser vendors and browser automation projects coming together to collaborate on making the next standard in browser automation
+WebDriver Bi-Di. The Selenium project extend thanks to both Jim and Manoj for commemorating the first episode for community.
+
+**Meet the Speakers:**
+
+1. **
Jim Evans**
+
+2. **
Manoj Kumar**
+
+## Watch the Recording the first Episode of Selenium Community Live
+
+Couldn’t join us live? Watch the entire episode here -
+📹 Recording Link: [Watch the Event Recording on YouTube](https://www.youtube.com/watch?v=Y4tZOXGQGRQ)
+
+The links for the various projects which were discussed in the event -
+
+A few links which you may wish to explore -
+**
TPAC**
+
+**
W3C Browser Testing Working Group**
+
+**
WebDriver**
+
+**
WebDriver Bi-Di**
+
+**
WebDriver Bi-Di .net implementation by Jim Evans **
+
+Stay tuned as we bring the next! **
Subscribe here to the Selenium HQ Official YouTube Channel.**
\ No newline at end of file
diff --git a/website_and_docs/content/blog/2024/selenium-milestone-20yrs-blog.md b/website_and_docs/content/blog/2024/selenium-milestone-20yrs-blog.md
index f6f524595991..7a17c5ce33a0 100644
--- a/website_and_docs/content/blog/2024/selenium-milestone-20yrs-blog.md
+++ b/website_and_docs/content/blog/2024/selenium-milestone-20yrs-blog.md
@@ -4,7 +4,7 @@ linkTitle: "Celebrating 20 Years of Selenium"
date: 2024-10-18
tags: ["webinar", "meetup", "talks"]
categories: ["webinar"]
-author:
Pallavi Sharma
+author:
Pallavi Sharma
images:
- "/images/blog/2024/20-selenium"
description: >
@@ -40,7 +40,7 @@ This webinar is more than just a celebration—it’s a chance to learn from the
Join Us in Celebrating Selenium’s Incredible Journey!
For 20 years, Selenium has helped shape how we test, automate, and innovate on the web. This is your opportunity to celebrate that legacy and learn what the future holds for browser automation. We can’t wait to see you there!
-Event Organizers - **
Maaret**, **
Diego**, and **
Pallavi**.
+Event Organizers - **
Maaret**, **
Diego**, and **
Pallavi**.
## Watch the Recording of Our 20th Anniversary Event
diff --git a/website_and_docs/content/blog/2025/_index.md b/website_and_docs/content/blog/2025/_index.md
new file mode 100644
index 000000000000..0c07aa002fd7
--- /dev/null
+++ b/website_and_docs/content/blog/2025/_index.md
@@ -0,0 +1,5 @@
+---
+title: "Blog Posts - 2025"
+linkTitle: "2025"
+weight: 85
+---
diff --git a/website_and_docs/content/blog/2025/lambdatest-selenium-partnership.md b/website_and_docs/content/blog/2025/lambdatest-selenium-partnership.md
new file mode 100644
index 000000000000..82cd175c3244
--- /dev/null
+++ b/website_and_docs/content/blog/2025/lambdatest-selenium-partnership.md
@@ -0,0 +1,66 @@
+---
+title: "LambdaTest Becomes a Selenium Development Partner"
+linkTitle: "LambdaTest Becomes a Selenium Development Partner"
+date: 2025-04-10
+tags: ["selenium"]
+categories: ["general"]
+author: Sri Harsha [@harsha509](https://www.linkedin.com/in/sriharsha509/)
+images:
+ - "/images/blog/2025/lambdatest-selenium-development-partner.png"
+description: >
+ The Selenium Project is pleased to welcome LambdaTest as an official Development Partner.
+---
+
+We are excited to share that [LambdaTest](https://www.lambdatest.com) has joined as a development
+partner for Selenium. This partnership highlights our shared commitment
+to innovation, community engagement, and collaborative progress in the
+test automation space. LambdaTest’s dedicated Open Source Program Office (OSPO)
+is contributing valuable expertise and resources that will further enrich the Selenium ecosystem.
+
+## A Partnership Rooted in Open Source Values
+
+At the heart of Selenium lies a vibrant community dedicated to open
+standards and continuous improvement. Our collaboration with LambdaTest
+is designed to strengthen the community by channeling focused contributions
+from their OSPO—improving tools, integrations, and documentation for
+Selenium users around the world.
+
+## About LambdaTest
+
+[LambdaTest](https://www.lambdatest.com) is a platform that empowers businesses to
+accelerate time to market through intelligent, cloud-based test authoring,
+orchestration, and execution. With over 15,000 customers and 2.3 million+
+users across 130+ countries, LambdaTest is the trusted choice for modern software testing.
+
+## Key Points of the Partnership
+
+- **Open Source Integrity:** Selenium continues to flourish as a community-led project, embodying the true spirit of open source.
+- **Dedicated OSPO Contributions:** The team at LambdaTest is actively enhancing Selenium by improving documentation, bolstering community support, and enabling better integrations. Their efforts are aimed at empowering the global Selenium user base.
+- **Community-Focused Innovation:** By pooling our collective expertise, we are well-positioned to drive new solutions and elevate test automation practices to new heights.
+
+## What This Partnership Means for the Community
+
+The contributions from LambdaTest’s OSPO are set to bring
+notable benefits to the broader testing landscape:
+
+- **Faster Development:** The infusion of dedicated engineering resources will accelerate the development of new features and improvements.
+- **Improved Stability:** Increased efforts in testing and quality assurance will help quickly identify and resolve issues.
+- **Better Documentation:** Enhanced documentation will make it easier for users to dive into Selenium and harness its advanced capabilities.
+- **Enhanced Community Support:** LambdaTest will play an active role in organizing and sponsoring community events, fostering rich collaboration and knowledge sharing.
+
+## Looking Ahead
+
+This partnership is more than a technical alliance—it reaffirms our
+belief in the power of community-led development. The proactive contributions
+from LambdaTest’s OSPO will help create a more connected and empowered test
+automation community. We invite you to join our upcoming workshops, webinars,
+and discussion forums to see firsthand how these collaborative projects will
+shape the future of open source test automation.
+
+Formalizing LambdaTest as a Selenium development partner is a milestone that
+celebrates our commitment to innovation and community spirit. With the dedicated
+efforts from LambdaTest’s OSPO, we continue our mission to enhance the
+Selenium ecosystem for every developer and tester worldwide.
+
+Join us on this journey toward a future that is more resilient,
+supportive, and inventive in the realm of test automation.
diff --git a/website_and_docs/content/blog/2025/remove-cdp-firefox.md b/website_and_docs/content/blog/2025/remove-cdp-firefox.md
new file mode 100644
index 000000000000..0787c9f042aa
--- /dev/null
+++ b/website_and_docs/content/blog/2025/remove-cdp-firefox.md
@@ -0,0 +1,18 @@
+---
+title: "Removing ChromeDevTools Support For Firefox"
+linkTitle: "Removing ChromeDevTools Support For Firefox"
+date: 2025-02-03
+tags: ["selenium"]
+categories: ["releases"]
+author: Puja Jagani [@pujagani](https://www.linkedin.com/in/pujajagani/)
+description: >
+ Today we're happy to announce ChromeDevTools support for Firefox is removed and WebDriver BiDi is paving the path forward
+---
+
+Selenium has deprecated support for Chrome DevTools Protocol (CDP) for Firefox in the last two versions (4.27 and 4.28). Our typical removal policy is to deprecate support for two versions, allowing users sufficient time to update their codebase, and then remove it from the third version onwards.
+
+Starting with Selenium 4.29.0, CDP support for Firefox has been fully removed—and for good reason. Selenium’s CDP implementation for Firefox was always partial, meaning it never had complete feature parity with Chrome. Meanwhile, Firefox is shifting towards WebDriver BiDi, the future of cross-browser automation. Aligning with this, Firefox has announced that starting with Firefox 129, CDP will no longer be enabled by default. Read more here: [https://fxdx.dev/deprecating-cdp-support-in-firefox-embracing-the-future-with-webdriver-bidi/].
+
+To support this transition, Selenium is removing CDP support for Firefox, as a major portion of WebDriver BiDi functionality is now available across all Selenium language bindings. Selenium is committed to staying in sync with browser vendors and the latest developments in the WebDriver BiDi protocol. This step brings us closer to standardized, browser-agnostic automation.
+
+If you were using CDP in Selenium for Firefox, now is the time to switch to WebDriver BiDi. Start your journey with Selenium’s WebDriver BiDi examples [here](https://www.selenium.dev/documentation/webdriver/bidi/w3c/).
\ No newline at end of file
diff --git a/website_and_docs/content/blog/2025/selenium-4-28-released.md b/website_and_docs/content/blog/2025/selenium-4-28-released.md
new file mode 100644
index 000000000000..747e837294eb
--- /dev/null
+++ b/website_and_docs/content/blog/2025/selenium-4-28-released.md
@@ -0,0 +1,184 @@
+---
+title: "Selenium 4.28 Released!"
+linkTitle: "Selenium 4.28 Released!"
+date: 2025-01-20
+tags: ["selenium"]
+categories: ["releases"]
+author: Diego Molina [@diemol](https://www.diemol.com)
+images:
+ - "/images/blog/2025/selenium_4.28.jpg"
+description: >
+ Today we're happy to announce that Selenium 4.28 has been released!
+---
+We're very happy to announce the release of Selenium 4.28 for
+Javascript, Ruby, Python, .NET, Java and the Grid!
+Links to everything can be found on our [downloads page][downloads].
+
+
+
+
+## **Highlights**
+- **Chrome DevTools support** is now: v132, v131, and v130 (Firefox still uses v85 for all versions)
+- Expanded **nullability annotations** for better type safety in .NET and Java.
+- Refinements to **Selenium Grid**, including more efficient session handling and node management.
+- **Packaging and installation enhancements** across Python and Ruby for smoother integration.
+- **Documentation improvements** across Python and .NET libraries, ensuring clearer developer guidance.
+- Updated **language-specific implementations** for modern development standards.
+
+
+
+## **Changes by Language**
+
+### **Java**
+- **Encapsulation Improvements**: Encapsulated `additionalCommands` with a getter method ([#14816](https://github.com/SeleniumHQ/selenium/pull/14816)).
+- **Nullability Enhancements**: Added nullness annotations for enums, exceptions, interactions, logging, and Proxy ([#15105](https://github.com/SeleniumHQ/selenium/pull/15105), [#15094](https://github.com/SeleniumHQ/selenium/pull/15094)).
+- **SpotBugs Updates**: Excluded specific warnings to maintain clean code ([#14766](https://github.com/SeleniumHQ/selenium/pull/14766)).
+- **Improved Logging**: Enhanced error handling and message clarity in exceptions ([#15116](https://github.com/SeleniumHQ/selenium/pull/15116)).
+- **Relative Locators**: Updates for `RelativeBy` locators, simplifying usage ([#14482](https://github.com/SeleniumHQ/selenium/pull/14482)).
+
+
+
+### **Python**
+- **Packaging Fixes**: Addressed issues for smoother installation ([#14806](https://github.com/SeleniumHQ/selenium/pull/14806), [#14823](https://github.com/SeleniumHQ/selenium/pull/14823)).
+- **Documentation Upgrades**: Added comprehensive docstrings to multiple classes, including `WebDriverWait`, `ExpectedConditions`, and `WebElement` ([#15077](https://github.com/SeleniumHQ/selenium/pull/15077), [#15096](https://github.com/SeleniumHQ/selenium/pull/15096)).
+- **Refactoring**: Moved project metadata and improved code organization ([#14837](https://github.com/SeleniumHQ/selenium/pull/14837)).
+- **Enhanced CDP Command Handling**: Added `execute_cdp_cmd` to `Remote` ([#14809](https://github.com/SeleniumHQ/selenium/pull/14809)).
+
+
+
+### **JavaScript**
+- **Federated Credential Management Support**: Introduced support for Federated Credential Management, enhancing authentication capabilities. ([#15008](https://github.com/SeleniumHQ/selenium/pull/15008))
+- **Node.js Version Specification**: The minimum required Node.js version has been specified as 18.20.5.
+- **Improved Logging**: Added detailed error messages for invalid cookie name validation in `getCookie` and `deleteCookie` methods, aiding in debugging.
+- **Diagnostic Logging for Safari**: Enabled diagnostic logging for Safari, facilitating better issue tracking and resolution.
+
+
+
+### **.NET**
+- **Nullability Improvements**: Added annotations to `SessionId`, `Alert`, `CookieJar`, `Logs API`, and more ([#14840](https://github.com/SeleniumHQ/selenium/pull/14840), [#14874](https://github.com/SeleniumHQ/selenium/pull/14874)).
+- **Refactored DevTools**: Modernized code style and enhanced JSON parsing ([#14990](https://github.com/SeleniumHQ/selenium/pull/14990)).
+- **Future-Proofing**: Added notes and deprecated setters for better immutability ([#15107](https://github.com/SeleniumHQ/selenium/pull/15107)).
+- **Testing Updates**: Migrated NUnit assertions to modern syntax ([#14870](https://github.com/SeleniumHQ/selenium/pull/14870)).
+
+
+
+### **Ruby**
+- **BiDi Network Enhancements**: Added request handlers for authentication and interception ([#14751](https://github.com/SeleniumHQ/selenium/pull/14751)).
+- **Cookie Management Updates**: Added tests and improved handling for cookies ([#14843](https://github.com/SeleniumHQ/selenium/pull/14843)).
+
+
+
+### **Grid**
+- **Improved Session Management**: Enhanced slot matching and session queue handling ([#14914](https://github.com/SeleniumHQ/selenium/pull/14914)).
+- **Dynamic Grid Enhancements**: Added video recording capabilities on browser node ([#15047](https://github.com/SeleniumHQ/selenium/pull/15047)).
+- **Reliability Boost**: Improved HTTP request retries and node health checks ([#14924](https://github.com/SeleniumHQ/selenium/pull/14924)).
+
+
+
+### Docker Selenium
+- Update procedure to install Firefox in Node/Standalone Firefox ([#2550](https://github.com/SeleniumHQ/docker-selenium/discussions/2550))
+- Enable video recorder in Node/Standalone containers ([#2539](https://github.com/SeleniumHQ/docker-selenium/discussions/2539))
+- Env var `SE_ENABLE_TRACING=false` is not required when starting the container anymore ([#2549](https://github.com/SeleniumHQ/docker-selenium/discussions/2549))
+- Env var `SE_NODE_PLATFORM_NAME` & `SE_NODE_BROWSER_VERSION` to adjust default Node stereotypes for autoscaling ([#2520](https://github.com/SeleniumHQ/docker-selenium/pull/2520), [#2525](https://github.com/SeleniumHQ/docker-selenium/pull/2525))
+- Selenium Grid scaler in KEDA improvements ([KEDA#6437](https://github.com/kedacore/keda/pull/6437), [KEDA#6477](https://github.com/kedacore/keda/pull/6477))
+- [See all changes](https://github.com/SeleniumHQ/docker-selenium/releases)
+
+
+
+We thank all our contributors for their incredible efforts in making Selenium better with every release. ❤️
+
+For a detailed look at all changes, check out the [release notes](https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.28.0).
+
+
+
+
+## Contributors
+
+**Special shout-out to everyone who helped the Selenium Team get this release out!**
+
+### [Selenium](https://github.com/SeleniumHQ/selenium)
+
+
+
+
+{{< gh-user "https://api.github.com/users/AdamPDotty" >}}
+{{< gh-user "https://api.github.com/users/DineshKumarRA" >}}
+{{< gh-user "https://api.github.com/users/MustafaAgamy" >}}
+{{< gh-user "https://api.github.com/users/dennisoelkers" >}}
+{{< gh-user "https://api.github.com/users/iampopovich" >}}
+{{< gh-user "https://api.github.com/users/lauromoura" >}}
+{{< gh-user "https://api.github.com/users/mk868" >}}
+{{< gh-user "https://api.github.com/users/navin772" >}}
+{{< gh-user "https://api.github.com/users/shbenzer" >}}
+
+
+
+
+
+### [Selenium Docs & Website](https://github.com/SeleniumHQ/seleniumhq.github.io)
+
+
+
+
+{{< gh-user "https://api.github.com/users/Delta456" >}}
+{{< gh-user "https://api.github.com/users/jasonren0403" >}}
+{{< gh-user "https://api.github.com/users/navin772" >}}
+{{< gh-user "https://api.github.com/users/pallavigitwork" >}}
+{{< gh-user "https://api.github.com/users/praveenmar" >}}
+{{< gh-user "https://api.github.com/users/shbenzer" >}}
+{{< gh-user "https://api.github.com/users/yvsvarma" >}}
+
+
+
+
+### [Docker Selenium](https://github.com/SeleniumHQ/docker-selenium)
+
+
+
+
+{{< gh-user "https://api.github.com/users/KyriosGN0" >}}
+{{< gh-user "https://api.github.com/users/jbolsens-legion" >}}
+{{< gh-user "https://api.github.com/users/joshfng" >}}
+
+
+
+
+### [Selenium Team Members][team]
+
+**Thanks as well to all the team members who contributed to this release:**
+
+
+
+
+{{< gh-user "https://api.github.com/users/aguspe" >}}
+{{< gh-user "https://api.github.com/users/AutomatedTester" >}}
+{{< gh-user "https://api.github.com/users/bonigarcia" >}}
+{{< gh-user "https://api.github.com/users/diemol" >}}
+{{< gh-user "https://api.github.com/users/harsha509" >}}
+{{< gh-user "https://api.github.com/users/joerg1985" >}}
+{{< gh-user "https://api.github.com/users/nvborisenko" >}}
+{{< gh-user "https://api.github.com/users/p0deje" >}}
+{{< gh-user "https://api.github.com/users/pujagani" >}}
+{{< gh-user "https://api.github.com/users/RenderMichael" >}}
+{{< gh-user "https://api.github.com/users/shs96c" >}}
+{{< gh-user "https://api.github.com/users/titusfortner" >}}
+{{< gh-user "https://api.github.com/users/VietND96" >}}
+
+
+
+
+
+
+Stay tuned for updates by following SeleniumHQ on:
+- [Mastodon](https://mastodon.social/@seleniumHQ@fosstodon.org)
+- [BlueSky](https://bsky.app/profile/seleniumconf.bsky.social)
+- [LinkedIn](https://www.linkedin.com/company/selenium/)
+- [Selenium Community YouTube Channel](https://www.youtube.com/@SeleniumHQProject/streams)
+- [X (Formerly Twitter)](https://twitter.com/seleniumhq)
+
+Happy automating!
+
+[downloads]: /downloads
+[bindings]: /downloads#bindings
+[team]: /project/structure
+[BiDi]: https://github.com/w3c/webdriver-bidi
diff --git a/website_and_docs/content/blog/2025/selenium-4-29-released.md b/website_and_docs/content/blog/2025/selenium-4-29-released.md
new file mode 100644
index 000000000000..19cd5b451444
--- /dev/null
+++ b/website_and_docs/content/blog/2025/selenium-4-29-released.md
@@ -0,0 +1,174 @@
+---
+title: "Selenium 4.29 Released!"
+linkTitle: "Selenium 4.29 Released!"
+date: 2025-02-20
+tags: ["selenium"]
+categories: ["releases"]
+author: Diego Molina [@diemol](https://www.diemol.com)
+images:
+ - "/images/blog/2025/selenium_4.29.jpg"
+description: >
+ Today we're happy to announce that Selenium 4.29 has been released!
+---
+We're very happy to announce the release of Selenium 4.29 for
+Javascript, Ruby, Python, .NET, Java and the Grid!
+Links to everything can be found on our [downloads page][downloads].
+
+
+---
+
+## 🚀 Major Highlights
+
+- **Final removal of [Firefox CDP support](/blog/2025/remove-cdp-firefox/)** across all language bindings.
+- **New WebDriver BiDi capabilities**: Implementation of `setCacheBehavior` and `getClientWindows` commands.
+- **Grid UI Fixes**: Live session view now works as expected.
+- **PrintOptions enhancements**: Support for predefined and custom paper sizes.
+- **Nullability annotations** continue to improve type safety in .NET.
+- **BiDi improvements**: Network response handlers and optimizations.
+- **Enhancements to logging options** in Java.
+
+---
+
+## 🔹 Language-Specific Changes
+
+### **Java**
+- Implemented `setCacheBehavior` for WebDriver BiDi. ([#15130](https://github.com/SeleniumHQ/selenium/pull/15130))
+- Enhanced `PageSize` class to support predefined and custom paper sizes. ([#15052](https://github.com/SeleniumHQ/selenium/pull/15052))
+- Ensured purging dead nodes service interval is configurable. ([#15175](https://github.com/SeleniumHQ/selenium/pull/15175))
+- Improved handling of Selenium logging options. ([#15197](https://github.com/SeleniumHQ/selenium/pull/15197))
+- Added support for `getClientWindows` in WebDriver BiDi. ([#14869](https://github.com/SeleniumHQ/selenium/pull/14869))
+
+### **Python**
+- Fixed installation issues for source distributions. ([#15128](https://github.com/SeleniumHQ/selenium/pull/15128))
+- Updated `PrintOptions` to support different page sizes. ([#15064](https://github.com/SeleniumHQ/selenium/pull/15064))
+- Documented `cygwin` path usage in `send_keys()`. ([#15275](https://github.com/SeleniumHQ/selenium/pull/15275))
+- Fixed return type and docstrings for `get_downloadable_files()`. ([#15292](https://github.com/SeleniumHQ/selenium/pull/15292))
+
+### **JavaScript**
+- Implemented `setCacheBehavior` for WebDriver BiDi. ([#15136](https://github.com/SeleniumHQ/selenium/pull/15136))
+- Fixed dependencies for `novnc` v1.5.0. ([#15005](https://github.com/SeleniumHQ/selenium/pull/15005))
+- Added support for `getClientWindows` in WebDriver BiDi. ([#15248](https://github.com/SeleniumHQ/selenium/pull/15248))
+
+### **Ruby**
+- Removed Java date dependency. ([#15122](https://github.com/SeleniumHQ/selenium/pull/15122))
+- Added WebDriver BiDi network response handler. ([#14900](https://github.com/SeleniumHQ/selenium/pull/14900))
+- Implemented WebDriver BiDi `setCacheBehavior` command. ([#15114](https://github.com/SeleniumHQ/selenium/pull/15114))
+
+### **.NET**
+- Improved BiDi exception handling when it is not enabled. ([#15163](https://github.com/SeleniumHQ/selenium/pull/15163))
+- Added nullability annotations across multiple modules, including `Command`, `DriverService`, `FirefoxProfile`, `Manage()`, `SafariOptions`, and `Navigate()`.
+- Updated WebAuth credential handling. ([#15201](https://github.com/SeleniumHQ/selenium/pull/15201))
+- Simplified creation of network types. ([#15267](https://github.com/SeleniumHQ/selenium/pull/15267))
+- Improved logging stability. ([#15257](https://github.com/SeleniumHQ/selenium/pull/15257))
+
+### **Docker Selenium**
+
+- Publish Node/Standalone images with the latest Grid core version and browser backward versions
+- Update container environment to JDK21 ([#2642](https://github.com/SeleniumHQ/docker-selenium/pull/2642))
+- Node base with share system certificate support ([#2653](https://github.com/SeleniumHQ/docker-selenium/pull/2653))
+- Node container is able to restart and retry to register when `register-period` exceeded ([#2662](https://github.com/SeleniumHQ/docker-selenium/pull/2662))
+- Selenium Grid scaler in KEDA feature preview
+ - Add trigger param to set custom capabilities for matching specific Nodes ([KEDA#6536](https://github.com/kedacore/keda/pull/6536))
+ - Add trigger param for Node enables managed downloads capability ([KEDA#6570](https://github.com/kedacore/keda/pull/6570))
+- Helm config: Set K8s node IP to all components via env var KUBERNETES_NODE_HOST_IP in template ([#2668](https://github.com/SeleniumHQ/docker-selenium/pull/2668))
+- [See all changes](https://github.com/SeleniumHQ/docker-selenium/releases)
+
+
+
+
+We thank all our contributors for their incredible efforts in making Selenium better with every release. ❤️
+
+For a detailed look at all changes, check out the [release notes](https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.29.0).
+
+
+
+
+## Contributors
+
+**Special shout-out to everyone who helped the Selenium Team get this release out!**
+
+### [Selenium](https://github.com/SeleniumHQ/selenium)
+
+
+
+
+{{< gh-user "https://api.github.com/users/Delta456" >}}
+{{< gh-user "https://api.github.com/users/iampopovich" >}}
+{{< gh-user "https://api.github.com/users/navin772" >}}
+{{< gh-user "https://api.github.com/users/smortex" >}}
+{{< gh-user "https://api.github.com/users/yvsvarma" >}}
+
+
+
+
+
+### [Selenium Docs & Website](https://github.com/SeleniumHQ/seleniumhq.github.io)
+
+
+
+
+{{< gh-user "https://api.github.com/users/AndreyJVM" >}}
+{{< gh-user "https://api.github.com/users/Delta456" >}}
+{{< gh-user "https://api.github.com/users/alaahong" >}}
+{{< gh-user "https://api.github.com/users/b2m" >}}
+{{< gh-user "https://api.github.com/users/pallavigitwork" >}}
+
+
+
+
+### [Docker Selenium](https://github.com/SeleniumHQ/docker-selenium)
+
+
+
+
+{{< gh-user "https://api.github.com/users/PeterUpfold" >}}
+{{< gh-user "https://api.github.com/users/StenAL" >}}
+{{< gh-user "https://api.github.com/users/amardeep2006" >}}
+{{< gh-user "https://api.github.com/users/calendir" >}}
+{{< gh-user "https://api.github.com/users/joshfng" >}}
+{{< gh-user "https://api.github.com/users/ritzk" >}}
+
+
+
+
+### [Selenium Team Members][team]
+
+**Thanks as well to all the team members who contributed to this release:**
+
+
+
+
+{{< gh-user "https://api.github.com/users/aguspe" >}}
+{{< gh-user "https://api.github.com/users/AutomatedTester" >}}
+{{< gh-user "https://api.github.com/users/bonigarcia" >}}
+{{< gh-user "https://api.github.com/users/cgoldberg" >}}
+{{< gh-user "https://api.github.com/users/diemol" >}}
+{{< gh-user "https://api.github.com/users/harsha509" >}}
+{{< gh-user "https://api.github.com/users/joerg1985" >}}
+{{< gh-user "https://api.github.com/users/nvborisenko" >}}
+{{< gh-user "https://api.github.com/users/p0deje" >}}
+{{< gh-user "https://api.github.com/users/pujagani" >}}
+{{< gh-user "https://api.github.com/users/RenderMichael" >}}
+{{< gh-user "https://api.github.com/users/shbenzer" >}}
+{{< gh-user "https://api.github.com/users/shs96c" >}}
+{{< gh-user "https://api.github.com/users/titusfortner" >}}
+{{< gh-user "https://api.github.com/users/VietND96" >}}
+
+
+
+
+
+
+Stay tuned for updates by following SeleniumHQ on:
+- [Mastodon](https://mastodon.social/@seleniumHQ@fosstodon.org)
+- [BlueSky](https://bsky.app/profile/seleniumconf.bsky.social)
+- [LinkedIn](https://www.linkedin.com/company/selenium/)
+- [Selenium Community YouTube Channel](https://www.youtube.com/@SeleniumHQProject/streams)
+- [X (Formerly Twitter)](https://twitter.com/seleniumhq)
+
+Happy automating!
+
+[downloads]: /downloads
+[bindings]: /downloads#bindings
+[team]: /project/structure
+[BiDi]: https://github.com/w3c/webdriver-bidi
diff --git a/website_and_docs/content/blog/2025/selenium-4-30-released.md b/website_and_docs/content/blog/2025/selenium-4-30-released.md
new file mode 100644
index 000000000000..6ef3314a255e
--- /dev/null
+++ b/website_and_docs/content/blog/2025/selenium-4-30-released.md
@@ -0,0 +1,197 @@
+---
+title: "Selenium 4.30 Released!"
+linkTitle: "Selenium 4.30 Released!"
+date: 2025-03-21
+tags: [ "selenium" ]
+categories: [ "releases" ]
+author: Diego Molina [@diemol](https://www.diemol.com)
+images:
+ - "/images/blog/2025/selenium_4.30.jpg"
+description: >
+ Today we're happy to announce that Selenium 4.30 has been released!
+---
+
+We're very happy to announce the release of Selenium 4.30 for Javascript, Ruby, Python, .NET, Java
+and the Grid!
+This version brings key updates across the project, with improvements to the BiDi protocol,
+extensive nullability work in .NET, better error handling, and various bug fixes. It’s a great
+step forward as we continue strengthening Selenium’s stability, consistency, and support across
+all supported languages.
+
+Links to all assets can be found on our [downloads page][downloads].
+
+
+---
+
+## 🚀 Major Highlights
+
+- Continued enhancements to **BiDi (Bi-Directional Protocol)** support across Java, Ruby, .NET, JavaScript, and Python.
+- Extensive **nullability annotations** added throughout the .NET bindings.
+- Selenium Manager (Rust) now supports **nightly Grid builds**.
+- Improvements to testing infrastructure and developer experience, including better packaging, linting, and platform support.
+- Numerous bug fixes and refactors across the Grid, bindings, and devtools.
+
+---
+
+## 🔹 Language-Specific Changes
+
+### **Java**
+
+- Implemented BiDi commands: `getBidiSessionStatus` and `Permissions`.
+- Refined logger initialization.
+- Removed deprecated, non-W3C compliant `NetworkConnection` interface.
+- Added support for setting viewport and handling CDP warnings gracefully.
+
+### **Python**
+
+- Improved devtools test handling and documentation.
+- Fixed packaging issues and test discovery for `pytest`.
+- Added docstring updates for clarity and modernization.
+- Replaced strings with `By` class attributes.
+- Improved socket resource management and error handling.
+- Updated `expected_conditions` type annotations.
+
+### **JavaScript**
+
+- Fixed BiDi tests for Chrome and Firefox on CI.
+- Implemented BiDi `permissions` module commands.
+
+### **Ruby**
+
+- Fixed a compatibility issue with Ruby 3.1 ("no anonymous block parameter").
+- Added BiDi support for:
+ - Setting viewport
+ - Activating browser context
+ - Providing responses
+- Added a `target_type` parameter to devtools.
+
+### **.NET**
+
+- Enabled **nullable reference types** across many components.
+- Trimmed away CDP for **AOT** applications.
+- Enhanced BiDi support including:
+ - `SetFiles` command
+ - Support for `UnhandledPromptBehavior`
+ - Event support like `OnNavigationCommitted`
+ - Encapsulation of the transport layer
+- Improved `WebDriver`, `WebElement`, and capabilities types with nullability.
+- Introduced `SystemClock` singleton.
+- Revisited and fixed test execution on Windows/macOS.
+- Removed obsoleted members for 4.30.
+
+### **Grid & Selenium Manager**
+
+- Added trace logging for session stop events in Grid.
+- Improved configuration options for server timeouts and session handling.
+- Added support in Selenium Manager (Rust) for **nightly Grid builds**.
+- Enhanced ability to trace and view live sessions.
+
+### **Docker Selenium**
+
+- Helm config: Node Relay to extend autoscaling Grid with test cloud resources ([#2703](https://github.com/SeleniumHQ/docker-selenium/pull/2703)).
+- Docker: Disable HeapDumpOnOutOfMemoryError by default ([#2708](https://github.com/SeleniumHQ/docker-selenium/pull/2708))
+- [See all changes](https://github.com/SeleniumHQ/docker-selenium/releases)
+
+
+
+
+We thank all our contributors for their incredible efforts in making Selenium better with every
+release. ❤️
+
+For a detailed look at all changes, check out
+the [release notes](https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.30.0).
+
+
+
+## Contributors
+
+**Special shout-out to everyone who helped the Selenium Team get this release out!**
+
+### [Selenium](https://github.com/SeleniumHQ/selenium)
+
+
+
+
+{{< gh-user "https://api.github.com/users/Delta456" >}}
+{{< gh-user "https://api.github.com/users/FloKNetcare" >}}
+{{< gh-user "https://api.github.com/users/ahalbrock" >}}
+{{< gh-user "https://api.github.com/users/allrob23" >}}
+{{< gh-user "https://api.github.com/users/jpawlyn" >}}
+{{< gh-user "https://api.github.com/users/navin772" >}}
+{{< gh-user "https://api.github.com/users/smortex" >}}
+{{< gh-user "https://api.github.com/users/pallavigitwork" >}}
+{{< gh-user "https://api.github.com/users/ahalbrock" >}}
+
+
+
+
+### [Selenium Docs & Website](https://github.com/SeleniumHQ/seleniumhq.github.io)
+
+
+
+
+{{< gh-user "https://api.github.com/users/Delta456" >}}
+{{< gh-user "https://api.github.com/users/WasiqB" >}}
+{{< gh-user "https://api.github.com/users/alaahong" >}}
+{{< gh-user "https://api.github.com/users/beinghumantester" >}}
+{{< gh-user "https://api.github.com/users/franciscotrenco" >}}
+{{< gh-user "https://api.github.com/users/pallavigitwork" >}}
+
+
+
+
+### [Docker Selenium](https://github.com/SeleniumHQ/docker-selenium)
+
+
+
+
+{{< gh-user "https://api.github.com/users/VietND96" >}}
+
+
+
+
+### [Selenium Team Members][team]
+
+**Thanks as well to all the team members who contributed to this release:**
+
+
+
+
+{{< gh-user "https://api.github.com/users/aguspe" >}}
+{{< gh-user "https://api.github.com/users/AutomatedTester" >}}
+{{< gh-user "https://api.github.com/users/bonigarcia" >}}
+{{< gh-user "https://api.github.com/users/cgoldberg" >}}
+{{< gh-user "https://api.github.com/users/diemol" >}}
+{{< gh-user "https://api.github.com/users/harsha509" >}}
+{{< gh-user "https://api.github.com/users/joerg1985" >}}
+{{< gh-user "https://api.github.com/users/nvborisenko" >}}
+{{< gh-user "https://api.github.com/users/p0deje" >}}
+{{< gh-user "https://api.github.com/users/pujagani" >}}
+{{< gh-user "https://api.github.com/users/RenderMichael" >}}
+{{< gh-user "https://api.github.com/users/shbenzer" >}}
+{{< gh-user "https://api.github.com/users/shs96c" >}}
+{{< gh-user "https://api.github.com/users/titusfortner" >}}
+{{< gh-user "https://api.github.com/users/VietND96" >}}
+
+
+
+
+
+
+Stay tuned for updates by following SeleniumHQ on:
+
+- [Mastodon](https://mastodon.social/@seleniumHQ@fosstodon.org)
+- [BlueSky](https://bsky.app/profile/seleniumconf.bsky.social)
+- [LinkedIn](https://www.linkedin.com/company/selenium/)
+- [Selenium Community YouTube Channel](https://www.youtube.com/@SeleniumHQProject/streams)
+- [X (Formerly Twitter)](https://twitter.com/seleniumhq)
+
+Happy automating!
+
+[downloads]: /downloads
+
+[bindings]: /downloads#bindings
+
+[team]: /project/structure
+
+[BiDi]: https://github.com/w3c/webdriver-bidi
diff --git a/website_and_docs/content/blog/2025/selenium-4-31-released.md b/website_and_docs/content/blog/2025/selenium-4-31-released.md
new file mode 100644
index 000000000000..87c727c935ef
--- /dev/null
+++ b/website_and_docs/content/blog/2025/selenium-4-31-released.md
@@ -0,0 +1,175 @@
+---
+title: "Selenium 4.31 Released!"
+linkTitle: "Selenium 4.31 Released!"
+date: 2025-04-05
+tags: [ "selenium" ]
+categories: [ "releases" ]
+author: Diego Molina [@diemol](https://www.diemol.com)
+images:
+ - "/images/blog/2025/selenium_4.31.jpg"
+description: >
+ Today we're happy to announce that Selenium 4.31 has been released!
+---
+
+We’re excited to announce the release of **Selenium 4.31** for Javascript, Ruby, Python, .NET, Java
+and the Grid! 🎉
+This release focuses on improvements across the board, including better BiDi protocol support, test
+reliability, nullability enhancements, and cleanup of legacy code across languages.
+
+Links to all assets can be found on our [downloads page][downloads].
+
+
+---
+
+## 🚀 Major Highlights
+
+- Continued work towards full BiDi support in all bindings
+- Cleanup of unused legacy components (like `wgxpath`)
+- Expanded test coverage and fixes for various environments (CI, RBE, MacOS)
+- Improvements in documentation and development tooling
+
+---
+
+## 🔹 Language-Specific Changes
+
+### **Java**
+
+- [Handle `getNamedCookie` and `deleteNamedCookie` for empty strings](https://github.com/SeleniumHQ/selenium/pull/15092)
+- [Add nullness for AppCacheStatus, Credential, and Either](https://github.com/SeleniumHQ/selenium/pull/15119)
+- [Add nullness for interactions](https://github.com/SeleniumHQ/selenium/pull/15118)
+- [Enable Safari for CookieImplementationTest](https://github.com/SeleniumHQ/selenium/pull/15544)
+- [Add test to add a cookie in a user context (BiDi)](https://github.com/SeleniumHQ/selenium/pull/15312)
+
+### **Python**
+
+- [Fix docstring issues that sphinx complains about](https://github.com/SeleniumHQ/selenium/pull/15466)
+- [Only shutdown service if process not already terminated](https://github.com/SeleniumHQ/selenium/pull/15183)
+- [Remove unused mocker arg in chrome options test](https://github.com/SeleniumHQ/selenium/pull/15540)
+- [Fix driver class name in test fixtures](https://github.com/SeleniumHQ/selenium/pull/15550)
+
+### **JavaScript**
+
+- Fixed BiDi tests for Chrome and Firefox on CI.
+- Implemented BiDi `permissions` module commands.
+
+### **Ruby**
+
+- [Fix BiDi test errors](https://github.com/SeleniumHQ/selenium/pull/15482)
+- [Allow symbols again to be passed on `delete_cookie`](https://github.com/SeleniumHQ/selenium/pull/15519)
+
+### **.NET**
+
+- [Decouple nested BiDi types across multiple modules](https://github.com/SeleniumHQ/selenium/pulls?q=is%3Apr+author%3Anvborisenko+label%3Adotnet)
+- [Fix null warnings in `RelativeBy` by sealing the type](https://github.com/SeleniumHQ/selenium/pull/15379)
+- [Simplify conversion to `LocalValue`](https://github.com/SeleniumHQ/selenium/pull/15441)
+- [Unify protected and internal Execute methods](https://github.com/SeleniumHQ/selenium/pull/15233)
+- [Make `ContinueWithAuthCommand` closer to spec (breaking change)](https://github.com/SeleniumHQ/selenium/pull/15545)
+- [Avoid intermediate JsonDocument allocation to improve performance](https://github.com/SeleniumHQ/selenium/pull/15555)
+
+### **Grid**
+
+- [Expose register status via Node status response](https://github.com/SeleniumHQ/selenium/pull/15448)
+- [Add traces for event stop session in Node](https://github.com/SeleniumHQ/selenium/pull/15348)
+
+### **Docker Selenium**
+
+- Helm config: Add template for file browser video records service ([#2763](https://github.com/SeleniumHQ/docker-selenium/pull/2763))
+- Helm config: Strictly handle `basicAuth.enabled` in template ([#2760](https://github.com/SeleniumHQ/docker-selenium/pull/2760))
+- Selenium Grid Autoscaling in Kubernetes is expected working well with KEDA core v2.17.0.
+- [See all changes](https://github.com/SeleniumHQ/docker-selenium/releases)
+
+
+
+
+We thank all our contributors for their incredible efforts in making Selenium better with every
+release. ❤️
+
+For a detailed look at all changes, check out
+the [release notes](https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.31.0).
+
+
+
+## Contributors
+
+**Special shout-out to everyone who helped the Selenium Team get this release out!**
+
+### [Selenium](https://github.com/SeleniumHQ/selenium)
+
+
+
+
+{{< gh-user "https://api.github.com/users/Delta456" >}}
+{{< gh-user "https://api.github.com/users/PSandro" >}}
+{{< gh-user "https://api.github.com/users/mk868" >}}
+{{< gh-user "https://api.github.com/users/navin772" >}}
+
+
+
+
+### [Selenium Docs & Website](https://github.com/SeleniumHQ/seleniumhq.github.io)
+
+
+
+
+{{< gh-user "https://api.github.com/users/alaahong" >}}
+{{< gh-user "https://api.github.com/users/pallavigitwork" >}}
+
+
+
+
+### [Docker Selenium](https://github.com/SeleniumHQ/docker-selenium)
+
+
+
+
+{{< gh-user "https://api.github.com/users/KenHuPricer" >}}
+{{< gh-user "https://api.github.com/users/KyriosGN0" >}}
+
+
+
+
+### [Selenium Team Members][team]
+
+**Thanks as well to all the team members who contributed to this release:**
+
+
+
+
+{{< gh-user "https://api.github.com/users/aguspe" >}}
+{{< gh-user "https://api.github.com/users/AutomatedTester" >}}
+{{< gh-user "https://api.github.com/users/bonigarcia" >}}
+{{< gh-user "https://api.github.com/users/cgoldberg" >}}
+{{< gh-user "https://api.github.com/users/diemol" >}}
+{{< gh-user "https://api.github.com/users/harsha509" >}}
+{{< gh-user "https://api.github.com/users/joerg1985" >}}
+{{< gh-user "https://api.github.com/users/nvborisenko" >}}
+{{< gh-user "https://api.github.com/users/p0deje" >}}
+{{< gh-user "https://api.github.com/users/pujagani" >}}
+{{< gh-user "https://api.github.com/users/RenderMichael" >}}
+{{< gh-user "https://api.github.com/users/shbenzer" >}}
+{{< gh-user "https://api.github.com/users/shs96c" >}}
+{{< gh-user "https://api.github.com/users/titusfortner" >}}
+{{< gh-user "https://api.github.com/users/VietND96" >}}
+
+
+
+
+
+
+Stay tuned for updates by following SeleniumHQ on:
+
+- [Mastodon](https://mastodon.social/@seleniumHQ@fosstodon.org)
+- [BlueSky](https://bsky.app/profile/seleniumconf.bsky.social)
+- [LinkedIn](https://www.linkedin.com/company/selenium/)
+- [Selenium Community YouTube Channel](https://www.youtube.com/@SeleniumHQProject/streams)
+- [X (Formerly Twitter)](https://twitter.com/seleniumhq)
+
+Happy automating!
+
+[downloads]: /downloads
+
+[bindings]: /downloads#bindings
+
+[team]: /project/structure
+
+[BiDi]: https://github.com/w3c/webdriver-bidi
diff --git a/website_and_docs/content/blog/2025/selenium-4-32-released.md b/website_and_docs/content/blog/2025/selenium-4-32-released.md
new file mode 100644
index 000000000000..f407371e737e
--- /dev/null
+++ b/website_and_docs/content/blog/2025/selenium-4-32-released.md
@@ -0,0 +1,180 @@
+---
+title: "Selenium 4.32 Released!"
+linkTitle: "Selenium 4.32 Released!"
+date: 2025-05-05
+tags: [ "selenium" ]
+categories: [ "releases" ]
+author: Diego Molina [@diemol](https://www.diemol.com)
+images:
+ - "/images/blog/2025/selenium_4.32.jpg"
+description: >
+ Today we're happy to announce that Selenium 4.32 has been released!
+---
+
+We’re excited to announce the release of **Selenium 4.32** for Javascript, Ruby, Python, .NET, Java
+and the Grid! 🎉
+This release continues the focus on strengthening BiDi support across multiple bindings, improving
+stability in tests, and refining documentation and developer experience.
+
+Links to all assets can be found on our [downloads page][downloads].
+
+
+---
+
+## 🚀 Major Highlights
+
+- Enhanced **BiDi (Bi-Directional)** protocol support for Python, Java, Ruby, and .NET bindings
+- Dozens of **bug fixes and stability improvements** in tests and documentation
+- Selenium Grid now better handles **capabilities for mobile testing with Relay Nodes**
+- New utility class in Python to manage a local Grid server
+- Additional updates to support AOT compatibility and memory optimizations in .NET
+
+---
+
+## 🔹 Language-Specific Changes
+
+### **Java**
+
+- BiDi improvements: `onNavigationCommitted`, `getClientWindows`, and Edge support [#15560](https://github.com/SeleniumHQ/selenium/pull/15560), [#15661](https://github.com/SeleniumHQ/selenium/pull/15661)
+- BiDi tests enabled for Edge network module [#15654](https://github.com/SeleniumHQ/selenium/pull/15654)
+- Set BiDi as active protocol for Remote Firefox [#15224](https://github.com/SeleniumHQ/selenium/pull/15224)
+- Dependency versioning improvements via BOM [#15689](https://github.com/SeleniumHQ/selenium/pull/15689)
+
+### **Python**
+
+- Fixes to test args for `--headless` and `--bidi` [#15567](https://github.com/SeleniumHQ/selenium/pull/15567)
+- Improvements in test coverage and cleanup [#15579](https://github.com/SeleniumHQ/selenium/pull/15579), [#15580](https://github.com/SeleniumHQ/selenium/pull/15580)
+- FedCM state leak fix [#15583](https://github.com/SeleniumHQ/selenium/pull/15583)
+- BiDi Network: intercepts and authentication implemented [#14592](https://github.com/SeleniumHQ/selenium/pull/14592)
+- Implemented BiDi `browser`, `browsing_context`, and `log` modules [#15616](https://github.com/SeleniumHQ/selenium/pull/15616), [#15631](https://github.com/SeleniumHQ/selenium/pull/15631), [#15668](https://github.com/SeleniumHQ/selenium/pull/15668)
+- Added `Server` utility class to manage Grid [#15666](https://github.com/SeleniumHQ/selenium/pull/15666)
+- Modernized linting setup and doc publishing [#15614](https://github.com/SeleniumHQ/selenium/pull/15614)
+
+### **JavaScript**
+
+- [Set remote active protocol in Firefox to BiDi only](https://github.com/SeleniumHQ/selenium/commit/a1ff120a9fd69daeea6a51d41aee6beb83748895)
+
+### **Ruby**
+
+- Added `PrintOptions` support [#15158](https://github.com/SeleniumHQ/selenium/pull/15158)
+- WebSocket port handling for Firefox [#15458](https://github.com/SeleniumHQ/selenium/pull/15458)
+- BiDi `setViewport`, `activate`, and log support enhanced [#15290](https://github.com/SeleniumHQ/selenium/pull/15290), [#15365](https://github.com/SeleniumHQ/selenium/pull/15365)
+
+
+### **.NET**
+
+- Extensive BiDi refactoring for better spec alignment and AOT compatibility [#15575](https://github.com/SeleniumHQ/selenium/pull/15575), [#15591](https://github.com/SeleniumHQ/selenium/pull/15591)
+- Introduced strong typing for LocalValue conversions [#15532](https://github.com/SeleniumHQ/selenium/pull/15532)
+- Refined network interception and error handling [#15603](https://github.com/SeleniumHQ/selenium/pull/15603), [#15521](https://github.com/SeleniumHQ/selenium/pull/15521)
+- Websocket memory and platform detection improvements [#15640](https://github.com/SeleniumHQ/selenium/pull/15640), [#15649](https://github.com/SeleniumHQ/selenium/pull/15649)
+
+### **Grid**
+
+- Fixed Safari-specific capability prefix handling [#15574](https://github.com/SeleniumHQ/selenium/pull/15574)
+- Improved handling of `browserName` for Relay Nodes in mobile [#15537](https://github.com/SeleniumHQ/selenium/pull/15537)
+
+### **Docker Selenium**
+
+- Docker: Init python venv with non-root user ([#2769](https://github.com/SeleniumHQ/docker-selenium/pull/2769))
+- Docker: Remove Hub GraphQL dependency from video recorder ([#2813](https://github.com/SeleniumHQ/docker-selenium/pull/2813))
+- Docker: Fluxbox not rendering Chinese characters via VNC view ([#2817](https://github.com/SeleniumHQ/docker-selenium/pull/2817))
+- [See all changes](https://github.com/SeleniumHQ/docker-selenium/releases)
+
+
+
+
+We thank all our contributors for their incredible efforts in making Selenium better with every
+release. ❤️
+
+For a detailed look at all changes, check out
+the [release notes](https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.32.0).
+
+
+
+## Contributors
+
+**Special shout-out to everyone who helped the Selenium Team get this release out!**
+
+### [Selenium](https://github.com/SeleniumHQ/selenium)
+
+
+
+
+{{< gh-user "https://api.github.com/users/Delta456" >}}
+{{< gh-user "https://api.github.com/users/FFederi" >}}
+{{< gh-user "https://api.github.com/users/navin772" >}}
+{{< gh-user "https://api.github.com/users/yvsvarma" >}}
+
+
+
+
+### [Selenium Docs & Website](https://github.com/SeleniumHQ/seleniumhq.github.io)
+
+
+
+
+{{< gh-user "https://api.github.com/users/HandyCC" >}}
+{{< gh-user "https://api.github.com/users/Ozoniuss" >}}
+{{< gh-user "https://api.github.com/users/alaahong" >}}
+{{< gh-user "https://api.github.com/users/manoj9788" >}}
+{{< gh-user "https://api.github.com/users/pallavigitwork" >}}
+
+
+
+
+### [Docker Selenium](https://github.com/SeleniumHQ/docker-selenium)
+
+
+
+
+{{< gh-user "https://api.github.com/users/Trigtrig" >}}
+{{< gh-user "https://api.github.com/users/lermit" >}}
+
+
+
+
+### [Selenium Team Members][team]
+
+**Thanks as well to all the team members who contributed to this release:**
+
+
+
+
+{{< gh-user "https://api.github.com/users/aguspe" >}}
+{{< gh-user "https://api.github.com/users/AutomatedTester" >}}
+{{< gh-user "https://api.github.com/users/bonigarcia" >}}
+{{< gh-user "https://api.github.com/users/cgoldberg" >}}
+{{< gh-user "https://api.github.com/users/diemol" >}}
+{{< gh-user "https://api.github.com/users/harsha509" >}}
+{{< gh-user "https://api.github.com/users/joerg1985" >}}
+{{< gh-user "https://api.github.com/users/nvborisenko" >}}
+{{< gh-user "https://api.github.com/users/p0deje" >}}
+{{< gh-user "https://api.github.com/users/pujagani" >}}
+{{< gh-user "https://api.github.com/users/RenderMichael" >}}
+{{< gh-user "https://api.github.com/users/shbenzer" >}}
+{{< gh-user "https://api.github.com/users/shs96c" >}}
+{{< gh-user "https://api.github.com/users/titusfortner" >}}
+{{< gh-user "https://api.github.com/users/VietND96" >}}
+
+
+
+
+
+
+Stay tuned for updates by following SeleniumHQ on:
+
+- [Mastodon](https://mastodon.social/@seleniumHQ@fosstodon.org)
+- [BlueSky](https://bsky.app/profile/seleniumconf.bsky.social)
+- [LinkedIn](https://www.linkedin.com/company/selenium/)
+- [Selenium Community YouTube Channel](https://www.youtube.com/@SeleniumHQProject/streams)
+- [X (Formerly Twitter)](https://twitter.com/seleniumhq)
+
+Happy automating!
+
+[downloads]: /downloads
+
+[bindings]: /downloads#bindings
+
+[team]: /project/structure
+
+[BiDi]: https://github.com/w3c/webdriver-bidi
diff --git a/website_and_docs/content/blog/2025/selenium-4-33-released.md b/website_and_docs/content/blog/2025/selenium-4-33-released.md
new file mode 100644
index 000000000000..d5f022ff40d1
--- /dev/null
+++ b/website_and_docs/content/blog/2025/selenium-4-33-released.md
@@ -0,0 +1,178 @@
+---
+title: "Selenium 4.33 Released!"
+linkTitle: "Selenium 4.33 Released!"
+date: 2025-05-25
+tags: [ "selenium" ]
+categories: [ "releases" ]
+author: Diego Molina [@diemol](https://www.diemol.com)
+images:
+ - "/images/blog/2025/selenium_4.33.jpg"
+description: >
+ Today we're happy to announce that Selenium 4.33 has been released!
+---
+
+We’re excited to announce the release of **Selenium 4.33** for Javascript, Ruby, Python, .NET, Java
+and the Grid! 🎉
+
+This release contains improvements, cleanups, and new features across all language bindings and the
+Grid. This release continues our effort to modernize the codebase, improve developer experience, and
+refine the project’s tooling and documentation.
+
+Links to all assets can be found on our [downloads page][downloads].
+
+
+---
+
+## 🚀 Highlights
+
+- [9f3c923670](https://github.com/SeleniumHQ/selenium/commit/9f3c92367005f19fad2bc79c171e7250cce43da3) - Grid UI now includes live previews for each Node.
+- [43e6bb970e](https://github.com/SeleniumHQ/selenium/commit/43e6bb970e65ec62692d6bf49962ea81e1103e78) - Python BiDi support expands with the new webExtension module.
+- [ef05c15798](https://github.com/SeleniumHQ/selenium/commit/ef05c15798b22a3ade4bb1f111d3e1955988e267) - Java: Reverted deprecation notice for `getAttribute` after community feedback.
+- [638621f4bc](https://github.com/SeleniumHQ/selenium/commit/638621f4bc3c632c5955fb4d056fd2f01b6cf835) - Java: Clean-up of deprecated timeout configuration methods.
+
+## 🔍 Changes by Component
+
+### Grid
+
+- [9f3c923670](https://github.com/SeleniumHQ/selenium/commit/9f3c92367005f19fad2bc79c171e7250cce43da3) - UI Overview is able to see live preview per Node
+- [7401a3db93](https://github.com/SeleniumHQ/selenium/commit/7401a3db93a7b6cca6f4697c5d032196b2e7f661) - UI Sessions capability fields to display as additional columns
+
+### Python
+
+- [92db47fa2a](https://github.com/SeleniumHQ/selenium/commit/92db47fa2ad6b4f8baa70446b7c18e6c17966306) - Add missing modules to python API docs
+- [4fc2582bf9](https://github.com/SeleniumHQ/selenium/commit/4fc2582bf96ecc2d0d0f4552c0c200a1d4e1e303) - Better error for downloads on local webdrivers
+- [43e6bb970e](https://github.com/SeleniumHQ/selenium/commit/43e6bb970e65ec62692d6bf49962ea81e1103e78) - Add bidi webExtension module (#15749)
+
+### Rust
+
+- [7497552255](https://github.com/SeleniumHQ/selenium/commit/7497552255a2bef5a1d9883d7620de2e41c6b553) - Replace WMIC commands (deprecated) by WinAPI in Windows
+
+### Java
+
+- [ef05c15798](https://github.com/SeleniumHQ/selenium/commit/ef05c15798b22a3ade4bb1f111d3e1955988e267) - Reverting deprecation notice for `getAttribute`.
+- [638621f4bc](https://github.com/SeleniumHQ/selenium/commit/638621f4bc3c632c5955fb4d056fd2f01b6cf835) - Removing deprecated `setScriptTimeout` and `pageLoadTimeout`.
+- [fcf4c9d09e](https://github.com/SeleniumHQ/selenium/commit/fcf4c9d09ecd41223d185a0d9922f14f37f9d4f6) - Removing deprecated SlowLoadableComponent constructor.
+- [1e65b7b49f](https://github.com/SeleniumHQ/selenium/commit/1e65b7b49f4c22e842b3620d9c5841961dfccc5e) - Removing deprecated NATIVE_EVENTS field.
+- [f3f0cadedb](https://github.com/SeleniumHQ/selenium/commit/f3f0cadedbaef98cc224dc7c84f4d8720d115565) - Deprecating methods that use FirefoxBinary as well.
+
+### Ruby
+
+- [212fc8be35](https://github.com/SeleniumHQ/selenium/commit/212fc8be3566e333ee3823e153b770162c3902b8) - Upgrade to Ruby 3.2.
+- [1e2945de78](https://github.com/SeleniumHQ/selenium/commit/1e2945de78c8005d96bad66af43a02b46bde3d20) - Let firefox choose the bidi port by default.
+
+### .NET
+
+- [212fc8be35](https://github.com/SeleniumHQ/selenium/commit/212fc8be3566e333ee3823e153b770162c3902b8) - Upgrade to Ruby 3.2.
+- [1e2945de78](https://github.com/SeleniumHQ/selenium/commit/1e2945de78c8005d96bad66af43a02b46bde3d20) - Let firefox choose the bidi port by default.
+
+### JavaScript
+
+- [3ef1c25fe8](https://github.com/SeleniumHQ/selenium/commit/3ef1c25fe8eef39b195550f7b5bf76d38f4f42ca) - Chrome capabilities test passes now in RBE.
+
+
+### Docker Selenium
+
+- K8s: Fix Helm chart template for deployment of video recording manager ([#2828](https://github.com/SeleniumHQ/docker-selenium/pull/2828), [#2831](https://github.com/SeleniumHQ/docker-selenium/pull/2831)).
+- K8s: Node enable readiness probe checks status registered to Hub ([#2833](https://github.com/SeleniumHQ/docker-selenium/pull/2833)).
+- K8s: Video recorder run as sidecar container is disabled by default ([#2843](https://github.com/SeleniumHQ/docker-selenium/pull/2843)).
+- K8s: Fix chart template issue that might occur when using Helm version v3.18.0 ([365c106](https://github.com/SeleniumHQ/docker-selenium/commit/365c10659905e6ad5e7e972fcb54225dc2a8c928)).
+- K8s: Update chart dependencies (KEDA core 2.17,1, and so on).
+- [See all changes](https://github.com/SeleniumHQ/docker-selenium/releases)
+
+
+
+
+We thank all our contributors for their incredible efforts in making Selenium better with every
+release. ❤️
+
+For a detailed look at all changes, check out
+the [release notes](https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.33.0).
+
+
+
+## Contributors
+
+**Special shout-out to everyone who helped the Selenium Team get this release out!**
+
+### [Selenium](https://github.com/SeleniumHQ/selenium)
+
+
+
+
+{{< gh-user "https://api.github.com/users/DeflateAwning" >}}
+{{< gh-user "https://api.github.com/users/Delta456" >}}
+{{< gh-user "https://api.github.com/users/bandophahita" >}}
+{{< gh-user "https://api.github.com/users/navin772" >}}
+{{< gh-user "https://api.github.com/users/t7ru" >}}
+{{< gh-user "https://api.github.com/users/tomhughes" >}}
+
+
+
+
+### [Selenium Docs & Website](https://github.com/SeleniumHQ/seleniumhq.github.io)
+
+
+
+
+{{< gh-user "https://api.github.com/users/PeteSong" >}}
+{{< gh-user "https://api.github.com/users/alaahong" >}}
+{{< gh-user "https://api.github.com/users/pallavigitwork" >}}
+
+
+
+
+### [Docker Selenium](https://github.com/SeleniumHQ/docker-selenium)
+
+
+
+
+{{< gh-user "https://api.github.com/users/alcpereira" >}}
+
+
+
+
+### [Selenium Team Members][team]
+
+**Thanks as well to all the team members who contributed to this release:**
+
+
+
+
+{{< gh-user "https://api.github.com/users/aguspe" >}}
+{{< gh-user "https://api.github.com/users/AutomatedTester" >}}
+{{< gh-user "https://api.github.com/users/bonigarcia" >}}
+{{< gh-user "https://api.github.com/users/cgoldberg" >}}
+{{< gh-user "https://api.github.com/users/diemol" >}}
+{{< gh-user "https://api.github.com/users/harsha509" >}}
+{{< gh-user "https://api.github.com/users/joerg1985" >}}
+{{< gh-user "https://api.github.com/users/nvborisenko" >}}
+{{< gh-user "https://api.github.com/users/p0deje" >}}
+{{< gh-user "https://api.github.com/users/pujagani" >}}
+{{< gh-user "https://api.github.com/users/RenderMichael" >}}
+{{< gh-user "https://api.github.com/users/shbenzer" >}}
+{{< gh-user "https://api.github.com/users/shs96c" >}}
+{{< gh-user "https://api.github.com/users/titusfortner" >}}
+{{< gh-user "https://api.github.com/users/VietND96" >}}
+
+
+
+
+
+
+Stay tuned for updates by following SeleniumHQ on:
+
+- [Mastodon](https://mastodon.social/@seleniumHQ@fosstodon.org)
+- [BlueSky](https://bsky.app/profile/seleniumconf.bsky.social)
+- [LinkedIn](https://www.linkedin.com/company/selenium/)
+- [Selenium Community YouTube Channel](https://www.youtube.com/@SeleniumHQProject/streams)
+- [X (Formerly Twitter)](https://twitter.com/seleniumhq)
+
+Happy automating!
+
+[downloads]: /downloads
+
+[bindings]: /downloads#bindings
+
+[team]: /project/structure
+
+[BiDi]: https://github.com/w3c/webdriver-bidi
diff --git a/website_and_docs/content/blog/2025/selenium-4-34-released.md b/website_and_docs/content/blog/2025/selenium-4-34-released.md
new file mode 100644
index 000000000000..77524edd69f2
--- /dev/null
+++ b/website_and_docs/content/blog/2025/selenium-4-34-released.md
@@ -0,0 +1,209 @@
+---
+title: "Selenium 4.34 Released!"
+linkTitle: "Selenium 4.34 Released!"
+date: 2025-06-29
+tags: [ "selenium" ]
+categories: [ "releases" ]
+author: Diego Molina [@diemol](https://www.diemol.com)
+images:
+ - "/images/blog/2025/selenium_4.34.jpg"
+description: >
+ Today we're happy to announce that Selenium 4.34 has been released!
+---
+
+We’re excited to announce the release of **Selenium 4.34** for Javascript, Ruby, Python, .NET, Java
+and the Grid! 🎉
+
+Links to all assets can be found on our [downloads page][downloads].
+
+
+---
+
+## 🔦 Highlights
+
+- **macOS Improvements**: Added macOS-specific key support for both Ruby and Python.
+- **Web Extension Support**: BiDi implementations now support Chromium web extensions (Java, Python).
+- **Deprecations**: FTP proxy support deprecated across Java, Python, Ruby, and .NET.
+- **Selenium Manager**: Now supports Electron (Rust backend). Still needs implementation in the bindings.
+- **BiDi Enhancements**: Continued progress with `historyUpdated`, `permissions`, and `storage` modules (Java, .NET, Python).
+- **Quality Improvements**: Significant type annotation cleanup, test stability enhancements, and doc generation in Python.
+
+### Java
+
+- ✅ Implemented BiDi commands:
+ - `browsingContext.historyUpdated`
+ - `webExtensions` and extended `BrowsingContextInfo`
+- 🛠 Refactored `CommandPayload`, removed deprecated classes:
+ - `ContextAware`
+ - `CommandLine`
+ - `OsProcess`
+- ⚠️ Deprecated `FtpProxy`
+- ➕ Environment variable support for driver paths with Selenium Manager
+- 🔐 Improvements in `VirtualAuthenticator`
+
+### Python
+
+- 🔑 Added macOS-specific keys to `Keys` enum (`OPTION`, `FN`)
+- 🧠 Extensive BiDi updates:
+ - WebExtensions
+ - Permissions
+ - Storage
+ - History updates (with timestamps)
+- 🧼 Code quality:
+ - mypy/type hint cleanups
+ - API docs improvements (auto-generated)
+ - tox/ruff upgrades
+- 💡 `enable_webextensions()` now documented with CDP note
+- ❌ Deprecated: FTP proxy support
+- 🌐 Better error reporting on HTTP failures, improved error handling in `expected_conditions`
+
+### .NET
+
+- 🚫 Deprecated FTP proxy support
+- 📚 BiDi enhancements:
+ - `OnHistoryUpdated` event
+ - AcceptInsecureCerts & Proxy in user context
+ - Implicit screenshot-to-bytes conversion
+ - Protected DTOs from inheritance
+- 🧹 Cleanup:
+ - Namespace simplifications
+ - Removed StyleCop config
+
+### JavaScript
+
+- 📢 Warning added when FTP proxy is used
+- 💡 Declared minimum required Node.js version: `>= 20.0.0`
+
+### Grid
+- 🧪 Grid UI updated to Node 20 for type compatibility
+- 🧰 New built-in slot selector: `GreedySlotSelector`
+- 🧹 UI cleanup: session deletion, log level validation
+
+### Ruby
+
+- 🧑💻 Added macOS key mappings (Option/Fn)
+- ⚠️ Deprecated FTP proxy support
+- 🛠 Fixed child process termination handling
+
+### Rust (Selenium Manager)
+
+- 🖥️ Added **Electron** browser support
+- 🔧 Fixed Edge version test logic
+- Electron support.
+
+### Docker Selenium
+
+- K8s: Distributor uses Greedy as slot selector strategy in autoscaling ([#2875](https://github.com/SeleniumHQ/docker-selenium/pull/2875))
+- K8s: Fix video uploader secrets pass to Node single container ([#2886](https://github.com/SeleniumHQ/docker-selenium/pull/2886))
+- Docker: Update dependencies version for CVEs fix
+- Docker: Enable `SE_NODE_ENABLE_MANAGED_DOWNLOADS` in Node config by default ([#2869](https://github.com/SeleniumHQ/docker-selenium/pull/2869))
+- Docker: Session created in Node container can be deleted on UI by default ([#2871](https://github.com/SeleniumHQ/docker-selenium/pull/2871))
+- Docker: Environment variable flag to upgrade latest version of Chrome and ChromeDriver in container ([#2872](https://github.com/SeleniumHQ/docker-selenium/pull/2872))
+- [See all changes](https://github.com/SeleniumHQ/docker-selenium/releases)
+
+
+
+
+We thank all our contributors for their incredible efforts in making Selenium better with every
+release. ❤️
+
+For a detailed look at all changes, check out
+the [release notes](https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.34.0).
+
+
+
+## Contributors
+
+**Special shout-out to everyone who helped the Selenium Team get this release out!**
+
+### [Selenium](https://github.com/SeleniumHQ/selenium)
+
+
+
+
+{{< gh-user "https://api.github.com/users/AB-xdev" >}}
+{{< gh-user "https://api.github.com/users/Bradltr95" >}}
+{{< gh-user "https://api.github.com/users/Delta456" >}}
+{{< gh-user "https://api.github.com/users/LuisOsv" >}}
+{{< gh-user "https://api.github.com/users/ShauryaDusht" >}}
+{{< gh-user "https://api.github.com/users/adolfoarmas" >}}
+{{< gh-user "https://api.github.com/users/asolntsev" >}}
+{{< gh-user "https://api.github.com/users/iampopovich" >}}
+{{< gh-user "https://api.github.com/users/manuelsblanco" >}}
+{{< gh-user "https://api.github.com/users/pallavigitwork" >}}
+{{< gh-user "https://api.github.com/users/sandeepsuryaprasad" >}}
+
+
+
+
+### [Selenium Docs & Website](https://github.com/SeleniumHQ/seleniumhq.github.io)
+
+
+
+
+{{< gh-user "https://api.github.com/users/ShinySaana" >}}
+{{< gh-user "https://api.github.com/users/alaahong" >}}
+{{< gh-user "https://api.github.com/users/ivonnegattringer" >}}
+{{< gh-user "https://api.github.com/users/navin772" >}}
+{{< gh-user "https://api.github.com/users/noritaka1166" >}}
+{{< gh-user "https://api.github.com/users/pallavigitwork" >}}
+
+
+
+
+### [Docker Selenium](https://github.com/SeleniumHQ/docker-selenium)
+
+
+
+
+{{< gh-user "https://api.github.com/users/KyriosGN0" >}}
+{{< gh-user "https://api.github.com/users/cgoldberg" >}}
+
+
+
+
+### [Selenium Team Members][team]
+
+**Thanks as well to all the team members who contributed to this release:**
+
+
+
+
+{{< gh-user "https://api.github.com/users/aguspe" >}}
+{{< gh-user "https://api.github.com/users/AutomatedTester" >}}
+{{< gh-user "https://api.github.com/users/bonigarcia" >}}
+{{< gh-user "https://api.github.com/users/cgoldberg" >}}
+{{< gh-user "https://api.github.com/users/diemol" >}}
+{{< gh-user "https://api.github.com/users/harsha509" >}}
+{{< gh-user "https://api.github.com/users/joerg1985" >}}
+{{< gh-user "https://api.github.com/users/nvborisenko" >}}
+{{< gh-user "https://api.github.com/users/p0deje" >}}
+{{< gh-user "https://api.github.com/users/pujagani" >}}
+{{< gh-user "https://api.github.com/users/RenderMichael" >}}
+{{< gh-user "https://api.github.com/users/shbenzer" >}}
+{{< gh-user "https://api.github.com/users/shs96c" >}}
+{{< gh-user "https://api.github.com/users/titusfortner" >}}
+{{< gh-user "https://api.github.com/users/VietND96" >}}
+
+
+
+
+
+
+Stay tuned for updates by following SeleniumHQ on:
+
+- [Mastodon](https://mastodon.social/@seleniumHQ@fosstodon.org)
+- [BlueSky](https://bsky.app/profile/seleniumconf.bsky.social)
+- [LinkedIn](https://www.linkedin.com/company/selenium/)
+- [Selenium Community YouTube Channel](https://www.youtube.com/@SeleniumHQProject/streams)
+- [X (Formerly Twitter)](https://twitter.com/seleniumhq)
+
+Happy automating!
+
+[downloads]: /downloads
+
+[bindings]: /downloads#bindings
+
+[team]: /project/structure
+
+[BiDi]: https://github.com/w3c/webdriver-bidi
diff --git a/website_and_docs/content/blog/2025/selenium-4-35-released.md b/website_and_docs/content/blog/2025/selenium-4-35-released.md
new file mode 100644
index 000000000000..61fa2919575f
--- /dev/null
+++ b/website_and_docs/content/blog/2025/selenium-4-35-released.md
@@ -0,0 +1,220 @@
+---
+title: "Selenium 4.35 Released!"
+linkTitle: "Selenium 4.35 Released!"
+date: 2025-08-12
+tags: [ "selenium" ]
+categories: [ "releases" ]
+author: Diego Molina [@diemol](https://www.diemol.com)
+images:
+ - "/images/blog/2025/selenium_4.35.jpg"
+description: >
+ Today we're happy to announce that Selenium 4.35 has been released!
+---
+
+We’re excited to announce the release of **Selenium 4.35** for Javascript, Ruby, Python, .NET, Java
+and the Grid! 🎉
+
+Links to all assets can be found on our [downloads page][downloads].
+
+
+---
+
+## 🔦 Highlights
+
+- **Chrome DevTools support** is now: v139, v138, and v137.
+- **BiDi Improvements Across Bindings**: Expanded BiDi support including emulation, input, script execution, and user context enhancements.
+- **Java Cleanup and JSpecify Annotations**: Deprecated APIs removed and comprehensive `@Nullable` annotations added for better type safety.
+- **Grid Performance Enhancements**: Improved logging, reduced redundancy, race condition fixes, and migration from Guava to Caffeine.
+- **Better Proxy and Network Handling**: Support for `SameSite=default`, IPv6 improvements, and fixes for proxy authentication and WebView2.
+- **Logging Improvements**: Driver logs in .NET are more structured and can output to console or file with timestamps.
+
+---
+
+## 🧪 Language-specific Updates
+
+### Java
+
+- 🔧 Added support for:
+ - BiDi emulation module
+ - `SameSite=default` for cookies
+ - Shadow DOM element normalization
+- 🧹 Major cleanup of deprecated classes:
+ - `LocationContext`, `WebStorage`, `FirefoxBinary`, `SessionStorage`, `AppCacheStatus`, and more
+- ✅ Enhanced test coverage: `--connect-existing` WebSocket check
+- 📝 Added JSpecify `@Nullable` annotations across all driver services and locator classes
+- 🧼 Memory/resource improvements:
+ - Released `HttpClient` resources
+ - Removed unused internal classes
+
+### Python
+
+- 🧠 BiDi enhancements:
+ - Implemented input and emulation modules
+ - Added `pin`, `unpin`, and `execute` for scripts
+ - Supported `accept_insecure_certs`, `proxy`, and `unhandled_prompt_behavior` in user context
+- 🔧 Improved handling for:
+ - Proxy authentication with special characters
+ - WebView2 + CDP/BiDi compatibility
+ - Vendor prefix fix for Edge
+- 📦 Loosened dependency for `urllib3`, and included IPv6 support for `free_port()`
+- 📚 API documentation improvements, including nightly builds and license notices
+
+### .NET
+
+- 💡 Logging Enhancements:
+ - Timestamps for Chromium-based browser logs
+ - GeckoDriver log file support
+ - Default log level now `WARN`
+ - Console output support for all drivers
+- 🧠 BiDi enhancements:
+ - Exposed internal methods and new result types
+ - User context supports `UnhandledPromptBehavior`, `proxy`, `accept_insecure_certs`
+ - Tree and Emulation modules added
+- 🧹 Cleanup:
+ - Removed long-deprecated members
+ - Reduced internal tracing noise
+- 🔄 Native packaging for Selenium Manager
+- 🌐 IPv6 support for port allocation
+
+### JavaScript
+
+- 🧪 BiDi:
+ - Stability fix for flaky cookie network test
+ - Skip FedCM tests until Chrome 140
+- ⚠️ Added `SameSite=default` cookie support
+- 🔄 Dependency updates (`typescript`, `@emotion/styled`)
+
+### Ruby
+
+- 🔒 Guarded support for Firefox Beta
+- 🚫 Removed deprecated local/session storage APIs
+- 🆗 Allowed use of `rubyzip` v3
+- ✂️ Excluded Rakefile from line-length linter
+- ⚠️ Added support for `SameSite=default`
+
+### Rust (Selenium Manager)
+
+- 🧪 Updated base URL for Edge WebDriver
+- ⬆️ Dependency upgrades (`zip`, `rstest`, `which`, Bazel lock files)
+- 🔧 Improved architecture normalization for Plausible analytics
+
+### Grid
+
+- 🔁 Performance and logging improvements:
+ - Reduced duplicate logs
+ - Improved node health checks
+ - Better session map handling and retry queue management
+- 🧰 Switched from Guava’s CacheBuilder to Caffeine
+- 🧪 New UI sorting option by URI
+
+
+### 🐳 Docker Selenium
+
+- K8s: Add config for over-provision ratio in autoscaling deployment of Nodes ([#2930](https://github.com/SeleniumHQ/docker-selenium/pull/2930))
+- Docker: Distributor uses Greedy as the slot selector strategy default in Hub-Node and Standalone mode ([#2915](https://github.com/SeleniumHQ/docker-selenium/pull/2915))
+- Docker: Update Google Noto font family to support better language character displays ([#2914](https://github.com/SeleniumHQ/docker-selenium/pull/2914))
+- [See all changes](https://github.com/SeleniumHQ/docker-selenium/releases)
+
+
+
+
+We thank all our contributors for their incredible efforts in making Selenium better with every
+release. ❤️
+
+For a detailed look at all changes, check out
+the [release notes](https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.35.0).
+
+
+
+## Contributors
+
+**Special shout-out to everyone who helped the Selenium Team get this release out!**
+
+### [Selenium](https://github.com/SeleniumHQ/selenium)
+
+
+
+
+{{< gh-user "https://api.github.com/users/Earlopain" >}}
+{{< gh-user "https://api.github.com/users/asolntsev" >}}
+{{< gh-user "https://api.github.com/users/iampopovich" >}}
+{{< gh-user "https://api.github.com/users/jameshilliard" >}}
+{{< gh-user "https://api.github.com/users/mk868" >}}
+{{< gh-user "https://api.github.com/users/musicinmybrain" >}}
+{{< gh-user "https://api.github.com/users/navin772" >}}
+{{< gh-user "https://api.github.com/users/noritaka1166" >}}
+{{< gh-user "https://api.github.com/users/nxs7" >}}
+{{< gh-user "https://api.github.com/users/pallavigitwork" >}}
+{{< gh-user "https://api.github.com/users/sandeepsuryaprasad" >}}
+
+
+
+
+### [Selenium Docs & Website](https://github.com/SeleniumHQ/seleniumhq.github.io)
+
+
+
+
+{{< gh-user "https://api.github.com/users/alaahong" >}}
+{{< gh-user "https://api.github.com/users/pallavigitwork" >}}
+
+
+
+
+### [Docker Selenium](https://github.com/SeleniumHQ/docker-selenium)
+
+
+
+
+{{< gh-user "https://api.github.com/users/KyriosGN0" >}}
+{{< gh-user "https://api.github.com/users/amardeep2006" >}}
+{{< gh-user "https://api.github.com/users/anwaramoon" >}}
+
+
+
+
+### [Selenium Team Members][team]
+
+**Thanks as well to all the team members who contributed to this release:**
+
+
+
+
+{{< gh-user "https://api.github.com/users/aguspe" >}}
+{{< gh-user "https://api.github.com/users/AutomatedTester" >}}
+{{< gh-user "https://api.github.com/users/bonigarcia" >}}
+{{< gh-user "https://api.github.com/users/cgoldberg" >}}
+{{< gh-user "https://api.github.com/users/diemol" >}}
+{{< gh-user "https://api.github.com/users/harsha509" >}}
+{{< gh-user "https://api.github.com/users/joerg1985" >}}
+{{< gh-user "https://api.github.com/users/nvborisenko" >}}
+{{< gh-user "https://api.github.com/users/p0deje" >}}
+{{< gh-user "https://api.github.com/users/pujagani" >}}
+{{< gh-user "https://api.github.com/users/RenderMichael" >}}
+{{< gh-user "https://api.github.com/users/shbenzer" >}}
+{{< gh-user "https://api.github.com/users/shs96c" >}}
+{{< gh-user "https://api.github.com/users/titusfortner" >}}
+{{< gh-user "https://api.github.com/users/VietND96" >}}
+
+
+
+
+
+
+Stay tuned for updates by following SeleniumHQ on:
+
+- [Mastodon](https://mastodon.social/@seleniumHQ@fosstodon.org)
+- [BlueSky](https://bsky.app/profile/seleniumconf.bsky.social)
+- [LinkedIn](https://www.linkedin.com/company/selenium/)
+- [Selenium Community YouTube Channel](https://www.youtube.com/@SeleniumHQProject/streams)
+- [X (Formerly Twitter)](https://twitter.com/seleniumhq)
+
+Happy automating!
+
+[downloads]: /downloads
+
+[bindings]: /downloads#bindings
+
+[team]: /project/structure
+
+[BiDi]: https://github.com/w3c/webdriver-bidi
diff --git a/website_and_docs/content/blog/2025/selenium-appium-conference-2025.md b/website_and_docs/content/blog/2025/selenium-appium-conference-2025.md
new file mode 100644
index 000000000000..6edaaba66946
--- /dev/null
+++ b/website_and_docs/content/blog/2025/selenium-appium-conference-2025.md
@@ -0,0 +1,39 @@
+---
+title: "Selenium Conference and Appium Conference 2025, Valencia Spain"
+linkTitle: "Selenium Conference Appium Conference 2025 Valencia Spain"
+date: 2025-04-21
+tags: ["conference", "selenium","appium", "web driver ecosystem", "valencia", "spain"]
+categories: ["conference"]
+author:
Pallavi Sharma
+images:
+description: >
+ Selenium Conference and Appium Conference 2025, Valencia Spain
+---
+
+Selenium and Appium projects joined hands together for the 2025 annual conference of both, which was held from March 26th - March 28th in Valencia, Spain. The official web page of the conference can be found **
here**
+
+The event took place at the beautiful venue of **
Veles e Vents**.
+
+On March 26th, there were **
Workshops**, which were enthusiastically attended by participants from across the globe. On the 26th March evening, the conference organised Speaker's Dinner, which provided a fun space to sit, talk and know other better.
+
+We are thankful to our esteemed speaker group, who joined us from all over the world and helped make the event a success. Details about the speakers for the event is available here - **
Speakers of the Conference**
+
+The main event started from 27th of March and ran through 28th March evening. The event was attended by close to 400 global participants. We are thankful to each of them, for their presence which made the event worthwhile.
+
+Conference also provided scholarship to 4 people who were chosen after a tough selection process to attend the conference. We thank all our **
Sponsors** who collaborated and helped make the event possible.
+
+The video recording, presentations and photographs from the main event can be found here - **
Videos, Photos and More..**
+
+Conference, also ran Pre Conference webinars which helped showcase high rated talks which couldn't make it to the end program to the audience. The details of the same are available here - **
Pre Conference Webinars**
+
+The conference program chair was **
Diego Molina**. Diego helmed all the activities of the conference with great leadership and meticulous supervision.
+
+The conference was supported by a wide group of professionals who participated in volunteer capacity as reviewers and organizers of the event.
+More details about them can be found here - **
Organizers & Program Review Committee **.
+
+The entire event was professionally managed by the event organiser company **
OneStic**. They ensured smooth flow of the event. Special mention to **
Jesus Sanchez** for going out of the way to ensure everyone was well taken care of.
+
+
+## Subscribe to Official Selenium Conference YouTube Channel
+To explore more about our previous conferences and the next ones don't forget to subscribe to our official You Tube Channel **
Selenium Conference Official YouTube Channel.**
+
diff --git a/website_and_docs/content/blog/2025/selenium-community-live-episode2.md b/website_and_docs/content/blog/2025/selenium-community-live-episode2.md
new file mode 100644
index 000000000000..f713b6686c6a
--- /dev/null
+++ b/website_and_docs/content/blog/2025/selenium-community-live-episode2.md
@@ -0,0 +1,35 @@
+---
+title: "Selenium Community Live - Episode 2"
+linkTitle: "Selenium Community Live - Episode 2"
+date: 2025-01-21
+tags: ["webinar", "meetup", "talks","community"]
+categories: ["webinar"]
+author:
Pallavi Sharma
+images:
+description: >
+ Selenium Community Live - Episode 2
+---
+
+The second episode of Selenium Community Live happened on Jan 21st, 2025, with speaker **
David Burns**, event hosted by **
Pallavi Sharma**
+
+You can watch the episode here- **
Selenium Community Live - Episode 2**
+
+**Selenium Community Live - Episode 2**
+
+David Burns, Selenium Project Leadership Member, Chair W3C Browser Testing and Tools Workgroup, Head Open source and Developer Advocacy at Browser Stack was the speaker for the episode. David spoke about Web Browsers and Browser engines, and how while automating them we should be aware of the underlying software we are automating, even the platform makes a difference!
+Thank you everyone who joined the community event.
+
+**Meet the Speakers:**
+
+1. **
David Burns**
+
+
+## Watch the Recording
+
+Couldn’t join us live? Watch the entire episode here -
+📹 Recording Link: [Watch the Event Recording on YouTube](https://www.youtube.com/watch?v=0W_rYPxVIgA)
+
+David also runs a blog, and if you are interested in knowing internals of Selenium explore the link -
+**
Blog By David**
+
+Stay tuned as we bring the next! **
Subscribe here to the Selenium HQ Official YouTube Channel.**
diff --git a/website_and_docs/content/blog/2025/selenium-community-live-episode4.md b/website_and_docs/content/blog/2025/selenium-community-live-episode4.md
new file mode 100644
index 000000000000..e647aa3dc7a0
--- /dev/null
+++ b/website_and_docs/content/blog/2025/selenium-community-live-episode4.md
@@ -0,0 +1,40 @@
+---
+title: "Selenium Community Live - Episode 4"
+linkTitle: "Selenium Community Live - Episode 4"
+date: 2025-03-19
+tags: ["webinar", "meetup", "talks","community"]
+categories: ["webinar"]
+author:
Pallavi Sharma
+images:
+description: >
+ Selenium Community Live - Episode 4
+---
+
+The fourth episode of Selenium Community Live happened on March 19th, 2025, with speaker **
Michael Mintz**, event hosted by **
Pallavi Sharma**
+
+You can watch the episode on YouTube here- **
Episode 4 on YouTube**
+or
+You can watch the episode on LinkedIn here- **
Episode 4 on LinkedIn**
+
+**Selenium Community Live - Episode 4**
+
+Michael Mintz is creator of Selenium Base, an all in one Browser Automation Framework, built over Selenium WebDriver Python bindings. The framework is well known and used
+in the WebDriver Ecosystem community for testing, web scraping, web crawling and stealth purposes.
+You can find out more about Selenium Base here - **
Selenium Base**
+
+
+**Meet the Speakers:**
+
+1. **
Michael Mintz**
+
+
+## Watch the Recording
+
+Couldn’t join us live? Watch the entire episode here -
+📹 Recording Link: [Watch the Event Recording on YouTube](https://youtube.com/live/FSH712hhHvo?feature=share)
+
+To know more about Selenium Base, please follow the link
+**
Explore more on Selenium Base**
+
+In case you were wondering what happened to episode 3, it was cancelled but will be scheduled in coming weeks. Thank you!
+Stay tuned as we bring the next! **
Subscribe here to the Selenium HQ Official YouTube Channel.**
diff --git a/website_and_docs/content/blog/2025/selenium-community-live-episode5.md b/website_and_docs/content/blog/2025/selenium-community-live-episode5.md
new file mode 100644
index 000000000000..9646d6dd157a
--- /dev/null
+++ b/website_and_docs/content/blog/2025/selenium-community-live-episode5.md
@@ -0,0 +1,97 @@
+---
+title: "Selenium Community Live - Episode 5"
+linkTitle: "Selenium Community Live - Episode 5"
+date: 2025-05-05
+tags: ["webinar", "meetup", "talks","community"]
+categories: ["webinar"]
+author:
Puja Jagani
+images:
+description: >
+ Selenium Community Live - Episode 5
+---
+
+The fifth episode of Selenium Community Live happened on April 25th 2025.
+
+The event featured speakers **
Ashley Hunsberger **, Director at NBCUniversal with close to 25 years of industry experience and a long-time friend of the Selenium, alongside **
Puja Jagani**, Open Source Engineer & Developer Advocate at BrowserStack and member of the Selenium leadership(TLC and PLC). The event was hosted by
+**
Pallavi Sharma**, Founder 5 Elements Learning and a long-time Selenium Committer.
+
+The theme of the community event was "Beyond Code: Understanding Developer Satisfaction in Open Source Contributions".
+
+While many discussions around open source have happened that focus on code contributions and technical aspects, there is a vital human element involved, something that keeps the contributions rolling for decades, i.e. developer satisfaction. This community event was dedicated to discussing the human factor in open source contributions. The speakers shared their insights and experience on developer satisfaction in open source.
+
+### What motivates Open Source contributors?
+
+Ashley’s LinkedIn states that "My driving principle is simple: people first" and building on that, Ashley and Puja both highlight that open source is "by the community, for the community," where collaboration and human connections are foundational motivating factors for them.
+
+Ashley shares her journey with Selenium, highlighting how the warm, caring community has helped her build genuine friendships and good memories.
+
+"In the end, do people really remember what we build? They're going to remember how we made them feel." - Ashley Hunsberger
+
+She states that for her, a main motivational factor is community, and what she thinks drives people is the altruistic purpose of giving back to the community beyond their organisation and serving a great purpose. According to her, motivation drives behaviour, and if you have clear motivation, that will drive your place in the community in the long run.
+
+Beyond altruism, Puja thinks there is a diversity of motivators, emphasising that contributions extend far beyond code. Contributions might include:
+- Helping with documentation
+- Managing continuous integration (CI) pipelines
+- Handling legal, and financial aspects, and other administrative aspects
+- Organising conferences, community events, and meetups.
+
+These roles are often in the spotlight but critical to the health and growth of open source projects. A huge spectrum of motivators drives people’s behaviour and keeps the open source project breathing and growing.
+
+### No single factor that contributes to developer satisfaction
+
+Ashley brings a unique perspective to the idea that developer satisfaction can be understood through the lens of the Job Characteristics Model. This model outlines key aspects of work that lead to positive outcomes such as retention, motivation, and job satisfaction.
+
+Key factors include:
+- Skill Variety: Open source contributors engage in a wide range of skills, from coding to release engineering, documentation, and advocacy.
+- Task Identity: Contributors often see their work through from start to finish, building and shipping features that users directly benefit from.
+- Task Significance: Understanding the impact and value of their contributions motivates developers to continue their work.
+- Autonomy: Contributors enjoy flexibility in how, when, and where they contribute, within the project's guidelines.
+- Feedback: Constructive feedback loops help contributors improve and feel connected to the community.
+
+These elements combine to foster long-term satisfaction.
+
+### The Evolution of Motivation in Open Source
+
+Puja shared her own journey with Selenium, from initially feeling nervous about contributing to becoming a part of the technical leadership. Initially, simple contributions like fixing a bug brought immense satisfaction. Over time, the motivation evolved to include community appreciation and the visible impact of her work on the end users of Selenium. She recounts a meaningful interaction at a recent conference where an attendee thanked her for contributing to Selenium, highlighting how such moments validate and inspire ongoing commitment.
+
+### Handling Conflict in Open Source
+
+Ashley and Puja acknowledged that interactions on platforms like GitHub or chat channels can include harsh or unexpected comments or the project itself can have some differences of opinion. And this could be largely due to the diverse background of people, any open source project experiences. This difference of opinion and thought diversity is what makes the group awesome, but certain situations need to be resolved with care.
+
+Ashley shares her first experience receiving a non-constructive code review and emphasises the importance of kindness and clarity in feedback:
+"Be kind, but clear. Clear is kind. You don't have to be nice, but be clear about what happened, why, and how to improve." - Ashley Hunsberger
+
+Effective conflict resolution involves open questions, understanding the intent, and focusing on shared goals. It’s important to remember that conflicts are natural in any group, but they can be handled constructively with the key focus being on what is important for the situation. It is also essential to make sure an open source project has a code of conduct that is implemented in such situations and that the community is aware they have a safe space to report their issue and that they will be heard.
+
+### Inclusivity
+
+Ashley distinguishes between mentorship and sponsorship as two pillars of inclusion:
+- Mentorship: Providing advice, guidance, and support to help someone grow and navigate the community.
+- Sponsorship: Actively advocating for someone, opening doors, and recommending them for opportunities
+
+Ashley further discussed that inclusivity needs to be beyond code. Such as ensuring inclusive language and removing any barriers of entry for new contributors. The key focus should be on building an inclusive environment and creating a welcoming space for new contributors and the community.
+
+### Overcoming Impostor Syndrome
+
+Impostor syndrome is a common challenge for developers, especially when engaging in large, visible open-source projects. Ashley shares candidly about her struggles and offers practical advice when Pallavi asked her to share her insights on how to enable people to overcome impostor syndrome. Ashley shares the following
+- Be kind to yourself and reframe negative thoughts. Add "yet" to statements like "I don’t know how to do this... yet."
+- Recognise that many others share the same fears and questions.
+- Build a support network of trusted friends, mentors, and peers who understand your journey.
+- Use tools like worksheets to identify negative thinking patterns and consciously reframe them.
+- Focus on facts about your skills and contributions rather than self-doubt.
+
+These strategies can help contributors maintain confidence in their open-source journey.
+
+Next they discussed how open source projects can help people, and here the importance of visibility and recognition in sustaining open source motivation was emphasised. Seeing the direct impact of one’s work, whether through download statistics, user feedback, or conference stories, reinforces the value of contributions. Whether you are a seasoned contributor or a newcomer, reflecting on the above areas can hopefully help you foster a more satisfying developer experience.
+
+Selenium is now entering its 21st year of existence, has had contributors spanning across various time zones, geographies and areas of expertise. With nearly 800 contributors over two decades, we take this moment to express gratitude to each of them. Through continuous feedback and meaningful interaction with the community, Selenium remains dedicated to work towards a healthier developer satisfaction.
+
+## Watch the Recording
+
+Couldn’t join us live? Watch the entire episode!
+
+You can watch the episode on YouTube here- **
Episode 5 on YouTube**
+or
+you can watch the episode on LinkedIn here- **
Episode 5 on LinkedIn**.
+
+Stay tuned as we bring the next! **
Subscribe here to the Selenium HQ Official YouTube Channel.**
\ No newline at end of file
diff --git a/website_and_docs/content/blog/2025/selenium-community-live-episode6.md b/website_and_docs/content/blog/2025/selenium-community-live-episode6.md
new file mode 100644
index 000000000000..b82605e3dfed
--- /dev/null
+++ b/website_and_docs/content/blog/2025/selenium-community-live-episode6.md
@@ -0,0 +1,39 @@
+---
+title: "Selenium Community Live - Episode 6"
+linkTitle: "Selenium Community Live - Episode 6"
+date: 2025-05-21
+tags: ["webinar", "meetup", "talks","community"]
+categories: ["webinar"]
+author:
Pallavi Sharma
+images:
+description: >
+ Selenium Community Live - Episode 6
+---
+
+The sixth episode of Selenium Community Live happened on May 21st, 2025, with speaker **
Luke Hill**, event hosted by **
Pallavi Sharma**
+
+You can watch the episode on YouTube here- **
Episode 6 on YouTube**
+or
+You can watch the episode on LinkedIn here- **
Episode 6 on LinkedIn**
+
+**Selenium Community Live - Episode 6**
+
+Luke Hill is a Lead QA Engineer at Dexters with extensive automation expertise across FinTech, E-Commerce, and Education sectors. A passionate open-source contributor, Luke owns site_prism (a Page Object Gem extending Capybara), serves on the Cucumber technical committee, and is a maintainer of Selenium. Known for his meticulous testing approach and ability to identify challenging edge cases, Luke consistently helps teams deliver more reliable code. His technical expertise in both frontend and backend testing makes him a valuable voice in the QA community.
+
+Luke GitHub Profile is here - **
Luke's GitHub**
+
+
+**Meet the Speakers:**
+
+1. **
Luke Hill**
+
+
+## Watch the Recording
+
+Couldn’t join us live? Watch the entire episode here -
+📹 Recording Link: [Watch the Event Recording on YouTube](https://www.youtube.com/live/48g7sOBHEL0?feature=shared)
+
+To know more about Site Prism, please follow the link
+**
Site Prism**
+
+Stay tuned as we bring the next! **
Subscribe here to the Selenium HQ Official YouTube Channel.**
diff --git a/website_and_docs/content/blog/2025/selenium-community-live-episode7.md b/website_and_docs/content/blog/2025/selenium-community-live-episode7.md
new file mode 100644
index 000000000000..7bdb4360fa1b
--- /dev/null
+++ b/website_and_docs/content/blog/2025/selenium-community-live-episode7.md
@@ -0,0 +1,36 @@
+---
+title: "Selenium Community Live - Episode 7"
+linkTitle: "Selenium Community Live - Episode 7"
+date: 2025-07-01
+tags: ["webinar", "meetup", "talks","community"]
+categories: ["webinar"]
+author:
Pallavi Sharma
+images:
+description: >
+ Selenium Community Live - Episode 7
+---
+
+The seventh episode of Selenium Community Live happened on June 19th, 2025, with speaker **
Christian Bromann**, event was hosted by **
Pallavi Sharma**
+
+You can watch the episode on YouTube here- **
Episode 7 on YouTube**
+or
+You can watch the episode on LinkedIn here- **
Episode 7 on LinkedIn**
+
+**Selenium Community Live - Episode 7**
+
+Christian Bromann is a seasoned software engineer currently working at OutSystems where he contributes to the StencilJS project, a popular web component framework. He's the driving force behind WebdriverIO, a leading test automation framework that has revolutionized browser testing for countless development teams worldwide.
+
+Christian's GitHub Profile is here - **
GitHub Profile**
+
+
+**Meet the Speakers:**
+
+1. **
Christian Bromann**
+
+
+## Watch the Recording
+
+Couldn’t join us live? Watch the entire episode here -
+📹 Recording Link: [Watch the Event Recording on YouTube](https://www.youtube.com/live/zrQRWi9Gpdg)
+
+Stay tuned as we bring the next! **
Subscribe here to the Selenium HQ Official YouTube Channel.**
diff --git a/website_and_docs/content/blog/2025/selenium-community-live-episode8.md b/website_and_docs/content/blog/2025/selenium-community-live-episode8.md
new file mode 100644
index 000000000000..32baa452b1d1
--- /dev/null
+++ b/website_and_docs/content/blog/2025/selenium-community-live-episode8.md
@@ -0,0 +1,101 @@
+---
+title: "Selenium Community Live - Episode 8"
+linkTitle: "Selenium Community Live - Episode 8"
+date: 2025-07-30
+tags: ["webinar", "meetup", "talks","community"]
+categories: ["webinar"]
+author:
Pallavi Sharma
+images:
+description: >
+ Selenium Community Live - Episode 8
+---
+
+
+Episode 8 of Selenium Community Live with Dorothy Graham took place on July 30th, 2025. During this remarkable session, Graham a legend with 50+ years in software testing, shared incredible insights from her journey through the evolution of test automation. Her perspective reveals timeless truths that modern teams often overlook.
+
+**Meet the Speakers:**
+
+1. **
Dorothy Graham**
+
+Let's dive into session notes.
+
+**From Mainframes to Smartphones: The Incredible Journey**
+
+Graham's automation story began in 1970 at Bell Labs, working on a UNIVAC 1108 mainframe that cost $1.6 million (equivalent to $15 million today). The specifications, 1.3 megahertz, half a megabyte of RAM, and 100 megabytes of storage. Her iPhone today has 12,000 times more storage and costs 20,000 times less. Back then, you would write code on paper, punch it onto cards, and get maybe one turnaround per day. A single typo meant starting over tomorrow.
+This dramatic shift in just 50 years raises the question: what will the next 50 years bring?
+
+**The Evolution of Testing Tools: From Commercial to Open Source**
+
+Graham witnessed the dramatic transformation of testing tools over decades. The first commercial tool, AutoTester, appeared in 1985, followed by an explosion of tools in the 80s and 90s. The CAST (Computer Aided Software Testing) report eventually documented 103 different tools, yet when she recently checked, only three were still alive. What happened to all those tools? They disappeared, reminding us that tools come and go, but principles endure.
+Enter Selenium in 2004, a game-changer as an open-source tool that broke the expensive commercial tool monopoly. Graham congratulated the community: "Selenium has been around for over 20 years. That's really good." Its longevity stems from community support, continuous evolution, and freedom from licensing costs.
+However, Graham warns: "The fact that you don't have to pay purchase or licensing costs doesn't mean it doesn't need investment." Free tools still require proper architecture, training, and skilled implementation. She stresses, this as a reminder to people in management making decisions.
+
+**What Test Automation Shouldn't Look Like**
+
+Graham's most compelling insight involves what not to do in automation. She shares Steven Norman's brilliant analogy:
+Imagine recording your drive to work, then pressing play the next day. You would reverse into traffic that wasn't there yesterday, stop at green lights because they were red yesterday, and run red lights because they turned green yesterday.
+She mentions, Testing isn't passive observation, it's active investigation.
+Graham also emphasizes: "Testing is something you do. It's not passive. It's active." This is why capture-replay approaches fundamentally misunderstand what good testing requires.
+
+**EuroSTAR Survey Insights: The Reality of Test Automation in 2023**
+
+In preparation for her keynote at the EuroSTAR conference in Vienna, Graham conducted a comprehensive survey of 200 automation practitioners that revealed surprising insights:
+
+Encouraging findings:
+
+• 80% use open-source tools.
+
+• 90% test at system level, 72% at API level
+
+• 70% had formal testing training
+
+Concerning discoveries:
+
+• 25% had zero training in their daily tools
+
+• 38% would need to rewrite 95%+ of tests when changing tools
+
+• Most automated tests mirror manual test structure (which is wrong)
+
+• Top problem isn't technical, it's unrealistic management expectations
+
+
+if you are interested to learn more about the survey, visit **
link**
+
+**The Forgotten Secrets of Good Automation**
+
+Drawing from her decades as a practitioner, coach, and consultant, Graham shares what she believes are the most overlooked principles in modern test automation.
+
+1. Effectiveness Before Efficiency
+Graham's first hard-learned lesson: the biggest mistake is automating poor-quality tests just to make them faster.
+
+• Wrong approach: Poor manual tests → automation → fast, poor automated tests
+
+• Right approach: Improve test effectiveness first → then automate selectively
+
+She emphasizes: "You will get much better results if you think first about how can we improve our testing. You are better off having better testing than automating testing."
+
+2. Proper Architecture Matters
+Through years of consulting, Graham identified that good automation requires two critical abstraction levels:
+Technical level: Modular, reusable scripts where one manual test becomes multiple automated scripts, and one script serves hundreds of tests. As she notes: "If you have a thousand manual tests, they might be implemented by only 50 scripts together with data files."
+Business level: Domain-specific keywords like "create_new_policy" instead of raw code, enabling skilled testers to write tests without programming. This makes automation accessible to "people who are non-technical who often are the best testers."
+
+**A Special Thank You to Our Community**
+
+This incredible session featured engaging questions from community members whose thoughtful inquiries sparked valuable discussions about management expectations, career paths, AI's impact, and the future of testing skills. Their participation exemplified the collaborative spirit that makes the Selenium community so vibrant.
+
+We extend our heartfelt gratitude to Dorothy Graham for sharing her wealth of knowledge and to all community members who joined Episode 8.
+
+This session marks the end of Season 1 of Selenium Community Live, a season that began by celebrating two decades of Selenium and concluded with timeless wisdom from one of testing's most respected pioneers.
+
+As we prepare for Season 2, we invite you to stay connected with the Selenium community.
+
+
+## Watch the Recording
+
+Couldn’t join us live? Watch the entire episode here -
+📹 Recording Link: [Watch the Event Recording on YouTube](https://www.youtube.com/live/4WJIt2kybHA?si=wP7vYs7oRcUPxS-e)
+
+Stay tuned as we bring the next!
+
+**
Subscribe here to the Selenium HQ Official YouTube Channel.**
diff --git a/website_and_docs/content/documentation/_index.en.md b/website_and_docs/content/documentation/_index.en.md
index 0313bb1f586b..136db40dc513 100755
--- a/website_and_docs/content/documentation/_index.en.md
+++ b/website_and_docs/content/documentation/_index.en.md
@@ -42,7 +42,7 @@ a browser. You can find a more comprehensive example in [Writing your first Sele
{{< gh-codeblock path="/examples/dotnet/HelloSelenium.cs" >}}
{{< /tab >}}
{{< tab header="Ruby" >}}
-{{< gh-codeblock path="/examples/ruby/spec/hello/hello_selenium_spec.rb" >}}
+{{< gh-codeblock path="/examples/ruby/spec/hello/hello_selenium.rb" >}}
{{< /tab >}}
{{< tab header="JavaScript" >}}
{{< gh-codeblock path="/examples/javascript/test/hello/helloSelenium.js" >}}
diff --git a/website_and_docs/content/documentation/_index.ja.md b/website_and_docs/content/documentation/_index.ja.md
index 794dacbe3419..1512d796ef18 100755
--- a/website_and_docs/content/documentation/_index.ja.md
+++ b/website_and_docs/content/documentation/_index.ja.md
@@ -29,7 +29,7 @@ Seleniumの中核は[WebDriver]({{< ref "webdriver.md" >}})であり、様々な
{{< gh-codeblock path="/examples/dotnet/HelloSelenium.cs" >}}
{{< /tab >}}
{{< tab header="Ruby" >}}
-{{< gh-codeblock path="/examples/ruby/spec/hello/hello_selenium_spec.rb" >}}
+{{< gh-codeblock path="/examples/ruby/spec/hello/hello_selenium.rb" >}}
{{< /tab >}}
{{< tab header="JavaScript" >}}
{{< gh-codeblock path="/examples/javascript/test/hello/helloSelenium.js" >}}
diff --git a/website_and_docs/content/documentation/_index.other.md b/website_and_docs/content/documentation/_index.other.md
deleted file mode 100755
index 24e3f9fba7d4..000000000000
--- a/website_and_docs/content/documentation/_index.other.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: "The Selenium Browser Automation Project"
-linkTitle: "Documentation"
-cascade:
-- type: docs
----
-
-{{% pageinfo color="warning" %}}
-
-
- Is there another translation you'd like to see? We're only supporting translations for which we have
- a dedicated translator. If you'd like to volunteer to be a translator, read how
- you can help.
-
-{{% /pageinfo %}}
diff --git a/website_and_docs/content/documentation/_index.pt-br.md b/website_and_docs/content/documentation/_index.pt-br.md
index 9fdaeeb151d1..7d92d0f5eb8b 100755
--- a/website_and_docs/content/documentation/_index.pt-br.md
+++ b/website_and_docs/content/documentation/_index.pt-br.md
@@ -40,7 +40,7 @@ navegadores. Aqui está uma das instruções mais simples que você pode fazer:
{{< gh-codeblock path="/examples/dotnet/HelloSelenium.cs" >}}
{{< /tab >}}
{{< tab header="Ruby" >}}
-{{< gh-codeblock path="/examples/ruby/spec/hello/hello_selenium_spec.rb" >}}
+{{< gh-codeblock path="/examples/ruby/spec/hello/hello_selenium.rb" >}}
{{< /tab >}}
{{< tab header="JavaScript" >}}
{{< gh-codeblock path="/examples/javascript/test/hello/helloSelenium.js" >}}
diff --git a/website_and_docs/content/documentation/_index.zh-cn.md b/website_and_docs/content/documentation/_index.zh-cn.md
index a68a2a5cbb70..8049e83ad16d 100755
--- a/website_and_docs/content/documentation/_index.zh-cn.md
+++ b/website_and_docs/content/documentation/_index.zh-cn.md
@@ -34,7 +34,7 @@ Selenium 的核心是 [WebDriver]({{< ref "webdriver.md" >}}),这是一个编
{{< gh-codeblock path="/examples/dotnet/HelloSelenium.cs" >}}
{{< /tab >}}
{{< tab header="Ruby" >}}
-{{< gh-codeblock path="/examples/ruby/spec/hello/hello_selenium_spec.rb" >}}
+{{< gh-codeblock path="/examples/ruby/spec/hello/hello_selenium.rb" >}}
{{< /tab >}}
{{< tab header="JavaScript" >}}
{{< gh-codeblock path="/examples/javascript/test/hello/helloSelenium.js" >}}
diff --git a/website_and_docs/content/documentation/about/contributing.en.md b/website_and_docs/content/documentation/about/contributing.en.md
index a2e8de8c3a6d..993437df8f4f 100644
--- a/website_and_docs/content/documentation/about/contributing.en.md
+++ b/website_and_docs/content/documentation/about/contributing.en.md
@@ -49,7 +49,7 @@ https://selenium.dev/support.
### Creating Examples
-Examples that need to be moved are marked with: {{% badge-code %}}
+Examples that need to be added are marked with: {{% badge-code %}}
We want to be able to run all of our code examples in the CI to ensure that people can copy and paste and
execute everything on the site. So we put the code where it belongs in the
diff --git a/website_and_docs/content/documentation/about/contributing.ja.md b/website_and_docs/content/documentation/about/contributing.ja.md
index 2cea8db2c445..138fead97eb1 100644
--- a/website_and_docs/content/documentation/about/contributing.ja.md
+++ b/website_and_docs/content/documentation/about/contributing.ja.md
@@ -2,9 +2,8 @@
title: "Seleniumのサイトとドキュメントに貢献する"
linkTitle: "Seleniumのサイトとドキュメントに貢献する"
weight: 2
-requiresTranslation: true
description: >-
- Information on improving documentation and code examples for Selenium
+ Seleniumのドキュメントとコード例を改善するための情報
aliases:
[
"/documentation/ja/contributing/",
@@ -12,15 +11,6 @@ aliases:
]
---
-{{% pageinfo color="warning" %}}
-
-
- Page being translated from
- English to Japanese. Do you speak Japanese? Help us to translate
- it by sending us pull requests!
-
-{{% /pageinfo %}}
-
Seleniumは大きなソフトウェアプロジェクトであり、そのサイトとドキュメントは、物事の仕組みを理解し、その可能性を活用する効果的な方法を学ぶための鍵となります。
このプロジェクトには、Seleniumのサイトとドキュメントの両方が含まれています。これは、Seleniumを効果的に使用する方法、Seleniumに参加する方法、およびSeleniumに貢献する方法に関する最新情報を提供するための継続的な取り組みです(特定のリリースを対象としていません)。
@@ -43,53 +33,47 @@ Seleniumのすべてのコンポーネントは、時間の経過とともに非
見つかったものが問題であるかどうかわからない場合、[https://selenium.dev/support](https://selenium.dev/support)に記載されているコミュニケーション手段にて質問してください。
-## What to Help With
+## 何を手伝うか
-### Creating Examples
+### 例の作成
-Examples that need to be moved are marked with: {{% badge-code %}}
+追加が必要な例には、次のマークが付いています: {{% badge-code %}}
-We want to be able to run all of our code examples in the CI to ensure that people can copy and paste and
-execute everything on the site. So we put the code where it belongs in the
-[examples directory](https://github.com/SeleniumHQ/seleniumhq.github.io/blob/trunk/examples/).
-Each page in the documentation correlates to a test file in each of the languages, and should follow naming conventions.
-For instance examples for this page https://www.selenium.dev/documentation/webdriver/browsers/chrome/ get added in these
-files:
+すべてのコード例をCIで実行できるようにし、サイト上のすべてのコードをコピー&ペーストして実行できることを確認したいと考えています。そのため、コードを[examplesディレクトリ](https://github.com/SeleniumHQ/seleniumhq.github.io/blob/trunk/examples/)の適切な場所に配置します。
+ドキュメントの各ページは各言語のテストファイルに関連しており、命名規則に従う必要があります。
+例えば、このページ(https://www.selenium.dev/documentation/webdriver/browsers/chrome/)の例は以下のファイルに追加されています:
* `"/examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java"`
* `"/examples/python/tests/browsers/test_chrome.py"`
* `"/examples/dotnet/SeleniumDocs/Browsers/ChromeTest.cs"`
* `"/examples/ruby/spec/browsers/chrome_spec.rb"`
* `"/examples/javascript/test/browser/chromeSpecificCaps.spec.js"`
-Each example should get its own test. Ideally each test has an assertion that verifies the code works as intended.
-Once the code is copied to its own test in the proper file, it needs to be referenced in the markdown file.
+各例はそれぞれ独自のテストが必要です。理想的には、各テストにはコードが意図したとおりに動作することを確認するアサーションが含まれています。
+コードを適切なファイル内の独自のテストにコピーしたら、Markdownファイルで参照する必要があります。
-For example, the tab in Ruby would look like this:
+例えば、Rubyのtabは次のようになります:
{{* tab header="Ruby" */>}}
{{* gh-codeblock path="/examples/ruby/spec/browsers/chrome_spec.rb#L8-L9" */>}}
{{* /tab */>}}
-The line numbers at the end represent only the line or lines of code that actually represent the item being displayed.
-If a user wants more context, they can click the link to the GitHub page that will show the full context.
+末尾の行番号は、実際に表示される項目を表すコードの行のみを表します。
+ユーザーがより多くのコンテキストを必要とする場合、GitHubページへのリンクをクリックすると完全なコンテキストが表示されます。
-Make sure that if you add a test to the page that all the other line numbers in the markdown file are still
-correct. Adding a test at the top of a page means updating every single reference in the documentation that has a line
-number for that file.
+ページにテストを追加する場合は、Markdownファイル内の他のすべての行番号が正しいことを確認してください。
+ページの先頭にテストを追加すると、そのファイルの行番号を持つドキュメント内のすべての参照が更新されます。
-Finally, make sure that the tests pass in the CI.
+最後に、CIでテストがPassすることを確認してください。
-### Moving Examples
+### 例の移動
-Examples that need to be moved are marked with: {{% badge-examples %}}
+移動が必要な例には、次のマークが付いています: {{% badge-examples %}}
-Everything from the [Creating Examples](#creating-examples) section applies, with one addition.
+[例の作成](#例の作成)セクションのすべてが適用されますが、1つ追加があります。
-Make sure the tab includes `text=true`. By default, the tabs get formatted
-for code, so to use markdown or other shortcode statements (like `gh-codeblock`) it needs to be declared as text.
-For most examples, the `tabpane` declares the `text=true`, but if some of the tabs have code examples, the `tabpane`
-cannot specify it, and it must be specified in the tabs that do not need automatic code formatting.
+tabには`text=true`を含めてください。デフォルトではtabはコード用にフォーマットされるため、Markdownや他のショートコードステートメント(`gh-codeblock`など)を使用するには、`text=true`を宣言する必要があります。
+ほとんどの例では、`tabpane`が`text=true`を宣言しますが、tabの一部にコード例が含まれている場合、`tabpane`はそれを指定できず、自動コードフォーマットが不要なtabでは指定する必要があります。
## 貢献
@@ -110,13 +94,9 @@ Seleniumプロジェクトは新しいコントリビュータを歓迎します
#### 依存関係: Hugo
-We use [Hugo](https://gohugo.io/) and the [Docsy theme](https://www.docsy.dev/)
-to build and render the site. You will need the “extended”
-Sass/SCSS version of the Hugo binary to work on this site. We recommend
-to use Hugo 0.125.4 .
+[Hugo](https://gohugo.io/)と[Docsyテーマ](https://www.docsy.dev/)を使用してサイトの構築とレンダリングをしています。このサイトの作業をするには、Hugoバイナリの“拡張”Sass/SCSSバージョンが必要です。Hugo 0.125.4の使用を推奨します。
-Please follow the [Install Hugo](https://www.docsy.dev/docs/getting-started/#install-hugo)
-instructions from Docsy.
+[Docsyのインストール手順](https://www.docsy.dev/docs/getting-started/#install-hugo)に従ってください。
### ステップ 2: ブランチの作成
@@ -130,11 +110,7 @@ instructions from Docsy.
### ステップ 3: 変更を加える
-The repository contains the site and docs. Before jumping into
-making changes, please initialize the submodules and install the
-needed dependencies (see commands below). To make changes to the site,
-work on the `website_and_docs` directory. To see a live preview of
-your changes, run `hugo server` on the site's root directory.
+リポジトリにはサイトとドキュメントが含まれています。 変更を加える前に、submoduleを初期化し、必要な依存関係をインストールしてください(以下のコマンドを参照)。サイトに変更を加えるには、`website_and_docs` ディレクトリで作業してください。変更のライブプレビューを確認するには、サイトのルートディレクトリで `hugo server`を実行してください。
```shell
% git submodule update --init --recursive
@@ -142,7 +118,7 @@ your changes, run `hugo server` on the site's root directory.
% hugo server
```
-See [Style Guide]({{< ref "style.md" >}}) for more information on our conventions for contribution
+寄稿に関する規約の詳細については、 [スタイルガイド]({{< ref "style.md" >}}) をご覧ください。
### ステップ 4: コミット
diff --git a/website_and_docs/content/documentation/about/contributing.pt-br.md b/website_and_docs/content/documentation/about/contributing.pt-br.md
index a8dfb7eafaf0..90a86c7fa7c5 100644
--- a/website_and_docs/content/documentation/about/contributing.pt-br.md
+++ b/website_and_docs/content/documentation/about/contributing.pt-br.md
@@ -50,7 +50,7 @@ https://selenium.dev/support.
### Creating Examples
-Examples that need to be moved are marked with: {{% badge-code %}}
+Examples that need to be added are marked with: {{% badge-code %}}
We want to be able to run all of our code examples in the CI to ensure that people can copy and paste and
execute everything on the site. So we put the code where it belongs in the
diff --git a/website_and_docs/content/documentation/about/contributing.zh-cn.md b/website_and_docs/content/documentation/about/contributing.zh-cn.md
index 4d51cf6f72e2..84a81142c462 100644
--- a/website_and_docs/content/documentation/about/contributing.zh-cn.md
+++ b/website_and_docs/content/documentation/about/contributing.zh-cn.md
@@ -45,7 +45,7 @@ https://selenium.dev/support.
### Creating Examples
-Examples that need to be moved are marked with: {{% badge-code %}}
+Examples that need to be added are marked with: {{% badge-code %}}
We want to be able to run all of our code examples in the CI to ensure that people can copy and paste and
execute everything on the site. So we put the code where it belongs in the
diff --git a/website_and_docs/content/documentation/about/copyright.pt-br.md b/website_and_docs/content/documentation/about/copyright.pt-br.md
index feba8e686983..d50d38fdb7e0 100644
--- a/website_and_docs/content/documentation/about/copyright.pt-br.md
+++ b/website_and_docs/content/documentation/about/copyright.pt-br.md
@@ -3,8 +3,7 @@ title: "Direitos autorais e atribuições"
linkTitle: "Direitos autorais e atribuições"
weight: 1
description: >
- Copyright, contributions and all attributions for the different projects
- under the Selenium umbrella.
+ Direitos autorais, contribuições e todas as atribuições para os diferentes projetos sob a iniciativa do Selenium.
aliases: [
"/documentation/pt-br/front_matter/copyright_and_attributions/",
"/pt-br/documentation/about/copyright_and_attributions"
diff --git a/website_and_docs/content/documentation/about/style.en.md b/website_and_docs/content/documentation/about/style.en.md
index ee83f5607454..fa2ad642bc07 100644
--- a/website_and_docs/content/documentation/about/style.en.md
+++ b/website_and_docs/content/documentation/about/style.en.md
@@ -149,22 +149,22 @@ A basic comparison of code looks like:
{{* tabpane text=true */>}}
{{* tab header="Java" */>}}
- {{* gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L26-L27" */>}}
+ {{* gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L26-L27" */>}}
{{* /tab */>}}
{{* tab header="Python" */>}}
- {{* gh-codeblock path="examples/python/tests/getting_started/first_script.py#L18-L19" */>}}
+ {{* gh-codeblock path="/examples/python/tests/getting_started/first_script.py#L18-L19" */>}}
{{* /tab */>}}
{{* tab header="CSharp" */>}}
- {{* gh-codeblock path="examples/dotnet/SeleniumDocs/GettingStarted/FirstScript.cs#L25-L26" */>}}
+ {{* gh-codeblock path="/examples/dotnet/SeleniumDocs/GettingStarted/FirstScript.cs#L25-L26" */>}}
{{* /tab */>}}
{{* tab header="Ruby" */>}}
- {{* gh-codeblock path="examples/ruby/spec/getting_started/first_script.rb#L17-L18" */>}}
+ {{* gh-codeblock path="/examples/ruby/spec/getting_started/first_script.rb#L17-L18" */>}}
{{* /tab */>}}
{{* tab header="JavaScript" */>}}
- {{* gh-codeblock path="examples/javascript/test/getting_started/firstScript.spec.js#L22-L23" */>}}
+ {{* gh-codeblock path="/examples/javascript/test/getting_started/firstScript.spec.js#L22-L23" */>}}
{{* /tab */>}}
{{* tab header="Kotlin" */>}}
- {{* gh-codeblock path="examples/kotlin/src/test/kotlin/dev/selenium/getting_started/FirstScriptTest.kt#L31-L32" */>}}
+ {{* gh-codeblock path="/examples/kotlin/src/test/kotlin/dev/selenium/getting_started/FirstScriptTest.kt#L31-L32" */>}}
{{* /tab */>}}
{{* /tabpane */>}}
@@ -172,22 +172,22 @@ Which looks like this:
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L26-L27" >}}
+{{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L26-L27" >}}
{{< /tab >}}
{{< tab header="Python" >}}
-{{< gh-codeblock path="examples/python/tests/getting_started/first_script.py#L18-L19" >}}
+{{< gh-codeblock path="/examples/python/tests/getting_started/first_script.py#L18-L19" >}}
{{< /tab >}}
{{< tab header="CSharp" >}}
-{{< gh-codeblock path="examples/dotnet/SeleniumDocs/GettingStarted/FirstScript.cs#L25-L26" >}}
+{{< gh-codeblock path="/examples/dotnet/SeleniumDocs/GettingStarted/FirstScript.cs#L25-L26" >}}
{{< /tab >}}
{{< tab header="Ruby" >}}
-{{< gh-codeblock path="examples/ruby/spec/getting_started/first_script.rb#L17-L18" >}}
+{{< gh-codeblock path="/examples/ruby/spec/getting_started/first_script.rb#L17-L18" >}}
{{< /tab >}}
{{< tab header="JavaScript" >}}
-{{< gh-codeblock path="examples/javascript/test/getting_started/firstScript.spec.js#L22-L23" >}}
+{{< gh-codeblock path="/examples/javascript/test/getting_started/firstScript.spec.js#L22-L23" >}}
{{< /tab >}}
{{< tab header="Kotlin" >}}
-{{< gh-codeblock path="examples/kotlin/src/test/kotlin/dev/selenium/getting_started/FirstScriptTest.kt#L31-L32" >}}
+{{< gh-codeblock path="/examples/kotlin/src/test/kotlin/dev/selenium/getting_started/FirstScriptTest.kt#L31-L32" >}}
{{< /tab >}}
{{< /tabpane >}}
@@ -200,11 +200,11 @@ then change the Hugo syntax for the `tab`to use `%` instead of `<` and `>` with
{{* tabpane text=true */>}}
{{%/* tab header="Java" */%}}
1. Start the driver
- {{* gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L12" */>}}
+ {{* gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L12" */>}}
2. Navigate to a page
- {{* gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L14" */>}}
+ {{* gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L14" */>}}
3. Quit the driver
- {{* gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L29" */>}}
+ {{* gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L29" */>}}
{{%/* /tab */%}}
< ... >
{{* /tabpane */>}}
@@ -215,11 +215,11 @@ This produces:
{{% tab header="Java" %}}
1. Start the driver
- {{< gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L12" >}}
+ {{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L12" >}}
2. Navigate to a page
- {{< gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L14" >}}
+ {{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L14" >}}
3. Quit the driver
- {{< gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L29" >}}
+ {{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L29" >}}
{{% /tab %}}
{{< /tabpane >}}
diff --git a/website_and_docs/content/documentation/about/style.ja.md b/website_and_docs/content/documentation/about/style.ja.md
index ee83f5607454..fa2ad642bc07 100644
--- a/website_and_docs/content/documentation/about/style.ja.md
+++ b/website_and_docs/content/documentation/about/style.ja.md
@@ -149,22 +149,22 @@ A basic comparison of code looks like:
{{* tabpane text=true */>}}
{{* tab header="Java" */>}}
- {{* gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L26-L27" */>}}
+ {{* gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L26-L27" */>}}
{{* /tab */>}}
{{* tab header="Python" */>}}
- {{* gh-codeblock path="examples/python/tests/getting_started/first_script.py#L18-L19" */>}}
+ {{* gh-codeblock path="/examples/python/tests/getting_started/first_script.py#L18-L19" */>}}
{{* /tab */>}}
{{* tab header="CSharp" */>}}
- {{* gh-codeblock path="examples/dotnet/SeleniumDocs/GettingStarted/FirstScript.cs#L25-L26" */>}}
+ {{* gh-codeblock path="/examples/dotnet/SeleniumDocs/GettingStarted/FirstScript.cs#L25-L26" */>}}
{{* /tab */>}}
{{* tab header="Ruby" */>}}
- {{* gh-codeblock path="examples/ruby/spec/getting_started/first_script.rb#L17-L18" */>}}
+ {{* gh-codeblock path="/examples/ruby/spec/getting_started/first_script.rb#L17-L18" */>}}
{{* /tab */>}}
{{* tab header="JavaScript" */>}}
- {{* gh-codeblock path="examples/javascript/test/getting_started/firstScript.spec.js#L22-L23" */>}}
+ {{* gh-codeblock path="/examples/javascript/test/getting_started/firstScript.spec.js#L22-L23" */>}}
{{* /tab */>}}
{{* tab header="Kotlin" */>}}
- {{* gh-codeblock path="examples/kotlin/src/test/kotlin/dev/selenium/getting_started/FirstScriptTest.kt#L31-L32" */>}}
+ {{* gh-codeblock path="/examples/kotlin/src/test/kotlin/dev/selenium/getting_started/FirstScriptTest.kt#L31-L32" */>}}
{{* /tab */>}}
{{* /tabpane */>}}
@@ -172,22 +172,22 @@ Which looks like this:
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L26-L27" >}}
+{{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L26-L27" >}}
{{< /tab >}}
{{< tab header="Python" >}}
-{{< gh-codeblock path="examples/python/tests/getting_started/first_script.py#L18-L19" >}}
+{{< gh-codeblock path="/examples/python/tests/getting_started/first_script.py#L18-L19" >}}
{{< /tab >}}
{{< tab header="CSharp" >}}
-{{< gh-codeblock path="examples/dotnet/SeleniumDocs/GettingStarted/FirstScript.cs#L25-L26" >}}
+{{< gh-codeblock path="/examples/dotnet/SeleniumDocs/GettingStarted/FirstScript.cs#L25-L26" >}}
{{< /tab >}}
{{< tab header="Ruby" >}}
-{{< gh-codeblock path="examples/ruby/spec/getting_started/first_script.rb#L17-L18" >}}
+{{< gh-codeblock path="/examples/ruby/spec/getting_started/first_script.rb#L17-L18" >}}
{{< /tab >}}
{{< tab header="JavaScript" >}}
-{{< gh-codeblock path="examples/javascript/test/getting_started/firstScript.spec.js#L22-L23" >}}
+{{< gh-codeblock path="/examples/javascript/test/getting_started/firstScript.spec.js#L22-L23" >}}
{{< /tab >}}
{{< tab header="Kotlin" >}}
-{{< gh-codeblock path="examples/kotlin/src/test/kotlin/dev/selenium/getting_started/FirstScriptTest.kt#L31-L32" >}}
+{{< gh-codeblock path="/examples/kotlin/src/test/kotlin/dev/selenium/getting_started/FirstScriptTest.kt#L31-L32" >}}
{{< /tab >}}
{{< /tabpane >}}
@@ -200,11 +200,11 @@ then change the Hugo syntax for the `tab`to use `%` instead of `<` and `>` with
{{* tabpane text=true */>}}
{{%/* tab header="Java" */%}}
1. Start the driver
- {{* gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L12" */>}}
+ {{* gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L12" */>}}
2. Navigate to a page
- {{* gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L14" */>}}
+ {{* gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L14" */>}}
3. Quit the driver
- {{* gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L29" */>}}
+ {{* gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L29" */>}}
{{%/* /tab */%}}
< ... >
{{* /tabpane */>}}
@@ -215,11 +215,11 @@ This produces:
{{% tab header="Java" %}}
1. Start the driver
- {{< gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L12" >}}
+ {{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L12" >}}
2. Navigate to a page
- {{< gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L14" >}}
+ {{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L14" >}}
3. Quit the driver
- {{< gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L29" >}}
+ {{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L29" >}}
{{% /tab %}}
{{< /tabpane >}}
diff --git a/website_and_docs/content/documentation/about/style.pt-br.md b/website_and_docs/content/documentation/about/style.pt-br.md
index ee83f5607454..760f76d18bd0 100644
--- a/website_and_docs/content/documentation/about/style.pt-br.md
+++ b/website_and_docs/content/documentation/about/style.pt-br.md
@@ -1,9 +1,9 @@
---
-title: "Style guide for Selenium documentation"
-linkTitle: "Style"
+title: "Guia de estilo para a documentação do Selenium"
+linkTitle: "Estilo"
weight: 6
description: >-
- Conventions for contributions to the Selenium documentation and code examples
+ Convenções para contribuições à documentação do Selenium e exemplos de código.
---
Read our [contributing documentation]({{< ref contributing.md >}}) for complete instructions on
@@ -149,22 +149,22 @@ A basic comparison of code looks like:
{{* tabpane text=true */>}}
{{* tab header="Java" */>}}
- {{* gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L26-L27" */>}}
+ {{* gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L26-L27" */>}}
{{* /tab */>}}
{{* tab header="Python" */>}}
- {{* gh-codeblock path="examples/python/tests/getting_started/first_script.py#L18-L19" */>}}
+ {{* gh-codeblock path="/examples/python/tests/getting_started/first_script.py#L18-L19" */>}}
{{* /tab */>}}
{{* tab header="CSharp" */>}}
- {{* gh-codeblock path="examples/dotnet/SeleniumDocs/GettingStarted/FirstScript.cs#L25-L26" */>}}
+ {{* gh-codeblock path="/examples/dotnet/SeleniumDocs/GettingStarted/FirstScript.cs#L25-L26" */>}}
{{* /tab */>}}
{{* tab header="Ruby" */>}}
- {{* gh-codeblock path="examples/ruby/spec/getting_started/first_script.rb#L17-L18" */>}}
+ {{* gh-codeblock path="/examples/ruby/spec/getting_started/first_script.rb#L17-L18" */>}}
{{* /tab */>}}
{{* tab header="JavaScript" */>}}
- {{* gh-codeblock path="examples/javascript/test/getting_started/firstScript.spec.js#L22-L23" */>}}
+ {{* gh-codeblock path="/examples/javascript/test/getting_started/firstScript.spec.js#L22-L23" */>}}
{{* /tab */>}}
{{* tab header="Kotlin" */>}}
- {{* gh-codeblock path="examples/kotlin/src/test/kotlin/dev/selenium/getting_started/FirstScriptTest.kt#L31-L32" */>}}
+ {{* gh-codeblock path="/examples/kotlin/src/test/kotlin/dev/selenium/getting_started/FirstScriptTest.kt#L31-L32" */>}}
{{* /tab */>}}
{{* /tabpane */>}}
@@ -172,22 +172,22 @@ Which looks like this:
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L26-L27" >}}
+{{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L26-L27" >}}
{{< /tab >}}
{{< tab header="Python" >}}
-{{< gh-codeblock path="examples/python/tests/getting_started/first_script.py#L18-L19" >}}
+{{< gh-codeblock path="/examples/python/tests/getting_started/first_script.py#L18-L19" >}}
{{< /tab >}}
{{< tab header="CSharp" >}}
-{{< gh-codeblock path="examples/dotnet/SeleniumDocs/GettingStarted/FirstScript.cs#L25-L26" >}}
+{{< gh-codeblock path="/examples/dotnet/SeleniumDocs/GettingStarted/FirstScript.cs#L25-L26" >}}
{{< /tab >}}
{{< tab header="Ruby" >}}
-{{< gh-codeblock path="examples/ruby/spec/getting_started/first_script.rb#L17-L18" >}}
+{{< gh-codeblock path="/examples/ruby/spec/getting_started/first_script.rb#L17-L18" >}}
{{< /tab >}}
{{< tab header="JavaScript" >}}
-{{< gh-codeblock path="examples/javascript/test/getting_started/firstScript.spec.js#L22-L23" >}}
+{{< gh-codeblock path="/examples/javascript/test/getting_started/firstScript.spec.js#L22-L23" >}}
{{< /tab >}}
{{< tab header="Kotlin" >}}
-{{< gh-codeblock path="examples/kotlin/src/test/kotlin/dev/selenium/getting_started/FirstScriptTest.kt#L31-L32" >}}
+{{< gh-codeblock path="/examples/kotlin/src/test/kotlin/dev/selenium/getting_started/FirstScriptTest.kt#L31-L32" >}}
{{< /tab >}}
{{< /tabpane >}}
@@ -200,11 +200,11 @@ then change the Hugo syntax for the `tab`to use `%` instead of `<` and `>` with
{{* tabpane text=true */>}}
{{%/* tab header="Java" */%}}
1. Start the driver
- {{* gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L12" */>}}
+ {{* gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L12" */>}}
2. Navigate to a page
- {{* gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L14" */>}}
+ {{* gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L14" */>}}
3. Quit the driver
- {{* gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L29" */>}}
+ {{* gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L29" */>}}
{{%/* /tab */%}}
< ... >
{{* /tabpane */>}}
@@ -215,11 +215,11 @@ This produces:
{{% tab header="Java" %}}
1. Start the driver
- {{< gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L12" >}}
+ {{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L12" >}}
2. Navigate to a page
- {{< gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L14" >}}
+ {{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L14" >}}
3. Quit the driver
- {{< gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L29" >}}
+ {{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L29" >}}
{{% /tab %}}
{{< /tabpane >}}
diff --git a/website_and_docs/content/documentation/about/style.zh-cn.md b/website_and_docs/content/documentation/about/style.zh-cn.md
index ee83f5607454..fa2ad642bc07 100644
--- a/website_and_docs/content/documentation/about/style.zh-cn.md
+++ b/website_and_docs/content/documentation/about/style.zh-cn.md
@@ -149,22 +149,22 @@ A basic comparison of code looks like:
{{* tabpane text=true */>}}
{{* tab header="Java" */>}}
- {{* gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L26-L27" */>}}
+ {{* gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L26-L27" */>}}
{{* /tab */>}}
{{* tab header="Python" */>}}
- {{* gh-codeblock path="examples/python/tests/getting_started/first_script.py#L18-L19" */>}}
+ {{* gh-codeblock path="/examples/python/tests/getting_started/first_script.py#L18-L19" */>}}
{{* /tab */>}}
{{* tab header="CSharp" */>}}
- {{* gh-codeblock path="examples/dotnet/SeleniumDocs/GettingStarted/FirstScript.cs#L25-L26" */>}}
+ {{* gh-codeblock path="/examples/dotnet/SeleniumDocs/GettingStarted/FirstScript.cs#L25-L26" */>}}
{{* /tab */>}}
{{* tab header="Ruby" */>}}
- {{* gh-codeblock path="examples/ruby/spec/getting_started/first_script.rb#L17-L18" */>}}
+ {{* gh-codeblock path="/examples/ruby/spec/getting_started/first_script.rb#L17-L18" */>}}
{{* /tab */>}}
{{* tab header="JavaScript" */>}}
- {{* gh-codeblock path="examples/javascript/test/getting_started/firstScript.spec.js#L22-L23" */>}}
+ {{* gh-codeblock path="/examples/javascript/test/getting_started/firstScript.spec.js#L22-L23" */>}}
{{* /tab */>}}
{{* tab header="Kotlin" */>}}
- {{* gh-codeblock path="examples/kotlin/src/test/kotlin/dev/selenium/getting_started/FirstScriptTest.kt#L31-L32" */>}}
+ {{* gh-codeblock path="/examples/kotlin/src/test/kotlin/dev/selenium/getting_started/FirstScriptTest.kt#L31-L32" */>}}
{{* /tab */>}}
{{* /tabpane */>}}
@@ -172,22 +172,22 @@ Which looks like this:
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L26-L27" >}}
+{{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L26-L27" >}}
{{< /tab >}}
{{< tab header="Python" >}}
-{{< gh-codeblock path="examples/python/tests/getting_started/first_script.py#L18-L19" >}}
+{{< gh-codeblock path="/examples/python/tests/getting_started/first_script.py#L18-L19" >}}
{{< /tab >}}
{{< tab header="CSharp" >}}
-{{< gh-codeblock path="examples/dotnet/SeleniumDocs/GettingStarted/FirstScript.cs#L25-L26" >}}
+{{< gh-codeblock path="/examples/dotnet/SeleniumDocs/GettingStarted/FirstScript.cs#L25-L26" >}}
{{< /tab >}}
{{< tab header="Ruby" >}}
-{{< gh-codeblock path="examples/ruby/spec/getting_started/first_script.rb#L17-L18" >}}
+{{< gh-codeblock path="/examples/ruby/spec/getting_started/first_script.rb#L17-L18" >}}
{{< /tab >}}
{{< tab header="JavaScript" >}}
-{{< gh-codeblock path="examples/javascript/test/getting_started/firstScript.spec.js#L22-L23" >}}
+{{< gh-codeblock path="/examples/javascript/test/getting_started/firstScript.spec.js#L22-L23" >}}
{{< /tab >}}
{{< tab header="Kotlin" >}}
-{{< gh-codeblock path="examples/kotlin/src/test/kotlin/dev/selenium/getting_started/FirstScriptTest.kt#L31-L32" >}}
+{{< gh-codeblock path="/examples/kotlin/src/test/kotlin/dev/selenium/getting_started/FirstScriptTest.kt#L31-L32" >}}
{{< /tab >}}
{{< /tabpane >}}
@@ -200,11 +200,11 @@ then change the Hugo syntax for the `tab`to use `%` instead of `<` and `>` with
{{* tabpane text=true */>}}
{{%/* tab header="Java" */%}}
1. Start the driver
- {{* gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L12" */>}}
+ {{* gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L12" */>}}
2. Navigate to a page
- {{* gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L14" */>}}
+ {{* gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L14" */>}}
3. Quit the driver
- {{* gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L29" */>}}
+ {{* gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L29" */>}}
{{%/* /tab */%}}
< ... >
{{* /tabpane */>}}
@@ -215,11 +215,11 @@ This produces:
{{% tab header="Java" %}}
1. Start the driver
- {{< gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L12" >}}
+ {{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L12" >}}
2. Navigate to a page
- {{< gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L14" >}}
+ {{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L14" >}}
3. Quit the driver
- {{< gh-codeblock path="examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L29" >}}
+ {{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/getting_started/FirstScript.java#L29" >}}
{{% /tab %}}
{{< /tabpane >}}
diff --git a/website_and_docs/content/documentation/grid/advanced_features/endpoints.en.md b/website_and_docs/content/documentation/grid/advanced_features/endpoints.en.md
index 7e902bc0e996..3d605084c87c 100644
--- a/website_and_docs/content/documentation/grid/advanced_features/endpoints.en.md
+++ b/website_and_docs/content/documentation/grid/advanced_features/endpoints.en.md
@@ -16,7 +16,7 @@ Grid status provides the current state of the Grid. It consists of details about
For every Node, the status includes information regarding Node availability, sessions, and slots.
```shell
-cURL GET 'http://localhost:4444/status'
+curl --request GET 'http://localhost:4444/status'
```
### Delete session
@@ -25,7 +25,7 @@ Deleting the session terminates the WebDriver session, quits the driver and remo
Any request using the removed session-id or reusing the driver instance will throw an error.
```shell
-cURL --request DELETE 'http://localhost:4444/session/
'
+curl --request DELETE 'http://localhost:4444/session/'
```
### Which URL should I use?
@@ -42,7 +42,7 @@ Default URL for all the above modes is http://localhost:4444.
### Remove Node
-To remove the Node from the Grid, use the cURL command enlisted below.
+To remove the Node from the Grid, use the curl command enlisted below.
It does not stop any ongoing session running on that Node.
The Node continues running as it is unless explicitly killed.
The Distributor is no longer aware of the Node and hence any matching new session request
@@ -52,15 +52,15 @@ In the Standalone mode, the Distributor URL is the Standalone server address.
In the Hub-Node mode, the Distributor URL is the Hub server address.
```shell
-cURL --request DELETE 'http://localhost:4444/se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET: '
+curl --request DELETE 'http://localhost:4444/se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET: '
```
In the fully distributed mode, the URL is the Router server address.
```shell
-cURL --request DELETE 'http://localhost:4444/se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET: '
+curl --request DELETE 'http://localhost:4444/se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET: '
```
If no registration secret has been configured while setting up the Grid, then use
```shell
-cURL --request DELETE 'http:///se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET;'
+curl --request DELETE 'http:///se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET;'
```
### Drain Node
@@ -73,15 +73,15 @@ In the Standalone mode, the Distributor URL is the Standalone server address.
In the Hub-Node mode, the Distributor URL is the Hub server address.
```shell
-cURL --request POST 'http://localhost:4444/se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET: '
+curl --request POST 'http://localhost:4444/se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET: '
```
In the fully distributed mode, the URL is the Router server address.
```shell
-cURL --request POST 'http://localhost:4444/se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET: '
+curl --request POST 'http://localhost:4444/se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET: '
```
If no registration secret has been configured while setting up the Grid, then use
```shell
-cURL --request POST 'http:///se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET;'
+curl --request POST 'http:///se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET;'
```
## Node
@@ -94,37 +94,37 @@ In case of multiple Nodes, use [Grid status](#grid-status) to get all Node detai
### Status
The Node status is essentially a health-check for the Node.
-Distributor pings the node status are regular intervals and updates the Grid Model accordingly.
+Distributor pings the node status at regular intervals and updates the Grid Model accordingly.
The status includes information regarding availability, sessions, and slots.
```shell
-cURL --request GET 'http://localhost:5555/status'
+curl --request GET 'http://localhost:5555/status'
```
### Drain
Distributor passes the [drain](#drain-node) command to the appropriate node identified by the node-id.
-To drain the Node directly, use the cuRL command enlisted below.
+To drain the Node directly, use the curl command enlisted below.
Both endpoints are valid and produce the same result. Drain finishes the ongoing sessions before stopping the Node.
```shell
-cURL --request POST 'http://localhost:5555/se/grid/node/drain' --header 'X-REGISTRATION-SECRET: '
+curl --request POST 'http://localhost:5555/se/grid/node/drain' --header 'X-REGISTRATION-SECRET: '
```
If no registration secret has been configured while setting up the Grid, then use
```shell
-cURL --request POST 'http:///se/grid/node/drain' --header 'X-REGISTRATION-SECRET;'
+curl --request POST 'http:///se/grid/node/drain' --header 'X-REGISTRATION-SECRET;'
```
### Check session owner
-To check if a session belongs to a Node, use the cURL command enlisted below.
+To check if a session belongs to a Node, use the curl command enlisted below.
```shell
-cURL --request GET 'http://localhost:5555/se/grid/node/owner/' --header 'X-REGISTRATION-SECRET: '
+curl --request GET 'http://localhost:5555/se/grid/node/owner/' --header 'X-REGISTRATION-SECRET: '
```
If no registration secret has been configured while setting up the Grid, then use
```shell
-cURL --request GET 'http:///se/grid/node/owner/' --header 'X-REGISTRATION-SECRET;'
+curl --request GET 'http:///se/grid/node/owner/' --header 'X-REGISTRATION-SECRET;'
```
It will return true if the session belongs to the Node else it will return false.
@@ -135,11 +135,11 @@ Deleting the session terminates the WebDriver session, quits the driver and remo
Any request using the removed session-id or reusing the driver instance will throw an error.
```shell
-cURL --request DELETE 'http://localhost:5555/se/grid/node/session/' --header 'X-REGISTRATION-SECRET: '
+curl --request DELETE 'http://localhost:5555/se/grid/node/session/' --header 'X-REGISTRATION-SECRET: '
```
If no registration secret has been configured while setting up the Grid, then use
```shell
-cURL --request DELETE 'http:///se/grid/node/session/' --header 'X-REGISTRATION-SECRET;'
+curl --request DELETE 'http:///se/grid/node/session/' --header 'X-REGISTRATION-SECRET;'
```
## New Session Queue
@@ -147,7 +147,7 @@ cURL --request DELETE 'http:///se/grid/node/session/' --he
### Clear New Session Queue
New Session Request Queue holds the new session requests.
-To clear the queue, use the cURL command enlisted below.
+To clear the queue, use the curl command enlisted below.
Clearing the queue rejects all the requests in the queue. For each such request, the server returns an error response to the respective client.
The result of the clear command is the total number of deleted requests.
@@ -156,23 +156,23 @@ In the Standalone mode, the Queue URL is the Standalone server address.
In the Hub-Node mode, the Queue URL is the Hub server address.
```shell
-cURL --request DELETE 'http://localhost:4444/se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET: '
+curl --request DELETE 'http://localhost:4444/se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET: '
```
In the fully distributed mode, the Queue URL is Router server address.
```shell
-cURL --request DELETE 'http://localhost:4444/se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET: '
+curl --request DELETE 'http://localhost:4444/se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET: '
```
If no registration secret has been configured while setting up the Grid, then use
```shell
-cURL --request DELETE 'http:///se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET;'
+curl --request DELETE 'http:///se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET;'
```
### Get New Session Queue Requests
New Session Request Queue holds the new session requests.
-To get the current requests in the queue, use the cURL command enlisted below.
+To get the current requests in the queue, use the curl command enlisted below.
The response returns the total number of requests in the queue and the request payloads.
In the Standalone mode, the Queue URL is the Standalone server address.
@@ -180,9 +180,9 @@ In the Standalone mode, the Queue URL is the Standalone server address.
In the Hub-Node mode, the Queue URL is the Hub server address.
```shell
-cURL --request GET 'http://localhost:4444/se/grid/newsessionqueue/queue'
+curl --request GET 'http://localhost:4444/se/grid/newsessionqueue/queue'
```
In the fully distributed mode, the Queue URL is Router server address.
```shell
-cURL --request GET 'http://localhost:4444/se/grid/newsessionqueue/queue'
+curl --request GET 'http://localhost:4444/se/grid/newsessionqueue/queue'
diff --git a/website_and_docs/content/documentation/grid/advanced_features/endpoints.ja.md b/website_and_docs/content/documentation/grid/advanced_features/endpoints.ja.md
index cfc12e26ed1e..5407895187d8 100644
--- a/website_and_docs/content/documentation/grid/advanced_features/endpoints.ja.md
+++ b/website_and_docs/content/documentation/grid/advanced_features/endpoints.ja.md
@@ -16,7 +16,7 @@ Grid ステータスは Grid の現在の状態を提供します。 登録さ
各ノードのステータスには、ノードの稼働状況、セッション、およびスロットに関する情報が含まれます。
```shell
-cURL GET 'http://localhost:4444/status'
+curl --request GET 'http://localhost:4444/status'
```
### セッションの削除
@@ -25,7 +25,7 @@ cURL GET 'http://localhost:4444/status'
削除されたセッション ID を使用するリクエストや、ドライバのインスタンスを再利用しようとすると、エラーとなります。
```shell
-cURL --request DELETE 'http://localhost:4444/session/'
+curl --request DELETE 'http://localhost:4444/session/'
```
### Which URL should I use?
@@ -42,7 +42,7 @@ cURL --request DELETE 'http://localhost:4444/session/'
### ノード削除
-ノードを Grid から削除するには、以下の cURL コマンドを使用します。
+ノードを Grid から削除するには、以下の curl コマンドを使用します。
このコマンドは、そのノード上で実行中のセッションを停止させるものではありません。
ノードは明示的に強制終了されない限り、そのまま動作し続けます。
ディストリビューターはそのノードを認識しなくなるため、マッチする新しいセッションのリクエストは はその Node に転送されません。
@@ -52,19 +52,19 @@ cURL --request DELETE 'http://localhost:4444/session/'
ハブ&ノードモードでは、ディストリビューターの URL は ハブのアドレスになります。
```shell
-cURL --request DELETE 'http://localhost:4444/se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET: '
+curl --request DELETE 'http://localhost:4444/se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET: '
```
完全分散モードでは、ディストリビューター URL は ディストリビューターのアドレスになります。
```shell
-cURL --request DELETE 'http://localhost:4444/se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET: '
+curl --request DELETE 'http://localhost:4444/se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET: '
```
Grid の設定時に登録用の secret を設定していない場合は次のようにします:
```shell
-cURL --request DELETE 'http:///se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET;'
+curl --request DELETE 'http:///se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET;'
```
### ノードのドレイン
@@ -78,19 +78,19 @@ cURL --request DELETE 'http:///se/grid/distributor/node/' -
ハブ&ノードモードでは、ディストリビューターの URL は ハブのアドレスになります。
```shell
-cURL --request POST 'http://localhost:4444/se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET: '
+curl --request POST 'http://localhost:4444/se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET: '
```
完全分散モードでは、ディストリビューター URL は ディストリビューターのアドレスになります。
```shell
-cURL --request POST 'http://localhost:4444/se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET: '
+curl --request POST 'http://localhost:4444/se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET: '
```
Grid の設定時に登録用の secret を設定していない場合は次のようにします:
```shell
-cURL --request POST 'http:///se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET;'
+curl --request POST 'http:///se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET;'
```
## ノード
@@ -106,38 +106,38 @@ cURL --request POST 'http:///se/grid/distributor/node//drai
ステータスには稼働状況、セッション、およびスロットに関する情報が含まれます。
```shell
-cURL --request GET 'http://localhost:5555/status'
+curl --request GET 'http://localhost:5555/status'
```
### ドレイン
ディストリビューターは [ドレイン](#ノードのドレイン)コマンドを適切なノードに渡します。
-ノードを直接ドレインするには以下の cURL コマンドを使います。
+ノードを直接ドレインするには以下の curl コマンドを使います。
どちらのエンドポイントも有効であり、同じ結果になります。
ドレインは、ノードを停止する前に進行中のセッションを終了させます。
```shell
-cURL --request POST 'http://localhost:5555/se/grid/node/drain' --header 'X-REGISTRATION-SECRET: '
+curl --request POST 'http://localhost:5555/se/grid/node/drain' --header 'X-REGISTRATION-SECRET: '
```
Grid の設定時に登録用の secret を設定していない場合は次のようにします:
```shell
-cURL --request POST 'http:///se/grid/node/drain' --header 'X-REGISTRATION-SECRET;'
+curl --request POST 'http:///se/grid/node/drain' --header 'X-REGISTRATION-SECRET;'
```
### セッションオーナーのチェック
-あるセッションがノードに属しているかどうかをチェックするには、以下の cURL コマンドを使います。
+あるセッションがノードに属しているかどうかをチェックするには、以下の curl コマンドを使います。
```shell
-cURL --request GET 'http://localhost:5555/se/grid/node/owner/' --header 'X-REGISTRATION-SECRET: '
+curl --request GET 'http://localhost:5555/se/grid/node/owner/' --header 'X-REGISTRATION-SECRET: '
```
Grid の設定時に登録用の secret を設定していない場合は次のようにします:
```shell
-cURL --request GET 'http:///se/grid/node/owner/' --header 'X-REGISTRATION-SECRET;'
+curl --request GET 'http:///se/grid/node/owner/' --header 'X-REGISTRATION-SECRET;'
```
もしセッションがノードに属していたら true を返し、そうでなければ false が返ります。
@@ -148,13 +148,13 @@ cURL --request GET 'http:///se/grid/node/owner/' --header
削除されたセッション ID を使用するリクエストや、ドライバのインスタンスを再利用しようとすると、エラーとなります。
```shell
-cURL --request DELETE 'http://localhost:5555/se/grid/node/session/' --header 'X-REGISTRATION-SECRET: '
+curl --request DELETE 'http://localhost:5555/se/grid/node/session/' --header 'X-REGISTRATION-SECRET: '
```
Grid の設定時に登録用の secret を設定していない場合は次のようにします:
```shell
-cURL --request DELETE 'http:///se/grid/node/session/' --header 'X-REGISTRATION-SECRET;'
+curl --request DELETE 'http:///se/grid/node/session/' --header 'X-REGISTRATION-SECRET;'
```
## 新規セッションキュー
@@ -162,7 +162,7 @@ cURL --request DELETE 'http:///se/grid/node/session/' --he
### 新規セッションキューのクリア
新規セッションキューには、新規セッションリクエストが格納されます。
-キューをクリアするには、以下に挙げる cURL コマンドを使用します。
+キューをクリアするには、以下に挙げる curl コマンドを使用します。
キューを消去すると、キューにあるすべてのリクエストを拒否します。
サーバーは各リクエストのそれぞれのクライアントにエラーレスポンスを返します。
クリアコマンドの結果は、削除されたリクエストの数です。
@@ -172,25 +172,25 @@ cURL --request DELETE 'http:///se/grid/node/session/' --he
ハブ&ノードモードでは、キューの URL は ハブのアドレスになります。
```shell
-cURL --request DELETE 'http://localhost:4444/se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET: '
+curl --request DELETE 'http://localhost:4444/se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET: '
```
完全分散モードでは、キューの URL は 新規セッションキューのアドレスになります。
```shell
-cURL --request DELETE 'http://localhost:4444/se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET: '
+curl --request DELETE 'http://localhost:4444/se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET: '
```
Grid の設定時に登録用の secret を設定していない場合は次のようにします:
```shell
-cURL --request DELETE 'http:///se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET;'
+curl --request DELETE 'http:///se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET;'
```
### 新規セッションリクエストの取得
新規セッションキューには、新規セッションリクエストが格納されます。
-キューにある現在のリクエストを取得するには、以下に挙げる cURL コマンドを使用します。
+キューにある現在のリクエストを取得するには、以下に挙げる curl コマンドを使用します。
レスポンスはキュー内のリクエストの数とリクエストのペイロードを返します。
スタンドアロンモードでは、キューの URL はスタンドアロンサーバーのアドレスとなります。
@@ -198,11 +198,11 @@ cURL --request DELETE 'http:///se/grid/newsessionqueue/queue' --head
ハブ&ノードモードでは、キューの URL は ハブのアドレスになります。
```shell
-cURL --request GET 'http://localhost:4444/se/grid/newsessionqueue/queue'
+curl --request GET 'http://localhost:4444/se/grid/newsessionqueue/queue'
```
完全分散モードでは、キューの URL は 新規セッションキューのアドレスになります。
```shell
-cURL --request GET 'http://localhost:4444/se/grid/newsessionqueue/queue'
+curl --request GET 'http://localhost:4444/se/grid/newsessionqueue/queue'
```
diff --git a/website_and_docs/content/documentation/grid/advanced_features/endpoints.pt-br.md b/website_and_docs/content/documentation/grid/advanced_features/endpoints.pt-br.md
index f1221a1af8dd..046e2ab41fb8 100644
--- a/website_and_docs/content/documentation/grid/advanced_features/endpoints.pt-br.md
+++ b/website_and_docs/content/documentation/grid/advanced_features/endpoints.pt-br.md
@@ -16,7 +16,7 @@ O status da Grid fornece o estado atual da grid. Consiste em detalhes sobre cada
Para cada nó, o status inclui informações sobre a disponibilidade, sessões e slots do nó.
```shell
-cURL GET 'http://localhost:4444/status'
+curl --request GET 'http://localhost:4444/status'
```
### Deletar sessão
@@ -25,7 +25,7 @@ A exclusão da sessão encerra a sessão do WebDriver, fecha o driver e o remove
Qualquer solicitação usando o id de sessão removido ou reutilizando a instância do driver gerará um erro.
```shell
-cURL --request DELETE 'http://localhost:4444/session/'
+curl --request DELETE 'http://localhost:4444/session/'
```
### Which URL should I use?
@@ -42,7 +42,7 @@ A URL padrão para todos os modos acima é http://localhost:4444.
### Remover Nó
-Para remover o Nó da Grid, use o comando cURL listado abaixo.
+Para remover o Nó da Grid, use o comando curl listado abaixo.
Ele não interrompe nenhuma sessão em andamento em execução nesse nó.
O Node continua rodando como está, a menos que seja explicitamente eliminado.
O Distribuidor não está mais ciente do Nó e, portanto, qualquer solicitação de nova sessão correspondente
@@ -52,15 +52,15 @@ No modo Standalone, a URL do distribuidor é o endereço do servidor Standalone.
No modo Hub-Node, a URL do Distribuidor é o endereço do servidor Hub.
```shell
-cURL --request DELETE 'http://localhost:4444/se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET: '
+curl --request DELETE 'http://localhost:4444/se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET: '
```
No modo totalmente distribuído, a URL é o endereço do servidor Router.
```shell
-cURL --request DELETE 'http://localhost:4444/se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET: '
+curl --request DELETE 'http://localhost:4444/se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET: '
```
Se nenhum segredo de registro foi configurado durante a configuração da Grid, use
```shell
-cURL --request DELETE 'http:///se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET;'
+curl --request DELETE 'http:///se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET;'
```
### Drenar Nó
@@ -73,15 +73,15 @@ No modo Standalone, a URL do distribuidor é o endereço do servidor Standalone.
No modo Hub-Node, a URL do Distribuidor é o endereço do servidor Hub.
```shell
-cURL --request POST 'http://localhost:4444/se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET: '
+curl --request POST 'http://localhost:4444/se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET: '
```
No modo totalmente distribuído, a URL é o endereço do servidor Router.
```shell
-cURL --request POST 'http://localhost:4444/se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET: '
+curl --request POST 'http://localhost:4444/se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET: '
```
Se nenhum segredo de registro foi configurado durante a configuração da Grid, use
```shell
-cURL --request POST 'http:///se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET;'
+curl --request POST 'http:///se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET;'
```
## Nó
@@ -97,33 +97,33 @@ O distribuidor executa ping no status do Nó em intervalos regulares e atualiza
O status inclui informações sobre disponibilidade, sessões e slots.
```shell
-cURL --request GET 'http://localhost:5555/status'
+curl --request GET 'http://localhost:5555/status'
```
### Drenagem
O Distribuidor passa o comando [drain](# drain-node) para o Nó apropriado identificado pelo ID do Nó.
-Para drenar o Nó diretamente, use o comando cuRL listado abaixo.
+Para drenar o Nó diretamente, use o comando curl listado abaixo.
Ambos as rotas são válidas e produzem o mesmo resultado. Drenar termina as sessões em andamento antes de interromper o Nó.
```shell
-cURL --request POST 'http://localhost:5555/se/grid/node/drain' --header 'X-REGISTRATION-SECRET: '
+curl --request POST 'http://localhost:5555/se/grid/node/drain' --header 'X-REGISTRATION-SECRET: '
```
Se nenhum segredo de registro foi configurado durante a configuração da Grid, use
```shell
-cURL --request POST 'http:///se/grid/node/drain' --header 'X-REGISTRATION-SECRET;'
+curl --request POST 'http:///se/grid/node/drain' --header 'X-REGISTRATION-SECRET;'
```
### Checar dono da sessão
-Para verificar se uma sessão pertence a um Nó, use o comando cURL listado abaixo.
+Para verificar se uma sessão pertence a um Nó, use o comando curl listado abaixo.
```shell
-cURL --request GET 'http://localhost:5555/se/grid/node/owner/' --header 'X-REGISTRATION-SECRET: '
+curl --request GET 'http://localhost:5555/se/grid/node/owner/' --header 'X-REGISTRATION-SECRET: '
```
Se nenhum segredo de registro foi configurado durante a configuração da Grid, use
```shell
-cURL --request GET 'http:///se/grid/node/owner/' --header 'X-REGISTRATION-SECRET;'
+curl --request GET 'http:///se/grid/node/owner/' --header 'X-REGISTRATION-SECRET;'
```
Ele retornará true se a sessão pertencer ao Nó, caso contrário, retornará false.
@@ -134,11 +134,11 @@ A exclusão da sessão encerra a sessão do WebDriver, fecha o driver e o remove
Qualquer solicitação usando o id de sessão removido ou reutilizando a instância do driver gerará um erro.
```shell
-cURL --request DELETE 'http://localhost:5555/se/grid/node/session/' --header 'X-REGISTRATION-SECRET: '
+curl --request DELETE 'http://localhost:5555/se/grid/node/session/' --header 'X-REGISTRATION-SECRET: '
```
Se nenhum segredo de registro foi configurado durante a configuração da Grid, use
```shell
-cURL --request DELETE 'http:///se/grid/node/session/' --header 'X-REGISTRATION-SECRET;'
+curl --request DELETE 'http:///se/grid/node/session/' --header 'X-REGISTRATION-SECRET;'
```
## Fila de Sessão
@@ -146,7 +146,7 @@ cURL --request DELETE 'http:///se/grid/node/session/' --he
### Limpar a Fila de Sessão
A Fila de Sessão contém as novas solicitações de sessão.
-Para limpar a fila, use o comando cURL listado abaixo.
+Para limpar a fila, use o comando curl listado abaixo.
Limpar a fila rejeita todas as solicitações na fila. Para cada solicitação, o servidor retorna uma resposta de erro ao respectivo cliente.
O resultado do comando clear é o número total de solicitações excluídas.
@@ -155,31 +155,31 @@ No modo Standalone, a URL Queue é o endereço do servidor Standalone.
No modo Hub-Node, a URL do enfileirador é o endereço do servidor Hub.
```shell
-cURL --request DELETE 'http://localhost:4444/se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET: '
+curl --request DELETE 'http://localhost:4444/se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET: '
```
No modo totalmente distribuído, a URL do enfileirador é o endereço do servidor do Enfileirador de Sessões.
```shell
-cURL --request DELETE 'http://localhost:4444/se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET: '
+curl --request DELETE 'http://localhost:4444/se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET: '
```
If no registration secret has been configured while setting up the Grid, then use
```shell
-cURL --request DELETE 'http:///se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET;'
+curl --request DELETE 'http:///se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET;'
```
### Obter novos pedidos da Fila de Sessão
Novos pedidos da Fila de Sessão contém os novos pedidos de sessão.
-Para obter os pedidos na Fila, utiliza o comando cURL listado abaixo.
+Para obter os pedidos na Fila, utiliza o comando curl listado abaixo.
É retornado o número total de pedidos na Fila.
No modo Standalone, a URL é a do servidor, em modo Grid, a URL será a do HUB.
```shell
-cURL --request GET 'http://localhost:4444/se/grid/newsessionqueue/queue'
+curl --request GET 'http://localhost:4444/se/grid/newsessionqueue/queue'
```
No modo totalmente distribuido, a URL da Fila é a porta do servidor de Fila.
```shell
-cURL --request GET 'http://localhost:4444/se/grid/newsessionqueue/queue'
+curl --request GET 'http://localhost:4444/se/grid/newsessionqueue/queue'
diff --git a/website_and_docs/content/documentation/grid/advanced_features/endpoints.zh-cn.md b/website_and_docs/content/documentation/grid/advanced_features/endpoints.zh-cn.md
index 226edffd2e4b..8e67ae00a270 100644
--- a/website_and_docs/content/documentation/grid/advanced_features/endpoints.zh-cn.md
+++ b/website_and_docs/content/documentation/grid/advanced_features/endpoints.zh-cn.md
@@ -18,22 +18,22 @@ Grid状态提供Grid的当前状态.
状态包括有关节点可用性、会话和插槽的信息.
```shell
-cURL GET 'http://localhost:4444/status'
+curl --request GET 'http://localhost:4444/status'
```
-### 检查会话所有者
+### 删除会话
-要检查会话是否属于某一节点, 请使用下面列出的cURL命令.
+删除会话会终止 WebDriver 会话、退出驱动程序并将其从活动会话映射中删除。任何使用删除的会话标识或重新使用驱动程序实例的请求都会出错。
```shell
-cURL --request DELETE 'http://localhost:4444/session/'
+curl --request DELETE 'http://localhost:4444/session/'
```
-### Which URL should I use?
+### 我应该使用哪一个URL?
-在独立模式下, Grid URL是独立服务器的地址.
+在 Standalone 模式下, Grid URL是独立服务器的地址.
-在集线器节点模式下, Grid URL是集线器服务器的地址.
+在 Hub-Node 模式下, Grid URL是集线器服务器的地址.
在完全分布式模式下, Grid URL是路由服务器的地址.
@@ -43,179 +43,137 @@ cURL --request DELETE 'http://localhost:4444/session/'
### 删除节点
-要从Grid中删除节点,
-请使用下面列出的cURL命令.
-它不会停止在该节点上运行的任何持续中的会话.
-除非显式终止, 否则节点将继续按原样运行.
-分发器不再知晓该节点,
-因此任何匹配的新会话请求
-也不会转发到该节点.
+要从网格中删除节点,请使用下面列出的 curl 命令。该命令不会停止正在该节点上运行的任何会话。除非显式终止, 否则节点将继续运行。分发器不再知道该节点,因此任何匹配的新会话请求都不会转发到该节点。
-在独立模式下, 分发器URL是独立服务器的地址.
+在 Standalone 模式下,分发器 URL 是独立服务器地址。
-在集线器节点模式下, 分发器URL是集线器服务器的地址.
+在 Hub-Node 模式下, 分发器 URL 是 Hub 服务器的地址。
```shell
-cURL --request DELETE 'http://localhost:4444/se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET: '
+curl --request DELETE 'http://localhost:4444/se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET: '
```
-在完全分布式模式下, URL是分发器的地址.
+在完全分布式模式下, URL是分发器的地址。
```shell
-cURL --request DELETE 'http://localhost:4444/se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET: '
+curl --request DELETE 'http://localhost:4444/se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET: '
```
-如果在设置Grid时未配置注册密码,
-则使用
+如果在设置Grid时未配置注册密码, 则使用
```shell
-cURL --request DELETE 'http:///se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET;'
+curl --request DELETE 'http:///se/grid/distributor/node/' --header 'X-REGISTRATION-SECRET;'
```
-### 放空节点
+### 释放节点
-节点放空命令用于优雅地关闭节点.
-放空节点将在所有持续中的会话完成后停止节点.
-但是, 它不接受任何新的会话请求.
+节点释放命令用于优雅地关闭节点。在所有正在进行的会话结束后,会停止该节点。并且,它不会接受任何新的会话请求。
-在独立模式下, 分发器URL是独立服务器的地址.
+在 Standalone 模式下,分发器 URL 是独立服务器地址。
-在集线器节点模式下, 分发器URL是集线器服务器的地址.
+在 Hub-Node 模式下, 分发器 URL 是 Hub 服务器的地址。
```shell
-cURL --request POST 'http://localhost:4444/se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET: '
+curl --request POST 'http://localhost:4444/se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET: '
```
-在完全分布式模式下, URL是分发服务器的地址.
+在完全分布式模式下, URL是分发服务器的地址。
```shell
-cURL --request POST 'http://localhost:4444/se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET: '
+curl --request POST 'http://localhost:4444/se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET: '
```
-如果在设置Grid时未配置注册密码,
-则使用
+如果在设置Grid时未配置注册密码, 则使用
```shell
-cURL --request POST 'http:///se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET;'
+curl --request POST 'http:///se/grid/distributor/node//drain' --header 'X-REGISTRATION-SECRET;'
```
## 节点
-本节中的端点适用于
-集线器节点模式和
-节点独立运行的完全分布式网格模式.
-在一个节点的情况下, 默认节点的URL为 http://localhost:5555 .
-如果有多个节点,
-请使用 [Grid 状态](#grid-状态) 获取所有节点详细信息
-以及定位地址.
+本节中的端点适用于 Hub-Node 模式和节点独立运行的完全分布式网格模式。在一个节点的情况下, 默认节点的URL为 http://localhost:5555 。
+如果有多个节点,请使用 [Grid 状态](#grid-状态) 获取所有节点的详细信息并查找节点地址。
### 状态
-节点状态本质上是节点的运行状况检查.
-分发器定期ping节点状态,
-并相应地更新Grid模型.
-状态包括相关的可用性, 会话和插槽的信息.
+节点状态本质上是节点的健康检查。分发程序会定期 ping 节点状态,并相应地更新 Grid 模型。状态包括有关可用性、会话和插槽的信息。
```shell
-cURL --request GET 'http://localhost:5555/status'
+curl --request GET 'http://localhost:5555/status'
```
-### 放空
+### 释放
-分发器将 [放空](#放空节点) 命令传递给
-由node-id标识的相应节点.
-要直接放空节点,
-请使用下面列出的cuRL命令.
-两个端点都有效并产生相同的结果.
-放空会等待持续中的会话完成后
-才停止节点.
+分发器将 [释放](#释放节点) 命令传递给由node-id标识的相应节点。要直接释放节点,请使用下面列出的curl命令。
+两个端点都有效并产生相同的结果。释放会等待持续中的会话完成后才停止节点。
```shell
-cURL --request POST 'http://localhost:5555/se/grid/node/drain' --header 'X-REGISTRATION-SECRET: '
+curl --request POST 'http://localhost:5555/se/grid/node/drain' --header 'X-REGISTRATION-SECRET: '
```
-如果在设置Grid时未配置注册密码,
-则使用
+如果在设置Grid时未配置注册密码,则使用
```shell
-cURL --request POST 'http:///se/grid/node/drain' --header 'X-REGISTRATION-SECRET;'
+curl --request POST 'http:///se/grid/node/drain' --header 'X-REGISTRATION-SECRET;'
```
### 检查会话所有者
-要检查会话是否属于某一节点, 请使用下面列出的cURL命令.
+要检查会话是否属于某一节点, 请使用下面列出的curl命令.
```shell
-cURL --request GET 'http://localhost:5555/se/grid/node/owner/' --header 'X-REGISTRATION-SECRET: '
+curl --request GET 'http://localhost:5555/se/grid/node/owner/' --header 'X-REGISTRATION-SECRET: '
```
-如果在设置Grid时未配置注册密码,
-则使用
+如果在设置Grid时未配置注册密码, 则使用
```shell
-cURL --request GET 'http:///se/grid/node/owner/' --header 'X-REGISTRATION-SECRET;'
+curl --request GET 'http:///se/grid/node/owner/' --header 'X-REGISTRATION-SECRET;'
```
如果会话属于该节点,
则返回true,
-否则返回false.
+否则返回false。
### 删除会话
-删除会话将终止WebDriver会话,
-退出驱动程序
-并将其从活动会话集合中删除.
-任何使用删除的会话id
-或重用驱动程序实例的请求
-都将抛出错误.
+删除会话会终止 WebDriver 会话、退出驱动程序并将其从活动会话映射中删除。任何使用删除的会话标识或重新使用驱动程序实例的请求都会出错。
```shell
-cURL --request DELETE 'http://localhost:5555/se/grid/node/session/' --header 'X-REGISTRATION-SECRET: '
+curl --request DELETE 'http://localhost:5555/se/grid/node/session/' --header 'X-REGISTRATION-SECRET: '
```
-如果在设置Grid时未配置注册密码,
-则使用
+如果在设置Grid时未配置注册密码, 则使用
```shell
-cURL --request DELETE 'http:///se/grid/node/session/' --header 'X-REGISTRATION-SECRET;'
+curl --request DELETE 'http:///se/grid/node/session/' --header 'X-REGISTRATION-SECRET;'
```
## 新会话队列
### 清除新会话队列
-新会话请求队列保存新会话请求.
-要清除队列,
-请使用下面列出的cURL命令.
-清除队列将拒绝队列中的所有请求.
-对于每个这样的请求,
-服务器都会向相应的客户端返回一个错误响应.
-清除命令的返回结果是
-已删除请求的总数.
+新会话请求队列保存新会话请求。要清除队列,请使用下面列出的 curl 命令。清除队列会拒绝队列中的所有请求。对于每个此类请求,服务器都会向相应的客户端返回错误响应。清除命令的结果是被删除请求的总数。
-在独立模式下, 队列URL是独立服务器的地址.
-在集线器节点模式下, 队列URL是集线器服务器的地址.
+在 Standalone 模式下, 队列URL是独立服务器的地址。
+在 Hub-Node 模式下, 队列URL是集线器服务器的地址。
```shell
-cURL --request DELETE 'http://localhost:4444/se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET: '
+curl --request DELETE 'http://localhost:4444/se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET: '
```
在完全分布式模式下,
-队列URL是新会话队列服务器的地址.
+队列URL是新会话队列服务器的地址。
```shell
-cURL --request DELETE 'http://localhost:4444/se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET: '
+curl --request DELETE 'http://localhost:4444/se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET: '
```
-如果在设置Grid时未配置注册密码,
-则使用
+如果在设置Grid时未配置注册密码, 则使用
```shell
-cURL --request DELETE 'http:///se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET;'
+curl --request DELETE 'http:///se/grid/newsessionqueue/queue' --header 'X-REGISTRATION-SECRET;'
```
### 获取新会话队列请求
-New Session Request Queue holds the new session requests.
-To get the current requests in the queue, use the cURL command enlisted below.
-The response returns the total number of requests in the queue and the request payloads.
-新会话请求队列保存新会话请求.
+新会话请求队列保存新会话请求。
要获取队列中的当前请求,
-请使用下面列出的cURL命令.
-响应会返回队列中的请求总数以及请求内容.
+请使用下面列出的curl命令。
+响应会返回队列中的请求总数以及请求内容。
-在独立模式下, 队列URL是独立服务器的地址.
-在集线器节点模式下, 队列URL是集线器服务器的地址.
+在 Standalone 模式下, 队列URL是独立服务器的地址。
+在 Hub-Node 模式下, 队列URL是集线器服务器的地址。
```shell
-cURL --request GET 'http://localhost:4444/se/grid/newsessionqueue/queue'
+curl --request GET 'http://localhost:4444/se/grid/newsessionqueue/queue'
```
在完全分布式模式下,
-队列URL是新会话队列服务器的地址.
+队列URL是新会话队列服务器的地址。
```shell
-cURL --request GET 'http://localhost:4444/se/grid/newsessionqueue/queue'
+curl --request GET 'http://localhost:4444/se/grid/newsessionqueue/queue'
diff --git a/website_and_docs/content/documentation/grid/applicability.zh-cn.md b/website_and_docs/content/documentation/grid/applicability.zh-cn.md
index c6b1a8308afc..486c1be49754 100644
--- a/website_and_docs/content/documentation/grid/applicability.zh-cn.md
+++ b/website_and_docs/content/documentation/grid/applicability.zh-cn.md
@@ -3,46 +3,39 @@ title: "什么时候应该使用Grid"
linkTitle: "适用性"
weight: 4
description: >
- Is Grid right for you?
+ Grid适合您吗?
aliases: [
"/documentation/zh-cn/grid/when_to_use_grid/",
"/zh-cn/documentation/grid/when_to_use_grid"
]
---
-{{% pageinfo color="warning" %}}
-
-
- Page being translated from English to Chinese.
- Do you speak Chinese? Help us to translate
- it by sending us pull requests!
-
-{{% /pageinfo %}}
什么情况下可以使用 `Selenium Grid` ?
* 想要在不同的浏览器类型、浏览器版本和操作系统上并行运行测试时
* 想要缩短执行测试案例所需的时间
-`Selenium Grid` 可以并行地在多台计算机(称为节点)上运行测试案例。对于大型和长时间运行的测试案例,这可以节省几分钟、几小时甚至几天的时间。
+`Selenium Grid` 可以并行地在多台计算机(称为节点)上运行测试案例. 对于大型和长时间运行的测试案例,这可以节省几分钟、几小时甚至几天的时间.
-这有效的缩短了测试结果的反馈时间,使得在测试的应用程序发生变化时能够更快地得到测试结果。
+这有效的缩短了测试结果的反馈时间,使得在测试的应用程序发生变化时能够更快地得到测试结果.
-`Grid` 可以并行地运行测试,支持多种不同的浏览器类型,并且可以同时运行多个相同浏览器的实例。
+`Grid` 可以并行地运行测试,支持多种不同的浏览器类型,并且可以同时运行多个相同浏览器的实例.
-举个例子,假设一个拥有六个节点的Grid。第一台计算机拥有Firefox的最新版本,第二台拥有Firefox的上一个版本,第三台运行最新版Chrome,而其余三台机器是Mac Mini,允许在最新版本的Safari上并行运行三个测试。
+举个例子,假设一个拥有六个节点的Grid. 第一台计算机拥有Firefox的最新版本,第二台拥有Firefox的上一个版本,第三台运行最新版Chrome,而其余三台机器是Mac Mini,允许在最新版本的Safari上并行运行三个测试.
执行时间可以用一个简单的公式来表示:
```测试次数 × 平均测试时间 / 节点数 = 总执行时间```
- 15 * 45s / 1 = 11m 15s // Without Grid
- 15 * 45s / 5 = 2m 15s // Grid with 5 Nodes
- 15 * 45s / 15 = 45s // Grid with 15 Nodes
- 100 * 120s / 15 = 13m 20s // Would take over 3 hours without Grid
+ 15 * 45s / 1 = 11m 15s // 没有Grid
+ 15 * 45s / 5 = 2m 15s // 5节点的Grid
+ 15 * 45s / 15 = 45s // 15节点的Grid
+ 100 * 120s / 15 = 13m 20s // 如果没有Grid, 需要3个多小时
-在测试案例执行时,`Grid` 会按照测试配置将测试分配到相应的浏览器上运行。
+在测试案例执行时,`Grid` 会按照测试配置将测试分配到相应的浏览器上运行.
-即使对于比较复杂的 `Selenium` 测试案例,这样的配置也可以极大地加快执行时间。
+即使对于比较复杂的 `Selenium` 测试案例,这样的配置也可以极大地加快执行时间.
-`Selenium Grid` 是 `Selenium` 项目中的重要组成部分,由同一团队的核心Selenium开发人员并行维护。由于意识到测试执行速度的重要性,`Grid` 自设计之初就成为 `Selenium` 项目的关键部分。
+`Selenium Grid` 是 `Selenium` 项目中的重要组成部分,由同一团队的核心Selenium开发人员并行维护.
+由于意识到测试执行速度的重要性,`Grid` 自设计之初就成为 `Selenium` 项目的关键部分.
\ No newline at end of file
diff --git a/website_and_docs/content/documentation/grid/components.ja.md b/website_and_docs/content/documentation/grid/components.ja.md
index 46cd256d235f..881803b51fb5 100644
--- a/website_and_docs/content/documentation/grid/components.ja.md
+++ b/website_and_docs/content/documentation/grid/components.ja.md
@@ -1,5 +1,5 @@
---
-title: "Serenium Grid のコンポーネント"
+title: "Selenium Grid のコンポーネント"
linkTitle: "コンポーネント"
weight: 6
description: >
diff --git a/website_and_docs/content/documentation/grid/components.zh-cn.md b/website_and_docs/content/documentation/grid/components.zh-cn.md
index 554b85f12adb..9ee6760d555f 100644
--- a/website_and_docs/content/documentation/grid/components.zh-cn.md
+++ b/website_and_docs/content/documentation/grid/components.zh-cn.md
@@ -10,14 +10,6 @@ aliases: [
]
---
-{{% pageinfo color="warning" %}}
-
-
- Page being translated from
- English to Chinese. Do you speak Chinese? Help us to translate
- it by sending us pull requests!
-
-{{% /pageinfo %}}
Selenium Grid 4 是对以前版本的彻底重写。除了对性能和标准合规性进行全面改进外,还分解了 `Grid` 的不同功能以反映更现代的计算和软件开发时代。 Selenium Grid 4 专为容器化和云分布式可扩展性而构建,是现代时代的全新解决方案。
diff --git a/website_and_docs/content/documentation/grid/configuration/cli_options.en.md b/website_and_docs/content/documentation/grid/configuration/cli_options.en.md
index 74d522bfdec4..075c1eb82db2 100644
--- a/website_and_docs/content/documentation/grid/configuration/cli_options.en.md
+++ b/website_and_docs/content/documentation/grid/configuration/cli_options.en.md
@@ -163,6 +163,7 @@ pull request updating this page.
| `--slot-matcher` | string | `org.openqa.selenium.grid.data.DefaultSlotMatcher` | Full class name of non-default slot matcher to use. This is used to determine whether a Node can support a particular session. |
| `--slot-selector` | string | `org.openqa.selenium.grid.distributor.selector.DefaultSlotSelector` | Full class name of non-default slot selector. This is used to select a slot in a Node once the Node has been matched. |
| `--newsession-threadpool-size` | int | `24` | The Distributor uses a fixed-sized thread pool to create new sessions as it consumes new session requests from the queue. This allows configuring the size of the thread pool. The default value is no. of available processors * 3. Note: If the no. of threads is way greater than the available processors it will not always increase the performance. A high number of threads causes more context switching which is an expensive operation. |
+| `--purge-nodes-interval` | int | `30` | How often, in seconds, will the Distributor purge Nodes that have been down for a while. This is calculated based on the heartbeat received from a particular node. |
### Docker
@@ -193,7 +194,7 @@ pull request updating this page.
| `--http-logs` | boolean | `false` | Enable http logging. Tracing should be enabled to log http logs. |
| `--log-encoding` | string | `UTF-8` | Log encoding |
| `--log` | string | Windows path example :
`'\path\to\file\gridlog.log'`
or
`'C:\path\path\to\file\gridlog.log'`
Linux/Unix/MacOS path example :
`'/path/to/file/gridlog.log'` | File to write out logs. Ensure the file path is compatible with the operating system's file path. |
-| `--log-level` | string | `“INFO”` | Log level. Default logging level is INFO. Log levels are described here https://docs.oracle.com/javase/7/docs/api/java/util/logging/Level.html |
+| `--log-level` | string | `“INFO”` | Log level. Default logging level is INFO. Log levels are described here https://docs.oracle.com/en/java/javase/11/docs/api/java.logging/java/util/logging/Level.html |
| `--plain-logs` | boolean | `true` | Use plain log lines |
| `--structured-logs` | boolean | `false` | Use structured logs |
| `--tracing` | boolean | `true` | Enable trace collection |
@@ -273,6 +274,7 @@ pull request updating this page.
| `--sessionqueue-port` | int | `1234` | Port on which the session queue server is listening. |
| `--session-request-timeout` | int | `300` | Timeout in seconds. A new incoming session request is added to the queue. Requests sitting in the queue for longer than the configured time will timeout. |
| `--session-retry-interval` | int | `5` | Retry interval in seconds. If all slots are busy, new session request will be retried after the given interval. |
+| `--maximum-response-delay` | int | `8` | How often, in seconds, will the the SessionQueue response in case there is no data, to reduce the http requests while polling for new session requests. |
### Sessions
diff --git a/website_and_docs/content/documentation/grid/configuration/cli_options.ja.md b/website_and_docs/content/documentation/grid/configuration/cli_options.ja.md
index 1fe9eaac39be..b61aa761852b 100644
--- a/website_and_docs/content/documentation/grid/configuration/cli_options.ja.md
+++ b/website_and_docs/content/documentation/grid/configuration/cli_options.ja.md
@@ -162,6 +162,7 @@ Grid の設定には、さまざまなセクションが用意されています
| `--slot-matcher` | string | `org.openqa.selenium.grid.data.DefaultSlotMatcher` | デフォルト以外で使用するスロットマッチャーの完全なクラス名。これはノードが特定のセッションをサポートできるかを判断するために使用されます。 |
| `--slot-selector` | string | `org.openqa.selenium.grid.distributor.selector.DefaultSlotSelector` | デフォルト以外のスロットセレクターの完全なクラス名。これは、ノードがマッチした後ノード内のスロットを選択するために使用されます。 |
| `--newsession-threadpool-size` | int | `24` | The Distributor uses a fixed-sized thread pool to create new sessions as it consumes new session requests from the queue. This allows configuring the size of the thread pool. The default value is no. of available processors * 3. Note: If the no. of threads is way greater than the available processors it will not always increase the performance. A high number of threads causes more context switching which is an expensive operation. |
+| `--purge-nodes-interval` | int | `30` | How often, in seconds, will the Distributor purge Nodes that have been down for a while. This is calculated based on the heartbeat received from a particular node. |
### Docker
@@ -192,7 +193,7 @@ Grid の設定には、さまざまなセクションが用意されています
| `--http-logs` | boolean | `false` | http ログを有効にします。http ログを記録するには、トレースを有効にする必要があります。 |
| `--log-encoding` | string | `UTF-8` | ログのエンコーディング。 |
| `--log` | string | Windows パスの例:
`'\path\to\file\gridlog.log'`
or
`'C:\path\path\to\file\gridlog.log'`
Linux/Unix/MacOS パスの例:
`'/path/to/file/gridlog.log'` | ログを出力するファイル。OS のファイルパスと互換性があることを確認してください。 |
-| `--log-level` | string | `“INFO”` | ログレベル。デフォルトは INFO です。 ログレベルはこちらを参照してください。 https://docs.oracle.com/javase/7/docs/api/java/util/logging/Level.html |
+| `--log-level` | string | `“INFO”` | ログレベル。デフォルトは INFO です。 ログレベルはこちらを参照してください。 https://docs.oracle.com/en/java/javase/11/docs/api/java.logging/java/util/logging/Level.html |
| `--plain-logs` | boolean | `true` | プレーンなログを使用します。 |
| `--structured-logs` | boolean | `false` | 構造化ログを使用します。 |
| `--tracing` | boolean | `true` | トレースを有効にします。 |
@@ -270,6 +271,7 @@ Grid の設定には、さまざまなセクションが用意されています
| `--sessionqueue-port` | int | `1234` | 新規セッションキューがリッスンするポート |
| `--session-request-timeout` | int | `300` | タイムアウト(秒)。 新規セッションリクエストはキューに追加され、設定された時間以上キューに残っているリクエストはタイムアウトします。 |
| `--session-retry-interval` | int | `5` | リトライ間隔(秒)。すべてのスロットがビジーな場合、 新規セッションリクエストはこの時間の間隔をおいてからリトライされます。 |
+| `--maximum-response-delay` | int | `8` | How often, in seconds, will the the SessionQueue response in case there is no data, to reduce the http requests while polling for new session requests. |
### Sessions
diff --git a/website_and_docs/content/documentation/grid/configuration/cli_options.pt-br.md b/website_and_docs/content/documentation/grid/configuration/cli_options.pt-br.md
index 43305b6e23ec..0ca074b58e04 100644
--- a/website_and_docs/content/documentation/grid/configuration/cli_options.pt-br.md
+++ b/website_and_docs/content/documentation/grid/configuration/cli_options.pt-br.md
@@ -165,6 +165,7 @@ e esteja à vontade para nos enviar um pull request com alterações a esta pág
| `--slot-matcher` | string | `org.openqa.selenium.grid.data.DefaultSlotMatcher` | Nome completo da class para uma implementação não padrão do comparador de slots. Isto é usado para determinar se um Node pode suportar uma sessão em particular. |
| `--slot-selector` | string | `org.openqa.selenium.grid.distributor.selector.DefaultSlotSelector` | Nome completo da class para uma implementação não padrão do selector de slots. Isto é usado para selecionar um slot no Node caso tenha sido "matched". |
| `--newsession-threadpool-size` | int | `24` | The Distributor uses a fixed-sized thread pool to create new sessions as it consumes new session requests from the queue. This allows configuring the size of the thread pool. The default value is no. of available processors * 3. Note: If the no. of threads is way greater than the available processors it will not always increase the performance. A high number of threads causes more context switching which is an expensive operation. |
+| `--purge-nodes-interval` | int | `30` | How often, in seconds, will the Distributor purge Nodes that have been down for a while. This is calculated based on the heartbeat received from a particular node. |
### Docker
@@ -195,7 +196,7 @@ e esteja à vontade para nos enviar um pull request com alterações a esta pág
| `--http-logs` | boolean | `false` | Enable http logging. Tracing should be enabled to log http logs. |
| `--log-encoding` | string | `UTF-8` | Log encoding |
| `--log` | string | Windows path example :
`'\path\to\file\gridlog.log'`
or
`'C:\path\path\to\file\gridlog.log'`
Linux/Unix/MacOS path example :
`'/path/to/file/gridlog.log'` | File to write out logs. Ensure the file path is compatible with the operating system's file path. |
-| `--log-level` | string | `“INFO”` | Log level. Default logging level is INFO. Log levels are described here https://docs.oracle.com/javase/7/docs/api/java/util/logging/Level.html |
+| `--log-level` | string | `“INFO”` | Log level. Default logging level is INFO. Log levels are described here https://docs.oracle.com/en/java/javase/11/docs/api/java.logging/java/util/logging/Level.html |
| `--plain-logs` | boolean | `true` | Use plain log lines |
| `--structured-logs` | boolean | `false` | Use structured logs |
| `--tracing` | boolean | `true` | Enable trace collection |
@@ -275,6 +276,7 @@ e esteja à vontade para nos enviar um pull request com alterações a esta pág
| `--sessionqueue-port` | int | `1234` | Port on which the session queue server is listening. |
| `--session-request-timeout` | int | `300` | Timeout in seconds. A new incoming session request is added to the queue. Requests sitting in the queue for longer than the configured time will timeout. |
| `--session-retry-interval` | int | `5` | Retry interval in seconds. If all slots are busy, new session request will be retried after the given interval. |
+| `--maximum-response-delay` | int | `8` | How often, in seconds, will the the SessionQueue response in case there is no data, to reduce the http requests while polling for new session requests. |
### Sessions
diff --git a/website_and_docs/content/documentation/grid/configuration/cli_options.zh-cn.md b/website_and_docs/content/documentation/grid/configuration/cli_options.zh-cn.md
index 031942fe463b..27b92048a91b 100644
--- a/website_and_docs/content/documentation/grid/configuration/cli_options.zh-cn.md
+++ b/website_and_docs/content/documentation/grid/configuration/cli_options.zh-cn.md
@@ -172,6 +172,7 @@ pull request updating this page.
| `--slot-matcher` | string | `org.openqa.selenium.grid.data.DefaultSlotMatcher` | Full class name of non-default slot matcher to use. This is used to determine whether a Node can support a particular session. |
| `--slot-selector` | string | `org.openqa.selenium.grid.distributor.selector.DefaultSlotSelector` | Full class name of non-default slot selector. This is used to select a slot in a Node once the Node has been matched. |
| `--newsession-threadpool-size` | int | `24` | The Distributor uses a fixed-sized thread pool to create new sessions as it consumes new session requests from the queue. This allows configuring the size of the thread pool. The default value is no. of available processors * 3. Note: If the no. of threads is way greater than the available processors it will not always increase the performance. A high number of threads causes more context switching which is an expensive operation. |
+| `--purge-nodes-interval` | int | `30` | How often, in seconds, will the Distributor purge Nodes that have been down for a while. This is calculated based on the heartbeat received from a particular node. |
### Docker
@@ -202,7 +203,7 @@ pull request updating this page.
| `--http-logs` | boolean | `false` | Enable http logging. Tracing should be enabled to log http logs. |
| `--log-encoding` | string | `UTF-8` | Log encoding |
| `--log` | string | Windows path example :
`'\path\to\file\gridlog.log'`
or
`'C:\path\path\to\file\gridlog.log'`
Linux/Unix/MacOS path example :
`'/path/to/file/gridlog.log'` | File to write out logs. Ensure the file path is compatible with the operating system's file path. |
-| `--log-level` | string | `“INFO”` | Log level. Default logging level is INFO. Log levels are described here https://docs.oracle.com/javase/7/docs/api/java/util/logging/Level.html |
+| `--log-level` | string | `“INFO”` | Log level. Default logging level is INFO. Log levels are described here https://docs.oracle.com/en/java/javase/11/docs/api/java.logging/java/util/logging/Level.html |
| `--plain-logs` | boolean | `true` | Use plain log lines |
| `--structured-logs` | boolean | `false` | Use structured logs |
| `--tracing` | boolean | `true` | Enable trace collection |
@@ -281,6 +282,7 @@ pull request updating this page.
| `--sessionqueue-port` | int | `1234` | Port on which the session queue server is listening. |
| `--session-request-timeout` | int | `300` | Timeout in seconds. A new incoming session request is added to the queue. Requests sitting in the queue for longer than the configured time will timeout. |
| `--session-retry-interval` | int | `5` | Retry interval in seconds. If all slots are busy, new session request will be retried after the given interval. |
+| `--maximum-response-delay` | int | `8` | How often, in seconds, will the the SessionQueue response in case there is no data, to reduce the http requests while polling for new session requests. |
### Sessions
diff --git a/website_and_docs/content/documentation/grid/configuration/toml_options.zh-cn.md b/website_and_docs/content/documentation/grid/configuration/toml_options.zh-cn.md
index 241731148561..ecda44aa766d 100644
--- a/website_and_docs/content/documentation/grid/configuration/toml_options.zh-cn.md
+++ b/website_and_docs/content/documentation/grid/configuration/toml_options.zh-cn.md
@@ -110,8 +110,8 @@ webdriver-executable = '/path/to/chromedriver/95/chromedriver'
则最多有2个并发会话.
原型配置需要映射一个Docker映像,
Docker的守护进程需要通过http/tcp公开.
-此外,可以通过 `devices` 属性定义在主机上可访问的哪些设备文件将在容器中可用。
-有关 docker 设备映射如何工作的更多信息,请参阅 [docker](https://docs.docker.com/engine/reference/commandline/run/#add-host-device-to-container---device) 文档。
+此外, 可以通过 `devices` 属性定义在主机上可访问的哪些设备文件将在容器中可用.
+有关 docker 设备映射如何工作的更多信息, 请参阅 [docker](https://docs.docker.com/engine/reference/commandline/run/#add-host-device-to-container---device) 文档.
```toml
[node]
@@ -182,12 +182,11 @@ HttpCommandExecutor executor = new HttpCommandExecutor(clientConfig);
RemoteWebDriver driver = new RemoteWebDriver(executor, new ChromeOptions());
```
-In other languages, you can use the URL http://admin:myStrongPassword@localhost:4444
+在其他语言中, 您可以使用 URL http://admin:myStrongPassword@localhost:4444
-### Setting custom capabilities for matching specific Nodes
+### 为匹配特定节点设置自定义功能
-**Important:** Custom capabilities need to be set in the configuration in all Nodes. They also
-need to be included always in every session request.
+**重要提示:** 自定义功能需要在所有节点的配置中进行设置. 并且在每次会话请求中都必须包含这些功能.
```toml
[node]
@@ -199,7 +198,7 @@ stereotype = '{"browserName": "firefox", "platformName": "macOS", "browserVersio
max-sessions = 5
```
-Here is a Java example showing how to match that Node
+这里有一个 Java 示例, 展示了如何匹配那个节点
```java
FirefoxOptions options = new FirefoxOptions();
@@ -212,14 +211,16 @@ driver.get("https://selenium.dev");
driver.quit();
```
-### Enabling Managed downloads by the Node.
+### 启用节点的托管下载功能.
-The Node can be instructed to manage downloads automatically. This will cause the Node to save all files that were downloaded for a particular session into a temp directory, which can later be retrieved from the node.
-To turn this capability on, use the below configuration:
+节点可以被设置为自动管理下载.
+这将导致节点会把特定会话中下载的所有文件保存到一个临时目录中,
+之后可以从节点中获取这些文件.
+要启用此功能, 请使用以下配置:
```toml
[node]
enable-managed-downloads = true
```
-Refer to the [CLI section]({{< ref "cli_options.md#enabling-managed-downloads-by-the-node" >}}) for a complete example.
\ No newline at end of file
+有关完整示例, 请参阅[CLI章节]({{< ref "cli_options.md#enabling-managed-downloads-by-the-node" >}}) .
\ No newline at end of file
diff --git a/website_and_docs/content/documentation/grid/getting_started.en.md b/website_and_docs/content/documentation/grid/getting_started.en.md
index be495d64710f..9b32f24ca380 100644
--- a/website_and_docs/content/documentation/grid/getting_started.en.md
+++ b/website_and_docs/content/documentation/grid/getting_started.en.md
@@ -304,9 +304,8 @@ Failure to protect your Grid could result in one or more of the following occurr
* You allow third parties to access internal web applications and files
* You allow third parties to run custom binaries
-See this blog post on [Detectify](//labs.detectify.com), which gives a good
-overview of how a publicly exposed Grid could be misused:
-[Don't Leave your Grid Wide Open](//labs.detectify.com/2017/10/06/guest-blog-dont-leave-your-grid-wide-open/)
+See this blog post on Detectify Labs, which gives a good overview of how a publicly exposed Grid could be misused:
+[Don't Leave your Grid Wide Open](//labs.detectify.com/2017/10/06/guest-blog-dont-leave-your-grid-wide-open/).
## Further reading
diff --git a/website_and_docs/content/documentation/grid/getting_started.ja.md b/website_and_docs/content/documentation/grid/getting_started.ja.md
index 440772d1ba11..eb5c7a451f54 100644
--- a/website_and_docs/content/documentation/grid/getting_started.ja.md
+++ b/website_and_docs/content/documentation/grid/getting_started.ja.md
@@ -304,7 +304,7 @@ Grid を保護しないと、以下のような問題が発生する可能性が
- サードパーティが内部 Web アプリケーションやファイルにアクセスすることを許可してしまう。
- サードパーティにカスタムバイナリの実行を許可してしまう。
-[Detectify](//labs.detectify.com) のブログで公開されてしまった Grid が
+Detectify Labs, のブログで公開されてしまった Grid が
どのように悪用されるかを紹介しています: [Don't Leave your Grid Wide Open](//labs.detectify.com/2017/10/06/guest-blog-dont-leave-your-grid-wide-open/)
## 参考文献
diff --git a/website_and_docs/content/documentation/grid/getting_started.pt-br.md b/website_and_docs/content/documentation/grid/getting_started.pt-br.md
index 8c5446ac18e2..4ef28f9b7e95 100644
--- a/website_and_docs/content/documentation/grid/getting_started.pt-br.md
+++ b/website_and_docs/content/documentation/grid/getting_started.pt-br.md
@@ -300,7 +300,7 @@ Se falhar em proteger a Grid uma ou mais coisas poderão ocorrer:
* Permitir acesso de terceiros a aplicativos web e a ficheiros
* Permitir execução remota de ficheiros binários por terceiros
-Leia este artigo (em Inglês) em [Detectify](//labs.detectify.com), que dá um bom resumo
+Leia este artigo (em Inglês) em Detectify Labs, que dá um bom resumo
de como uma Grid exposta publicamente pode ser abusada:
[Don't Leave your Grid Wide Open](//labs.detectify.com/2017/10/06/guest-blog-dont-leave-your-grid-wide-open/)
diff --git a/website_and_docs/content/documentation/grid/getting_started.zh-cn.md b/website_and_docs/content/documentation/grid/getting_started.zh-cn.md
index 13fc398883cb..c56aec37a41a 100644
--- a/website_and_docs/content/documentation/grid/getting_started.zh-cn.md
+++ b/website_and_docs/content/documentation/grid/getting_started.zh-cn.md
@@ -272,7 +272,7 @@ java -Dwebdriver.http.factory=jdk-http-client -jar selenium-server-.jar
* 您允许第三方访问内部网络应用程序和文件
* 您允许第三方运行自定义二进制文件
-请参阅 [Detectify](//labs.detectify.com) 上的这篇博文,它提供了一个很好的公开暴露的 `Grid` 如何被滥用的概述:[不要让你的 `Grid` 暴露在外](//labs.detectify.com/2017/10/06/guest-blog-dont-leave-your-grid-wide-open/)
+请参阅 Detectify Labs, 上的这篇博文,它提供了一个很好的公开暴露的 `Grid` 如何被滥用的概述:[不要让你的 `Grid` 暴露在外](//labs.detectify.com/2017/10/06/guest-blog-dont-leave-your-grid-wide-open/)
## 延伸阅读
diff --git a/website_and_docs/content/documentation/legacy/desired_capabilities.en.md b/website_and_docs/content/documentation/legacy/desired_capabilities.en.md
index 322157dd5d79..12203a16ec53 100644
--- a/website_and_docs/content/documentation/legacy/desired_capabilities.en.md
+++ b/website_and_docs/content/documentation/legacy/desired_capabilities.en.md
@@ -14,7 +14,7 @@ See [JSON Wire Protocol]({{< ref "json_wire_protocol.md#capabilities-json-object
## Remote Driver Specific
Key | Type | Description |
webdriver.remote.sessionid | string | WebDriver session ID for the session. Readonly and only returned if the server implements a server-side webdriver-backed selenium. |
- webdriver.remote.quietExceptions | boolean | Disable automatic screnshot capture on exceptions. This is False by default. |
+ webdriver.remote.quietExceptions | boolean | Disable automatic screenshot capture on exceptions. This is False by default. |
## Grid Specific
Key | Type | Description |
@@ -78,7 +78,7 @@ Preferences accepted by the FirefoxProfile with special meaning, in the WebDrive
## Safari specific
| Key | Type | Description |
|:-----|:-------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| honorSystemProxy | boolean | Whether to honour the sysem proxy. |
+| honorSystemProxy | boolean | Whether to honour the system proxy. |
| ensureCleanSession | boolean | Whether to make sure the session has no cookies, cache entries. And that any registry and proxy settings are restored after the session. |
diff --git a/website_and_docs/content/documentation/legacy/json_wire_protocol.en.md b/website_and_docs/content/documentation/legacy/json_wire_protocol.en.md
index 6e58c7c6626c..05eb0f75f552 100644
--- a/website_and_docs/content/documentation/legacy/json_wire_protocol.en.md
+++ b/website_and_docs/content/documentation/legacy/json_wire_protocol.en.md
@@ -904,7 +904,7 @@ Arguments may be any JSON-primitive, array, or JSON object. JSON objects that d
Potential Errors:
NoSuchWindow
- If the currently selected window has been closed.
StaleElementReference
- If one of the script arguments is a WebElement that is not attached to the page's DOM.
-Timeout
- If the script callback is not invoked before the timout expires. Timeouts are controlled by the /session/:sessionId/timeout/async_script
command.
+Timeout
- If the script callback is not invoked before the timeout expires. Timeouts are controlled by the /session/:sessionId/timeout/async_script
command.
JavaScriptError
- If the script throws an Error or if an unload
event is fired while waiting for the script to finish.
diff --git a/website_and_docs/content/documentation/legacy/selenium_ide/_index.ja.md b/website_and_docs/content/documentation/legacy/selenium_ide/_index.ja.md
index 387fad87d05f..dcef8026d4dd 100644
--- a/website_and_docs/content/documentation/legacy/selenium_ide/_index.ja.md
+++ b/website_and_docs/content/documentation/legacy/selenium_ide/_index.ja.md
@@ -664,7 +664,7 @@ id 属性に一致する要素がない場合には、name 属性を持つ要素
### Nameによる特定
-name ロケータタイプは、nama 属性に一致する最初の要素を特定します。
+name ロケータタイプは、name 属性に一致する最初の要素を特定します。
1つの name 属性に対して、複数の要素が同じ値を持っている場合には、フィルタを使ってロケーションストラテジーの精度を高めることができます。
デフォルトのフィルタタイプは value です (value 属性に一致)。
diff --git a/website_and_docs/content/documentation/overview/details.en.md b/website_and_docs/content/documentation/overview/details.en.md
index 53b1064cffa3..7700beaa9475 100644
--- a/website_and_docs/content/documentation/overview/details.en.md
+++ b/website_and_docs/content/documentation/overview/details.en.md
@@ -40,8 +40,8 @@ Web browsers are incredibly complex, highly engineered applications,
performing their operations in entirely different ways
but which frequently look the same while doing so.
Even though the text is rendered in the same fonts,
-the images are displayed in the same place
-, and the links take you to the same destination.
+the images are displayed in the same place,
+and the links take you to the same destination.
What is happening underneath is as different as night and day.
Selenium “abstracts” these differences,
hiding their details and intricacies from the person writing the code.
diff --git a/website_and_docs/content/documentation/selenium_manager.en.md b/website_and_docs/content/documentation/selenium_manager.en.md
index 86dea97d1806..03e65b1e8846 100644
--- a/website_and_docs/content/documentation/selenium_manager.en.md
+++ b/website_and_docs/content/documentation/selenium_manager.en.md
@@ -126,6 +126,8 @@ The following table summarizes all the supported arguments supported by Selenium
|`--offline`|`offline = true`|`SE_OFFLINE=true`|Offline mode (i.e., disabling network requests and downloads)|
|`--force-browser-download`|`force-browser-download = true`|`SE_FORCE_BROWSER_DOWNLOAD=true`|Force to download browser, e.g., when a browser is already installed in the system, but you want Selenium Manager to download and use it|
|`--avoid-browser-download`|`avoid-browser-download = true`|`SE_AVOID_BROWSER_DOWNLOAD=true`|Avoid to download browser, e.g., when a browser is supposed to be downloaded by Selenium Manager, but you prefer to avoid it|
+|`--skip-driver-in-path`|`skip-driver-in-path = true`|`SE_SKIP_DRIVER_IN_PATH=true`|Not using drivers found in the `PATH`|
+|`--skip-browser-in-path`|`skip-browser-in-path = true`|`SE_SKIP_BROWSER_IN_PATH=true`|Not using browsers found in the `PATH`|
|`--debug`|`debug = true`|`SE_DEBUG=true`|Display `DEBUG` messages|
|`--trace`|`trace = true`|`SE_TRACE=true`|Display `TRACE` messages|
|`--cache-path `|`cache-path="CACHE_PATH"`|`SE_CACHE_PATH=CACHE_PATH`|Local folder used to store downloaded assets (drivers and browsers), local metadata, and configuration file. See next section for details. Default: `~/.cache/selenium`. For Windows paths in the TOML configuration file, double backslashes are required (e.g., `C:\\custom\\cache`).|
@@ -141,6 +143,13 @@ In addition to the configuration keys specified in the table before, there are s
- Driver mirror. Following the same pattern, we can use `chromedriver-mirror-url`, `geckodriver-mirror-url`, `msedgedriver-mirror-url`, etc. (in the configuration file), and `SE_CHROMEDRIVER_MIRROR_URL`, `SE_GECKODRIVER_MIRROR_URL`, `SE_MSEDGEDRIVER_MIRROR_URL`, etc. (as environment variables).
- Browser mirror. Following the same pattern, we can use `chrome-mirror-url`, `firefox-mirror-url`, `edge-mirror-url`, etc. (in the configuration file), and `SE_CHROME_MIRROR_URL`, `SE_FIREFOX_MIRROR_URL`, `SE_EDGE_MIRROR_URL`, etc. (as environment variables).
+### se-config.toml Example
+{{< tabpane text=true >}}
+{{< tab header="se-config.toml" >}}
+{{< gh-codeblock path="/examples/python/tests/selenium_manager/example_se-config.toml#L1-L21" >}}
+{{< /tab >}}
+{{< /tabpane >}}
+
## Caching
***TL;DR:*** *The drivers and browsers managed by Selenium Manager are stored in a local folder (`~/.cache/selenium`).*
@@ -149,7 +158,7 @@ The cache in Selenium Manager is a local folder (`~/.cache/selenium` by default)
In addition to the downloaded drivers and browsers, two additional files live in the cache's root:
- Configuration file (`se-config.toml`). This file is optional and, as explained in the previous section, allows to store custom configuration values for Selenium Manager. This file is maintained by the end-user and read by Selenium Manager.
-- Metadata file (`se-metadata.json`). This file contains versions discovered by Selenium Manger making network requests (e.g., using the [CfT JSON endpoints](https://github.com/GoogleChromeLabs/chrome-for-testing#json-api-endpoints)) and the time-to-live (TTL) in which they are valid. Selenium Manager automatically maintains this file.
+- Metadata file (`se-metadata.json`). This file contains versions discovered by Selenium Manager making network requests (e.g., using the [CfT JSON endpoints](https://github.com/GoogleChromeLabs/chrome-for-testing#json-api-endpoints)) and the time-to-live (TTL) in which they are valid. Selenium Manager automatically maintains this file.
The TTL in Selenium Manager is inspired by the TTL for DNS, a well-known mechanism that refers to how long some values are cached before they are automatically refreshed. In the case of Selenium Manager, these values are the versions found by making network requests for driver and browser version discovery. By default, the TTL is `3600` seconds (i.e., 1 hour) and can be tuned using configuration values or disabled by setting this configuration value to `0`.
@@ -177,16 +186,15 @@ Let's consider a typical example: we want to manage chromedriver automatically.
```
$ ./selenium-manager --browser chrome --debug
-DEBUG chromedriver not found in PATH
-DEBUG chrome detected at C:\Program Files\Google\Chrome\Application\chrome.exe
-DEBUG Running command: wmic datafile where name='C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe' get Version /value
-DEBUG Output: "\r\r\n\r\r\nVersion=116.0.5845.111\r\r\n\r\r\n\r\r\n\r"
-DEBUG Detected browser: chrome 116.0.5845.111
-DEBUG Discovering versions from https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json
-DEBUG Required driver: chromedriver 116.0.5845.96
-DEBUG Downloading chromedriver 116.0.5845.96 from https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/116.0.5845.96/win64/chromedriver-win64.zip
-INFO Driver path: C:\Users\boni\.cache\selenium\chromedriver\win64\116.0.5845.96\chromedriver.exe
-INFO Browser path: C:\Program Files\Google\Chrome\Application\chrome.exe
+DEBUG chromedriver not found in PATH
+DEBUG chrome detected at C:\Program Files\Google\Chrome\Application\chrome.exe
+DEBUG Detected browser: chrome 139.0.7258.67
+DEBUG Discovering versions from https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json
+DEBUG Required driver: chromedriver 139.0.7258.68
+DEBUG Acquiring lock: C:\Users\boni\.cache\selenium\chromedriver\win64\139.0.7258.68\sm.lock
+DEBUG Downloading chromedriver 139.0.7258.68 from https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.68/win64/chromedriver-win64.zip
+INFO Driver path: C:\Users\boni\.cache\selenium\chromedriver\win64\139.0.7258.68\chromedriver.exe
+INFO Browser path: C:\Program Files\Google\Chrome\Application\chrome.exe
```
In this case, the local Chrome (in Windows) is detected by Selenium Manager. Then, using its version and the CfT endpoints, the proper chromedriver version (115, in this example) is downloaded to the local cache. Finally, Selenium Manager provides two results: i) the driver path (downloaded) and ii) the browser path (local).
@@ -195,40 +203,53 @@ Let's consider another example. Now we want to use Chrome beta. Therefore, we in
```
$ ./selenium-manager --browser chrome --browser-version beta --debug
-DEBUG chromedriver not found in PATH
-DEBUG chrome not found in PATH
-DEBUG chrome beta not found in the system
-DEBUG Discovering versions from https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json
-DEBUG Required browser: chrome 117.0.5938.22
-DEBUG Downloading chrome 117.0.5938.22 from https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/117.0.5938.22/win64/chrome-win64.zip
-DEBUG chrome 117.0.5938.22 has been downloaded at C:\Users\boni\.cache\selenium\chrome\win64\117.0.5938.22\chrome.exe
-DEBUG Discovering versions from https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json
-DEBUG Required driver: chromedriver 117.0.5938.22
-DEBUG Downloading chromedriver 117.0.5938.22 from https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/117.0.5938.22/win64/chromedriver-win64.zip
-INFO Driver path: C:\Users\boni\.cache\selenium\chromedriver\win64\117.0.5938.22\chromedriver.exe
-INFO Browser path: C:\Users\boni\.cache\selenium\chrome\win64\117.0.5938.22\chrome.exe
+DEBUG chromedriver not found in PATH
+DEBUG chrome not found in PATH
+DEBUG chrome beta not found in the system
+DEBUG Discovering versions from https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json
+DEBUG Required browser: chrome 140.0.7339.16
+DEBUG Acquiring lock: C:\Users\boni\.cache\selenium\chrome\win64\140.0.7339.16\sm.lock
+DEBUG Downloading chrome 140.0.7339.16 from https://storage.googleapis.com/chrome-for-testing-public/140.0.7339.16/win64/chrome-win64.zip
+DEBUG chrome 140.0.7339.16 is available at C:\Users\boni\.cache\selenium\chrome\win64\140.0.7339.16\chrome.exe
+DEBUG Discovering versions from https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json
+DEBUG Required driver: chromedriver 140.0.7339.16
+DEBUG Acquiring lock: C:\Users\boni\.cache\selenium\chromedriver\win64\140.0.7339.16\sm.lock
+DEBUG Downloading chromedriver 140.0.7339.16 from https://storage.googleapis.com/chrome-for-testing-public/140.0.7339.16/win64/chromedriver-win64.zip
+INFO Driver path: C:\Users\boni\.cache\selenium\chromedriver\win64\140.0.7339.16\chromedriver.exe
+INFO Browser path: C:\Users\boni\.cache\selenium\chrome\win64\140.0.7339.16\chrome.exe
```
-### Implementing Selenium Manager in Your Scripts
+### Using Selenium Manager from the bindings
+
+All Selenium binding languages (Java, JavaScript, Python, .Net, Ruby) use Selenium Manager internally to manage drivers and browsers. The automated management process starts before starting a new Selenium session, i.e., each time a Selenium script instantiates a driver object (e.g., `ChromeDriver`, `FirefoxDriver`, etc.). The following snippets illustrate the difference between the old-fashioned way of manually managing drivers and the built-in automated mechanism provided by Selenium Manager.
{{< tabpane text=true >}}
-{{< tab header="Java" >}}
-{{< badge-code >}}
+{{% tab header="Java" %}}
+**Previously**
+{{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/selenium_manager/SeleniumManagerUsageDemo.java#L12-L17" >}}
+**Selenium Manager**
+{{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/selenium_manager/SeleniumManagerUsageDemo.java#L20-L24" >}}
{{< /tab >}}
{{% tab header="Python" %}}
**Previously**
-{{< gh-codeblock path="examples/python/tests/selenium_manager/usage.py#L5-L8" >}}
+{{< gh-codeblock path="/examples/python/tests/selenium_manager/usage.py#L5-L8" >}}
**Selenium Manager**
-{{< gh-codeblock path="examples/python/tests/selenium_manager/usage.py#L10-L12" >}}
+{{< gh-codeblock path="/examples/python/tests/selenium_manager/usage.py#L10-L12" >}}
{{< /tab >}}
-{{< tab header="CSharp" >}}
-{{< badge-code >}}
+{{% tab header="CSharp" %}}
+{{< gh-codeblock path="/examples/dotnet/SeleniumDocs/SeleniumManager/UsageTest.cs#L10-L18" >}}
{{< /tab >}}
-{{< tab header="Ruby" >}}
-{{< badge-code >}}
+{{% tab header="Ruby" %}}
+**Previously**
+{{< gh-codeblock path="/examples/ruby/spec/selenium_manager/usage.rb#L5-L10" >}}
+**Selenium Manager**
+{{< gh-codeblock path="/examples/ruby/spec/selenium_manager/usage.rb#L12-L16" >}}
{{< /tab >}}
-{{< tab header="JavaScript" >}}
-{{< badge-code >}}
+{{% tab header="JavaScript" %}}
+**Previously**
+{{< gh-codeblock path="/examples/javascript/test/selenium_manager/usage.spec.js#L16-L31" >}}
+**Selenium Manager**
+{{< gh-codeblock path="/examples/javascript/test/selenium_manager/usage.spec.js#L6-L14" >}}
{{< /tab >}}
{{< tab header="Kotlin" >}}
{{< badge-code >}}
@@ -330,11 +351,10 @@ sudo apt-get install libatk-bridge2.0-0
It's possible to use an environment variable to specify the driver path without using Selenium Manager.
The following environment variables are supported:
-* SE_CHROMEDRIVER
-* SE_EDGEDRIVER
-* SE_GECKODRIVER
-* SE_IEDRIVER
-* SE_SAFARIDRIVER
+* `SE_CHROMEDRIVER`
+* `SE_EDGEDRIVER`
+* `SE_GECKODRIVER`
+* `SE_IEDRIVER`
For example, to specify the path to the chromedriver,
you can set the `SE_CHROMEDRIVER` environment variable to the path of the chromedriver executable.
@@ -342,8 +362,21 @@ The following bindings allow you to specify the driver path using an environment
* Ruby
* Java
+* Python
+
+This feature is available in the Selenium Ruby binding starting from version 4.25.0 and in the Python binding from version 4.26.0.
+
+## Building a Custom Selenium Manager
+In order to build your own custom Selenium Manager that works in an architecture we don't currently support, you can
+utilize the following steps:
-This feature is available in the Selenium Ruby binding starting from version 4.25.0.
+1. Install Rust Dev Environment
+2. clone Selenium onto your local machine `git clone https://github.com/SeleniumHQ/selenium.git --depth 1`
+3. Navigate into your clone `cd selenium/rust`
+4. Build selenium `cargo build --release`
+5. Set the following environment variable for the driver path `SE_MANAGER_PATH=~/selenium/rust/target/release/selenium-manager`
+6. Put the driver you want in a location on your system PATH
+7. Selenium will now use the built Selenium Manager to locate the manually downloaded driver on PATH
## Roadmap
You can trace the work in progress in the [Selenium Manager project dashboard](https://github.com/orgs/SeleniumHQ/projects/5). Moreover, you can check the new features shipped with each Selenium Manager release in its [changelog file](https://github.com/SeleniumHQ/selenium/blob/trunk/rust/CHANGELOG.md).
diff --git a/website_and_docs/content/documentation/selenium_manager.ja.md b/website_and_docs/content/documentation/selenium_manager.ja.md
index 463b984231e1..fede78817fa1 100644
--- a/website_and_docs/content/documentation/selenium_manager.ja.md
+++ b/website_and_docs/content/documentation/selenium_manager.ja.md
@@ -126,6 +126,8 @@ The following table summarizes all the supported arguments supported by Selenium
|`--offline`|`offline = true`|`SE_OFFLINE=true`|Offline mode (i.e., disabling network requests and downloads)|
|`--force-browser-download`|`force-browser-download = true`|`SE_FORCE_BROWSER_DOWNLOAD=true`|Force to download browser, e.g., when a browser is already installed in the system, but you want Selenium Manager to download and use it|
|`--avoid-browser-download`|`avoid-browser-download = true`|`SE_AVOID_BROWSER_DOWNLOAD=true`|Avoid to download browser, e.g., when a browser is supposed to be downloaded by Selenium Manager, but you prefer to avoid it|
+|`--skip-driver-in-path`|`skip-driver-in-path = true`|`SE_SKIP_DRIVER_IN_PATH=true`|Not using drivers found in the `PATH`|
+|`--skip-browser-in-path`|`skip-browser-in-path = true`|`SE_SKIP_BROWSER_IN_PATH=true`|Not using browsers found in the `PATH`|
|`--debug`|`debug = true`|`SE_DEBUG=true`|Display `DEBUG` messages|
|`--trace`|`trace = true`|`SE_TRACE=true`|Display `TRACE` messages|
|`--cache-path `|`cache-path="CACHE_PATH"`|`SE_CACHE_PATH=CACHE_PATH`|Local folder used to store downloaded assets (drivers and browsers), local metadata, and configuration file. See next section for details. Default: `~/.cache/selenium`. For Windows paths in the TOML configuration file, double backslashes are required (e.g., `C:\\custom\\cache`).|
@@ -141,6 +143,13 @@ In addition to the configuration keys specified in the table before, there are s
- Driver mirror. Following the same pattern, we can use `chromedriver-mirror-url`, `geckodriver-mirror-url`, `msedgedriver-mirror-url`, etc. (in the configuration file), and `SE_CHROMEDRIVER_MIRROR_URL`, `SE_GECKODRIVER_MIRROR_URL`, `SE_MSEDGEDRIVER_MIRROR_URL`, etc. (as environment variables).
- Browser mirror. Following the same pattern, we can use `chrome-mirror-url`, `firefox-mirror-url`, `edge-mirror-url`, etc. (in the configuration file), and `SE_CHROME_MIRROR_URL`, `SE_FIREFOX_MIRROR_URL`, `SE_EDGE_MIRROR_URL`, etc. (as environment variables).
+### se-config.toml Example
+{{< tabpane text=true >}}
+{{< tab header="se-config.toml" >}}
+{{< gh-codeblock path="/examples/python/tests/selenium_manager/example_se-config.toml#L1-L21" >}}
+{{< /tab >}}
+{{< /tabpane >}}
+
## Caching
***TL;DR:*** *The drivers and browsers managed by Selenium Manager are stored in a local folder (`~/.cache/selenium`).*
@@ -149,7 +158,7 @@ The cache in Selenium Manager is a local folder (`~/.cache/selenium` by default)
In addition to the downloaded drivers and browsers, two additional files live in the cache's root:
- Configuration file (`se-config.toml`). This file is optional and, as explained in the previous section, allows to store custom configuration values for Selenium Manager. This file is maintained by the end-user and read by Selenium Manager.
-- Metadata file (`se-metadata.json`). This file contains versions discovered by Selenium Manger making network requests (e.g., using the [CfT JSON endpoints](https://github.com/GoogleChromeLabs/chrome-for-testing#json-api-endpoints)) and the time-to-live (TTL) in which they are valid. Selenium Manager automatically maintains this file.
+- Metadata file (`se-metadata.json`). This file contains versions discovered by Selenium Manager making network requests (e.g., using the [CfT JSON endpoints](https://github.com/GoogleChromeLabs/chrome-for-testing#json-api-endpoints)) and the time-to-live (TTL) in which they are valid. Selenium Manager automatically maintains this file.
The TTL in Selenium Manager is inspired by the TTL for DNS, a well-known mechanism that refers to how long some values are cached before they are automatically refreshed. In the case of Selenium Manager, these values are the versions found by making network requests for driver and browser version discovery. By default, the TTL is `3600` seconds (i.e., 1 hour) and can be tuned using configuration values or disabled by setting this configuration value to `0`.
@@ -177,16 +186,15 @@ Let's consider a typical example: we want to manage chromedriver automatically.
```
$ ./selenium-manager --browser chrome --debug
-DEBUG chromedriver not found in PATH
-DEBUG chrome detected at C:\Program Files\Google\Chrome\Application\chrome.exe
-DEBUG Running command: wmic datafile where name='C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe' get Version /value
-DEBUG Output: "\r\r\n\r\r\nVersion=116.0.5845.111\r\r\n\r\r\n\r\r\n\r"
-DEBUG Detected browser: chrome 116.0.5845.111
-DEBUG Discovering versions from https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json
-DEBUG Required driver: chromedriver 116.0.5845.96
-DEBUG Downloading chromedriver 116.0.5845.96 from https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/116.0.5845.96/win64/chromedriver-win64.zip
-INFO Driver path: C:\Users\boni\.cache\selenium\chromedriver\win64\116.0.5845.96\chromedriver.exe
-INFO Browser path: C:\Program Files\Google\Chrome\Application\chrome.exe
+DEBUG chromedriver not found in PATH
+DEBUG chrome detected at C:\Program Files\Google\Chrome\Application\chrome.exe
+DEBUG Detected browser: chrome 139.0.7258.67
+DEBUG Discovering versions from https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json
+DEBUG Required driver: chromedriver 139.0.7258.68
+DEBUG Acquiring lock: C:\Users\boni\.cache\selenium\chromedriver\win64\139.0.7258.68\sm.lock
+DEBUG Downloading chromedriver 139.0.7258.68 from https://storage.googleapis.com/chrome-for-testing-public/139.0.7258.68/win64/chromedriver-win64.zip
+INFO Driver path: C:\Users\boni\.cache\selenium\chromedriver\win64\139.0.7258.68\chromedriver.exe
+INFO Browser path: C:\Program Files\Google\Chrome\Application\chrome.exe
```
In this case, the local Chrome (in Windows) is detected by Selenium Manager. Then, using its version and the CfT endpoints, the proper chromedriver version (115, in this example) is downloaded to the local cache. Finally, Selenium Manager provides two results: i) the driver path (downloaded) and ii) the browser path (local).
@@ -195,40 +203,53 @@ Let's consider another example. Now we want to use Chrome beta. Therefore, we in
```
$ ./selenium-manager --browser chrome --browser-version beta --debug
-DEBUG chromedriver not found in PATH
-DEBUG chrome not found in PATH
-DEBUG chrome beta not found in the system
-DEBUG Discovering versions from https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json
-DEBUG Required browser: chrome 117.0.5938.22
-DEBUG Downloading chrome 117.0.5938.22 from https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/117.0.5938.22/win64/chrome-win64.zip
-DEBUG chrome 117.0.5938.22 has been downloaded at C:\Users\boni\.cache\selenium\chrome\win64\117.0.5938.22\chrome.exe
-DEBUG Discovering versions from https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json
-DEBUG Required driver: chromedriver 117.0.5938.22
-DEBUG Downloading chromedriver 117.0.5938.22 from https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/117.0.5938.22/win64/chromedriver-win64.zip
-INFO Driver path: C:\Users\boni\.cache\selenium\chromedriver\win64\117.0.5938.22\chromedriver.exe
-INFO Browser path: C:\Users\boni\.cache\selenium\chrome\win64\117.0.5938.22\chrome.exe
+DEBUG chromedriver not found in PATH
+DEBUG chrome not found in PATH
+DEBUG chrome beta not found in the system
+DEBUG Discovering versions from https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json
+DEBUG Required browser: chrome 140.0.7339.16
+DEBUG Acquiring lock: C:\Users\boni\.cache\selenium\chrome\win64\140.0.7339.16\sm.lock
+DEBUG Downloading chrome 140.0.7339.16 from https://storage.googleapis.com/chrome-for-testing-public/140.0.7339.16/win64/chrome-win64.zip
+DEBUG chrome 140.0.7339.16 is available at C:\Users\boni\.cache\selenium\chrome\win64\140.0.7339.16\chrome.exe
+DEBUG Discovering versions from https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json
+DEBUG Required driver: chromedriver 140.0.7339.16
+DEBUG Acquiring lock: C:\Users\boni\.cache\selenium\chromedriver\win64\140.0.7339.16\sm.lock
+DEBUG Downloading chromedriver 140.0.7339.16 from https://storage.googleapis.com/chrome-for-testing-public/140.0.7339.16/win64/chromedriver-win64.zip
+INFO Driver path: C:\Users\boni\.cache\selenium\chromedriver\win64\140.0.7339.16\chromedriver.exe
+INFO Browser path: C:\Users\boni\.cache\selenium\chrome\win64\140.0.7339.16\chrome.exe
```
-### Implementing Selenium Manager in Your Scripts
+### Using Selenium Manager from the bindings
+
+All Selenium binding languages (Java, JavaScript, Python, .Net, Ruby) use Selenium Manager internally to manage drivers and browsers. The automated management process starts before starting a new Selenium session, i.e., each time a Selenium script instantiates a driver object (e.g., `ChromeDriver`, `FirefoxDriver`, etc.). The following snippets illustrate the difference between the old-fashioned way of manually managing drivers and the built-in automated mechanism provided by Selenium Manager.
{{< tabpane text=true >}}
-{{< tab header="Java" >}}
-{{< badge-code >}}
+{{% tab header="Java" %}}
+**Previously**
+{{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/selenium_manager/SeleniumManagerUsageDemo.java#L12-L17" >}}
+**Selenium Manager**
+{{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/selenium_manager/SeleniumManagerUsageDemo.java#L20-L24" >}}
{{< /tab >}}
{{% tab header="Python" %}}
**Previously**
-{{< gh-codeblock path="examples/python/tests/selenium_manager/usage.py#L5-L8" >}}
+{{< gh-codeblock path="/examples/python/tests/selenium_manager/usage.py#L5-L8" >}}
**Selenium Manager**
-{{< gh-codeblock path="examples/python/tests/selenium_manager/usage.py#L10-L12" >}}
+{{< gh-codeblock path="/examples/python/tests/selenium_manager/usage.py#L10-L12" >}}
{{< /tab >}}
-{{< tab header="CSharp" >}}
-{{< badge-code >}}
+{{% tab header="CSharp" %}}
+{{< gh-codeblock path="/examples/dotnet/SeleniumDocs/SeleniumManager/UsageTest.cs#L10-L18" >}}
{{< /tab >}}
-{{< tab header="Ruby" >}}
-{{< badge-code >}}
+{{% tab header="Ruby" %}}
+**Previously**
+{{< gh-codeblock path="/examples/ruby/spec/selenium_manager/usage.rb#L5-L10" >}}
+**Selenium Manager**
+{{< gh-codeblock path="/examples/ruby/spec/selenium_manager/usage.rb#L12-L16" >}}
{{< /tab >}}
-{{< tab header="JavaScript" >}}
-{{< badge-code >}}
+{{% tab header="JavaScript" %}}
+**Previously**
+{{< gh-codeblock path="/examples/javascript/test/selenium_manager/usage.spec.js#L16-L31" >}}
+**Selenium Manager**
+{{< gh-codeblock path="/examples/javascript/test/selenium_manager/usage.spec.js#L6-L14" >}}
{{< /tab >}}
{{< tab header="Kotlin" >}}
{{< badge-code >}}
@@ -330,11 +351,10 @@ sudo apt-get install libatk-bridge2.0-0
It's possible to use an environment variable to specify the driver path without using Selenium Manager.
The following environment variables are supported:
-* SE_CHROMEDRIVER
-* SE_EDGEDRIVER
-* SE_GECKODRIVER
-* SE_IEDRIVER
-* SE_SAFARIDRIVER
+* `SE_CHROMEDRIVER`
+* `SE_EDGEDRIVER`
+* `SE_GECKODRIVER`
+* `SE_IEDRIVER`
For example, to specify the path to the chromedriver,
you can set the `SE_CHROMEDRIVER` environment variable to the path of the chromedriver executable.
@@ -342,8 +362,21 @@ The following bindings allow you to specify the driver path using an environment
* Ruby
* Java
+* Python
+
+This feature is available in the Selenium Ruby binding starting from version 4.25.0 and in the Python binding from version 4.26.0.
+
+## Building a Custom Selenium Manager
+In order to build your own custom Selenium Manager that works in an architecture we don't currently support, you can
+utilize the following steps:
-This feature is available in the Selenium Ruby binding starting from version 4.25.0.
+1. Install Rust Dev Environment
+2. clone Selenium onto your local machine `git clone https://github.com/SeleniumHQ/selenium.git --depth 1`
+3. Navigate into your clone `cd selenium/rust`
+4. Build selenium `cargo build --release`
+5. Set the following environment variable for the driver path `SE_MANAGER_PATH=~/selenium/rust/target/release/selenium-manager`
+6. Put the driver you want in a location on your system PATH
+7. Selenium will now use the built Selenium Manager to locate the manually downloaded driver on PATH
## Roadmap
You can trace the work in progress in the [Selenium Manager project dashboard](https://github.com/orgs/SeleniumHQ/projects/5). Moreover, you can check the new features shipped with each Selenium Manager release in its [changelog file](https://github.com/SeleniumHQ/selenium/blob/trunk/rust/CHANGELOG.md).
diff --git a/website_and_docs/content/documentation/selenium_manager.pt-br.md b/website_and_docs/content/documentation/selenium_manager.pt-br.md
index 463b984231e1..eeaf8f8d90ee 100644
--- a/website_and_docs/content/documentation/selenium_manager.pt-br.md
+++ b/website_and_docs/content/documentation/selenium_manager.pt-br.md
@@ -1,9 +1,9 @@
---
-title: "Selenium Manager (Beta)"
-linkTitle: "Selenium Manager"
+title: "Gerenciador do Selenium (Beta)"
+linkTitle: "Gerenciador do Selenium"
weight: 3
description: >
- Selenium Manager is a command-line tool implemented in Rust that provides automated driver and browser management for Selenium. Selenium bindings use this tool by default, so you do not need to download it or add anything to your code or do anything else to use it.
+ O Selenium Manager é uma ferramenta de linha de comando implementada em Rust que fornece gerenciamento automatizado de drivers e navegadores para o Selenium. As bibliotecas do Selenium usam essa ferramenta por padrão, portanto, você não precisa baixá-la, adicionar nada ao seu código ou realizar qualquer outra ação para utilizá-la.
---
## Motivation
@@ -126,6 +126,8 @@ The following table summarizes all the supported arguments supported by Selenium
|`--offline`|`offline = true`|`SE_OFFLINE=true`|Offline mode (i.e., disabling network requests and downloads)|
|`--force-browser-download`|`force-browser-download = true`|`SE_FORCE_BROWSER_DOWNLOAD=true`|Force to download browser, e.g., when a browser is already installed in the system, but you want Selenium Manager to download and use it|
|`--avoid-browser-download`|`avoid-browser-download = true`|`SE_AVOID_BROWSER_DOWNLOAD=true`|Avoid to download browser, e.g., when a browser is supposed to be downloaded by Selenium Manager, but you prefer to avoid it|
+|`--skip-driver-in-path`|`skip-driver-in-path = true`|`SE_SKIP_DRIVER_IN_PATH=true`|Not using drivers found in the `PATH`|
+|`--skip-browser-in-path`|`skip-browser-in-path = true`|`SE_SKIP_BROWSER_IN_PATH=true`|Not using browsers found in the `PATH`|
|`--debug`|`debug = true`|`SE_DEBUG=true`|Display `DEBUG` messages|
|`--trace`|`trace = true`|`SE_TRACE=true`|Display `TRACE` messages|
|`--cache-path