Browse Source

Merge remote-tracking branch 'origin/master'

bernhardbuhl 3 years ago
parent
commit
e71a87159b

+ 9 - 3
baangt/base/BrowserHandling/BrowserHandling.py

@@ -95,8 +95,9 @@ class BrowserDriver:
             if utils.anything2Boolean(mobileType):
                 self.browserData.driver = self._mobileConnectAppium(browserName, desired_app, mobileApp, mobile_app_setting)
             elif GC.BROWSER_FIREFOX == browserName:
-                self.browserData.driver  = self._browserFirefoxRun(browserName, lCurPath, browserProxy, randomProxy, desiredCapabilities)
+                self.browserData.driver = self._browserFirefoxRun(browserName, lCurPath, browserProxy, randomProxy, desiredCapabilities)
                 helper.browserHelper_startBrowsermobProxy(browserName=browserName, browserInstance=browserInstance, browserProxy=browserProxy)
+                self.bpid = self.browserData.driver.capabilities.get("moz:processID")
             elif GC.BROWSER_CHROME == browserName:
                 self.browserData.driver = self._browserChromeRun(browserName, lCurPath, browserProxy, randomProxy, desiredCapabilities)
                 helper.browserHelper_startBrowsermobProxy(browserName=browserName, browserInstance=browserInstance, browserProxy=browserProxy)
@@ -208,11 +209,16 @@ class BrowserDriver:
         self.statistics.update_teststep()
         try:
             if self.browserData.driver:
+                try:
+                    import signal
+                    os.kill(self.bpid, signal.SIGINT)
+                except Exception as ex:
+                    logger.info(ex)
                 self.browserData.driver.close()
-                self.browserData.driver.quit()
                 self.browserData.driver = None
+
         except Exception as ex:
-            logger.debug(ex)
+            logger.info(ex)
             pass  # If the driver is already dead, it's fine.
 
 

+ 6 - 0
baangt/base/TestRun/TestRun.py

@@ -25,6 +25,7 @@ from baangt.base.PathManagement import ManagedPaths
 from uuid import uuid4
 from baangt.base.RuntimeStatistics import Statistic
 from baangt.base.SendReports import Sender
+import signal
 
 logger = logging.getLogger("pyC")
 
@@ -70,6 +71,8 @@ class TestRun:
         # from anywhere within your custom code base.
         self.additionalExportTabs = {}
         self.statistics = Statistic()
+        signal.signal(signal.SIGINT, self.exit_signal_handler)
+        signal.signal(signal.SIGTERM, self.exit_signal_handler)
 
         # Initialize other values
         self.timing.takeTime(GC.TIMING_TESTRUN)               # Initialize Testrun Duration
@@ -79,6 +82,9 @@ class TestRun:
         if executeDirect:
             self.executeTestRun()
 
+    def exit_signal_handler(self, signal, frame):
+        self.browserFactory.teardown()
+
     def executeTestRun(self):
         self._initTestRunSettingsFromFile()  # Loads the globals*.json file
 

+ 4 - 1
baangt/ui/pyqt/uimain.py

@@ -526,7 +526,8 @@ class MainWindow(Ui_MainWindow):
             except Exception as e:
                 logger.warning(f"Tried to remove temporary file but seems to be not there: "
                                f"{self.directory}/{self.tempConfigFile}")
-            QtWidgets.QApplication.exit()
+            self.run_process.kill()
+            QtWidgets.QApplication.quit()
         else:
             self.run_process.terminate()
             self.run_process.waitForFinished(3000)
@@ -566,6 +567,8 @@ class MainWindow(Ui_MainWindow):
             # Add a fake Ctrl-C handler for avoid instant kill is this console
             win32api.SetConsoleCtrlHandler(None, True)
             win32console.GenerateConsoleCtrlEvent(ctrlEvent, 0)
+            sleep(1)
+            win32console.GenerateConsoleCtrlEvent(ctrlEvent, 0)
             win32console.FreeConsole()
         except win32api.error:
             return False