*/ private $classes = []; /** * @var float */ private $started; public function __construct() { $this->enabled = (bool) getenv('MAUTIC_TEST_LOG_SLOW_TESTS'); $this->threshold = (float) (getenv('MAUTIC_TEST_SLOW_TESTS_THRESHOLD') ?: 2); $this->started = microtime(true); } public function executeAfterTest(string $test, float $time): void { if (!$this->enabled) { return; } $time = microtime(true) - $this->started; $this->started = microtime(true); if ($time <= $this->threshold) { return; } $class = substr($test, 0, strpos($test, '::')); if (!isset($this->classes[$class])) { $this->classes[$class] = 0; } $this->classes[$class] += $time; } public function executeAfterLastTest(): void { if (!$this->classes) { return; } arsort($this->classes); fwrite(STDOUT, PHP_EOL.'Slow test classes:'.PHP_EOL.var_export($this->classes, true)); } }