getModule('WPWebDriver'); try { $logEntries = array_slice( $wd->webDriver->manage()->getLog('browser'), -15 // Number of log entries to tail ); foreach($logEntries as $logEntry) { if($this->isJSError($logEntry)) { // Collect JS errors into an array $this->js_errors[] = $logEntry['message']; } } if(!empty($this->js_errors)) { $this->debug('JS errors : ' . print_r($this->js_errors, true)); } } catch (\Exception $e) { $this->debug('Unable to retrieve Selenium logs : ' . $e->getMessage()); } // String comparison is used to show full error messages in test fail diffs $this->assertEquals('', join(PHP_EOL, $this->js_errors), 'JS errors are present'); } function getCurrentUrl() { return $this->getModule('WPWebDriver')->_getCurrentUri(); } protected function isJSError($logEntry) { return isset($logEntry['level']) && isset($logEntry['message']) && isset($logEntry['source']) && $logEntry['level'] === 'SEVERE' && ($logEntry['source'] === 'javascript' // Native JS errors || ($logEntry['source'] === 'network' && preg_match('/\.(js|css)/i', $logEntry['message'])) // JS/CSS files failed to load ); } function _after() { $this->js_errors = array(); } }