File indexing completed on 2024-04-21 05:26:58

0001 #!/usr/bin/env python3
0002 
0003 # SPDX-License-Identifier: MIT
0004 # SPDX-FileCopyrightText: 2016 Microsoft Corporation. All rights reserved.
0005 # SPDX-FileCopyrightText: 2021-2022 Harald Sitter <sitter@kde.org>
0006 
0007 import unittest
0008 from typing import Final
0009 
0010 from appium import webdriver
0011 from appium.options.common.base import AppiumOptions
0012 from appium.webdriver.common.appiumby import AppiumBy
0013 from selenium.webdriver.support.ui import WebDriverWait
0014 
0015 WIDGET_ID: Final = "org.kde.plasma.calculator"
0016 
0017 
0018 class SimpleCalculatorTests(unittest.TestCase):
0019 
0020     @classmethod
0021     def setUpClass(cls):
0022         options = AppiumOptions()
0023         options.set_capability("app", f"plasmawindowed -p org.kde.plasma.nano {WIDGET_ID}")
0024         options.set_capability("environ", {
0025             "QT_FATAL_WARNINGS": "1",
0026             "QT_LOGGING_RULES": "qt.accessibility.atspi.warning=false;kf.plasma.core.warning=false;kf.windowsystem.warning=false;kf.kirigami.platform.warning=false;kf.coreaddons.warning=false",
0027         })
0028         options.set_capability("timeouts", {'implicit': 10000})
0029         cls.driver = webdriver.Remote(command_executor='http://127.0.0.1:4723', options=options)
0030 
0031     def setUp(self):
0032         self.driver.find_element(by=AppiumBy.NAME, value="AC").click()
0033         wait = WebDriverWait(self.driver, 5)
0034         wait.until(lambda x: self.getresults() == '0')
0035 
0036     def tearDown(self):
0037         if not self._outcome.result.wasSuccessful():
0038             self.driver.get_screenshot_as_file("failed_test_shot_{}.png".format(self.id()))
0039 
0040     @classmethod
0041     def tearDownClass(self):
0042         self.driver.quit()
0043 
0044     def getresults(self):
0045         displaytext = self.driver.find_element(by='description', value="Result").text
0046         return displaytext
0047 
0048     def test_initialize(self):
0049         self.driver.find_element(by=AppiumBy.NAME, value="AC").click()
0050         self.driver.find_element(by=AppiumBy.NAME, value="7").click()
0051         self.assertEqual(self.getresults(), "7")
0052 
0053     def test_addition(self):
0054         self.driver.find_element(by=AppiumBy.NAME, value="1").click()
0055         self.driver.find_element(by=AppiumBy.NAME, value="+").click()
0056         self.driver.find_element(by=AppiumBy.NAME, value="7").click()
0057         self.driver.find_element(by=AppiumBy.NAME, value="=").click()
0058         self.assertEqual(self.getresults(), "8")
0059 
0060     def test_combination(self):
0061         self.driver.find_element(by=AppiumBy.NAME, value="7").click()
0062         self.driver.find_element(by=AppiumBy.NAME, value="×").click()
0063         self.driver.find_element(by=AppiumBy.NAME, value="9").click()
0064         self.driver.find_element(by=AppiumBy.NAME, value="+").click()
0065         self.driver.find_element(by=AppiumBy.NAME, value="1").click()
0066         self.driver.find_element(by=AppiumBy.NAME, value="=").click()
0067         self.driver.find_element(by=AppiumBy.NAME, value="÷").click()
0068         self.driver.find_element(by=AppiumBy.NAME, value="8").click()
0069         self.driver.find_element(by=AppiumBy.NAME, value="=").click()
0070         self.assertEqual(self.getresults(), "8")
0071 
0072     def test_division(self):
0073         self.driver.find_element(by=AppiumBy.NAME, value="8").click()
0074         self.driver.find_element(by=AppiumBy.NAME, value="8").click()
0075         self.driver.find_element(by=AppiumBy.NAME, value="÷").click()
0076         self.driver.find_element(by=AppiumBy.NAME, value="1").click()
0077         self.driver.find_element(by=AppiumBy.NAME, value="1").click()
0078         self.driver.find_element(by=AppiumBy.NAME, value="=").click()
0079         self.assertEqual(self.getresults(), "8")
0080 
0081     def test_multiplication(self):
0082         self.driver.find_element(by=AppiumBy.NAME, value="9").click()
0083         self.driver.find_element(by=AppiumBy.NAME, value="×").click()
0084         self.driver.find_element(by=AppiumBy.NAME, value="8").click()
0085         self.driver.find_element(by=AppiumBy.NAME, value="=").click()
0086         self.assertEqual(self.getresults(), "72")
0087 
0088     def test_subtraction(self):
0089         self.driver.find_element(by=AppiumBy.NAME, value="9").click()
0090         self.driver.find_element(by=AppiumBy.NAME, value="-").click()
0091         self.driver.find_element(by=AppiumBy.NAME, value="1").click()
0092         self.driver.find_element(by=AppiumBy.NAME, value="=").click()
0093         self.assertEqual(self.getresults(), "8")
0094 
0095 
0096 if __name__ == '__main__':
0097     unittest.main()