diff --git a/core/tests/Drupal/FunctionalJavascriptTests/JavascriptTestBase.php b/core/tests/Drupal/FunctionalJavascriptTests/JavascriptTestBase.php index d5156eeb5cb..236705d84f4 100644 --- a/core/tests/Drupal/FunctionalJavascriptTests/JavascriptTestBase.php +++ b/core/tests/Drupal/FunctionalJavascriptTests/JavascriptTestBase.php @@ -64,6 +64,38 @@ protected function tearDown() { } /** + * {@inheritdoc} + */ + protected function getDefaultDriverInstance() { + parent::getDefaultDriverInstance(); + + // Allow for overriding with setting specific to JavaScript tests. + if ($arg_json = getenv('MINK_DRIVER_ARGS_JS')) { + $this->minkDefaultDriverArgs = json_decode($arg_json, TRUE); + } + + // Allow for overriding the driver class for JavaScript tests. + if ($minkDriverClass = getenv('MINK_DRIVER_CLASS_JS')) { + if (class_exists($minkDriverClass)) { + $this->minkDefaultDriverClass = $minkDriverClass; + } + else { + throw new \InvalidArgumentException("Can't instantiate provided $minkDriverClass class by environment as default driver class."); + } + } + + if (is_array($this->minkDefaultDriverArgs)) { + // Use ReflectionClass to instantiate class with received params. + $reflector = new \ReflectionClass($this->minkDefaultDriverClass); + $driver = $reflector->newInstanceArgs($this->minkDefaultDriverArgs); + } + else { + $driver = new $this->minkDefaultDriverClass(); + } + return $driver; + } + + /** * Asserts that the element with the given CSS selector is visible. * * @param string $css_selector