diff --git a/common/extensions/BUILD.bazel b/common/extensions/BUILD.bazel index 72105685e0091..f3c42851d3646 100644 --- a/common/extensions/BUILD.bazel +++ b/common/extensions/BUILD.bazel @@ -17,6 +17,8 @@ filegroup( exports_files( [ "webextensions-selenium-example.xpi", + "webextensions-selenium-example.zip", + "webextensions-selenium-example-unsigned.zip", ], visibility = [ "//java/test/org/openqa/selenium/firefox:__pkg__", diff --git a/py/BUILD.bazel b/py/BUILD.bazel index 7f6ca945e3eaf..7a94b08f00b66 100644 --- a/py/BUILD.bazel +++ b/py/BUILD.bazel @@ -76,9 +76,21 @@ copy_file( ) copy_file( - name = "favourite_color", + name = "webextensions-selenium-example-xpi", src = "//common/extensions:webextensions-selenium-example.xpi", - out = "test/selenium/webdriver/firefox/webextensions-selenium-example.xpi", + out = "test/extensions/webextensions-selenium-example.xpi", +) + +copy_file( + name = "webextensions-selenium-example-zip", + src = "//common/extensions:webextensions-selenium-example.zip", + out = "test/extensions/webextensions-selenium-example.zip", +) + +copy_file( + name = "webextensions-selenium-example-unsigned-zip", + src = "//common/extensions:webextensions-selenium-example-unsigned.zip", + out = "test/extensions/webextensions-selenium-example-unsigned.zip", ) py_library( @@ -207,8 +219,9 @@ py_library( "setup.cfg", "test/selenium/webdriver/common/test_file.txt", "test/selenium/webdriver/common/test_file2.txt", - ":favourite_color", - + ":webextensions-selenium-example-xpi", + ":webextensions-selenium-example-zip", + ":webextensions-selenium-example-unsigned-zip", ], imports = ["."], deps = [ @@ -376,9 +389,6 @@ py_test_suite( "--instafail", "--driver=firefox", ], - data = [ - "//common/extensions", - ], tags = [ "no-sandbox", ], @@ -401,7 +411,6 @@ py_test_suite( "--driver=remote", ], data = [ - "//common/extensions", "//java/src/org/openqa/selenium/grid:selenium_server_deploy.jar", ], tags = [ diff --git a/py/test/selenium/webdriver/firefox/ff_installs_addons_tests.py b/py/test/selenium/webdriver/firefox/ff_installs_addons_tests.py index 3dc82e746468e..b13ed994e6ba1 100644 --- a/py/test/selenium/webdriver/firefox/ff_installs_addons_tests.py +++ b/py/test/selenium/webdriver/firefox/ff_installs_addons_tests.py @@ -16,32 +16,90 @@ # under the License. import os +import zipfile -from selenium.common.exceptions import WebDriverException +from selenium.webdriver.common.by import By +extensions = os.path.abspath("../../../../../../test/extensions/") -def test_install_addon_temporary(driver): - extension = os.path.join(os.path.dirname(os.path.abspath(__file__)), - 'webextensions-selenium-example.xpi') - id = driver.install_addon(extension, True) +def test_install_uninstall_signed_addon_xpi(driver, pages): + extension = os.path.join(extensions, "webextensions-selenium-example.xpi") + + id = driver.install_addon(extension) assert id == 'webextensions-selenium-example@example.com' + pages.load("blank.html") + injected = driver.find_element(By.ID, "webextensions-selenium-example") + assert injected.text == "Content injected by webextensions-selenium-example" + + driver.uninstall_addon(id) + driver.refresh() + assert len(driver.find_elements(By.ID, "webextensions-selenium-example")) == 0 -def test_install_addon(driver): - extension = os.path.join(os.path.dirname(os.path.abspath(__file__)), - 'webextensions-selenium-example.xpi') - id = driver.install_addon(extension, False) +def test_install_uninstall_signed_addon_zip(driver, pages): + extension = os.path.join(extensions, "webextensions-selenium-example.zip") + + id = driver.install_addon(extension) assert id == 'webextensions-selenium-example@example.com' + pages.load("blank.html") + injected = driver.find_element(By.ID, "webextensions-selenium-example") + assert injected.text == "Content injected by webextensions-selenium-example" -def test_uninstall_addon(driver): - extension = os.path.join(os.path.dirname(os.path.abspath(__file__)), - 'webextensions-selenium-example.xpi') + driver.uninstall_addon(id) + driver.refresh() + assert len(driver.find_elements(By.ID, "webextensions-selenium-example")) == 0 - id = driver.install_addon(extension) - try: - driver.uninstall_addon(id) - except WebDriverException as exc: - assert False, exc + +def test_install_uninstall_unsigned_addon_zip(driver, pages): + extension = os.path.join(extensions, 'webextensions-selenium-example-unsigned.zip') + + id = driver.install_addon(extension, temporary=True) + assert id == 'webextensions-selenium-example@example.com' + + pages.load("blank.html") + injected = driver.find_element(By.ID, "webextensions-selenium-example") + assert injected.text == "Content injected by webextensions-selenium-example" + + driver.uninstall_addon(id) + driver.refresh() + assert len(driver.find_elements(By.ID, "webextensions-selenium-example")) == 0 + + +def test_install_uninstall_signed_addon_dir(driver, pages): + zip = os.path.join(extensions, 'webextensions-selenium-example.zip') + + target = os.path.join(extensions, 'webextensions-selenium-example') + with zipfile.ZipFile(zip, 'r') as zip_ref: + zip_ref.extractall(target) + + id = driver.install_addon(target) + assert id == 'webextensions-selenium-example@example.com' + + pages.load("blank.html") + injected = driver.find_element(By.ID, "webextensions-selenium-example") + assert injected.text == "Content injected by webextensions-selenium-example" + + driver.uninstall_addon(id) + driver.refresh() + assert len(driver.find_elements(By.ID, "webextensions-selenium-example")) == 0 + + +def test_install_uninstall_unsigned_addon_dir(driver, pages): + zip = os.path.join(extensions, 'webextensions-selenium-example-unsigned.zip') + target = os.path.join(extensions, 'webextensions-selenium-example-unsigned') + with zipfile.ZipFile(zip, 'r') as zip_ref: + zip_ref.extractall(target) + + id = driver.install_addon(target, temporary=True) + assert id == 'webextensions-selenium-example@example.com' + + pages.load("blank.html") + injected = driver.find_element(By.ID, "webextensions-selenium-example") + assert injected.text == "Content injected by webextensions-selenium-example" + + driver.uninstall_addon(id) + driver.refresh() + assert len(driver.find_elements(By.ID, "webextensions-selenium-example")) == 0