'chrome']; self::$webDriver = RemoteWebDriver::create( sprintf( 'http://%s:%d/wd/hub', self::$environmentService->get('SELENIUM_HOST', 'selenium'), self::$environmentService->get('SELENIUM_PORT', 4444) ), $capabilities, 60000, 60000 ); self::$webDriver->manage()->timeouts()->implicitlyWait(3); self::$screenshotsDir = APP_ROOT . '/build/Screenshots/' . date('Y-m-d H-i-s') . '/'; } public static function tearDownAfterClass(): void { self::$webDriver->close(); parent::tearDownAfterClass(); } public function getWindow(): RemoteWebDriver { return self::$webDriver; } public function select(string $sizzleSelector): ?RemoteWebElement { try { return self::$webDriver->findElement(WebDriverBy::cssSelector($sizzleSelector)); } catch (NoSuchElementException) { self::$logger->debug("Couldn't find a match for sizzle selector '{$sizzleSelector}'"); return null; } } protected function takeScreenshot($name): void { if (!(new Filesystem())->exists(self::$screenshotsDir)) { (new Filesystem())->mkdir(self::$screenshotsDir, 0o777); } self::$webDriver->takeScreenshot(self::$screenshotsDir . self::$screenshotIndex . "_{$name}.jpg"); ++self::$screenshotIndex; } }