diff --git a/.github/workflows/python-examples.yml b/.github/workflows/python-examples.yml
index e7d432cab113..6238c88ef60d 100644
--- a/.github/workflows/python-examples.yml
+++ b/.github/workflows/python-examples.yml
@@ -25,8 +25,25 @@ jobs:
strategy:
fail-fast: false
matrix:
- os: [ ubuntu, windows, macos ]
- release: [ stable, nightly ]
+ include:
+ - os: ubuntu
+ release: stable
+ python: '3.8'
+ - os: ubuntu
+ release: nightly
+ python: '3.11'
+ - os: windows
+ release: stable
+ python: '3.9'
+ - os: windows
+ release: nightly
+ python: '3.12'
+ - os: macos
+ release: stable
+ python: '3.10'
+ - os: macos
+ release: nightly
+ python: '3.13'
runs-on: ${{ format('{0}-latest', matrix.os) }}
steps:
- name: Checkout GitHub repo
@@ -47,7 +64,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v5
with:
- python-version: 3.8
+ python-version: ${{ matrix.python }}
- name: Install dependencies nightly non-Windows
if: matrix.release == 'nightly' && matrix.os != 'windows'
run: |
@@ -80,8 +97,8 @@ jobs:
- name: Run tests
uses: nick-invision/retry@v3.0.0
with:
- timeout_minutes: 40
+ timeout_minutes: 60
max_attempts: 3
command: |
cd examples/python
- pytest
+ pytest --reruns 3
diff --git a/examples/java/gradle/wrapper/gradle-wrapper.properties b/examples/java/gradle/wrapper/gradle-wrapper.properties
index 94113f200e61..e2847c820046 100644
--- a/examples/java/gradle/wrapper/gradle-wrapper.properties
+++ b/examples/java/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
diff --git a/examples/java/pom.xml b/examples/java/pom.xml
index 5483e72d16f8..25f69e090a8a 100644
--- a/examples/java/pom.xml
+++ b/examples/java/pom.xml
@@ -10,8 +10,8 @@
1
- 11
- 11
+ 17
+ 17
UTF-8
4.26.0
diff --git a/examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java b/examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java
index a7a6e55ef7b7..24e97185336a 100644
--- a/examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java
+++ b/examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java
@@ -19,12 +19,12 @@
import org.openqa.selenium.chrome.ChromeDriverService;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.chromium.ChromiumDriverLogLevel;
+import org.openqa.selenium.chromium.ChromiumNetworkConditions;
import org.openqa.selenium.logging.LogEntries;
import org.openqa.selenium.logging.LogType;
import org.openqa.selenium.logging.LoggingPreferences;
import org.openqa.selenium.remote.service.DriverFinder;
-
public class ChromeTest extends BaseTest {
@AfterEach
public void clearProperties() {
@@ -180,4 +180,46 @@ private File getChromeLocation() {
DriverFinder finder = new DriverFinder(ChromeDriverService.createDefaultService(), options);
return new File(finder.getBrowserPath());
}
+
+ @Test
+ public void setPermission() {
+ ChromeDriver driver = new ChromeDriver();
+ driver.get("https://www.selenium.dev");
+
+ driver.setPermission("camera", "denied");
+
+ // Verify the permission state is 'denied'
+ String script = "return navigator.permissions.query({ name: 'camera' })" +
+ " .then(permissionStatus => permissionStatus.state);";
+ String permissionState = (String) driver.executeScript(script);
+
+ Assertions.assertEquals("denied", permissionState);
+ driver.quit();
+ }
+
+ @Test
+ public void setNetworkConditions() {
+ driver = new ChromeDriver();
+
+ ChromiumNetworkConditions networkConditions = new ChromiumNetworkConditions();
+ networkConditions.setOffline(false);
+ networkConditions.setLatency(java.time.Duration.ofMillis(20)); // 20 ms of latency
+ networkConditions.setDownloadThroughput(2000 * 1024 / 8); // 2000 kbps
+ networkConditions.setUploadThroughput(2000 * 1024 / 8); // 2000 kbps
+
+ ((ChromeDriver) driver).setNetworkConditions(networkConditions);
+
+ driver.get("https://www.selenium.dev");
+
+ // Assert the network conditions are set as expected
+ ChromiumNetworkConditions actualConditions = ((ChromeDriver) driver).getNetworkConditions();
+ Assertions.assertAll(
+ () -> Assertions.assertEquals(networkConditions.getOffline(), actualConditions.getOffline()),
+ () -> Assertions.assertEquals(networkConditions.getLatency(), actualConditions.getLatency()),
+ () -> Assertions.assertEquals(networkConditions.getDownloadThroughput(), actualConditions.getDownloadThroughput()),
+ () -> Assertions.assertEquals(networkConditions.getUploadThroughput(), actualConditions.getUploadThroughput())
+ );
+ ((ChromeDriver) driver).deleteNetworkConditions();
+ driver.quit();
+ }
}
diff --git a/examples/java/src/test/java/dev/selenium/browsers/EdgeTest.java b/examples/java/src/test/java/dev/selenium/browsers/EdgeTest.java
index 0711b26292cb..11aa4f13f1e1 100644
--- a/examples/java/src/test/java/dev/selenium/browsers/EdgeTest.java
+++ b/examples/java/src/test/java/dev/selenium/browsers/EdgeTest.java
@@ -15,7 +15,9 @@
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
+import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chromium.ChromiumDriverLogLevel;
+import org.openqa.selenium.chromium.ChromiumNetworkConditions;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeDriverService;
import org.openqa.selenium.edge.EdgeOptions;
@@ -24,7 +26,6 @@
import org.openqa.selenium.logging.LoggingPreferences;
import org.openqa.selenium.remote.service.DriverFinder;
-
public class EdgeTest extends BaseTest {
@AfterEach
public void clearProperties() {
@@ -174,4 +175,46 @@ private File getEdgeLocation() {
DriverFinder finder = new DriverFinder(EdgeDriverService.createDefaultService(), options);
return new File(finder.getBrowserPath());
}
+
+ @Test
+ public void setPermissions() {
+ EdgeDriver driver = new EdgeDriver();
+ driver.get("https://www.selenium.dev");
+
+ driver.setPermission("camera", "denied");
+
+ // Verify the permission state is 'denied'
+ String script = "return navigator.permissions.query({ name: 'camera' })" +
+ " .then(permissionStatus => permissionStatus.state);";
+ String permissionState = (String) driver.executeScript(script);
+
+ Assertions.assertEquals("denied", permissionState);
+ driver.quit();
+ }
+
+ @Test
+ public void setNetworkConditions() {
+ driver = new EdgeDriver();
+
+ ChromiumNetworkConditions networkConditions = new ChromiumNetworkConditions();
+ networkConditions.setOffline(false);
+ networkConditions.setLatency(java.time.Duration.ofMillis(20)); // 20 ms of latency
+ networkConditions.setDownloadThroughput(2000 * 1024 / 8); // 2000 kbps
+ networkConditions.setUploadThroughput(2000 * 1024 / 8); // 2000 kbps
+
+ ((EdgeDriver) driver).setNetworkConditions(networkConditions);
+
+ driver.get("https://www.selenium.dev");
+
+ // Assert the network conditions are set as expected
+ ChromiumNetworkConditions actualConditions = ((EdgeDriver) driver).getNetworkConditions();
+ Assertions.assertAll(
+ () -> Assertions.assertEquals(networkConditions.getOffline(), actualConditions.getOffline()),
+ () -> Assertions.assertEquals(networkConditions.getLatency(), actualConditions.getLatency()),
+ () -> Assertions.assertEquals(networkConditions.getDownloadThroughput(), actualConditions.getDownloadThroughput()),
+ () -> Assertions.assertEquals(networkConditions.getUploadThroughput(), actualConditions.getUploadThroughput())
+ );
+ ((EdgeDriver) driver).deleteNetworkConditions();
+ driver.quit();
+ }
}
diff --git a/examples/java/src/test/java/dev/selenium/browsers/FirefoxTest.java b/examples/java/src/test/java/dev/selenium/browsers/FirefoxTest.java
index e763cd7824e1..70ea5c18240e 100644
--- a/examples/java/src/test/java/dev/selenium/browsers/FirefoxTest.java
+++ b/examples/java/src/test/java/dev/selenium/browsers/FirefoxTest.java
@@ -13,14 +13,14 @@
import org.junit.jupiter.api.condition.DisabledOnOs;
import org.junit.jupiter.api.condition.OS;
import org.openqa.selenium.By;
+import org.openqa.selenium.OutputType;
import org.openqa.selenium.WebElement;
-import org.openqa.selenium.firefox.FirefoxDriver;
-import org.openqa.selenium.firefox.FirefoxDriverLogLevel;
-import org.openqa.selenium.firefox.FirefoxDriverService;
-import org.openqa.selenium.firefox.FirefoxOptions;
-import org.openqa.selenium.firefox.GeckoDriverService;
+import org.openqa.selenium.firefox.*;
import org.openqa.selenium.remote.service.DriverFinder;
-import org.junit.jupiter.api.Disabled;
+
+
+
+
public class FirefoxTest extends BaseTest {
private FirefoxDriver driver;
@@ -124,8 +124,8 @@ public void setProfileLocation() {
Assertions.assertTrue(location.contains(profileDirectory.getAbsolutePath()));
}
+
@Test
- @Disabled("Skipping tests until Firefox 127 is released")
public void installAddon() {
driver = startFirefoxDriver();
Path xpiPath = Paths.get("src/test/resources/extensions/selenium-example.xpi");
@@ -138,8 +138,8 @@ public void installAddon() {
"Content injected by webextensions-selenium-example", injected.getText());
}
+
@Test
- @Disabled("Skipping tests until Firefox 127 is released")
public void uninstallAddon() {
driver = startFirefoxDriver();
Path xpiPath = Paths.get("src/test/resources/extensions/selenium-example.xpi");
@@ -151,8 +151,8 @@ public void uninstallAddon() {
Assertions.assertEquals(driver.findElements(By.id("webextensions-selenium-example")).size(), 0);
}
+
@Test
- @Disabled("Skipping tests until Firefox 127 is released")
public void installUnsignedAddonPath() {
driver = startFirefoxDriver();
Path path = Paths.get("src/test/resources/extensions/selenium-example");
@@ -171,4 +171,38 @@ private Path getFirefoxLocation() {
DriverFinder finder = new DriverFinder(GeckoDriverService.createDefaultService(), options);
return Path.of(finder.getBrowserPath());
}
+
+ @Test
+ public void fullPageScreenshot() throws Exception {
+ driver = startFirefoxDriver();
+
+ driver.get("https://www.selenium.dev");
+
+ File screenshot = driver.getFullPageScreenshotAs(OutputType.FILE);
+
+ File targetFile = new File("full_page_screenshot.png");
+ Files.move(screenshot.toPath(), targetFile.toPath());
+
+ // Verify the screenshot file exists
+ Assertions.assertTrue(targetFile.exists(), "The full page screenshot file should exist");
+ Files.deleteIfExists(targetFile.toPath());
+
+ driver.quit();
+ }
+
+ @Test
+ public void setContext() {
+ driver = startFirefoxDriver();
+
+ ((HasContext) driver).setContext(FirefoxCommandContext.CHROME);
+ driver.executeScript("console.log('Inside Chrome context');");
+
+ // Verify the context is back to "content"
+ Assertions.assertEquals(
+ FirefoxCommandContext.CHROME, ((HasContext) driver).getContext(),
+ "The context should be 'chrome'"
+ );
+
+ driver.quit();
+ }
}
diff --git a/examples/java/src/test/java/dev/selenium/browsers/SafariTest.java b/examples/java/src/test/java/dev/selenium/browsers/SafariTest.java
index 7e12aa362699..a579b2170e44 100644
--- a/examples/java/src/test/java/dev/selenium/browsers/SafariTest.java
+++ b/examples/java/src/test/java/dev/selenium/browsers/SafariTest.java
@@ -33,4 +33,10 @@ public void enableLogs() {
driver = new SafariDriver(service);
}
+
+ public void safariTechnologyPreview() {
+ SafariOptions options = new SafariOptions();
+ options.setUseTechnologyPreview(true);
+ driver = new SafariDriver(options);
+ }
}
diff --git a/examples/javascript/test/browser/chromeSpecificCaps.spec.js b/examples/javascript/test/browser/chromeSpecificCaps.spec.js
index 813636cb15a2..04175656d870 100644
--- a/examples/javascript/test/browser/chromeSpecificCaps.spec.js
+++ b/examples/javascript/test/browser/chromeSpecificCaps.spec.js
@@ -2,6 +2,8 @@ const Chrome = require('selenium-webdriver/chrome');
const { Browser, Builder } = require("selenium-webdriver");
const options = new Chrome.Options();
+
+
describe('Should be able to Test Command line arguments', function () {
it('headless', async function () {
let driver = new Builder()
diff --git a/examples/javascript/test/browser/edgeSpecificCaps.spec.js b/examples/javascript/test/browser/edgeSpecificCaps.spec.js
index 23fad7888f19..4f059f5c79a5 100644
--- a/examples/javascript/test/browser/edgeSpecificCaps.spec.js
+++ b/examples/javascript/test/browser/edgeSpecificCaps.spec.js
@@ -4,6 +4,7 @@ const options = new edge.Options();
const assert = require("assert");
+
describe('Should be able to Test Command line arguments', function () {
it('headless', async function () {
let driver = new Builder()
diff --git a/examples/javascript/test/getting_started/openEdgeTest.spec.js b/examples/javascript/test/getting_started/openEdgeTest.spec.js
index f7cc5078924d..001337c356ec 100644
--- a/examples/javascript/test/getting_started/openEdgeTest.spec.js
+++ b/examples/javascript/test/getting_started/openEdgeTest.spec.js
@@ -5,6 +5,8 @@ const edge = require('selenium-webdriver/edge');
describe('Open Edge', function () {
let driver;
+
+
before(async function () {
let options = new edge.Options();
driver = new Builder()
diff --git a/examples/python/requirements.txt b/examples/python/requirements.txt
index aba556812b9c..1aeaa1a03aa1 100644
--- a/examples/python/requirements.txt
+++ b/examples/python/requirements.txt
@@ -2,5 +2,6 @@ selenium==4.26.1
pytest
trio
pytest-trio
+pytest-rerunfailures
flake8
requests
diff --git a/examples/python/tests/browsers/test_chrome.py b/examples/python/tests/browsers/test_chrome.py
index 2fd6b653af79..55667f514652 100644
--- a/examples/python/tests/browsers/test_chrome.py
+++ b/examples/python/tests/browsers/test_chrome.py
@@ -1,7 +1,7 @@
import os
import re
import subprocess
-
+import pytest
from selenium import webdriver
@@ -140,3 +140,39 @@ def test_set_network_conditions():
assert driver.get_network_conditions() == network_conditions
driver.quit()
+
+
+def test_set_permissions():
+ driver = webdriver.Chrome()
+ driver.get('https://www.selenium.dev')
+
+ driver.set_permissions('camera', 'denied')
+
+ assert get_permission_state(driver, 'camera') == 'denied'
+ driver.quit()
+
+
+def get_permission_state(driver, name):
+ """Helper function to query the permission state."""
+ script = """
+ const callback = arguments[arguments.length - 1];
+ navigator.permissions.query({name: arguments[0]}).then(permissionStatus => {
+ callback(permissionStatus.state);
+ });
+ """
+ return driver.execute_async_script(script, name)
+
+
+def test_cast_features():
+ driver = webdriver.Chrome()
+
+ try:
+ sinks = driver.get_sinks()
+ if sinks:
+ sink_name = sinks[0]['name']
+ driver.start_tab_mirroring(sink_name)
+ driver.stop_casting(sink_name)
+ else:
+ pytest.skip("No available Cast sinks to test with.")
+ finally:
+ driver.quit()
diff --git a/examples/python/tests/browsers/test_edge.py b/examples/python/tests/browsers/test_edge.py
index ff9018b0e903..363b15ea49f8 100644
--- a/examples/python/tests/browsers/test_edge.py
+++ b/examples/python/tests/browsers/test_edge.py
@@ -1,7 +1,7 @@
import os
import re
import subprocess
-
+import pytest
from selenium import webdriver
@@ -140,3 +140,39 @@ def test_set_network_conditions():
assert driver.get_network_conditions() == network_conditions
driver.quit()
+
+
+def test_set_permissions():
+ driver = webdriver.Edge()
+ driver.get('https://www.selenium.dev')
+
+ driver.set_permissions('camera', 'denied')
+
+ assert get_permission_state(driver, 'camera') == 'denied'
+ driver.quit()
+
+
+def get_permission_state(driver, name):
+ """Helper function to query the permission state."""
+ script = """
+ const callback = arguments[arguments.length - 1];
+ navigator.permissions.query({name: arguments[0]}).then(permissionStatus => {
+ callback(permissionStatus.state);
+ });
+ """
+ return driver.execute_async_script(script, name)
+
+
+def test_cast_features():
+ driver = webdriver.Edge()
+
+ try:
+ sinks = driver.get_sinks()
+ if sinks:
+ sink_name = sinks[0]['name']
+ driver.start_tab_mirroring(sink_name)
+ driver.stop_casting(sink_name)
+ else:
+ pytest.skip("No available Cast sinks to test with.")
+ finally:
+ driver.quit()
diff --git a/scripts/latest-python-nightly-version.py b/scripts/latest-python-nightly-version.py
index 4c232f63c74e..fb1f18e812fa 100755
--- a/scripts/latest-python-nightly-version.py
+++ b/scripts/latest-python-nightly-version.py
@@ -1,12 +1,12 @@
import requests
import json
-import re
response = requests.get("https://test.pypi.org/pypi/selenium/json")
data = response.json()
-versions = data['releases'].keys()
-sorted_versions = sorted(versions, key=lambda s: [int(part) if part.isdigit() else part for part in re.split(r'(\d+)', s)])
-latest_version = sorted_versions[-1]
+# Extract versions and their upload times
+versions = data['releases']
+sorted_versions = sorted(versions.items(), key=lambda item: item[1][0]['upload_time'], reverse=True)
+latest_version = sorted_versions[0][0]
print(latest_version)
\ No newline at end of file
diff --git a/website_and_docs/content/documentation/webdriver/browsers/chrome.en.md b/website_and_docs/content/documentation/webdriver/browsers/chrome.en.md
index cbdcda02391f..6e4f28c6a718 100644
--- a/website_and_docs/content/documentation/webdriver/browsers/chrome.en.md
+++ b/website_and_docs/content/documentation/webdriver/browsers/chrome.en.md
@@ -372,9 +372,9 @@ You can drive Chrome Cast devices, including sharing tabs
{{< tab header="Java" >}}
{{< badge-code >}}
{{< /tab >}}
-{{% tab header="Python" %}}
-{{< badge-code >}}
-{{% /tab %}}
+{{< tab header="Python" >}}
+{{< gh-codeblock path="/examples/python/tests/browsers/test_chrome.py#L170-L174" >}}
+{{< /tab >}}
{{< tab header="CSharp" >}}
{{< badge-code >}}
{{< /tab >}}
@@ -396,7 +396,7 @@ You can simulate various network conditions.
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java#L204-L210" >}}
{{< /tab >}}
{{< tab header="Python" >}}
{{< gh-codeblock path="/examples/python/tests/browsers/test_chrome.py#L129-L135" >}}
@@ -442,11 +442,11 @@ You can simulate various network conditions.
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java#L189" >}}
+{{< /tab >}}
+{{< tab header="Python" >}}
+{{< gh-codeblock path="/examples/python/tests/browsers/test_chrome.py#L149" >}}
{{< /tab >}}
-{{% tab header="Python" %}}
-{{< badge-code >}}
-{{% /tab %}}
{{< tab header="CSharp" >}}
{{< badge-code >}}
{{< /tab >}}
diff --git a/website_and_docs/content/documentation/webdriver/browsers/chrome.ja.md b/website_and_docs/content/documentation/webdriver/browsers/chrome.ja.md
index 8bceff728508..241fbb3162bc 100644
--- a/website_and_docs/content/documentation/webdriver/browsers/chrome.ja.md
+++ b/website_and_docs/content/documentation/webdriver/browsers/chrome.ja.md
@@ -365,9 +365,9 @@ Chrome Castデバイスを操作することができ、タブの共有も含ま
{{< tab header="Java" >}}
{{< badge-code >}}
{{< /tab >}}
-{{% tab header="Python" %}}
-{{< badge-code >}}
-{{% /tab %}}
+{{< tab header="Python" >}}
+{{< gh-codeblock path="/examples/python/tests/browsers/test_chrome.py#L170-L174" >}}
+{{< /tab >}}
{{< tab header="CSharp" >}}
{{< badge-code >}}
{{< /tab >}}
@@ -390,7 +390,7 @@ Chrome Castデバイスを操作することができ、タブの共有も含ま
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java#L204-L210" >}}
{{< /tab >}}
{{< tab header="Python" >}}
{{< gh-codeblock path="/examples/python/tests/browsers/test_chrome.py#L129-L135" >}}
@@ -436,11 +436,11 @@ Chrome Castデバイスを操作することができ、タブの共有も含ま
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java#L189" >}}
+{{< /tab >}}
+{{< tab header="Python" >}}
+{{< gh-codeblock path="/examples/python/tests/browsers/test_chrome.py#L149" >}}
{{< /tab >}}
-{{% tab header="Python" %}}
-{{< badge-code >}}
-{{% /tab %}}
{{< tab header="CSharp" >}}
{{< badge-code >}}
{{< /tab >}}
diff --git a/website_and_docs/content/documentation/webdriver/browsers/chrome.pt-br.md b/website_and_docs/content/documentation/webdriver/browsers/chrome.pt-br.md
index 3350a07d5d26..e273d7f813a9 100644
--- a/website_and_docs/content/documentation/webdriver/browsers/chrome.pt-br.md
+++ b/website_and_docs/content/documentation/webdriver/browsers/chrome.pt-br.md
@@ -372,9 +372,9 @@ Pode comandar dispositivos Chrome Cast, incluindo partilhar abas
{{< tab header="Java" >}}
{{< badge-code >}}
{{< /tab >}}
-{{% tab header="Python" %}}
-{{< badge-code >}}
-{{% /tab %}}
+{{< tab header="Python" >}}
+{{< gh-codeblock path="/examples/python/tests/browsers/test_chrome.py#L170-L174" >}}
+{{< /tab >}}
{{< tab header="CSharp" >}}
{{< badge-code >}}
{{< /tab >}}
@@ -399,7 +399,7 @@ please refer to the
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java#L204-L210" >}}
{{< /tab >}}
{{< tab header="Python" >}}
{{< gh-codeblock path="/examples/python/tests/browsers/test_chrome.py#L129-L135" >}}
@@ -445,11 +445,11 @@ please refer to the
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java#L189" >}}
+{{< /tab >}}
+{{< tab header="Python" >}}
+{{< gh-codeblock path="/examples/python/tests/browsers/test_chrome.py#L149" >}}
{{< /tab >}}
-{{% tab header="Python" %}}
-{{< badge-code >}}
-{{% /tab %}}
{{< tab header="CSharp" >}}
{{< badge-code >}}
{{< /tab >}}
diff --git a/website_and_docs/content/documentation/webdriver/browsers/chrome.zh-cn.md b/website_and_docs/content/documentation/webdriver/browsers/chrome.zh-cn.md
index 943a971b4f30..cf2dde607193 100644
--- a/website_and_docs/content/documentation/webdriver/browsers/chrome.zh-cn.md
+++ b/website_and_docs/content/documentation/webdriver/browsers/chrome.zh-cn.md
@@ -373,10 +373,9 @@ Chromedriver 和 Chrome 浏览器版本应该匹配, 如果它们不匹配, 驱
{{< tab header="Java" >}}
{{< badge-code >}}
{{< /tab >}}
-{{% tab header="Python" %}}
-{{< badge-code >}}
-{{% /tab %}}
-{{< tab header="CSharp" >}}
+{{< tab header="Python" >}}
+{{< gh-codeblock path="/examples/python/tests/browsers/test_chrome.py#L170-L174" >}}
+{{< /tab >}}{{< tab header="CSharp" >}}
{{< badge-code >}}
{{< /tab >}}
{{< tab header="Ruby" >}}
@@ -400,7 +399,7 @@ Chromedriver 和 Chrome 浏览器版本应该匹配, 如果它们不匹配, 驱
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java#L204-L210" >}}
{{< /tab >}}
{{< tab header="Python" >}}
{{< gh-codeblock path="/examples/python/tests/browsers/test_chrome.py#L129-L135" >}}
@@ -446,11 +445,11 @@ Chromedriver 和 Chrome 浏览器版本应该匹配, 如果它们不匹配, 驱
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/browsers/ChromeTest.java#L189" >}}
+{{< /tab >}}
+{{< tab header="Python" >}}
+{{< gh-codeblock path="/examples/python/tests/browsers/test_chrome.py#L149" >}}
{{< /tab >}}
-{{% tab header="Python" %}}
-{{< badge-code >}}
-{{% /tab %}}
{{< tab header="CSharp" >}}
{{< badge-code >}}
{{< /tab >}}
diff --git a/website_and_docs/content/documentation/webdriver/browsers/edge.en.md b/website_and_docs/content/documentation/webdriver/browsers/edge.en.md
index 5e9c71781fbb..2bcae96e363d 100644
--- a/website_and_docs/content/documentation/webdriver/browsers/edge.en.md
+++ b/website_and_docs/content/documentation/webdriver/browsers/edge.en.md
@@ -178,7 +178,7 @@ Set excluded arguments on options:
{{< gh-codeblock path="/examples/ruby/spec/browsers/edge_spec.rb#L53" >}}
{{< /tab >}}
{{< tab header="JavaScript" >}}
-{{< gh-codeblock path="/examples/javascript/test/getting_started/openEdgeTest.spec.js#L20-L23">}}
+{{< gh-codeblock path="/examples/javascript/test/browser/edgeSpecificCaps.spec.js#L22">}}
{{< /tab >}}
{{< tab header="Kotlin" >}}
{{< badge-code >}}
@@ -239,7 +239,8 @@ Property key: `EdgeDriverService.EDGE_DRIVER_LOG_PROPERTY`\
Property value: `DriverService.LOG_STDOUT` or `DriverService.LOG_STDERR`
{{% /tab %}}
{{< tab header="Python" >}}
-{{< badge-implementation >}}
+{{< badge-version version="4.11" >}}
+{{< gh-codeblock path="examples/python/tests/browsers/test_edge.py#L82" >}}
{{< /tab >}}
{{< tab header="CSharp" >}}
{{< badge-implementation >}}
@@ -373,9 +374,9 @@ You can drive Chrome Cast devices with Edge, including sharing tabs
{{< tab header="Java" >}}
{{< badge-code >}}
{{< /tab >}}
-{{% tab header="Python" %}}
-{{< badge-code >}}
-{{% /tab %}}
+{{< tab header="Python" >}}
+{{< gh-codeblock path="/examples/python/tests/browsers/test_edge.py#L170-L174" >}}
+{{< /tab >}}
{{< tab header="CSharp" >}}
{{< badge-code >}}
{{< /tab >}}
@@ -396,7 +397,7 @@ You can simulate various network conditions.
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/browsers/EdgeTest.java#L198-L204" >}}
{{< /tab >}}
{{< tab header="Python" >}}
{{< gh-codeblock path="/examples/python/tests/browsers/test_edge.py#L129-L135" >}}
@@ -442,11 +443,11 @@ You can simulate various network conditions.
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/browsers/EdgeTest.java#L183" >}}
+{{< /tab >}}
+{{< tab header="Python" >}}
+{{< gh-codeblock path="/examples/python/tests/browsers/test_edge.py#L149" >}}
{{< /tab >}}
-{{% tab header="Python" %}}
-{{< badge-code >}}
-{{% /tab %}}
{{< tab header="CSharp" >}}
{{< badge-code >}}
{{< /tab >}}
diff --git a/website_and_docs/content/documentation/webdriver/browsers/edge.ja.md b/website_and_docs/content/documentation/webdriver/browsers/edge.ja.md
index 712e3c2ec8c8..cf8098c55813 100644
--- a/website_and_docs/content/documentation/webdriver/browsers/edge.ja.md
+++ b/website_and_docs/content/documentation/webdriver/browsers/edge.ja.md
@@ -170,7 +170,7 @@ MSEdgedriverには、ブラウザを起動するために使用されるいく
{{< gh-codeblock path="/examples/ruby/spec/browsers/edge_spec.rb#L53" >}}
{{< /tab >}}
{{< tab header="JavaScript" >}}
-{{< gh-codeblock path="/examples/javascript/test/getting_started/openEdgeTest.spec.js#L20-L23">}}
+{{< gh-codeblock path="/examples/javascript/test/browser/edgeSpecificCaps.spec.js#L22">}}
{{< /tab >}}
{{< tab header="Kotlin" >}}
{{< badge-code >}}
@@ -229,7 +229,8 @@ MSEdgedriverには、ブラウザを起動するために使用されるいく
プロパティ値:`DriverService.LOG_STDOUT` または `DriverService.LOG_STDERR`
{{% /tab %}}
{{< tab header="Python" >}}
-{{< badge-implementation >}}
+{{< badge-version version="4.11" >}}
+{{< gh-codeblock path="examples/python/tests/browsers/test_edge.py#L82" >}}
{{< /tab >}}
{{< tab header="CSharp" >}}
{{< badge-implementation >}}
@@ -359,9 +360,9 @@ Edge を使用して Chrome Cast デバイスを操作し、タブを共有す
{{< tab header="Java" >}}
{{< badge-code >}}
{{< /tab >}}
-{{% tab header="Python" %}}
-{{< badge-code >}}
-{{% /tab %}}
+{{< tab header="Python" >}}
+{{< gh-codeblock path="/examples/python/tests/browsers/test_edge.py#L170-L174" >}}
+{{< /tab >}}
{{< tab header="CSharp" >}}
{{< badge-code >}}
{{< /tab >}}
@@ -382,7 +383,7 @@ Edge を使用して Chrome Cast デバイスを操作し、タブを共有す
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/browsers/EdgeTest.java#L198-L204" >}}
{{< /tab >}}
{{< tab header="Python" >}}
{{< gh-codeblock path="/examples/python/tests/browsers/test_edge.py#L129-L135" >}}
@@ -428,11 +429,11 @@ Edge を使用して Chrome Cast デバイスを操作し、タブを共有す
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/browsers/EdgeTest.java#L183" >}}
+{{< /tab >}}
+{{< tab header="Python" >}}
+{{< gh-codeblock path="/examples/python/tests/browsers/test_edge.py#L149" >}}
{{< /tab >}}
-{{% tab header="Python" %}}
-{{< badge-code >}}
-{{% /tab %}}
{{< tab header="CSharp" >}}
{{< badge-code >}}
{{< /tab >}}
diff --git a/website_and_docs/content/documentation/webdriver/browsers/edge.pt-br.md b/website_and_docs/content/documentation/webdriver/browsers/edge.pt-br.md
index 9f6b27b7c733..23e7599d04d6 100644
--- a/website_and_docs/content/documentation/webdriver/browsers/edge.pt-br.md
+++ b/website_and_docs/content/documentation/webdriver/browsers/edge.pt-br.md
@@ -180,7 +180,7 @@ Set excluded arguments on options:
{{< gh-codeblock path="/examples/ruby/spec/browsers/edge_spec.rb#L53" >}}
{{< /tab >}}
{{< tab header="JavaScript" >}}
-{{< gh-codeblock path="/examples/javascript/test/getting_started/openEdgeTest.spec.js#L20-L23">}}
+{{< gh-codeblock path="/examples/javascript/test/browser/edgeSpecificCaps.spec.js#L22">}}
{{< /tab >}}
{{< tab header="Kotlin" >}}
{{< badge-code >}}
@@ -241,7 +241,8 @@ Property key: `EdgeDriverService.EDGE_DRIVER_LOG_PROPERTY`\
Property value: `DriverService.LOG_STDOUT` or `DriverService.LOG_STDERR`
{{% /tab %}}
{{< tab header="Python" >}}
-{{< badge-implementation >}}
+{{< badge-version version="4.11" >}}
+{{< gh-codeblock path="examples/python/tests/browsers/test_edge.py#L82" >}}
{{< /tab >}}
{{< tab header="CSharp" >}}
{{< badge-implementation >}}
@@ -375,9 +376,9 @@ You can drive Chrome Cast devices with Edge, including sharing tabs
{{< tab header="Java" >}}
{{< badge-code >}}
{{< /tab >}}
-{{% tab header="Python" %}}
-{{< badge-code >}}
-{{% /tab %}}
+{{< tab header="Python" >}}
+{{< gh-codeblock path="/examples/python/tests/browsers/test_edge.py#L170-L174" >}}
+{{< /tab >}}
{{< tab header="CSharp" >}}
{{< badge-code >}}
{{< /tab >}}
@@ -398,7 +399,7 @@ You can simulate various network conditions.
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/browsers/EdgeTest.java#L198-L204" >}}
{{< /tab >}}
{{< tab header="Python" >}}
{{< gh-codeblock path="/examples/python/tests/browsers/test_edge.py#L129-L135" >}}
@@ -444,11 +445,11 @@ You can simulate various network conditions.
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/browsers/EdgeTest.java#L183" >}}
+{{< /tab >}}
+{{< tab header="Python" >}}
+{{< gh-codeblock path="/examples/python/tests/browsers/test_edge.py#L149" >}}
{{< /tab >}}
-{{% tab header="Python" %}}
-{{< badge-code >}}
-{{% /tab %}}
{{< tab header="CSharp" >}}
{{< badge-code >}}
{{< /tab >}}
diff --git a/website_and_docs/content/documentation/webdriver/browsers/edge.zh-cn.md b/website_and_docs/content/documentation/webdriver/browsers/edge.zh-cn.md
index 94db1a3ccb32..cce5a9e4e36e 100644
--- a/website_and_docs/content/documentation/webdriver/browsers/edge.zh-cn.md
+++ b/website_and_docs/content/documentation/webdriver/browsers/edge.zh-cn.md
@@ -180,7 +180,7 @@ Set excluded arguments on options:
{{< gh-codeblock path="/examples/ruby/spec/browsers/edge_spec.rb#L53" >}}
{{< /tab >}}
{{< tab header="JavaScript" >}}
-{{< gh-codeblock path="/examples/javascript/test/getting_started/openEdgeTest.spec.js#L20-L23">}}
+{{< gh-codeblock path="/examples/javascript/test/browser/edgeSpecificCaps.spec.js#L22">}}
{{< /tab >}}
{{< tab header="Kotlin" >}}
{{< badge-code >}}
@@ -241,7 +241,8 @@ Property key: `EdgeDriverService.EDGE_DRIVER_LOG_PROPERTY`\
Property value: `DriverService.LOG_STDOUT` or `DriverService.LOG_STDERR`
{{% /tab %}}
{{< tab header="Python" >}}
-{{< badge-implementation >}}
+{{< badge-version version="4.11" >}}
+{{< gh-codeblock path="examples/python/tests/browsers/test_edge.py#L82" >}}
{{< /tab >}}
{{< tab header="CSharp" >}}
{{< badge-implementation >}}
@@ -375,9 +376,9 @@ You can drive Chrome Cast devices with Edge, including sharing tabs
{{< tab header="Java" >}}
{{< badge-code >}}
{{< /tab >}}
-{{% tab header="Python" %}}
-{{< badge-code >}}
-{{% /tab %}}
+{{< tab header="Python" >}}
+{{< gh-codeblock path="/examples/python/tests/browsers/test_edge.py#L170-L174" >}}
+{{< /tab >}}
{{< tab header="CSharp" >}}
{{< badge-code >}}
{{< /tab >}}
@@ -398,7 +399,7 @@ You can simulate various network conditions.
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/browsers/EdgeTest.java#L198-L204" >}}
{{< /tab >}}
{{< tab header="Python" >}}
{{< gh-codeblock path="/examples/python/tests/browsers/test_edge.py#L129-L135" >}}
@@ -444,11 +445,11 @@ You can simulate various network conditions.
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/browsers/EdgeTest.java#L183" >}}
+{{< /tab >}}
+{{< tab header="Python" >}}
+{{< gh-codeblock path="/examples/python/tests/browsers/test_edge.py#L149" >}}
{{< /tab >}}
-{{% tab header="Python" %}}
-{{< badge-code >}}
-{{% /tab %}}
{{< tab header="CSharp" >}}
{{< badge-code >}}
{{< /tab >}}
diff --git a/website_and_docs/content/documentation/webdriver/browsers/firefox.en.md b/website_and_docs/content/documentation/webdriver/browsers/firefox.en.md
index bf5e46ce2a43..f2eac7c6b549 100644
--- a/website_and_docs/content/documentation/webdriver/browsers/firefox.en.md
+++ b/website_and_docs/content/documentation/webdriver/browsers/firefox.en.md
@@ -61,7 +61,7 @@ Add an argument to options:
{{< gh-codeblock path="/examples/ruby/spec/browsers/firefox_spec.rb#L17" >}}
{{< /tab >}}
{{< tab header="JavaScript" >}}
-{{< gh-codeblock path="/examples/javascript/test/browser/firefoxSpecificFunctionalities.spec.js#L12-L14">}}
+{{< gh-codeblock path="/examples/javascript/test/browser/firefoxSpecificFunctionalities.spec.js#L12">}}
{{< /tab >}}
{{< tab header="Kotlin" >}}
{{< badge-code >}}
@@ -414,7 +414,7 @@ please refer to the
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/browsers/FirefoxTest.java#L181" >}}
{{< /tab >}}
{{< tab header="Python" >}}
{{< gh-codeblock path="/examples/python/tests/browsers/test_firefox.py#L139" >}}
@@ -441,7 +441,7 @@ please refer to the
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/browsers/FirefoxTest.java#L197-L198" >}}
{{< /tab >}}
{{< tab header="Python" >}}
{{< gh-codeblock path="/examples/python/tests/browsers/test_firefox.py#L149-L150" >}}
diff --git a/website_and_docs/content/documentation/webdriver/browsers/firefox.ja.md b/website_and_docs/content/documentation/webdriver/browsers/firefox.ja.md
index dc97ef6e6d25..126638d5acb8 100644
--- a/website_and_docs/content/documentation/webdriver/browsers/firefox.ja.md
+++ b/website_and_docs/content/documentation/webdriver/browsers/firefox.ja.md
@@ -64,7 +64,7 @@ Firefox に固有のCapabilityは、Mozilla のページの [firefoxOptions](htt
{{< gh-codeblock path="/examples/ruby/spec/browsers/firefox_spec.rb#L17" >}}
{{< /tab >}}
{{< tab header="JavaScript" >}}
-{{< gh-codeblock path="/examples/javascript/test/browser/firefoxSpecificFunctionalities.spec.js#L12-L14">}}
+{{< gh-codeblock path="/examples/javascript/test/browser/firefoxSpecificFunctionalities.spec.js#L12">}}
{{< /tab >}}
{{< tab header="Kotlin" >}}
{{< badge-code >}}
@@ -412,7 +412,7 @@ IDはアドオンインストール時の戻り値から取得できます。
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/browsers/FirefoxTest.java#L181" >}}
{{< /tab >}}
{{< tab header="Python" >}}
{{< gh-codeblock path="/examples/python/tests/browsers/test_firefox.py#L139" >}}
@@ -437,7 +437,7 @@ IDはアドオンインストール時の戻り値から取得できます。
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/browsers/FirefoxTest.java#L197-L198" >}}
{{< /tab >}}
{{< tab header="Python" >}}
{{< gh-codeblock path="/examples/python/tests/browsers/test_firefox.py#L149-L150" >}}
diff --git a/website_and_docs/content/documentation/webdriver/browsers/firefox.pt-br.md b/website_and_docs/content/documentation/webdriver/browsers/firefox.pt-br.md
index 52964b50e405..f36890f487da 100644
--- a/website_and_docs/content/documentation/webdriver/browsers/firefox.pt-br.md
+++ b/website_and_docs/content/documentation/webdriver/browsers/firefox.pt-br.md
@@ -63,7 +63,7 @@ Adicione uma opção:
{{< gh-codeblock path="/examples/ruby/spec/browsers/firefox_spec.rb#L17" >}}
{{< /tab >}}
{{< tab header="JavaScript" >}}
-{{< gh-codeblock path="/examples/javascript/test/browser/firefoxSpecificFunctionalities.spec.js#L12-L14">}}
+{{< gh-codeblock path="/examples/javascript/test/browser/firefoxSpecificFunctionalities.spec.js#L12">}}
{{< /tab >}}
{{< tab header="Kotlin" >}}
{{< badge-code >}}
@@ -419,7 +419,7 @@ please refer to the
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/browsers/FirefoxTest.java#L181" >}}
{{< /tab >}}
{{< tab header="Python" >}}
{{< gh-codeblock path="/examples/python/tests/browsers/test_firefox.py#L139" >}}
@@ -446,7 +446,7 @@ please refer to the
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/browsers/FirefoxTest.java#L197-L198" >}}
{{< /tab >}}
{{< tab header="Python" >}}
{{< gh-codeblock path="/examples/python/tests/browsers/test_firefox.py#L149-L150" >}}
diff --git a/website_and_docs/content/documentation/webdriver/browsers/firefox.zh-cn.md b/website_and_docs/content/documentation/webdriver/browsers/firefox.zh-cn.md
index 662d48020ebb..b56e5f62b742 100644
--- a/website_and_docs/content/documentation/webdriver/browsers/firefox.zh-cn.md
+++ b/website_and_docs/content/documentation/webdriver/browsers/firefox.zh-cn.md
@@ -63,7 +63,7 @@ Add an argument to options:
{{< gh-codeblock path="/examples/ruby/spec/browsers/firefox_spec.rb#L17" >}}
{{< /tab >}}
{{< tab header="JavaScript" >}}
-{{< gh-codeblock path="/examples/javascript/test/browser/firefoxSpecificFunctionalities.spec.js#L12-L14">}}
+{{< gh-codeblock path="/examples/javascript/test/browser/firefoxSpecificFunctionalities.spec.js#L12">}}
{{< /tab >}}
{{< tab header="Kotlin" >}}
{{< badge-code >}}
@@ -416,7 +416,7 @@ please refer to the
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/browsers/FirefoxTest.java#L181" >}}
{{< /tab >}}
{{< tab header="Python" >}}
{{< gh-codeblock path="/examples/python/tests/browsers/test_firefox.py#L139" >}}
@@ -443,7 +443,7 @@ please refer to the
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="/examples/java/src/test/java/dev/selenium/browsers/FirefoxTest.java#L197-L198" >}}
{{< /tab >}}
{{< tab header="Python" >}}
{{< gh-codeblock path="/examples/python/tests/browsers/test_firefox.py#L149-L150" >}}
diff --git a/website_and_docs/content/documentation/webdriver/browsers/safari.en.md b/website_and_docs/content/documentation/webdriver/browsers/safari.en.md
index d54f928d2580..757b9cd1b066 100644
--- a/website_and_docs/content/documentation/webdriver/browsers/safari.en.md
+++ b/website_and_docs/content/documentation/webdriver/browsers/safari.en.md
@@ -39,7 +39,7 @@ Starting a Safari session with basic defined options looks like this:
{{< gh-codeblock path="/examples/ruby/spec/browsers/safari_spec.rb#L8-L9" >}}
{{< /tab >}}
{{< tab header="JavaScript" text=true >}}
-{{< gh-codeblock path="/examples/javascript/test/browser/safariSpecificCap.spec.js#L10-L12" >}}
+{{< gh-codeblock path="/examples/javascript/test/browser/safariSpecificCap.spec.js#L8-L11" >}}
{{< /tab >}}
{{< tab header="Kotlin" >}}
val options = SafariOptions()
@@ -93,7 +93,7 @@ Apple provides a development version of their browser — [Safari Technology Pre
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/browsers/SafariTest.java#L39-L40" >}}
{{< /tab >}}
{{% tab header="Python" %}}
{{< gh-codeblock path="examples/python/tests/browsers/test_safari.py#L25-L30" >}}
diff --git a/website_and_docs/content/documentation/webdriver/browsers/safari.ja.md b/website_and_docs/content/documentation/webdriver/browsers/safari.ja.md
index 86a427ecbff6..a15036dab0b3 100644
--- a/website_and_docs/content/documentation/webdriver/browsers/safari.ja.md
+++ b/website_and_docs/content/documentation/webdriver/browsers/safari.ja.md
@@ -38,7 +38,7 @@ Starting a Safari session with basic defined options looks like this:
{{< gh-codeblock path="/examples/ruby/spec/browsers/safari_spec.rb#L8-L9" >}}
{{< /tab >}}
{{< tab header="JavaScript" text=true >}}
-{{< gh-codeblock path="/examples/javascript/test/browser/safariSpecificCap.spec.js#L10-L12" >}}
+{{< gh-codeblock path="/examples/javascript/test/browser/safariSpecificCap.spec.js#L8-L11" >}}
{{< /tab >}}
{{< tab header="Kotlin" >}}
val options = SafariOptions()
@@ -93,7 +93,7 @@ To use this version in your code:
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/browsers/SafariTest.java#L39-L40" >}}
{{< /tab >}}
{{% tab header="Python" %}}
{{< gh-codeblock path="examples/python/tests/browsers/test_safari.py#L25-L30" >}}
diff --git a/website_and_docs/content/documentation/webdriver/browsers/safari.pt-br.md b/website_and_docs/content/documentation/webdriver/browsers/safari.pt-br.md
index 7def4aa1c493..0ef447205626 100644
--- a/website_and_docs/content/documentation/webdriver/browsers/safari.pt-br.md
+++ b/website_and_docs/content/documentation/webdriver/browsers/safari.pt-br.md
@@ -38,7 +38,7 @@ Este é um exemplo de como iniciar uma sessão Safari com um conjunto de opçõe
{{< gh-codeblock path="/examples/ruby/spec/browsers/safari_spec.rb#L8-L9" >}}
{{< /tab >}}
{{< tab header="JavaScript" text=true >}}
-{{< gh-codeblock path="/examples/javascript/test/browser/safariSpecificCap.spec.js#L10-L12" >}}
+{{< gh-codeblock path="/examples/javascript/test/browser/safariSpecificCap.spec.js#L8-L11" >}}
{{< /tab >}}
{{< tab header="Kotlin" >}}
val options = SafariOptions()
@@ -93,7 +93,7 @@ To use this version in your code:
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/browsers/SafariTest.java#L39-L40" >}}
{{< /tab >}}
{{% tab header="Python" %}}
{{< gh-codeblock path="examples/python/tests/browsers/test_safari.py#L25-L30" >}}
diff --git a/website_and_docs/content/documentation/webdriver/browsers/safari.zh-cn.md b/website_and_docs/content/documentation/webdriver/browsers/safari.zh-cn.md
index 07b63b1543b4..d55da00b60b2 100644
--- a/website_and_docs/content/documentation/webdriver/browsers/safari.zh-cn.md
+++ b/website_and_docs/content/documentation/webdriver/browsers/safari.zh-cn.md
@@ -38,7 +38,7 @@ Safari独有的Capabilities可以在Apple的页面[关于Safari的WebDriver](htt
{{< gh-codeblock path="/examples/ruby/spec/browsers/safari_spec.rb#L8-L9" >}}
{{< /tab >}}
{{< tab header="JavaScript" text=true >}}
-{{< gh-codeblock path="/examples/javascript/test/browser/safariSpecificCap.spec.js#L10-L12" >}}
+{{< gh-codeblock path="/examples/javascript/test/browser/safariSpecificCap.spec.js#L8-L11" >}}
{{< /tab >}}
{{< tab header="Kotlin" >}}
val options = SafariOptions()
@@ -97,7 +97,7 @@ Apple 提供了其浏览器的开发版本 — [Safari Technology Preview](https
{{< tabpane text=true >}}
{{< tab header="Java" >}}
-{{< badge-code >}}
+{{< gh-codeblock path="examples/java/src/test/java/dev/selenium/browsers/SafariTest.java#L39-L40" >}}
{{< /tab >}}
{{% tab header="Python" %}}
{{< gh-codeblock path="examples/python/tests/browsers/test_safari.py#L25-L30" >}}
diff --git a/website_and_docs/content/project/structure/_index.html b/website_and_docs/content/project/structure/_index.html
index f14d9ef9a940..0f97c7254178 100644
--- a/website_and_docs/content/project/structure/_index.html
+++ b/website_and_docs/content/project/structure/_index.html
@@ -41,6 +41,7 @@
Technical Leadership Committee
{{< gh-user "https://api.github.com/users/p0deje" >}}
{{< gh-user "https://api.github.com/users/pujagani" >}}
{{< gh-user "https://api.github.com/users/Harsha509" >}}
+ {{< gh-user "https://api.github.com/users/bonigarcia" >}}
diff --git a/website_and_docs/content/sponsors/_index.html b/website_and_docs/content/sponsors/_index.html
index 2fcc33ca15ce..a19ec3257e97 100644
--- a/website_and_docs/content/sponsors/_index.html
+++ b/website_and_docs/content/sponsors/_index.html
@@ -15,7 +15,7 @@
Sponsors
The following companies have sponsored the Selenium project. We thank
- each and every one of them for their generous support.
+ each one of them for their generous support.
-{{< /blocks/section >}}
\ No newline at end of file
+{{< /blocks/section >}}
diff --git a/website_and_docs/layouts/partials/bronze-level-sponsors.html b/website_and_docs/layouts/partials/bronze-level-sponsors.html
index 3b6d3ddbbf19..3b0b924c5811 100644
--- a/website_and_docs/layouts/partials/bronze-level-sponsors.html
+++ b/website_and_docs/layouts/partials/bronze-level-sponsors.html
@@ -1,6 +1,6 @@
{{ if .Data.sponsors.bronze.enable }}
-
Bronze Level Sponsors
+ Bronze Level Sponsors
{{ range .Data.sponsors.bronze.item }}
diff --git a/website_and_docs/layouts/partials/development-level-sponsors.html b/website_and_docs/layouts/partials/development-level-sponsors.html
index b30c73e60ebe..cb411082497f 100644
--- a/website_and_docs/layouts/partials/development-level-sponsors.html
+++ b/website_and_docs/layouts/partials/development-level-sponsors.html
@@ -1,6 +1,6 @@
{{ if .Data.sponsors.selenium.enable }}
-
Development Partners
+ Development Partners
{{ range .Data.sponsors.development.item }}
diff --git a/website_and_docs/layouts/partials/gold-level-sponsors.html b/website_and_docs/layouts/partials/gold-level-sponsors.html
index 968347f544d7..327308ed4d26 100644
--- a/website_and_docs/layouts/partials/gold-level-sponsors.html
+++ b/website_and_docs/layouts/partials/gold-level-sponsors.html
@@ -1,6 +1,6 @@
{{ if .Data.sponsors.gold.enable }}
-
Gold Level Sponsors
+ Gold Level Sponsors
{{ range .Data.sponsors.gold.item }}
diff --git a/website_and_docs/layouts/partials/open-collective-level-sponsors.html b/website_and_docs/layouts/partials/open-collective-level-sponsors.html
new file mode 100644
index 000000000000..ae0b7078916f
--- /dev/null
+++ b/website_and_docs/layouts/partials/open-collective-level-sponsors.html
@@ -0,0 +1,7 @@
+
+
OpenCollective Sponsors
+
+
+
+
+
diff --git a/website_and_docs/layouts/partials/platinum-level-sponsors.html b/website_and_docs/layouts/partials/platinum-level-sponsors.html
index 076f80473ab3..5ae5cf1f3c67 100644
--- a/website_and_docs/layouts/partials/platinum-level-sponsors.html
+++ b/website_and_docs/layouts/partials/platinum-level-sponsors.html
@@ -1,6 +1,6 @@
{{ if .Data.sponsors.platinum.enable }}
-
Platinum Level Sponsors
+ Platinum Level Sponsors
{{ range .Data.sponsors.platinum.item }}
diff --git a/website_and_docs/layouts/partials/selenium-level-sponsors.html b/website_and_docs/layouts/partials/selenium-level-sponsors.html
index 599d1a02acfa..25b71c321787 100644
--- a/website_and_docs/layouts/partials/selenium-level-sponsors.html
+++ b/website_and_docs/layouts/partials/selenium-level-sponsors.html
@@ -1,6 +1,6 @@
{{ if .Data.sponsors.selenium.enable }}
-
Selenium Level Sponsors
+ Selenium Level Sponsors
{{ range .Data.sponsors.selenium.item }}
diff --git a/website_and_docs/layouts/partials/silver-level-sponsors.html b/website_and_docs/layouts/partials/silver-level-sponsors.html
index 37bb402237de..011397353227 100644
--- a/website_and_docs/layouts/partials/silver-level-sponsors.html
+++ b/website_and_docs/layouts/partials/silver-level-sponsors.html
@@ -1,6 +1,6 @@
{{ if .Data.sponsors.silver.enable }}
-
Silver Level Sponsors
+ Silver Level Sponsors
{{ range .Data.sponsors.silver.item }}
diff --git a/website_and_docs/layouts/sponsors/list.html b/website_and_docs/layouts/sponsors/list.html
index 3aa700711bc5..022c25074770 100644
--- a/website_and_docs/layouts/sponsors/list.html
+++ b/website_and_docs/layouts/sponsors/list.html
@@ -11,6 +11,7 @@
{{ partial "gold-level-sponsors.html" (dict "Data" $.Site.Data) }}
{{ partial "silver-level-sponsors.html" (dict "Data" $.Site.Data) }}
{{ partial "bronze-level-sponsors.html" (dict "Data" $.Site.Data) }}
+{{ partial "open-collective-level-sponsors.html" }}
@@ -24,4 +25,5 @@
Sponsoring
+
{{ end }}
diff --git a/website_and_docs/package-lock.json b/website_and_docs/package-lock.json
index 18a7da75d1b4..08529751ff8d 100644
--- a/website_and_docs/package-lock.json
+++ b/website_and_docs/package-lock.json
@@ -10,7 +10,7 @@
"license": "Apache-2.0",
"dependencies": {
"autoprefixer": "^10.4.20",
- "postcss": "^8.4.48",
+ "postcss": "^8.4.49",
"postcss-cli": "^11.0.0"
}
},
@@ -577,9 +577,9 @@
}
},
"node_modules/postcss": {
- "version": "8.4.48",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.48.tgz",
- "integrity": "sha512-GCRK8F6+Dl7xYniR5a4FYbpBzU8XnZVeowqsQFYdcXuSbChgiks7qybSkbvnaeqv0G0B+dd9/jJgH8kkLDQeEA==",
+ "version": "8.4.49",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz",
+ "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
"funding": [
{
"type": "opencollective",
@@ -1285,9 +1285,9 @@
"integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="
},
"postcss": {
- "version": "8.4.48",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.48.tgz",
- "integrity": "sha512-GCRK8F6+Dl7xYniR5a4FYbpBzU8XnZVeowqsQFYdcXuSbChgiks7qybSkbvnaeqv0G0B+dd9/jJgH8kkLDQeEA==",
+ "version": "8.4.49",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz",
+ "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
"requires": {
"nanoid": "^3.3.7",
"picocolors": "^1.1.1",
diff --git a/website_and_docs/package.json b/website_and_docs/package.json
index 0bae5f8b4fbb..aa478f4859f3 100644
--- a/website_and_docs/package.json
+++ b/website_and_docs/package.json
@@ -10,7 +10,7 @@
"license": "Apache-2.0",
"dependencies": {
"autoprefixer": "^10.4.20",
- "postcss": "^8.4.48",
+ "postcss": "^8.4.49",
"postcss-cli": "^11.0.0"
}
}