diff --git a/CHANGELOG.md b/CHANGELOG.md index ad53bb7..29ab228 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] ### Added -... +- Added support for WebdriverClassicDriver Mink's Driver (supports Selenium 2, 3, 4) as `webdriver-classic`. ### Changed ... diff --git a/docs/examples/configuration/driver_showcase.php b/docs/examples/configuration/driver_showcase.php index 84b28bc..923fb1f 100644 --- a/docs/examples/configuration/driver_showcase.php +++ b/docs/examples/configuration/driver_showcase.php @@ -36,6 +36,14 @@ class DriverShowCaseTest extends BrowserTestCase 'driverOptions' => array(), ), + array( + 'driver' => 'webdriver-classic', + + // Defaults for this driver. + 'port' => 4444, + 'driverOptions' => array(), + ), + array( 'driver' => 'zombie', diff --git a/library/aik099/PHPUnit/BrowserConfiguration/BrowserConfiguration.php b/library/aik099/PHPUnit/BrowserConfiguration/BrowserConfiguration.php index b12748a..98c077f 100644 --- a/library/aik099/PHPUnit/BrowserConfiguration/BrowserConfiguration.php +++ b/library/aik099/PHPUnit/BrowserConfiguration/BrowserConfiguration.php @@ -47,7 +47,7 @@ class BrowserConfiguration 'driver' => 'selenium2', 'driverOptions' => array(), - // TODO: Move under 'driverOptions' of 'selenium2' driver (BC break). + // TODO: Move under 'driverOptions' of 'selenium2'/'webdriver-classic' driver (BC break). 'desiredCapabilities' => array(), 'timeout' => 60, diff --git a/library/aik099/PHPUnit/DIContainer.php b/library/aik099/PHPUnit/DIContainer.php index 5352de6..bb73c66 100644 --- a/library/aik099/PHPUnit/DIContainer.php +++ b/library/aik099/PHPUnit/DIContainer.php @@ -20,6 +20,7 @@ use aik099\PHPUnit\MinkDriver\GoutteDriverFactory; use aik099\PHPUnit\MinkDriver\SahiDriverFactory; use aik099\PHPUnit\MinkDriver\Selenium2DriverFactory; +use aik099\PHPUnit\MinkDriver\WebdriverClassicFactory; use aik099\PHPUnit\MinkDriver\ZombieDriverFactory; use aik099\PHPUnit\RemoteCoverage\RemoteCoverageHelper; use aik099\PHPUnit\RemoteCoverage\RemoteUrl; @@ -112,6 +113,7 @@ public function __construct(array $values = array()) $registry = new DriverFactoryRegistry(); $registry->add(new Selenium2DriverFactory()); + $registry->add(new WebdriverClassicFactory()); $registry->add(new SahiDriverFactory()); $registry->add(new GoutteDriverFactory()); $registry->add(new ZombieDriverFactory()); diff --git a/library/aik099/PHPUnit/MinkDriver/WebdriverClassicFactory.php b/library/aik099/PHPUnit/MinkDriver/WebdriverClassicFactory.php new file mode 100644 index 0000000..e528bbf --- /dev/null +++ b/library/aik099/PHPUnit/MinkDriver/WebdriverClassicFactory.php @@ -0,0 +1,74 @@ + + * @link https://github.com/aik099/phpunit-mink + */ + + +namespace aik099\PHPUnit\MinkDriver; + + +use aik099\PHPUnit\BrowserConfiguration\BrowserConfiguration; + +class WebdriverClassicFactory extends AbstractDriverFactory +{ + + /** + * Returns driver name, that can be used in browser configuration. + * + * @return string + */ + public function getDriverName() + { + return 'webdriver-classic'; + } + + /** + * @inheritDoc + */ + public function getDriverPackageUrl() + { + return 'https://packagist.org/packages/mink/webdriver-classic-driver'; + } + + /** + * Returns default values for browser configuration. + * + * @return array + */ + public function getDriverDefaults() + { + return array( + 'port' => 4444, + 'driverOptions' => array(), + ); + } + + /** + * @inheritDoc + */ + public function createDriver(BrowserConfiguration $browser) + { + $this->assertInstalled('Mink\WebdriverClassicDriver\WebdriverClassicDriver'); + + $browser_name = $browser->getBrowserName(); + $capabilities = $browser->getDesiredCapabilities(); + $capabilities['browserName'] = $browser_name; + + // TODO: Maybe doesn't work! + ini_set('default_socket_timeout', $browser->getTimeout()); + + $driver = new \Mink\WebdriverClassicDriver\WebdriverClassicDriver( + $browser_name, + $capabilities, + 'http://' . $browser->getHost() . ':' . $browser->getPort() . '/wd/hub' + ); + + return $driver; + } + +} diff --git a/tests/aik099/PHPUnit/Integration/DIContainerTest.php b/tests/aik099/PHPUnit/Integration/DIContainerTest.php index 8f79467..c798ead 100644 --- a/tests/aik099/PHPUnit/Integration/DIContainerTest.php +++ b/tests/aik099/PHPUnit/Integration/DIContainerTest.php @@ -23,6 +23,7 @@ use aik099\PHPUnit\MinkDriver\GoutteDriverFactory; use aik099\PHPUnit\MinkDriver\SahiDriverFactory; use aik099\PHPUnit\MinkDriver\Selenium2DriverFactory; +use aik099\PHPUnit\MinkDriver\WebdriverClassicFactory; use aik099\PHPUnit\MinkDriver\ZombieDriverFactory; use aik099\PHPUnit\RemoteCoverage\RemoteCoverageHelper; use aik099\PHPUnit\RemoteCoverage\RemoteUrl; @@ -116,6 +117,7 @@ public function testDriverFactoryRegistry() $driver_factory_registry = $this->_container['driver_factory_registry']; $this->assertInstanceOf(Selenium2DriverFactory::class, $driver_factory_registry->get('selenium2')); + $this->assertInstanceOf(WebdriverClassicFactory::class, $driver_factory_registry->get('webdriver-classic')); $this->assertInstanceOf(SahiDriverFactory::class, $driver_factory_registry->get('sahi')); $this->assertInstanceOf(GoutteDriverFactory::class, $driver_factory_registry->get('goutte')); $this->assertInstanceOf(ZombieDriverFactory::class, $driver_factory_registry->get('zombie')); diff --git a/tests/aik099/PHPUnit/MinkDriver/DriverFactoryTest.php b/tests/aik099/PHPUnit/MinkDriver/DriverFactoryTest.php index caca5e8..2dda560 100644 --- a/tests/aik099/PHPUnit/MinkDriver/DriverFactoryTest.php +++ b/tests/aik099/PHPUnit/MinkDriver/DriverFactoryTest.php @@ -15,6 +15,7 @@ use aik099\PHPUnit\BrowserConfiguration\BrowserConfiguration; use aik099\PHPUnit\DIContainer; use aik099\PHPUnit\MinkDriver\IMinkDriverFactory; +use aik099\PHPUnit\MinkDriver\WebdriverClassicFactory; use tests\aik099\PHPUnit\AbstractTestCase; use Yoast\PHPUnitPolyfills\Polyfills\ExpectException; use aik099\PHPUnit\MinkDriver\GoutteDriverFactory; @@ -97,6 +98,10 @@ public static function driverDataProvider() '\Behat\Mink\Driver\Selenium2Driver', Selenium2DriverFactory::class, ), + 'webdriver-classic' => array( + '\Mink\WebdriverClassicDriver\WebdriverClassicDriver', + WebdriverClassicFactory::class, + ), 'zombie' => array( '\Behat\Mink\Driver\ZombieDriver', ZombieDriverFactory::class,