Skip to content

Commit 2d38be8

Browse files
committed
Java: Stop restarting browser so often without real need
1 parent a631330 commit 2d38be8

File tree

5 files changed

+48
-23
lines changed

5 files changed

+48
-23
lines changed

java/client/test/org/openqa/selenium/WindowSwitchingTest.java

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
import org.openqa.selenium.testing.Ignore;
4242
import org.openqa.selenium.testing.JUnit4TestBase;
4343
import org.openqa.selenium.testing.JavascriptEnabled;
44-
import org.openqa.selenium.testing.NeedsFreshDriver;
4544
import org.openqa.selenium.testing.NoDriverAfterTest;
4645
import org.openqa.selenium.testing.NotYetImplemented;
4746
import org.openqa.selenium.testing.SwitchToTopAfterTest;
@@ -53,6 +52,7 @@
5352
public class WindowSwitchingTest extends JUnit4TestBase {
5453

5554
@SwitchToTopAfterTest
55+
@NoDriverAfterTest(failedOnly = true)
5656
@Test
5757
public void testShouldSwitchFocusToANewWindowWhenItIsOpenedAndNotStopFutureOperations() {
5858
assumeFalse(Browser.detect() == Browser.opera &&
@@ -96,6 +96,7 @@ public void testShouldThrowNoSuchWindowException() {
9696
driver.switchTo().window(current);
9797
}
9898

99+
@NoDriverAfterTest(failedOnly = true)
99100
@Ignore({MARIONETTE})
100101
@Test
101102
public void testShouldThrowNoSuchWindowExceptionOnAnAttemptToGetItsHandle() {
@@ -120,6 +121,7 @@ public void testShouldThrowNoSuchWindowExceptionOnAnAttemptToGetItsHandle() {
120121
}
121122
}
122123

124+
@NoDriverAfterTest(failedOnly = true)
123125
@Ignore({MARIONETTE})
124126
@Test
125127
public void testShouldThrowNoSuchWindowExceptionOnAnyOperationIfAWindowIsClosed() {
@@ -153,6 +155,7 @@ public void testShouldThrowNoSuchWindowExceptionOnAnyOperationIfAWindowIsClosed(
153155
}
154156
}
155157

158+
@NoDriverAfterTest(failedOnly = true)
156159
@Ignore({MARIONETTE})
157160
@Test
158161
public void testShouldThrowNoSuchWindowExceptionOnAnyElementOperationIfAWindowIsClosed() {
@@ -178,7 +181,6 @@ public void testShouldThrowNoSuchWindowExceptionOnAnyElementOperationIfAWindowIs
178181
}
179182
}
180183

181-
@NeedsFreshDriver
182184
@NoDriverAfterTest
183185
@Ignore({IE, REMOTE})
184186
@Test
@@ -313,11 +315,12 @@ public void testFailingToSwitchToAWindowLeavesTheCurrentWindowAsIs() {
313315
assertEquals(current, newHandle);
314316
}
315317

316-
@NeedsFreshDriver
317-
@NoDriverAfterTest
318+
@NoDriverAfterTest(failedOnly = true)
318319
@Test
319320
public void testCanCloseWindowWhenMultipleWindowsAreOpen() {
320321
driver.get(pages.xhtmlTestPage);
322+
String mainHandle = driver.getWindowHandle();
323+
321324
Set<String> currentWindowHandles = driver.getWindowHandles();
322325

323326
driver.findElement(By.name("windowOne")).click();
@@ -328,19 +331,27 @@ public void testCanCloseWindowWhenMultipleWindowsAreOpen() {
328331

329332
// There should be two windows. We should also see each of the window titles at least once.
330333
assertEquals(2, allWindowHandles.size());
331-
String handle1 = (String) allWindowHandles.toArray()[1];
332-
driver.switchTo().window(handle1);
333-
driver.close();
334-
allWindowHandles = driver.getWindowHandles();
335-
assertEquals(1, allWindowHandles.size());
334+
335+
for (String handle : allWindowHandles) {
336+
if (! handle.equals(mainHandle)) {
337+
driver.switchTo().window(handle);
338+
driver.close();
339+
break;
340+
}
341+
}
342+
343+
assertEquals(1, driver.getWindowHandles().size());
344+
345+
driver.switchTo().window(mainHandle);
336346
}
337347

338-
@NeedsFreshDriver
339-
@NoDriverAfterTest
348+
@NoDriverAfterTest(failedOnly = true)
340349
@Test
341350
public void testCanCloseWindowAndSwitchBackToMainWindow() {
342351
driver.get(pages.xhtmlTestPage);
352+
343353
Set<String> currentWindowHandles = driver.getWindowHandles();
354+
String mainHandle = driver.getWindowHandle();
344355

345356
driver.findElement(By.name("windowOne")).click();
346357

@@ -350,26 +361,31 @@ public void testCanCloseWindowAndSwitchBackToMainWindow() {
350361

351362
// There should be two windows. We should also see each of the window titles at least once.
352363
assertEquals(2, allWindowHandles.size());
353-
String mainHandle = (String) allWindowHandles.toArray()[0];
354-
String handle1 = (String) allWindowHandles.toArray()[1];
355-
driver.switchTo().window(handle1);
356-
driver.close();
364+
365+
for (String handle : allWindowHandles) {
366+
if (! handle.equals(mainHandle)) {
367+
driver.switchTo().window(handle);
368+
driver.close();
369+
break;
370+
}
371+
}
372+
357373
driver.switchTo().window(mainHandle);
358374

359375
String newHandle = driver.getWindowHandle();
360376
assertEquals(mainHandle, newHandle);
377+
378+
assertEquals(1, driver.getWindowHandles().size());
361379
}
362380

363-
@NeedsFreshDriver
364381
@NoDriverAfterTest
365382
@Test
366383
public void testClosingOnlyWindowShouldNotCauseTheBrowserToHang() {
367384
driver.get(pages.xhtmlTestPage);
368385
driver.close();
369386
}
370387

371-
@NeedsFreshDriver
372-
@NoDriverAfterTest
388+
@NoDriverAfterTest(failedOnly = true)
373389
@Test
374390
@Ignore(MARIONETTE)
375391
public void testShouldFocusOnTheTopMostFrameAfterSwitchingToAWindow() {

java/client/test/org/openqa/selenium/interactions/BasicMouseInterfaceTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import org.openqa.selenium.Dimension;
3838
import org.openqa.selenium.JavascriptExecutor;
3939
import org.openqa.selenium.testing.NeedsFreshDriver;
40-
import org.openqa.selenium.testing.NoDriverAfterTest;
4140
import org.openqa.selenium.NoSuchElementException;
4241
import org.openqa.selenium.Point;
4342
import org.openqa.selenium.testing.SwitchToTopAfterTest;

java/client/test/org/openqa/selenium/interactions/DragAndDropTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import static org.junit.Assert.assertTrue;
2323
import static org.junit.Assert.fail;
2424
import static org.junit.Assume.assumeFalse;
25-
import static org.junit.Assume.assumeTrue;
2625
import static org.openqa.selenium.WaitingConditions.elementLocationToBe;
2726
import static org.openqa.selenium.testing.Driver.CHROME;
2827
import static org.openqa.selenium.testing.Driver.FIREFOX;

java/client/test/org/openqa/selenium/testing/JUnit4TestBase.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ protected void starting(Description description) {
108108
super.starting(description);
109109
NeedsFreshDriver annotation = description.getAnnotation(NeedsFreshDriver.class);
110110
if (annotation != null && matches(browser, annotation.value())) {
111-
System.out.println("Restarting driver before " + description);
111+
System.out.println("Restarting driver before test " + description);
112112
removeDriver();
113113
}
114114
try {
@@ -119,11 +119,21 @@ protected void starting(Description description) {
119119
}
120120

121121
@Override
122-
protected void finished(Description description) {
122+
protected void succeeded(Description description) {
123+
super.finished(description);
124+
NoDriverAfterTest annotation = description.getAnnotation(NoDriverAfterTest.class);
125+
if (annotation != null && !annotation.failedOnly() && matches(browser, annotation.value())) {
126+
System.out.println("Restarting driver after succeeded test " + description);
127+
removeDriver();
128+
}
129+
}
130+
131+
@Override
132+
protected void failed(Throwable e, Description description) {
123133
super.finished(description);
124134
NoDriverAfterTest annotation = description.getAnnotation(NoDriverAfterTest.class);
125135
if (annotation != null && matches(browser, annotation.value())) {
126-
System.out.println("Restarting driver after " + description);
136+
System.out.println("Restarting driver after failed test " + description);
127137
removeDriver();
128138
}
129139
}

java/client/test/org/openqa/selenium/testing/NoDriverAfterTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,5 @@
3535

3636
String reason() default ("For unknown reason");
3737

38+
boolean failedOnly() default false;
3839
}

0 commit comments

Comments
 (0)