|
| 1 | +from appium.webdriver.webdriver import WebDriver |
| 2 | +from util.button import get_label |
| 3 | +from util.config import read_theme_config |
| 4 | +from util.message import ASSUMPTION_OUTDATED, CHANGE_NOT_SAVED, UI_NOT_UPDATED |
| 5 | +from util.window import find_element_by_id, find_elements_by_id, open_theme_config |
| 6 | + |
| 7 | +TEXT_FONT_FAMILY_ID = "TextFontFamily" |
| 8 | +FONT_HELVETICA = "Helvetica" |
| 9 | +FONT_SERIF = "serif" |
| 10 | +FONT_EMOJI = "Apple Color Emoji" |
| 11 | + |
| 12 | + |
| 13 | +def test_font_selection(driver: WebDriver, app: str): |
| 14 | + open_theme_config(driver) |
| 15 | + find_element_by_id(driver, "Font").click() |
| 16 | + |
| 17 | + def get_font_values() -> list[str]: |
| 18 | + return [ |
| 19 | + get_label(element) |
| 20 | + for element in find_elements_by_id(driver, TEXT_FONT_FAMILY_ID) |
| 21 | + ] |
| 22 | + |
| 23 | + def read_config_value() -> dict[str, str]: |
| 24 | + return read_theme_config(app)[f"Font/{TEXT_FONT_FAMILY_ID}"] |
| 25 | + |
| 26 | + font_button = find_element_by_id(driver, TEXT_FONT_FAMILY_ID) |
| 27 | + font_button.click() |
| 28 | + emoji_elements = find_elements_by_id(driver, FONT_EMOJI) |
| 29 | + assert len(emoji_elements) == 1, ASSUMPTION_OUTDATED |
| 30 | + |
| 31 | + search = find_element_by_id(driver, "search") |
| 32 | + search.click() |
| 33 | + search.send_keys("helvetica") |
| 34 | + emoji_elements = find_elements_by_id(driver, FONT_EMOJI) |
| 35 | + assert len(emoji_elements) == 0, UI_NOT_UPDATED |
| 36 | + |
| 37 | + find_element_by_id(driver, FONT_HELVETICA).click() |
| 38 | + find_element_by_id(driver, "select").click() |
| 39 | + assert get_font_values() == [FONT_HELVETICA], UI_NOT_UPDATED |
| 40 | + assert read_config_value() == {"0": FONT_HELVETICA}, CHANGE_NOT_SAVED |
| 41 | + |
| 42 | + find_element_by_id(driver, f"{TEXT_FONT_FAMILY_ID}_plus").click() |
| 43 | + find_elements_by_id(driver, TEXT_FONT_FAMILY_ID)[1].click() |
| 44 | + find_element_by_id(driver, "GenericFontFamiliesTab").click() |
| 45 | + find_element_by_id(driver, FONT_SERIF).click() |
| 46 | + find_element_by_id(driver, "select").click() |
| 47 | + assert get_font_values() == [FONT_HELVETICA, FONT_SERIF], UI_NOT_UPDATED |
| 48 | + assert read_config_value() == {"0": FONT_HELVETICA, "1": FONT_SERIF}, ( |
| 49 | + CHANGE_NOT_SAVED |
| 50 | + ) |
0 commit comments