diff --git a/core/modules/simpletest/src/BrowserTestBase.php b/core/modules/simpletest/src/BrowserTestBase.php index e0ece50..fd59e05 100644 --- a/core/modules/simpletest/src/BrowserTestBase.php +++ b/core/modules/simpletest/src/BrowserTestBase.php @@ -7,7 +7,6 @@ namespace Drupal\simpletest; -use Behat\Mink\Driver\GoutteDriver; use Behat\Mink\Element\Element; use Behat\Mink\Exception\Exception; use Behat\Mink\Mink; @@ -181,6 +180,31 @@ protected $customTranslations; /** + * Mink driver to use from available drivers. + * + * @see \Drupal\simpletest\BrowserTestBase::minkDriver + * + * @var string + */ + protected $minkDriver = 'goutte'; + + /** + * Mink session name. + * + * @var string + */ + protected $minkSessionName = 'default'; + + /** + * An array of available Mink drivers. + * + * @var array + */ + protected $minkAvailableDrivers = [ + 'goutte' => '\Behat\Mink\Driver\GoutteDriver', + ]; + + /** * Mink session manager. * * @var \Behat\Mink\Mink @@ -191,11 +215,11 @@ * Initializes Mink sessions. */ protected function initMink() { - $driver = new GoutteDriver(); + $driver = new $this->minkAvailableDrivers[$this->minkDriver](); $session = new Session($driver); $this->mink = new Mink(); - $this->mink->registerSession('goutte', $session); - $this->mink->setDefaultSessionName('goutte'); + $this->mink->registerSession($this->minkSessionName, $session); + $this->mink->setDefaultSessionName($this->minkSessionName); $this->registerSessions(); return $session; } @@ -290,6 +314,26 @@ protected function setUp() { } /** + * Sets default Mink driver for the test. + * + * @param string $driver + * Driver machine name as in BrowserTestBase::minkAvailableDrivers. + * + * @see BrowserTestBase::minkAvailableDrivers + * + * @throws \InvalidArgumentException + * When given driver is not available. + */ + protected function setDefaultDriver($driver) { + if (array_key_exists($driver, $this->minkAvailableDrivers)) { + $this->minkDriver = $driver; + } + else { + throw new \InvalidArgumentException("Given driver '$driver' is not available."); + } + } + + /** * Ensures test files are deletable within file_unmanaged_delete_recursive(). * * Some tests chmod generated files to be read only. During