Skip to content
This repository was archived by the owner on Nov 23, 2021. It is now read-only.

Commit 2039784

Browse files
Merge pull request #313 from Cognifide/bugfix-webdriverclose-extension
The actual fix for WebDriverCloseExtension issues #306
2 parents 6ba0550 + f6f527e commit 2039784

File tree

3 files changed

+22
-18
lines changed

3 files changed

+22
-18
lines changed

bb-junit5/pom.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@
8686
<plugin>
8787
<groupId>org.apache.maven.plugins</groupId>
8888
<artifactId>maven-surefire-plugin</artifactId>
89+
<configuration>
90+
<argLine>-Djunit.jupiter.extensions.autodetection.enabled=false</argLine>
91+
</configuration>
8992
</plugin>
9093
</plugins>
9194
</build>

bb-junit5/src/main/java/com/cognifide/qa/bb/junit5/selenium/WebdriverCloseExtension.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
import org.junit.jupiter.api.extension.AfterAllCallback;
2525
import org.junit.jupiter.api.extension.AfterTestExecutionCallback;
26+
import org.junit.jupiter.api.extension.BeforeTestExecutionCallback;
2627
import org.junit.jupiter.api.extension.ExtensionContext;
2728
import org.openqa.selenium.WebDriver;
2829

@@ -35,20 +36,22 @@
3536
* <p>
3637
* Loaded automatically by ServiceLoader.
3738
*/
38-
public class WebdriverCloseExtension implements AfterTestExecutionCallback, AfterAllCallback {
39+
public class WebdriverCloseExtension
40+
implements BeforeTestExecutionCallback, AfterTestExecutionCallback, AfterAllCallback {
3941

4042
private WebDriver webDriver;
4143

44+
@Override
45+
public void beforeTestExecution(ExtensionContext context) {
46+
webDriver = getWebDriver(context);
47+
}
48+
4249
/**
4350
* {@inheritDoc}
4451
*/
4552
@Override
4653
public void afterTestExecution(ExtensionContext context) {
47-
Injector injector = getInjector(context);
48-
if (injector != null) {
49-
if (webDriver == null) {
50-
webDriver = injector.getInstance(Key.get(WebDriver.class));
51-
}
54+
if (webDriver != null) {
5255
webDriver.quit();
5356
}
5457
}
@@ -63,7 +66,11 @@ public void afterAll(ExtensionContext context) {
6366
}
6467

6568
//for mocking purposes
66-
Injector getInjector(ExtensionContext context) {
67-
return InjectorUtils.retrieveInjectorFromStore(context, NAMESPACE);
69+
WebDriver getWebDriver(ExtensionContext context) {
70+
Injector injector = InjectorUtils.retrieveInjectorFromStore(context, NAMESPACE);
71+
if (injector != null) {
72+
return injector.getInstance(Key.get(WebDriver.class));
73+
}
74+
throw new IllegalStateException("Could not obtain WebDriver instance");
6875
}
6976
}

bb-junit5/src/test/java/com/cognifide/qa/bb/junit5/selenium/WebdriverCloseExtensionTest.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
package com.cognifide.qa.bb.junit5.selenium;
2121

2222
import static org.mockito.ArgumentMatchers.any;
23-
import static org.mockito.ArgumentMatchers.eq;
24-
import static org.mockito.Mockito.*;
23+
import static org.mockito.Mockito.doReturn;
24+
import static org.mockito.Mockito.verify;
2525

2626
import org.junit.jupiter.api.BeforeEach;
2727
import org.junit.jupiter.api.Test;
@@ -31,15 +31,9 @@
3131
import org.mockito.junit.jupiter.MockitoExtension;
3232
import org.openqa.selenium.WebDriver;
3333

34-
import com.google.inject.Injector;
35-
import com.google.inject.Key;
36-
3734
@ExtendWith(MockitoExtension.class)
3835
class WebdriverCloseExtensionTest {
3936

40-
@Mock
41-
private Injector injector;
42-
4337
@Mock
4438
private WebDriver webdriver;
4539

@@ -48,8 +42,8 @@ class WebdriverCloseExtensionTest {
4842

4943
@BeforeEach
5044
void setup() {
51-
doReturn(injector).when(tested).getInjector(any());
52-
when(injector.getInstance(eq(Key.get(WebDriver.class)))).thenReturn(webdriver);
45+
doReturn(webdriver).when(tested).getWebDriver(any());
46+
tested.beforeTestExecution(any());
5347
}
5448

5549
@Test

0 commit comments

Comments
 (0)