Skip to content

Commit ade9133

Browse files
committed
parameterize and comment
1 parent 2155652 commit ade9133

File tree

4 files changed

+40
-15
lines changed

4 files changed

+40
-15
lines changed

modules/data/about_prefs.components.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,5 +220,11 @@
220220
"selectorData": "menuitem[data-l10n-id=\"home-mode-choice-default-fx\"]",
221221
"strategy": "css",
222222
"groups": []
223+
},
224+
225+
"language-dropdown": {
226+
"selectorData": "primaryBrowserLocale",
227+
"strategy": "id",
228+
"groups": []
223229
}
224230
}

modules/page_object_about_prefs.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def __init__(self, page, **kwargs):
4646
def loaded(self):
4747
return self.root if EC.element_to_be_clickable(self.root) else False
4848

49-
def select_option(self, option_name: str):
49+
def select_option(self, option_name: str, double_click=False):
5050
"""Select an option in the dropdown. Does not return self."""
5151
if not self.dropmarker.get_attribute("open") == "true":
5252
self.root.click()
@@ -58,8 +58,11 @@ def select_option(self, option_name: str):
5858
if len(matching_menuitems) == 0:
5959
return False
6060
elif len(matching_menuitems) == 1:
61-
matching_menuitems[0].click()
62-
self.wait.until(EC.element_to_be_selected(matching_menuitems[0]))
61+
if double_click:
62+
AboutPrefs(self.driver).double_click(reference=matching_menuitems[0])
63+
else:
64+
matching_menuitems[0].click()
65+
self.wait.until(EC.element_to_be_selected(matching_menuitems[0]))
6366
return self
6467
else:
6568
raise ValueError("More than one menu item matched search string")
Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
1+
import pytest
12
from selenium.webdriver import Firefox
23

3-
# from modules.page_object import AboutAddons, AboutPrefs
4-
from modules.page_object import AboutAddons, GenericPage
4+
from modules.page_object import AboutAddons, GenericPage, AboutPrefs
55

6-
# from modules.util import Utilities
76

87
LANGUAGE_ADDONS_LINK = "https://addons.mozilla.org/en-US/firefox/language-tools/"
8+
LANGUAGES = [("Italiano", "it", "Imposta alternative…")]
99

10-
11-
def test_language_pack_install_from_addons(driver: Firefox):
10+
@pytest.mark.parametrize("drop_down_name, shortform, localized_text", LANGUAGES)
11+
def test_language_pack_install_from_addons(driver: Firefox, drop_down_name: str, shortform: str, localized_text: str):
1212
"""
1313
C1549408: verify that installing a language pack from about:addons will correctly change the locale
1414
"""
15-
# about_prefs = AboutPrefs(driver, category="general")
15+
# declaring objects and navigating
1616
generic_page = GenericPage(driver)
17-
# util = Utilities()
18-
1917
driver.get(LANGUAGE_ADDONS_LINK)
2018

19+
# ensuring the page was loaded
2120
generic_page.custom_wait(timeout=20).until(
2221
lambda _: generic_page.get_element("language-addons-title") is not None
2322
)
2423

24+
# grab the appropriate link and wait until the page is loaded
2525
language_row = generic_page.get_element("language-addons-row")
2626
generic_page.get_element(
2727
"language-addons-row-link", parent_element=language_row
@@ -38,13 +38,24 @@ def test_language_pack_install_from_addons(driver: Firefox):
3838
# click second time for "Okay", the button is not cached which allows for two different buttons to be different
3939
generic_page.get_element("language-install-popup-add").click()
4040

41+
# ensure that the about:addons has the language listed
4142
about_addons = AboutAddons(driver).open()
4243
about_addons.choose_sidebar_option("locale")
43-
4444
addon_list_parent = about_addons.get_element("languages-addon-list")
4545
addon_language_cards = about_addons.get_element(
4646
"languages-addon-list-card", multiple=True, parent_element=addon_list_parent
4747
)
4848

4949
# making sure that 1 language was installed
5050
assert len(addon_language_cards) == 1
51+
52+
# perform language changing and assertions in about_prefs
53+
about_prefs = AboutPrefs(driver, category="general").open()
54+
language_dropdown = about_prefs.get_element("language-dropdown")
55+
dropdown = about_prefs.Dropdown(page=about_prefs, root=language_dropdown)
56+
dropdown.select_option(drop_down_name, double_click=True)
57+
58+
about_prefs.custom_wait(timeout=15).until(
59+
lambda _: about_prefs.get_element("html-root").get_attribute("lang") == shortform
60+
)
61+
assert about_prefs.get_element("language-set-alternatives-button").get_attribute("label") == localized_text

tests/language_packs/test_language_pack_install_preferences.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1+
import pytest
12
from selenium.webdriver import Firefox
23

34
from modules.page_object import AboutPrefs
45
from modules.util import BrowserActions
56

7+
LANGUAGES = [("it", "Imposta alternative…")]
68

7-
def test_language_pack_install_about_preferences(driver: Firefox):
9+
@pytest.mark.parametrize("shortform, localized_text", LANGUAGES)
10+
def test_language_pack_install_about_preferences(driver: Firefox, shortform: str, localized_text: str):
811
"""
912
C1549409: language packs can be installed from about:preferences and firefox is correctly localized
1013
"""
@@ -49,5 +52,7 @@ def test_language_pack_install_about_preferences(driver: Firefox):
4952

5053
# final asserts to ensure language is set
5154
ba.switch_to_content_context()
52-
assert about_prefs.get_element("html-root").get_attribute("lang") == "it"
53-
assert alternative_button.get_attribute("label") == "Imposta alternative…"
55+
about_prefs.custom_wait(timeout=15).until(
56+
lambda _: about_prefs.get_element("html-root").get_attribute("lang") == shortform
57+
)
58+
assert alternative_button.get_attribute("label") == localized_text

0 commit comments

Comments
 (0)