File indexing completed on 2024-04-28 09:21:25
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()