|
3 | 3 | namespace Mink\WebdriverClassicDriver\Tests\Custom; |
4 | 4 |
|
5 | 5 | 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; |
6 | 10 | use Mink\WebdriverClassicDriver\WebdriverClassicDriver; |
7 | 11 |
|
8 | 12 | class WebDriverTest extends TestCase |
@@ -72,4 +76,32 @@ public function testClassicDriverCanProvideBrowserName(): void |
72 | 76 | $this->driver->getBrowserName() |
73 | 77 | ); |
74 | 78 | } |
| 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 | + } |
75 | 107 | } |
0 commit comments