File indexing completed on 2024-05-05 17:43:16
0001 #!/usr/bin/env python3 0002 0003 # SPDX-License-Identifier: MIT 0004 # SPDX-FileCopyrightText: 2021-2022 Harald Sitter <sitter@kde.org> 0005 # SPDX-FileCopyrightText: 2023 Marco Martin <mart@kde.org> 0006 0007 import subprocess 0008 import sys 0009 import unittest 0010 0011 from appium import webdriver 0012 from appium.options.common.base import AppiumOptions 0013 from appium.webdriver.common.appiumby import AppiumBy 0014 0015 0016 class LogoutGreeterTests(unittest.TestCase): 0017 0018 def setUp(self): 0019 self.proc = subprocess.Popen(["{}/ksmserver-logout-greeter".format(sys.argv[1]), "--windowed"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) 0020 options = AppiumOptions() 0021 options.set_capability("app", str(self.proc.pid)) 0022 options.set_capability("timeouts", {'implicit': 10000}) 0023 self.driver = webdriver.Remote(command_executor='http://127.0.0.1:4723', options=options) 0024 0025 def tearDown(self): 0026 self.driver.quit() 0027 self.assertEqual(self.proc.returncode != None, True) 0028 try: 0029 self.proc.terminate(timeout=5) 0030 except subprocess.TimeoutExpired: 0031 self.proc.kill() 0032 if not self._outcome.result.wasSuccessful(): 0033 self.driver.get_screenshot_as_file(f"failed_test_shot_logoutgreetertest_{self.id()}.png") 0034 0035 def assertStdErrLine(self, expected): 0036 out, err = self.proc.communicate() 0037 errLines = err.splitlines() 0038 self.assertEqual(expected, errLines[(len(errLines) - 1)].decode('UTF-8')) 0039 0040 def test_sleep(self): 0041 self.driver.find_element(by=AppiumBy.NAME, value="Sleep").click() 0042 self.assertStdErrLine("suspend") 0043 0044 def test_hibernate(self): 0045 self.driver.find_element(by=AppiumBy.NAME, value="Hibernate").click() 0046 self.assertStdErrLine("hibernate") 0047 0048 def test_restart(self): 0049 self.driver.find_element(by=AppiumBy.NAME, value="Restart").click() 0050 self.assertStdErrLine("reboot") 0051 0052 def test_restart(self): 0053 self.driver.find_element(by=AppiumBy.NAME, value="Shut Down").click() 0054 self.assertStdErrLine("shutdown") 0055 0056 0057 if __name__ == '__main__': 0058 suite = unittest.TestLoader().loadTestsFromTestCase(LogoutGreeterTests) 0059 unittest.TextTestRunner(verbosity=2).run(suite)