Skip to content

Commit

Permalink
Allow accessing capabilities; add capabilities tests
Browse files Browse the repository at this point in the history
  • Loading branch information
uuf6429 committed Nov 21, 2024
1 parent f7093bb commit a5f4930
Show file tree
Hide file tree
Showing 2 changed files with 106 additions and 1 deletion.
7 changes: 6 additions & 1 deletion src/WebdriverClassicDriver.php
Original file line number Diff line number Diff line change
Expand Up @@ -762,7 +762,7 @@ protected function createWebDriver(): void
throw new DriverException('Base driver has already been created');
}

$this->webDriver = RemoteWebDriver::create($this->webDriverHost, $this->desiredCapabilities);
$this->webDriver = RemoteWebDriver::create($this->webDriverHost, $this->getDesiredCapabilities());
}

/**
Expand All @@ -777,6 +777,11 @@ protected function getWebDriver(): RemoteWebDriver
throw new DriverException('Base driver has not been created');
}

protected function getDesiredCapabilities(): array
{
return $this->desiredCapabilities->toArray();
}

private function getNormalisedBrowserName(): string
{
return self::BROWSER_NAME_ALIAS_MAP[$this->browserName] ?? $this->browserName;
Expand Down
100 changes: 100 additions & 0 deletions tests/Custom/CapabilityTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
<?php

namespace Mink\WebdriverClassicDriver\Tests\Custom;

use Mink\WebdriverClassicDriver\WebdriverClassicDriver;

class CapabilityTest extends \PHPUnit\Framework\TestCase
{
/**
* @param array<string, mixed> $desiredCapabilities
* @param array<string, mixed> $expectedCapabilities
*
* @dataProvider capabilitiesDataProvider
*/
public function testThatCapabilitiesAreAsExpected(string $browserName, array $desiredCapabilities, array $expectedCapabilities): void
{
$driver = $this->createDriverExposingCapabilities($browserName, $desiredCapabilities);

$this->assertSame($expectedCapabilities, $driver->capabilities);
}

public static function capabilitiesDataProvider(): iterable
{
yield 'unknown browser starts with default driver capabilities' => [
'browserName' => 'fake browser',
'desiredCapabilities' => [],
'expectedCapabilities' => [
'platform' => 'ANY',
'name' => 'Behat Test',
'deviceOrientation' => 'landscape',
'deviceType' => 'desktop',
],
];

yield 'default capabilities can be customised' => [
'browserName' => 'fake browser',
'desiredCapabilities' => [
'something' => 'custom',
'name' => 'Custom Test',
],
'expectedCapabilities' => [
'platform' => 'ANY',
'name' => 'Custom Test',
'deviceOrientation' => 'landscape',
'deviceType' => 'desktop',
'something' => 'custom',
],
];

yield 'browser-specific default capabilities are added' => [
'browserName' => 'chrome',
'desiredCapabilities' => [],
'expectedCapabilities' => [
'browserName' => 'chrome',
'platform' => 'ANY',
'name' => 'Behat Test',
'deviceOrientation' => 'landscape',
'deviceType' => 'desktop',
'goog:chromeOptions' => [
'excludeSwitches' => ['enable-automation'],
],
],
];

yield 'browser-specific default capabilities can be customised' => [
'browserName' => 'chrome',
'desiredCapabilities' => [
'name' => 'Custom Test',
'goog:chromeOptions' => ['args' => ['a', 'b', 'c']],
],
'expectedCapabilities' => [
'browserName' => 'chrome',
'platform' => 'ANY',
'name' => 'Custom Test',
'deviceOrientation' => 'landscape',
'deviceType' => 'desktop',
'goog:chromeOptions' => ['args' => ['a', 'b', 'c']],
],
];
}

/**
* @param string $browserName
* @param array<string, mixed> $desiredCapabilities
* @return WebdriverClassicDriver&object{capabilities: array<string, mixed>}
*/
private function createDriverExposingCapabilities(string $browserName, array $desiredCapabilities = []): WebdriverClassicDriver
{
return new class($browserName, $desiredCapabilities) extends WebdriverClassicDriver {

Check failure on line 89 in tests/Custom/CapabilityTest.php

View workflow job for this annotation

GitHub Actions / Static analysis

Method Mink\WebdriverClassicDriver\Tests\Custom\CapabilityTest::createDriverExposingCapabilities() should return Mink\WebdriverClassicDriver\WebdriverClassicDriver&object{capabilities: array<string, mixed>} but returns class@anonymous/tests/Custom/CapabilityTest.php:89.

Check failure on line 89 in tests/Custom/CapabilityTest.php

View workflow job for this annotation

GitHub Actions / Static analysis

Method Mink\WebdriverClassicDriver\Tests\Custom\CapabilityTest::createDriverExposingCapabilities() should return Mink\WebdriverClassicDriver\WebdriverClassicDriver&object{capabilities: array<string, mixed>} but returns class@anonymous/tests/Custom/CapabilityTest.php:89.
public ?array $capabilities = null;

public function __construct(string $browserName, array $desiredCapabilities)
{
parent::__construct($browserName, $desiredCapabilities);

$this->capabilities = $this->getDesiredCapabilities();
}
};
}
}

0 comments on commit a5f4930

Please sign in to comment.