Skip to content

Commit 6a0c67a

Browse files
committed
Merge branch 'main' into as/tls-v1.2-protocol
2 parents 698fd99 + 1579d48 commit 6a0c67a

8 files changed

+180
-7
lines changed

modules/data/about_addons.components.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,17 @@
3939
"selectorData": "button[data-l10n-id='install-theme-button']",
4040
"strategy": "css",
4141
"groups": []
42+
},
43+
44+
"languages-addon-list": {
45+
"selectorData": "locale-enabled-section",
46+
"strategy": "class",
47+
"groups": []
48+
},
49+
50+
"languages-addon-list-card": {
51+
"selectorData": "addon-card",
52+
"strategy": "tag",
53+
"groups": []
4254
}
4355
}

modules/data/about_prefs.components.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,5 +250,11 @@
250250
"selectorData": "contentBlockingFingerprintingProtectionCheckbox",
251251
"strategy": "id",
252252
"groups": []
253+
},
254+
255+
"language-dropdown": {
256+
"selectorData": "primaryBrowserLocale",
257+
"strategy": "id",
258+
"groups": []
253259
}
254260
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
{
2+
"language-addons-title": {
3+
"selectorData": "Card-header-text",
4+
"strategy": "class",
5+
"groups": []
6+
},
7+
8+
"language-addons-row": {
9+
"selectorData": "tr[class='{name}']",
10+
"strategy": "css",
11+
"groups": []
12+
},
13+
14+
"language-addons-row-link": {
15+
"selectorData": "a",
16+
"strategy": "tag",
17+
"groups": []
18+
},
19+
20+
"language-addons-subpage-add-to-firefox": {
21+
"selectorData": "div[class='AMInstallButton AMInstallButton--noDownloadLink']",
22+
"strategy": "css",
23+
"groups": []
24+
},
25+
26+
"language-install-popup-add": {
27+
"selectorData": "button[class='popup-notification-primary-button primary footer-button']",
28+
"strategy": "css",
29+
"groups": [
30+
"doNotCache"
31+
]
32+
},
33+
34+
"language-addons-subpage-header": {
35+
"selectorData": "AddonTitle",
36+
"strategy": "class",
37+
"groups": []
38+
}
39+
}

modules/page_object_about_prefs.py

Lines changed: 8 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,13 @@ 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(
63+
reference=matching_menuitems[0]
64+
)
65+
else:
66+
matching_menuitems[0].click()
67+
self.wait.until(EC.element_to_be_selected(matching_menuitems[0]))
6368
return self
6469
else:
6570
raise ValueError("More than one menu item matched search string")

modules/page_object_addons_mozilla_org.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,35 @@ def install_recommended_theme(self) -> BasePage:
2424
self.driver.find_element(By.CSS_SELECTOR, "button[label='Add']").click()
2525
self.driver.find_element(By.CSS_SELECTOR, "button[label='Okay']").click()
2626
return self
27+
28+
29+
class AmoLanguages(BasePage):
30+
"""
31+
POM for AMO Languages
32+
"""
33+
34+
URL_TEMPLATE = "https://addons.mozilla.org/en-US/firefox/language-tools/"
35+
36+
def wait_for_language_page_to_load(self) -> BasePage:
37+
"""
38+
Waits until the language page is loaded
39+
"""
40+
self.custom_wait(timeout=20).until(
41+
lambda _: self.get_element("language-addons-title") is not None
42+
)
43+
return self
44+
45+
def find_language_row_and_navigate(self, language_label: str) -> BasePage:
46+
"""
47+
Finds the row that corresponds with the language_label and clicks into it
48+
"""
49+
language_row = self.get_element("language-addons-row", labels=[language_label])
50+
self.get_element(
51+
"language-addons-row-link", parent_element=language_row
52+
).click()
53+
54+
# ensuring the subpage of the language is loaded
55+
self.custom_wait(timeout=20).until(
56+
lambda _: self.get_element("language-addons-subpage-header") is not None
57+
)
58+
return self

tests/address_bar_and_search/test_sap_google_adclick.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import time
22

3-
import pytest
43
from selenium.webdriver import Firefox
54

65
from modules.browser_object_navigation import Navigation
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
import pytest
2+
from selenium.webdriver import Firefox
3+
4+
from modules.page_object import AboutAddons, AboutPrefs, AmoLanguages
5+
6+
LANGUAGES = [
7+
(
8+
"Italiano",
9+
"LanguageTools-table-row LanguageTools-lang-it",
10+
"it",
11+
"Imposta alternative…",
12+
)
13+
]
14+
15+
16+
@pytest.mark.parametrize(
17+
"drop_down_name, language_label, shortform, localized_text", LANGUAGES
18+
)
19+
def test_language_pack_install_from_addons(
20+
driver: Firefox,
21+
drop_down_name: str,
22+
language_label: str,
23+
shortform: str,
24+
localized_text: str,
25+
):
26+
"""
27+
C1549408: verify that installing a language pack from about:addons will correctly change the locale
28+
"""
29+
# instantiate objects
30+
amo_languages = AmoLanguages(driver).open()
31+
32+
# ensuring the page was loaded
33+
amo_languages.wait_for_language_page_to_load()
34+
35+
# grab the appropriate link and wait until the page is loaded
36+
amo_languages.find_language_row_and_navigate(language_label)
37+
amo_languages.get_element("language-addons-subpage-add-to-firefox").click()
38+
39+
with driver.context(driver.CONTEXT_CHROME):
40+
# click one for "Add"
41+
amo_languages.get_element("language-install-popup-add").click()
42+
# click second time for "Okay", the button is not cached which allows for two different buttons to be different
43+
amo_languages.get_element("language-install-popup-add").click()
44+
45+
# ensure that the about:addons has the language listed
46+
about_addons = AboutAddons(driver).open()
47+
about_addons.choose_sidebar_option("locale")
48+
addon_list_parent = about_addons.get_element("languages-addon-list")
49+
addon_language_cards = about_addons.get_element(
50+
"languages-addon-list-card", multiple=True, parent_element=addon_list_parent
51+
)
52+
53+
# making sure that 1 language was installed
54+
assert len(addon_language_cards) == 1
55+
56+
# perform language changing and assertions in about_prefs
57+
about_prefs = AboutPrefs(driver, category="general").open()
58+
language_dropdown = about_prefs.get_element("language-dropdown")
59+
dropdown = about_prefs.Dropdown(page=about_prefs, root=language_dropdown)
60+
dropdown.select_option(drop_down_name, double_click=True)
61+
62+
about_prefs.custom_wait(timeout=15).until(
63+
lambda _: about_prefs.get_element("html-root").get_attribute("lang")
64+
== shortform
65+
)
66+
assert (
67+
about_prefs.get_element("language-set-alternatives-button").get_attribute(
68+
"label"
69+
)
70+
== localized_text
71+
)

tests/language_packs/test_language_pack_install_preferences.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
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+
10+
@pytest.mark.parametrize("shortform, localized_text", LANGUAGES)
11+
def test_language_pack_install_about_preferences(
12+
driver: Firefox, shortform: str, localized_text: str
13+
):
814
"""
915
C1549409: language packs can be installed from about:preferences and firefox is correctly localized
1016
"""
@@ -49,5 +55,8 @@ def test_language_pack_install_about_preferences(driver: Firefox):
4955

5056
# final asserts to ensure language is set
5157
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…"
58+
about_prefs.custom_wait(timeout=15).until(
59+
lambda _: about_prefs.get_element("html-root").get_attribute("lang")
60+
== shortform
61+
)
62+
assert alternative_button.get_attribute("label") == localized_text

0 commit comments

Comments
 (0)