digitalclocktest.py | digitalclocktest.py | |||
---|---|---|---|---|
#!/usr/bin/env python3 | #!/usr/bin/env python3 | |||
# SPDX-License-Identifier: MIT | # SPDX-License-Identifier: MIT | |||
# SPDX-FileCopyrightText: 2021-2022 Harald Sitter <sitter@kde.org> | # SPDX-FileCopyrightText: 2021-2022 Harald Sitter <sitter@kde.org> | |||
# SPDX-FileCopyrightText: 2023 Marco Martin <mart@kde.org> | # SPDX-FileCopyrightText: 2023 Marco Martin <mart@kde.org> | |||
import unittest | import unittest | |||
from datetime import date | ||||
from typing import Final | ||||
from appium import webdriver | from appium import webdriver | |||
from appium.options.common.base import AppiumOptions | ||||
from appium.webdriver.common.appiumby import AppiumBy | from appium.webdriver.common.appiumby import AppiumBy | |||
from selenium.webdriver.support.ui import WebDriverWait | ||||
from datetime import date | ||||
from dateutil.relativedelta import relativedelta | from dateutil.relativedelta import relativedelta | |||
import time | from selenium.webdriver.support.ui import WebDriverWait | |||
WIDGET_ID: Final = "org.kde.plasma.digitalclock" | ||||
class DigitalClockTests(unittest.TestCase): | class DigitalClockTests(unittest.TestCase): | |||
@classmethod | @classmethod | |||
def setUpClass(self): | def setUpClass(cls): | |||
desired_caps = {} | options = AppiumOptions() | |||
desired_caps["app"] = "plasmawindowed -p org.kde.plasma.nano org.kd | options.set_capability("app", f"plasmawindowed -p org.kde.plasma.na | |||
e.plasma.digitalclock" | no {WIDGET_ID}") | |||
desired_caps["timeouts"] = {'implicit': 10000} | options.set_capability("timeouts", {'implicit': 10000}) | |||
self.driver = webdriver.Remote( | cls.driver = webdriver.Remote(command_executor='http://127.0.0.1:47 | |||
command_executor='http://127.0.0.1:4723', | 23', options=options) | |||
desired_capabilities=desired_caps) | ||||
self.driver.implicitly_wait = 10 | ||||
# Open Applet | # Open Applet | |||
self.driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value="expan dApplet").click() | cls.driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value="expand Applet").click() | |||
def setUp(self): | def setUp(self): | |||
self.driver.find_element(by=AppiumBy.NAME, value="Today").click() | self.driver.find_element(by=AppiumBy.NAME, value="Today").click() | |||
self.assertEqual(self.compareMonthLabel(date.today()), True) | self.assertEqual(self.compareMonthLabel(date.today()), True) | |||
def tearDown(self): | def tearDown(self): | |||
if not self._outcome.result.wasSuccessful(): | if not self._outcome.result.wasSuccessful(): | |||
self.driver.get_screenshot_as_file("failed_test_shot_{}.png".fo rmat(self.id())) | self.driver.get_screenshot_as_file(f"failed_test_shot_digitalcl ocktest_{self.id()}.png") | |||
@classmethod | @classmethod | |||
def tearDownClass(self): | def tearDownClass(cls) -> None: | |||
self.driver.quit() | """ | |||
Make sure to terminate the driver again, lest it dangles. | ||||
""" | ||||
cls.driver.quit() | ||||
def assertResult(self, actual, expected): | def assertResult(self, actual, expected): | |||
wait = WebDriverWait(self.driver, 20) | wait = WebDriverWait(self.driver, 20) | |||
wait.until(lambda x: self.getresults() == expected) | wait.until(lambda x: self.getresults() == expected) | |||
self.assertEqual(self.getresults(), expected) | self.assertEqual(self.getresults(), expected) | |||
def compareMonthLabel(self, dateToTest): | def compareMonthLabel(self, dateToTest): | |||
monthLabel = self.driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value="monthHeader") | monthLabel = self.driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value="monthHeader") | |||
today = date.today() | today = date.today() | |||
monthString = "" | monthString = "" | |||
skipping to change at line 75 | skipping to change at line 80 | |||
lastMonthDate = date.today() - relativedelta(months=1) | lastMonthDate = date.today() - relativedelta(months=1) | |||
self.driver.find_element(by=AppiumBy.NAME, value="Previous Month"). click() | self.driver.find_element(by=AppiumBy.NAME, value="Previous Month"). click() | |||
wait = WebDriverWait(self.driver, 50) | wait = WebDriverWait(self.driver, 50) | |||
wait.until(lambda x: self.compareMonthLabel(lastMonthDate)) | wait.until(lambda x: self.compareMonthLabel(lastMonthDate)) | |||
self.assertEqual(self.compareMonthLabel(lastMonthDate), True) | self.assertEqual(self.compareMonthLabel(lastMonthDate), True) | |||
def test_months_view(self): | def test_months_view(self): | |||
dateAugust = date.today() | dateAugust = date.today() | |||
dateAugust = dateAugust.replace(month = 8); | dateAugust = dateAugust.replace(month=8) | |||
self.driver.find_element(by=AppiumBy.NAME, value="Months").click() | self.driver.find_element(by=AppiumBy.NAME, value="Months").click() | |||
self.driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value="calen darCell-{}-{}".format(dateAugust.year, dateAugust.month)).click() | self.driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value="calen darCell-{}-{}".format(dateAugust.year, dateAugust.month)).click() | |||
wait = WebDriverWait(self.driver, 50) | wait = WebDriverWait(self.driver, 50) | |||
wait.until(lambda x: self.compareMonthLabel(dateAugust)) | wait.until(lambda x: self.compareMonthLabel(dateAugust)) | |||
self.assertEqual(self.compareMonthLabel(dateAugust), True) | self.assertEqual(self.compareMonthLabel(dateAugust), True) | |||
def test_years_view(self): | def test_years_view(self): | |||
dateFuture = date.today() + relativedelta(years = 2) | dateFuture = date.today() + relativedelta(years=2) | |||
self.driver.find_element(by=AppiumBy.NAME, value="Years").click() | self.driver.find_element(by=AppiumBy.NAME, value="Years").click() | |||
self.driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value="calen darCell-{}".format(dateFuture.year)).click() | self.driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value="calen darCell-{}".format(dateFuture.year)).click() | |||
wait = WebDriverWait(self.driver, 50) | wait = WebDriverWait(self.driver, 50) | |||
wait.until(lambda x: self.compareMonthLabel(dateFuture)) | wait.until(lambda x: self.compareMonthLabel(dateFuture)) | |||
self.assertEqual(self.compareMonthLabel(dateFuture), True) | self.assertEqual(self.compareMonthLabel(dateFuture), True) | |||
if __name__ == '__main__': | if __name__ == '__main__': | |||
suite = unittest.TestLoader().loadTestsFromTestCase(DigitalClockTests) | suite = unittest.TestLoader().loadTestsFromTestCase(DigitalClockTests) | |||
End of changes. 11 change blocks. | ||||
18 lines changed or deleted | 24 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |