Revision 5ed09841
Added by koszko over 1 year ago
| test/test_integration.py | ||
|---|---|---|
| 18 | 18 |
# CC0 1.0 Universal License for more details. |
| 19 | 19 |
|
| 20 | 20 |
import pytest |
| 21 |
import re |
|
| 22 |
|
|
| 21 | 23 |
from selenium.webdriver.support.ui import WebDriverWait |
| 24 |
from selenium.common.exceptions import NoSuchElementException |
|
| 25 |
|
|
| 26 |
extract_base_url_re = re.compile(r'^(.*)manifest.json$') |
|
| 27 |
|
|
| 28 |
def get_extension_base_url(driver): |
|
| 29 |
""" |
|
| 30 |
Extension's internall UUID is not directly exposed in Selenium. Instead, we |
|
| 31 |
can navigate to about:debugging and inspect the manifest URL present there |
|
| 32 |
to get the base url like: |
|
| 33 |
moz-extension://b225c78f-d108-4caa-8406-f38b37d8dee5/ |
|
| 34 |
which can then be used to navigate to extension-bundled pages. |
|
| 35 |
""" |
|
| 36 |
driver.implicitly_wait(10) |
|
| 37 |
try: |
|
| 38 |
# For newer Firefoxes |
|
| 39 |
driver.get('about:debugging#/runtime/this-firefox')
|
|
| 40 |
manifest_link = driver.find_element_by_class_name('qa-manifest-url')
|
|
| 41 |
except NoSuchElementException: |
|
| 42 |
driver.get("about:debugging#addons")
|
|
| 43 |
manifest_link = driver.find_element_by_class_name('manifest-url')
|
|
| 44 |
driver.implicitly_wait(0) |
|
| 45 |
|
|
| 46 |
manifest_url = manifest_link.get_attribute('href')
|
|
| 47 |
return extract_base_url_re.match(manifest_url).group(1) |
|
| 22 | 48 |
|
| 23 | 49 |
@pytest.mark.usefixtures('haketilo')
|
| 24 | 50 |
def test_integration(driver): |
| 25 |
#from time import sleep |
|
| 26 |
#sleep(100000) |
|
| 51 |
""" |
|
| 52 |
Verify that the entire extension functions properly. Also verify bunlded |
|
| 53 |
default settings get loaded properly. |
|
| 54 |
""" |
|
| 55 |
base_url = get_extension_base_url(driver) |
|
| 56 |
driver.get(base_url + 'html/settings.html') |
|
| 57 |
|
|
| 58 |
for tab_head_id, item_text in [ |
|
| 59 |
('resources_head', 'Haketilo demonstrational script'),
|
|
| 60 |
('mappings_head', 'Haketilo demonstrational message'),
|
|
| 61 |
]: |
|
| 62 |
driver.find_element_by_id(tab_head_id).click() |
|
| 63 |
lst = driver.find_element_by_css_selector('.active_tab .item_list')
|
|
| 64 |
assert lst.is_displayed() |
|
| 65 |
assert item_text in lst.text |
|
| 66 |
|
|
| 67 |
driver.find_element_by_id('repos_head').click()
|
|
| 68 |
lst = driver.find_element_by_css_selector('.active_tab .text_entries')
|
|
| 69 |
assert 'https://hydrilla.koszko.org/api_v1' in lst.text |
|
| 27 | 70 |
|
| 28 |
# TODO!!! |
|
| 29 |
pass |
|
| 71 |
# TODO: do some more tests, including popup interaction and repository |
|
| 72 |
# querying |
|
Also available in: Unified diff
fix loading initial data and verify it in automated tests