/** * Starts and runs the test suite. * * @return $this|TestSuite Same instance for chained method calls. */ public function run() { $this->_applyMaximizedWindowSetting()->_applyImplicitlyWaitTimeoutSetting()->_applyPageLoadTimeoutSetting()->_applyScriptTimeoutSetting()->_addCasesToCollection()->_determineSuiteType()->sqlLogger->startSuite(); foreach ($this->testCaseCollection as $testCase) { /** @var TestCase $testCase */ $this->suiteSettings->setCurrentTestCase($testCase); $testCase->run(); } $this->sqlLogger->endSuite(); if (!$this->errorMailSend && $this->failed && $this->suiteSettings->isSendErrorMail()) { $this->_sendErrorMail(); } if ($this->isFailed() && $this->getSuiteSettings()->isReferenceImageSuite()) { $this->output('Error in reference image suite occurred, truncate reference images directory'); $client = $this->seleniumFactory->createClientEmulator(); $this->_truncateDirectory($client->getExpectedImagesDirectory()); $from = $this->suiteSettings->getSendMailFrom(); $to = $this->suiteSettings->getSendMailTo(); $reply = $this->suiteSettings->getSendMailReplyTo(); if ($to === '' || $reply === '' || $from === '') { $this->output('Invalid E-Mail credentials, not possible to send the error mail'); return $this; } $subject = '[Selenium] Anlegen der Referenzbilder fehlgeschlagen'; $header = 'From: ' . $from . "\r\n" . 'Reply-To: ' . $reply . "\r\n" . 'Content-Type: text/plain; charset=UTF-8"'; $message = 'Es ist ein Fehler beim anlegen der Referenzbilder aufgetreten.'; $message .= "\n" . 'Bitte führe folgende Befehle aus, um sie erneut anzulegen.'; $message .= "\n" . 'ssh ci-runner (zum Login auf den CI-Server)'; $message .= "\n" . 'php /var/www/selenium-statistics/launcher/start rebuild_references gxci/selenium_builds/' . $this->suiteSettings->getBranch() . ' ci_' . str_replace('.', '_', $this->suiteSettings->getBranch()) . '_TEST ' . $this->suiteSettings->getBranch(); mail($to, $subject, $message, $header); $this->output('Reference Suite error E-Mail send!'); return $this; } $this->_closeWebDriver(); return $this; }