Skip to content

Commit f573ddd

Browse files
authored
Merge branch 'trunk' into fixing_cdp_generation_for_python
2 parents e09cb72 + a99c253 commit f573ddd

File tree

11 files changed

+66
-63
lines changed

11 files changed

+66
-63
lines changed

.github/workflows/ci-python.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ jobs:
8686
fail-fast: false
8787
matrix:
8888
include:
89-
- browser: firefox
89+
- browser: chrome
9090
with:
9191
name: Integration Tests (remote, ${{ matrix.browser }})
9292
browser: ${{ matrix.browser }}

Rakefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -685,7 +685,7 @@ namespace :py do
685685
end
686686
end
687687

688-
desc 'Python Remote tests with Firefox'
688+
desc 'Python Remote tests with Chrome'
689689
task :remote do
690690
Rake::Task['py:clean'].invoke
691691
Bazel.execute('test', [], '//py:test-remote')

py/BUILD.bazel

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,6 @@ py_library(
363363
"test/selenium/webdriver/common/network.py",
364364
"test/selenium/webdriver/common/webserver.py",
365365
"test/selenium/webdriver/firefox/__init__.py",
366-
"test/selenium/webdriver/firefox/conftest.py",
367366
"test/selenium/webdriver/marionette/__init__.py",
368367
"test/selenium/webdriver/marionette/conftest.py",
369368
"test/selenium/webdriver/safari/conftest.py",

py/conftest.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ class SupportedOptions(ContainerProtocol):
131131
edge: str = "EdgeOptions"
132132
safari: str = "SafariOptions"
133133
ie: str = "IeOptions"
134-
remote: str = "FirefoxOptions"
134+
remote: str = "ChromeOptions"
135135
webkitgtk: str = "WebKitGTKOptions"
136136
wpewebkit: str = "WPEWebKitOptions"
137137

@@ -249,8 +249,8 @@ def options(self, cls_name):
249249
# under Wayland, so we use XWayland instead.
250250
os.environ["MOZ_ENABLE_WAYLAND"] = "0"
251251
elif self.driver_class == self.supported_drivers.remote:
252-
self._options = getattr(webdriver, self.supported_options.firefox)()
253-
self._options.set_capability("moz:firefoxOptions", {})
252+
self._options = getattr(webdriver, self.supported_options.chrome)()
253+
self._options.set_capability("goog:chromeOptions", {})
254254
self._options.enable_downloads = True
255255
else:
256256
opts_cls = getattr(self.supported_options, cls_name.lower())
@@ -467,6 +467,7 @@ def clean_driver(request):
467467
pytest.xfail(**marker.kwargs)
468468

469469
yield driver_reference
470+
470471
if request.node.get_closest_marker("no_driver_after_test"):
471472
driver_reference = None
472473

py/pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ classifiers = [
2424
"Programming Language :: Python :: 3.12",
2525
"Programming Language :: Python :: 3.13",
2626
"Programming Language :: Python :: 3.14",
27-
]
27+
]
2828
dependencies = [
2929
"urllib3[socks]>=2.5.0,<3.0",
3030
"trio>=0.31.0,<1.0",
3131
"trio-websocket>=0.12.2,<1.0",
3232
"certifi>=2025.10.5",
3333
"typing_extensions>=4.15.0,<5.0",
3434
"websocket-client>=1.8.0,<2.0",
35-
]
35+
]
3636

3737
[project.urls]
3838
homepage = "https://www.selenium.dev"

py/test/selenium/webdriver/common/api_example_tests.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -258,19 +258,20 @@ def test_move_window_position(driver, pages):
258258
assert loc["y"] == new_y
259259

260260

261-
@pytest.mark.xfail_edge(reason="Window does not resize")
261+
@pytest.mark.xfail_edge(reason="Window sometimes does not resize")
262+
@pytest.mark.xfail_remote(reason="Window sometimes does not resize")
262263
def test_change_window_size(driver, pages):
263264
pages.load("blank.html")
264265
size = driver.get_window_size()
265-
newSize = [600, 600]
266+
new_size = [600, 600]
266267
if size["width"] == 600:
267-
newSize[0] = 500
268+
new_size[0] = 500
268269
if size["height"] == 600:
269-
newSize[1] = 500
270-
driver.set_window_size(newSize[0], newSize[1])
270+
new_size[1] = 500
271+
driver.set_window_size(new_size[0], new_size[1])
271272
size = driver.get_window_size()
272-
assert size["width"] == newSize[0]
273-
assert size["height"] == newSize[1]
273+
assert size["width"] == new_size[0]
274+
assert size["height"] == new_size[1]
274275

275276

276277
@pytest.mark.xfail_ie(raises=AttributeError, reason="Logging API is no longer available")

py/test/selenium/webdriver/firefox/conftest.py

Lines changed: 0 additions & 27 deletions
This file was deleted.

py/test/selenium/webdriver/firefox/ff_installs_addons_tests.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,21 @@
1818
import os
1919
import zipfile
2020

21+
import pytest
22+
2123
from selenium.webdriver.common.by import By
2224
from selenium.webdriver.support.wait import WebDriverWait
2325

24-
extensions = os.path.abspath("../../../../../../test/extensions/")
26+
for extensions_dir in (
27+
os.path.abspath("../../../../../../test/extensions/"),
28+
os.path.abspath("../common/extensions/"),
29+
):
30+
extensions = extensions_dir
31+
if os.path.exists(extensions_dir):
32+
break
2533

2634

35+
@pytest.mark.no_driver_after_test
2736
def test_install_uninstall_signed_addon_xpi(driver, pages):
2837
extension = os.path.join(extensions, "webextensions-selenium-example.xpi")
2938

@@ -41,6 +50,7 @@ def test_install_uninstall_signed_addon_xpi(driver, pages):
4150
assert len(driver.find_elements(By.ID, "webextensions-selenium-example")) == 0
4251

4352

53+
@pytest.mark.no_driver_after_test
4454
def test_install_uninstall_signed_addon_zip(driver, pages):
4555
extension = os.path.join(extensions, "webextensions-selenium-example.zip")
4656

@@ -58,6 +68,7 @@ def test_install_uninstall_signed_addon_zip(driver, pages):
5868
assert len(driver.find_elements(By.ID, "webextensions-selenium-example")) == 0
5969

6070

71+
@pytest.mark.no_driver_after_test
6172
def test_install_uninstall_unsigned_addon_zip(driver, pages):
6273
extension = os.path.join(extensions, "webextensions-selenium-example-unsigned.zip")
6374

@@ -75,6 +86,7 @@ def test_install_uninstall_unsigned_addon_zip(driver, pages):
7586
assert len(driver.find_elements(By.ID, "webextensions-selenium-example")) == 0
7687

7788

89+
@pytest.mark.no_driver_after_test
7890
def test_install_uninstall_signed_addon_dir(driver, pages):
7991
zip = os.path.join(extensions, "webextensions-selenium-example.zip")
8092

@@ -96,6 +108,7 @@ def test_install_uninstall_signed_addon_dir(driver, pages):
96108
assert len(driver.find_elements(By.ID, "webextensions-selenium-example")) == 0
97109

98110

111+
@pytest.mark.no_driver_after_test
99112
def test_install_uninstall_unsigned_addon_dir(driver, pages):
100113
zip = os.path.join(extensions, "webextensions-selenium-example-unsigned.zip")
101114
target = os.path.join(extensions, "webextensions-selenium-example-unsigned-unzip")

py/test/selenium/webdriver/remote/remote_connection_tests.py

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,18 @@
2727
from selenium.webdriver.remote.client_config import ClientConfig
2828

2929

30-
def test_browser_specific_method(driver, pages):
30+
def test_browser_specific_method(firefox_options, webserver):
3131
"""This only works on Firefox"""
32-
pages.load("simpleTest.html")
33-
screenshot = driver.execute("FULL_PAGE_SCREENSHOT")["value"]
34-
result = base64.b64decode(screenshot)
35-
kind = filetype.guess(result)
36-
assert kind is not None and kind.mime == "image/png"
32+
server_addr = f"http://{webserver.host}:{webserver.port}"
33+
with webdriver.Remote(options=firefox_options) as driver:
34+
driver.get(f"{server_addr}/simpleTest.html")
35+
screenshot = driver.execute("FULL_PAGE_SCREENSHOT")["value"]
36+
result = base64.b64decode(screenshot)
37+
kind = filetype.guess(result)
38+
assert kind is not None and kind.mime == "image/png"
3739

3840

39-
def test_remote_webdriver_with_http_timeout(firefox_options, webserver):
41+
def test_remote_webdriver_with_http_timeout(chromium_options, webserver):
4042
"""This test starts a remote webdriver with an http client timeout
4143
set less than the implicit wait timeout, and verifies the http timeout
4244
is triggered first when waiting for an element.
@@ -46,14 +48,14 @@ def test_remote_webdriver_with_http_timeout(firefox_options, webserver):
4648
server_addr = f"http://{webserver.host}:{webserver.port}"
4749
client_config = ClientConfig(remote_server_addr=server_addr, timeout=http_timeout)
4850
assert client_config.timeout == http_timeout
49-
with webdriver.Remote(options=firefox_options, client_config=client_config) as driver:
51+
with webdriver.Remote(options=chromium_options, client_config=client_config) as driver:
5052
driver.get(f"{server_addr}/simpleTest.html")
5153
driver.implicitly_wait(wait_timeout)
5254
with pytest.raises(ReadTimeoutError):
5355
driver.find_element(By.ID, "no_element_to_be_found")
5456

5557

56-
def test_remote_webdriver_with_websocket_timeout(firefox_options, webserver):
58+
def test_remote_webdriver_with_websocket_timeout(chromium_options, webserver):
5759
"""This test starts a remote webdriver that uses websockets, and has a websocket
5860
client timeout less than the default. It verifies the websocket times out according
5961
to this value.
@@ -66,8 +68,8 @@ def test_remote_webdriver_with_websocket_timeout(firefox_options, webserver):
6668
remote_server_addr=server_addr, websocket_timeout=websocket_timeout, websocket_interval=websocket_interval
6769
)
6870
assert client_config.websocket_timeout == websocket_timeout
69-
firefox_options.enable_bidi = True
70-
with webdriver.Remote(options=firefox_options, client_config=client_config) as driver:
71+
chromium_options.enable_bidi = True
72+
with webdriver.Remote(options=chromium_options, client_config=client_config) as driver:
7173
driver._start_bidi()
7274
assert driver._websocket_connection.response_wait_timeout == websocket_timeout
7375
assert driver._websocket_connection.response_wait_interval == websocket_interval

py/test/selenium/webdriver/remote/remote_custom_locator_tests.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ def convert(self, by, value):
3030

3131

3232
@pytest.fixture()
33-
def custom_locator_driver(firefox_options):
34-
driver = webdriver.Remote(options=firefox_options, locator_converter=CustomLocatorConverter())
33+
def custom_locator_driver(chromium_options):
34+
driver = webdriver.Remote(options=chromium_options, locator_converter=CustomLocatorConverter())
3535
yield driver
3636
driver.quit()
3737

0 commit comments

Comments
 (0)