Skip to content

Commit 999df93

Browse files
committed
Refactor tests to remove code duplication
1 parent 2b988dd commit 999df93

File tree

2 files changed

+42
-74
lines changed

2 files changed

+42
-74
lines changed

py/BUILD.bazel

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
load("@aspect_bazel_lib//lib:copy_directory.bzl", "copy_directory")
12
load("@aspect_rules_lint//format:defs.bzl", "format_multirun")
23
load("@bazel_skylib//rules:select_file.bzl", "select_file")
34
load("@py_dev_requirements//:requirements.bzl", "requirement")
@@ -6,7 +7,6 @@ load("@rules_pkg//pkg:pkg.bzl", "pkg_tar")
67
load("@rules_python//python:defs.bzl", "py_binary", "py_library")
78
load("@rules_python//python:packaging.bzl", "py_package", "py_wheel")
89
load("@rules_python//python:pip.bzl", "compile_pip_requirements")
9-
load("@aspect_bazel_lib//lib:copy_directory.bzl", "copy_directory")
1010
load("//common:defs.bzl", "copy_file")
1111
load("//py:defs.bzl", "generate_devtools", "py_test_suite")
1212
load("//py/private:browsers.bzl", "BROWSERS")
@@ -180,7 +180,7 @@ copy_directory(
180180
copy_directory(
181181
name = "webextensions-selenium-example-signed-dir",
182182
src = "//common/extensions:webextensions-selenium-example-signed",
183-
out = "test/extensions/webextensions-selenium-example-signed",
183+
out = "test/extensions/webextensions-selenium-example-signed",
184184
)
185185

186186
select_file(
@@ -358,12 +358,12 @@ py_library(
358358
"pyproject.toml",
359359
"test/selenium/webdriver/common/test_file.txt",
360360
"test/selenium/webdriver/common/test_file2.txt",
361-
":webextensions-selenium-example-unsigned-zip",
362-
":webextensions-selenium-example-xpi",
363-
":webextensions-selenium-example-zip",
364361
":webextensions-selenium-example-crx",
365362
":webextensions-selenium-example-dir",
366363
":webextensions-selenium-example-signed-dir",
364+
":webextensions-selenium-example-unsigned-zip",
365+
":webextensions-selenium-example-xpi",
366+
":webextensions-selenium-example-zip",
367367
],
368368
imports = ["."],
369369
deps = [

py/test/selenium/webdriver/common/bidi_webextension_tests.py

Lines changed: 37 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -30,54 +30,53 @@
3030
extensions = os.path.abspath("../../../../../../test/extensions/")
3131

3232

33-
def test_webextension_initialized(driver):
34-
"""Test that the webextension module is initialized properly."""
35-
assert driver.webextension is not None
36-
37-
38-
@pytest.mark.xfail_chrome
39-
@pytest.mark.xfail_edge
40-
def test_install_extension_path(driver, pages):
41-
"""Test installing an extension from a directory path."""
42-
path = os.path.join(extensions, EXTENSION_PATH)
33+
def install_extension(driver, **kwargs):
34+
result = driver.webextension.install(**kwargs)
35+
assert result.get("extension") == EXTENSION_ID
36+
return result
4337

44-
ex_in = driver.webextension.install(path=path)
45-
assert ex_in.get("extension") == EXTENSION_ID
4638

39+
def verify_extension_injection(driver, pages):
4740
pages.load("blank.html")
4841
injected = WebDriverWait(driver, timeout=2).until(
4942
lambda dr: dr.find_element(By.ID, "webextensions-selenium-example")
5043
)
5144
assert injected.text == "Content injected by webextensions-selenium-example"
5245

53-
driver.webextension.uninstall(ex_in)
46+
47+
def uninstall_extension_and_verify_extension_uninstalled(driver, extension_info):
48+
driver.webextension.uninstall(extension_info)
5449

5550
context_id = driver.current_window_handle
5651
driver.browsing_context.reload(context_id)
5752
assert len(driver.find_elements(By.ID, "webextensions-selenium-example")) == 0
5853

5954

55+
def test_webextension_initialized(driver):
56+
"""Test that the webextension module is initialized properly."""
57+
assert driver.webextension is not None
58+
59+
6060
@pytest.mark.xfail_chrome
6161
@pytest.mark.xfail_edge
62-
def test_install_archive_extension_path(driver, pages):
63-
"""Test installing an extension from an archive path."""
64-
path = os.path.join(extensions, EXTENSION_ARCHIVE_PATH)
62+
def test_install_extension_path(driver, pages):
63+
"""Test installing an extension from a directory path."""
64+
path = os.path.join(extensions, EXTENSION_PATH)
6565

66-
ex = driver.webextension.install(archive_path=path)
67-
assert ex.get("extension") == EXTENSION_ID
66+
ext_info = install_extension(driver, path=path)
67+
verify_extension_injection(driver, pages)
68+
uninstall_extension_and_verify_extension_uninstalled(driver, ext_info)
6869

69-
pages.load("blank.html")
70-
injected = WebDriverWait(driver, timeout=2).until(
71-
lambda dr: dr.find_element(By.ID, "webextensions-selenium-example")
72-
)
73-
assert injected.text == "Content injected by webextensions-selenium-example"
74-
75-
driver.webextension.uninstall(ex)
7670

77-
context_id = driver.current_window_handle
78-
driver.browsing_context.reload(context_id)
71+
@pytest.mark.xfail_chrome
72+
@pytest.mark.xfail_edge
73+
def test_install_archive_extension_path(driver, pages):
74+
"""Test installing an extension from an archive path."""
75+
path = os.path.join(extensions, EXTENSION_ARCHIVE_PATH)
7976

80-
assert len(driver.find_elements(By.ID, "webextensions-selenium-example")) == 0
77+
ext_info = install_extension(driver, archive_path=path)
78+
verify_extension_injection(driver, pages)
79+
uninstall_extension_and_verify_extension_uninstalled(driver, ext_info)
8180

8281

8382
@pytest.mark.xfail_chrome
@@ -89,23 +88,12 @@ def test_install_base64_extension_path(driver, pages):
8988
with open(path, "rb") as file:
9089
base64_encoded = base64.b64encode(file.read()).decode("utf-8")
9190

92-
ex = driver.webextension.install(base64_value=base64_encoded)
93-
assert ex.get("extension") == EXTENSION_ID
94-
95-
pages.load("blank.html")
96-
97-
# TODO: the extension is installed but the content script is not injected, check and fix
98-
# injected = WebDriverWait(driver, timeout=2).until(
99-
# lambda dr: dr.find_element(By.ID, "webextensions-selenium-example")
100-
# )
101-
# assert injected.text == "Content injected by webextensions-selenium-example"
91+
ext_info = install_extension(driver, base64_value=base64_encoded)
10292

103-
driver.webextension.uninstall(ex)
93+
# TODO: the extension is installed but the script is not injected, check and fix
94+
# verify_extension_injection(driver, pages)
10495

105-
context_id = driver.current_window_handle
106-
driver.browsing_context.reload(context_id)
107-
108-
assert len(driver.find_elements(By.ID, "webextensions-selenium-example")) == 0
96+
uninstall_extension_and_verify_extension_uninstalled(driver, ext_info)
10997

11098

11199
@pytest.mark.xfail_chrome
@@ -114,21 +102,9 @@ def test_install_unsigned_extension(driver, pages):
114102
"""Test installing an unsigned extension."""
115103
path = os.path.join(extensions, "webextensions-selenium-example")
116104

117-
ex = driver.webextension.install(path=path)
118-
assert ex.get("extension") == EXTENSION_ID
119-
120-
pages.load("blank.html")
121-
injected = WebDriverWait(driver, timeout=2).until(
122-
lambda dr: dr.find_element(By.ID, "webextensions-selenium-example")
123-
)
124-
assert injected.text == "Content injected by webextensions-selenium-example"
125-
126-
driver.webextension.uninstall(ex)
127-
128-
context_id = driver.current_window_handle
129-
driver.browsing_context.reload(context_id)
130-
131-
assert len(driver.find_elements(By.ID, "webextensions-selenium-example")) == 0
105+
ext_info = install_extension(driver, path=path)
106+
verify_extension_injection(driver, pages)
107+
uninstall_extension_and_verify_extension_uninstalled(driver, ext_info)
132108

133109

134110
@pytest.mark.xfail_chrome
@@ -137,16 +113,8 @@ def test_install_with_extension_id_uninstall(driver, pages):
137113
"""Test uninstalling an extension using just the extension ID."""
138114
path = os.path.join(extensions, EXTENSION_PATH)
139115

140-
ex = driver.webextension.install(path=path)
141-
extension_id = ex.get("extension")
142-
assert extension_id == EXTENSION_ID
143-
144-
pages.load("blank.html")
116+
ext_info = install_extension(driver, path=path)
117+
extension_id = ext_info.get("extension")
145118

146119
# Uninstall using the extension ID
147-
driver.webextension.uninstall(extension_id)
148-
149-
context_id = driver.current_window_handle
150-
driver.browsing_context.reload(context_id)
151-
152-
assert len(driver.find_elements(By.ID, "webextensions-selenium-example")) == 0
120+
uninstall_extension_and_verify_extension_uninstalled(driver, extension_id)

0 commit comments

Comments
 (0)