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)