Skip to content

Commit

Permalink
[py] add tests for Firefox addons
Browse files Browse the repository at this point in the history
  • Loading branch information
titusfortner committed Sep 13, 2022
1 parent 2489973 commit f5d052e
Show file tree
Hide file tree
Showing 3 changed files with 94 additions and 25 deletions.
2 changes: 2 additions & 0 deletions common/extensions/BUILD.bazel
Expand Up @@ -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__",
Expand Down
25 changes: 17 additions & 8 deletions py/BUILD.bazel
Expand Up @@ -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(
Expand Down Expand Up @@ -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 = [
Expand Down Expand Up @@ -376,9 +389,6 @@ py_test_suite(
"--instafail",
"--driver=firefox",
],
data = [
"//common/extensions",
],
tags = [
"no-sandbox",
],
Expand All @@ -401,7 +411,6 @@ py_test_suite(
"--driver=remote",
],
data = [
"//common/extensions",
"//java/src/org/openqa/selenium/grid:selenium_server_deploy.jar",
],
tags = [
Expand Down
92 changes: 75 additions & 17 deletions py/test/selenium/webdriver/firefox/ff_installs_addons_tests.py
Expand Up @@ -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

0 comments on commit f5d052e

Please sign in to comment.