Skip to content

Commit 5a53ec5

Browse files
committed
Add string type assertion test
1 parent d909da0 commit 5a53ec5

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

tests/Custom/WebDriverTest.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
namespace Mink\WebdriverClassicDriver\Tests\Custom;
44

55
use Behat\Mink\Exception\DriverException;
6+
use Facebook\WebDriver\Remote\RemoteWebDriver;
7+
use Facebook\WebDriver\Remote\RemoteWebElement;
8+
use Facebook\WebDriver\WebDriverOptions;
9+
use Facebook\WebDriver\WebDriverTimeouts;
610
use Mink\WebdriverClassicDriver\WebdriverClassicDriver;
711

812
class WebDriverTest extends TestCase
@@ -72,4 +76,32 @@ public function testClassicDriverCanProvideBrowserName(): void
7276
$this->driver->getBrowserName()
7377
);
7478
}
79+
80+
public function testThatDriverCatchesUnexpectedAttributeValueType(): void
81+
{
82+
$mockWebDriver = $this->createMock(RemoteWebDriver::class);
83+
$mockWebDriverOptions = $this->createMock(WebDriverOptions::class);
84+
$mockWebDriverTimeouts = $this->createMock(WebDriverTimeouts::class);
85+
$mockElement = $this->createMock(RemoteWebElement::class);
86+
$mockWebDriver->method('manage')->willReturn($mockWebDriverOptions);
87+
$mockWebDriverOptions->method('timeouts')->willReturn($mockWebDriverTimeouts);
88+
$mockWebDriver
89+
->expects($this->once())
90+
->method('findElement')
91+
->willReturn($mockElement);
92+
$mockWebDriver
93+
->expects($this->once())
94+
->method('executeScript')
95+
->with('return arguments[0].getAttribute("some-attribute")', [$mockElement])
96+
->willReturn(['invalid attribute value']);
97+
98+
$driver = new WebdriverClassicDriver('fake browser', [], 'example.com', fn() => $mockWebDriver);
99+
100+
$driver->start();
101+
102+
$this->expectException(DriverException::class);
103+
$this->expectExceptionMessage('The element\'s some-attribute attribute should be a string or at least a scalar value, but received `array` instead');
104+
105+
$driver->getAttribute('//fake', 'some-attribute');
106+
}
75107
}

0 commit comments

Comments
 (0)