|
44 | 44 | import org.openqa.selenium.internal.Require; |
45 | 45 | import org.openqa.selenium.support.decorators.Decorated; |
46 | 46 | import org.openqa.selenium.support.decorators.WebDriverDecorator; |
| 47 | +import org.openqa.selenium.support.events.EventFiringDecorator; |
| 48 | +import org.openqa.selenium.support.events.WebDriverListener; |
47 | 49 |
|
48 | 50 | @Tag("UnitTests") |
49 | 51 | class AugmenterTest { |
@@ -240,6 +242,40 @@ void shouldDecorateAugmentedWebDriver() { |
240 | 242 | assertThat(number).isEqualTo(42); |
241 | 243 | } |
242 | 244 |
|
| 245 | + @Test |
| 246 | + void shouldAugmentDecoratedWebDriver() { |
| 247 | + final Capabilities caps = |
| 248 | + new ImmutableCapabilities( |
| 249 | + "magic.numbers", true, |
| 250 | + "numbers", true); |
| 251 | + WebDriver driver = new RemoteWebDriver(new StubExecutor(caps), caps); |
| 252 | + WebDriver eventFiringDecorate = |
| 253 | + new EventFiringDecorator<>( |
| 254 | + new WebDriverListener() { |
| 255 | + @Override |
| 256 | + public void beforeAnyCall(Object target, Method method, Object[] args) { |
| 257 | + System.out.println("Bazinga!"); |
| 258 | + } |
| 259 | + }) |
| 260 | + .decorate(driver); |
| 261 | + |
| 262 | + WebDriver modifyTitleDecorate = |
| 263 | + new ModifyTitleWebDriverDecorator().decorate(eventFiringDecorate); |
| 264 | + |
| 265 | + WebDriver augmented = |
| 266 | + getAugmenter() |
| 267 | + .addDriverAugmentation("magic.numbers", HasMagicNumbers.class, (c, exe) -> () -> 42) |
| 268 | + .augment(modifyTitleDecorate); |
| 269 | + |
| 270 | + assertThat(modifyTitleDecorate).isNotSameAs(driver); |
| 271 | + |
| 272 | + assertThat(((HasMagicNumbers) augmented).getMagicNumber()).isEqualTo(42); |
| 273 | + assertThat(augmented.getTitle()).isEqualTo("title"); |
| 274 | + |
| 275 | + assertThat(augmented).isNotSameAs(modifyTitleDecorate); |
| 276 | + assertThat(augmented).isInstanceOf(Decorated.class); |
| 277 | + } |
| 278 | + |
243 | 279 | private static class ByMagic extends By { |
244 | 280 |
|
245 | 281 | private final String magicWord; |
|
0 commit comments