Skip to content

Commit 8aec0b9

Browse files
authored
[py] Add clean_options fixture and remove all Python tests from .skipped-tests (#15696)
1 parent baa5fc2 commit 8aec0b9

File tree

7 files changed

+55
-73
lines changed

7 files changed

+55
-73
lines changed

.skipped-tests

-5
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,6 @@
2727
-//javascript/selenium-webdriver:test-chrome-service-test.js-chrome
2828
-//javascript/selenium-webdriver:test-firefox-options-test.js-firefox
2929
-//javascript/selenium-webdriver:test-lib-capabilities-test.js-chrome
30-
-//py:test-chrome-test/selenium/webdriver/chrome/chrome_launcher_tests.py
31-
-//py:test-chrome-test/selenium/webdriver/chrome/chrome_service_tests.py
32-
-//py:test-chrome-test/selenium/webdriver/chrome/proxy_tests.py
33-
-//py:test-edge-test/selenium/webdriver/edge/edge_launcher_tests.py
34-
-//py:test-edge-test/selenium/webdriver/edge/edge_service_tests.py
3530
-//rb/spec/integration/selenium/webdriver/chrome:service-chrome
3631
-//rb/spec/integration/selenium/webdriver/chrome:service-chrome-bidi
3732
-//rb/spec/integration/selenium/webdriver/chrome:service-chrome-remote

py/conftest.py

+14-19
Original file line numberDiff line numberDiff line change
@@ -213,11 +213,10 @@ def get_options(driver_class, config):
213213
browser_args = config.option.args
214214
headless = config.option.headless
215215
bidi = config.option.bidi
216-
options = None
216+
217+
options = getattr(webdriver, f"{driver_class}Options")()
217218

218219
if browser_path or browser_args:
219-
if not options:
220-
options = getattr(webdriver, f"{driver_class}Options")()
221220
if driver_class == "WebKitGTK":
222221
options.overlay_scrollbars_enabled = False
223222
if browser_path is not None:
@@ -227,16 +226,12 @@ def get_options(driver_class, config):
227226
options.add_argument(arg)
228227

229228
if headless:
230-
if not options:
231-
options = getattr(webdriver, f"{driver_class}Options")()
232229
if driver_class == "Chrome" or driver_class == "Edge":
233230
options.add_argument("--headless=new")
234231
if driver_class == "Firefox":
235232
options.add_argument("-headless")
236233

237234
if bidi:
238-
if not options:
239-
options = getattr(webdriver, f"{driver_class}Options")()
240235
options.web_socket_url = True
241236
options.unhandled_prompt_behavior = "ignore"
242237

@@ -336,30 +331,30 @@ def driver_executable(request):
336331
return request.config.option.executable
337332

338333

339-
@pytest.fixture(scope="function")
340-
def clean_service(request):
341-
try:
342-
driver_class = get_driver_class(request.config.option.drivers[0])
343-
except (AttributeError, TypeError):
344-
raise Exception("This test requires a --driver to be specified")
345-
346-
yield get_service(driver_class, request.config.option.executable)
347-
348-
349334
@pytest.fixture(scope="function")
350335
def clean_driver(request):
351336
try:
352337
driver_class = get_driver_class(request.config.option.drivers[0])
353338
except (AttributeError, TypeError):
354339
raise Exception("This test requires a --driver to be specified")
355-
356340
driver_reference = getattr(webdriver, driver_class)
357341
yield driver_reference
358-
359342
if request.node.get_closest_marker("no_driver_after_test"):
360343
driver_reference = None
361344

362345

346+
@pytest.fixture(scope="function")
347+
def clean_service(request):
348+
driver_class = get_driver_class(request.config.option.drivers[0])
349+
yield get_service(driver_class, request.config.option.executable)
350+
351+
352+
@pytest.fixture(scope="function")
353+
def clean_options(request):
354+
driver_class = get_driver_class(request.config.option.drivers[0])
355+
yield get_options(driver_class, request.config)
356+
357+
363358
@pytest.fixture
364359
def firefox_options(request):
365360
try:

py/test/selenium/webdriver/chrome/chrome_launcher_tests.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@
1919

2020

2121
@pytest.mark.no_driver_after_test
22-
def test_launch_and_close_browser(clean_driver, clean_service):
23-
driver = clean_driver(service=clean_service)
22+
def test_launch_and_close_browser(clean_driver, clean_options, clean_service):
23+
driver = clean_driver(options=clean_options, service=clean_service)
2424
driver.quit()
2525

2626

2727
@pytest.mark.no_driver_after_test
28-
def test_we_can_launch_multiple_chrome_instances(clean_driver, clean_service):
29-
driver1 = clean_driver(service=clean_service)
30-
driver2 = clean_driver(service=clean_service)
31-
driver3 = clean_driver(service=clean_service)
28+
def test_we_can_launch_multiple_chrome_instances(clean_driver, clean_options, clean_service):
29+
driver1 = clean_driver(options=clean_options, service=clean_service)
30+
driver2 = clean_driver(options=clean_options, service=clean_service)
31+
driver3 = clean_driver(options=clean_options, service=clean_service)
3232
driver1.quit()
3333
driver2.quit()
3434
driver3.quit()

py/test/selenium/webdriver/chrome/chrome_service_tests.py

+13-15
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,11 @@
2323
import pytest
2424

2525
from selenium.common.exceptions import SessionNotCreatedException
26-
from selenium.webdriver.chrome.options import Options
2726
from selenium.webdriver.chrome.service import Service
2827

2928

3029
@pytest.mark.no_driver_after_test
31-
def test_uses_chromedriver_logging(clean_driver, driver_executable) -> None:
30+
def test_uses_chromedriver_logging(clean_driver, clean_options, driver_executable) -> None:
3231
log_file = "chromedriver.log"
3332
service_args = ["--append-log"]
3433

@@ -47,10 +46,10 @@ def test_uses_chromedriver_logging(clean_driver, driver_executable) -> None:
4746
driver1 = None
4847
driver2 = None
4948
try:
50-
driver1 = clean_driver(service=service1)
49+
driver1 = clean_driver(options=clean_options, service=service1)
5150
with open(log_file) as fp:
5251
lines = len(fp.readlines())
53-
driver2 = clean_driver(service=service2)
52+
driver2 = clean_driver(options=clean_options, service=service2)
5453
with open(log_file) as fp:
5554
assert len(fp.readlines()) >= 2 * lines
5655
finally:
@@ -62,12 +61,12 @@ def test_uses_chromedriver_logging(clean_driver, driver_executable) -> None:
6261

6362

6463
@pytest.mark.no_driver_after_test
65-
def test_log_output_as_filename(clean_driver, driver_executable) -> None:
64+
def test_log_output_as_filename(clean_driver, clean_options, driver_executable) -> None:
6665
log_file = "chromedriver.log"
6766
service = Service(log_output=log_file, executable_path=driver_executable)
6867
try:
6968
assert "--log-path=chromedriver.log" in service.service_args
70-
driver = clean_driver(service=service)
69+
driver = clean_driver(options=clean_options, service=service)
7170
with open(log_file) as fp:
7271
assert "Starting ChromeDriver" in fp.readline()
7372
finally:
@@ -76,12 +75,12 @@ def test_log_output_as_filename(clean_driver, driver_executable) -> None:
7675

7776

7877
@pytest.mark.no_driver_after_test
79-
def test_log_output_as_file(clean_driver, driver_executable) -> None:
78+
def test_log_output_as_file(clean_driver, clean_options, driver_executable) -> None:
8079
log_name = "chromedriver.log"
8180
log_file = open(log_name, "w", encoding="utf-8")
8281
service = Service(log_output=log_file, executable_path=driver_executable)
8382
try:
84-
driver = clean_driver(service=service)
83+
driver = clean_driver(options=clean_options, service=service)
8584
time.sleep(1)
8685
with open(log_name) as fp:
8786
assert "Starting ChromeDriver" in fp.readline()
@@ -92,9 +91,9 @@ def test_log_output_as_file(clean_driver, driver_executable) -> None:
9291

9392

9493
@pytest.mark.no_driver_after_test
95-
def test_log_output_as_stdout(clean_driver, capfd, driver_executable) -> None:
94+
def test_log_output_as_stdout(clean_driver, clean_options, capfd, driver_executable) -> None:
9695
service = Service(log_output=subprocess.STDOUT, executable_path=driver_executable)
97-
driver = clean_driver(service=service)
96+
driver = clean_driver(options=clean_options, service=service)
9897

9998
out, err = capfd.readouterr()
10099
assert "Starting ChromeDriver" in out
@@ -109,12 +108,11 @@ def test_log_output_null_default(driver, capfd) -> None:
109108

110109

111110
@pytest.mark.no_driver_after_test
112-
def test_driver_is_stopped_if_browser_cant_start(clean_driver) -> None:
113-
options = Options()
114-
options.add_argument("--user-data-dir=/no/such/location")
115-
service = Service()
111+
def test_driver_is_stopped_if_browser_cant_start(clean_driver, clean_options, driver_executable) -> None:
112+
clean_options.add_argument("--user-data-dir=/no/such/location")
113+
service = Service(executable_path=driver_executable)
116114
with pytest.raises(SessionNotCreatedException):
117-
clean_driver(options=options, service=service)
115+
clean_driver(options=clean_options, service=service)
118116
assert not service.is_connectable()
119117
assert service.process.poll() is not None
120118

py/test/selenium/webdriver/chrome/proxy_tests.py

+3-7
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,13 @@
2020
import pytest
2121
import urllib3
2222

23-
from selenium import webdriver
24-
2523

2624
@pytest.mark.no_driver_after_test
27-
def test_bad_proxy_doesnt_interfere(clean_driver, clean_service):
25+
def test_bad_proxy_doesnt_interfere(clean_driver, clean_options, clean_service):
2826
# Proxy environment variables should be ignored if
2927
# ignore_local_proxy_environment_variables() is called.
30-
31-
options = webdriver.ChromeOptions()
32-
options.ignore_local_proxy_environment_variables()
33-
chrome_kwargs = {"options": options, "service": clean_service}
28+
clean_options.ignore_local_proxy_environment_variables()
29+
chrome_kwargs = {"options": clean_options, "service": clean_service}
3430
with patch.dict("os.environ", {"http_proxy": "bad", "https_proxy": "bad"}):
3531
driver = clean_driver(**chrome_kwargs)
3632
assert hasattr(driver, "command_executor")

py/test/selenium/webdriver/edge/edge_launcher_tests.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@
1919

2020

2121
@pytest.mark.no_driver_after_test
22-
def test_launch_and_close_browser(clean_driver, clean_service):
23-
driver = clean_driver(service=clean_service)
22+
def test_launch_and_close_browser(clean_driver, clean_options, clean_service):
23+
driver = clean_driver(options=clean_options, service=clean_service)
2424
driver.quit()
2525

2626

2727
@pytest.mark.no_driver_after_test
28-
def test_we_can_launch_multiple_edge_instances(clean_driver, clean_service):
29-
driver1 = clean_driver(service=clean_service)
30-
driver2 = clean_driver(service=clean_service)
31-
driver3 = clean_driver(service=clean_service)
28+
def test_we_can_launch_multiple_edge_instances(clean_driver, clean_options, clean_service):
29+
driver1 = clean_driver(options=clean_options, service=clean_service)
30+
driver2 = clean_driver(options=clean_options, service=clean_service)
31+
driver3 = clean_driver(options=clean_options, service=clean_service)
3232
driver1.quit()
3333
driver2.quit()
3434
driver3.quit()

py/test/selenium/webdriver/edge/edge_service_tests.py

+13-15
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,11 @@
2323
import pytest
2424

2525
from selenium.common.exceptions import SessionNotCreatedException
26-
from selenium.webdriver.edge.options import Options
2726
from selenium.webdriver.edge.service import Service
2827

2928

3029
@pytest.mark.no_driver_after_test
31-
def test_uses_edgedriver_logging(clean_driver, driver_executable) -> None:
30+
def test_uses_edgedriver_logging(clean_driver, clean_options, driver_executable) -> None:
3231
log_file = "msedgedriver.log"
3332
service_args = ["--append-log"]
3433

@@ -47,10 +46,10 @@ def test_uses_edgedriver_logging(clean_driver, driver_executable) -> None:
4746
driver1 = None
4847
driver2 = None
4948
try:
50-
driver1 = clean_driver(service=service1)
49+
driver1 = clean_driver(options=clean_options, service=service1)
5150
with open(log_file) as fp:
5251
lines = len(fp.readlines())
53-
driver2 = clean_driver(service=service2)
52+
driver2 = clean_driver(options=clean_options, service=service2)
5453
with open(log_file) as fp:
5554
assert len(fp.readlines()) >= 2 * lines
5655
finally:
@@ -62,12 +61,12 @@ def test_uses_edgedriver_logging(clean_driver, driver_executable) -> None:
6261

6362

6463
@pytest.mark.no_driver_after_test
65-
def test_log_output_as_filename(clean_driver, driver_executable) -> None:
64+
def test_log_output_as_filename(clean_driver, clean_options, driver_executable) -> None:
6665
log_file = "msedgedriver.log"
6766
service = Service(log_output=log_file, executable_path=driver_executable)
6867
try:
6968
assert "--log-path=msedgedriver.log" in service.service_args
70-
driver = clean_driver(service=service)
69+
driver = clean_driver(options=clean_options, service=service)
7170
with open(log_file) as fp:
7271
assert "Starting Microsoft Edge WebDriver" in fp.readline()
7372
finally:
@@ -76,12 +75,12 @@ def test_log_output_as_filename(clean_driver, driver_executable) -> None:
7675

7776

7877
@pytest.mark.no_driver_after_test
79-
def test_log_output_as_file(clean_driver, driver_executable) -> None:
78+
def test_log_output_as_file(clean_driver, clean_options, driver_executable) -> None:
8079
log_name = "msedgedriver.log"
8180
log_file = open(log_name, "w", encoding="utf-8")
8281
service = Service(log_output=log_file, executable_path=driver_executable)
8382
try:
84-
driver = clean_driver(service=service)
83+
driver = clean_driver(options=clean_options, service=service)
8584
time.sleep(1)
8685
with open(log_name) as fp:
8786
assert "Starting Microsoft Edge WebDriver" in fp.readline()
@@ -92,9 +91,9 @@ def test_log_output_as_file(clean_driver, driver_executable) -> None:
9291

9392

9493
@pytest.mark.no_driver_after_test
95-
def test_log_output_as_stdout(clean_driver, capfd, driver_executable) -> None:
94+
def test_log_output_as_stdout(clean_driver, clean_options, capfd, driver_executable) -> None:
9695
service = Service(log_output=subprocess.STDOUT, executable_path=driver_executable)
97-
driver = clean_driver(service=service)
96+
driver = clean_driver(options=clean_options, service=service)
9897

9998
out, err = capfd.readouterr()
10099
assert "Starting Microsoft Edge WebDriver" in out
@@ -109,12 +108,11 @@ def test_log_output_null_default(driver, capfd) -> None:
109108

110109

111110
@pytest.mark.no_driver_after_test
112-
def test_driver_is_stopped_if_browser_cant_start(clean_driver) -> None:
113-
options = Options()
114-
options.add_argument("--user-data-dir=/no/such/location")
115-
service = Service()
111+
def test_driver_is_stopped_if_browser_cant_start(clean_driver, clean_options, clean_service, driver_executable) -> None:
112+
clean_options.add_argument("--user-data-dir=/no/such/location")
113+
service = Service(executable_path=driver_executable)
116114
with pytest.raises(SessionNotCreatedException):
117-
clean_driver(options=options, service=service)
115+
clean_driver(options=clean_options, service=service)
118116
assert not service.is_connectable()
119117
assert service.process.poll() is not None
120118

0 commit comments

Comments
 (0)