-
Notifications
You must be signed in to change notification settings - Fork 132
/
Copy pathErrorLogger.php
71 lines (64 loc) · 1.88 KB
/
ErrorLogger.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\FunctionalTestingFramework\Extension;
/**
* Class ErrorLogger
* @package Magento\FunctionalTestingFramework\Extension
*/
class ErrorLogger
{
/**
* Error Logger Instance
* @var ErrorLogger
*/
private static $errorLogger;
/**
* Singleton method to return ErrorLogger.
* @return ErrorLogger
*/
public static function getInstance()
{
if (!self::$errorLogger) {
self::$errorLogger = new ErrorLogger();
}
return self::$errorLogger;
}
/**
* ErrorLogger constructor.
*/
private function __construct()
{
// private constructor
}
/**
* Loops through stepEvent for browser log entries
* @param \Facebook\WebDriver\Remote\RemoteWebDriver $webDriver
* @param \Codeception\Event\StepEvent $stepEvent
* @return void
*/
public function logErrors($webDriver, $stepEvent)
{
//Types available should be "server", "browser", "driver". Only care about browser at the moment.
$browserLogEntries = $webDriver->manage()->getLog("browser");
foreach ($browserLogEntries as $entry) {
if (array_key_exists("source", $entry) && $entry["source"] === "javascript") {
$this->logError("javascript", $stepEvent, $entry);
}
}
}
/**
* Logs errors to console/report.
* @param string $type
* @param \Codeception\Event\StepEvent $stepEvent
* @param array $entry
* @return void
*/
private function logError($type, $stepEvent, $entry)
{
//TODO Add to overall log
$stepEvent->getTest()->getScenario()->comment("{$type} ERROR({$entry["level"]}) - " . $entry["message"]);
}
}