3030extensions = 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