Skip to content

Commit a588c9a

Browse files
committed
Parameterize browser tests to allow executing them for Edge browser eclipse-platform#671
Browser tests were only executed for the default configuration of a system's browser using the SWT.NONE flag. Other configurations, such as using the Edge browser in Windows, were not tested. This change parameterizes the browser tests to also allow executing them for Edge browser on Windows. Due to current issues with the tests in the CI, this change only adds the parameterization but does not add Edge as a parameter yet. Contributes to eclipse-platform#671
1 parent 5aeb924 commit a588c9a

File tree

2 files changed

+52
-26
lines changed

2 files changed

+52
-26
lines changed

bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/Edge.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,7 @@ private <T> void waitForFutureToFinish(CompletableFuture<T> future) {
425425
* is required for processing the OS events during browser initialization, since
426426
* Edge browser initialization happens asynchronously.
427427
* <p>
428-
* {@link Display#readAndDisplay()} also processes events scheduled for
428+
* {@link Display#readAndDispatch()} also processes events scheduled for
429429
* asynchronous execution via {@link Display#asyncExec(Runnable)}. This may
430430
* include events such as the disposal of the browser's parent composite, which
431431
* leads to a failure in browser initialization if processed in between the OS

tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/Test_org_eclipse_swt_browser_Browser.java

+51-25
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import java.nio.file.Paths;
4242
import java.time.Instant;
4343
import java.util.ArrayList;
44+
import java.util.Collection;
4445
import java.util.Collections;
4546
import java.util.List;
4647
import java.util.Locale;
@@ -81,13 +82,17 @@
8182
import org.junit.Rule;
8283
import org.junit.Test;
8384
import org.junit.rules.TestName;
85+
import org.junit.runner.RunWith;
8486
import org.junit.runners.MethodSorters;
87+
import org.junit.runners.Parameterized;
88+
import org.junit.runners.Parameterized.Parameters;
8589

8690
/**
8791
* Automated Test Suite for class org.eclipse.swt.browser.Browser
8892
*
8993
* @see org.eclipse.swt.browser.Browser
9094
*/
95+
@RunWith(Parameterized.class)
9196
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
9297
public class Test_org_eclipse_swt_browser_Browser extends Test_org_eclipse_swt_widgets_Composite {
9398

@@ -132,6 +137,24 @@ private void testLogAppend(String msg) {
132137
boolean ignoreNonDisposedShells;
133138
static List<String> descriptors = new ArrayList<>();
134139

140+
private final int swtBrowserSettings;
141+
142+
@Parameters(name = "browser flags: {0}")
143+
public static Collection<Object[]> browserFlagsToTest() {
144+
List<Object[]> browserFlags = new ArrayList<>();
145+
if (SwtTestUtil.isWindows) {
146+
// NOTE: This is currently disabled due to test issues in the CI
147+
// Execute Edge tests first, because IE starts some OS timer that conflicts with Edge event handling
148+
// browserFlags.add(0, new Object[] {SWT.EDGE});
149+
}
150+
browserFlags.add(new Object[] {SWT.NONE});
151+
return browserFlags;
152+
}
153+
154+
public Test_org_eclipse_swt_browser_Browser(int swtBrowserSettings) {
155+
this.swtBrowserSettings = swtBrowserSettings;
156+
}
157+
135158
@Override
136159
@Before
137160
public void setUp() {
@@ -147,7 +170,7 @@ public void setUp() {
147170
System.out.println("Running Test_org_eclipse_swt_browser_Browser#" + name.getMethodName());
148171

149172
shell.setLayout(new FillLayout());
150-
browser = createBrowser(shell, SWT.NONE);
173+
browser = createBrowser(shell, swtBrowserSettings);
151174

152175
isEdge = browser.getBrowserType().equals("edge");
153176

@@ -249,8 +272,12 @@ private int reportOpenedDescriptors() {
249272
}
250273

251274
private Browser createBrowser(Shell s, int flags) {
275+
long maximumBrowserCreationMilliseconds = 10_000;
276+
long createStartTime = System.currentTimeMillis();
252277
Browser b = new Browser(s, flags);
253278
createdBroswers.add(b);
279+
long createDuration = System.currentTimeMillis() - createStartTime;
280+
assertTrue("creating browser took too long: " + createDuration + "ms", createDuration < maximumBrowserCreationMilliseconds);
254281
return b;
255282
}
256283

@@ -259,12 +286,12 @@ private Browser createBrowser(Shell s, int flags) {
259286
*/
260287
@Override
261288
public void test_ConstructorLorg_eclipse_swt_widgets_CompositeI() {
262-
Browser browser = createBrowser(shell, SWT.NONE);
289+
Browser browser = createBrowser(shell, swtBrowserSettings);
263290
browser.dispose();
264-
browser = createBrowser(shell, SWT.BORDER);
291+
browser = createBrowser(shell, SWT.BORDER | swtBrowserSettings);
265292
// System.out.println("Test_org_eclipse_swt_browser_Browser#test_Constructor*#getBrowserType(): " + browser.getBrowserType());
266293
browser.dispose();
267-
assertThrows(IllegalArgumentException.class, () -> createBrowser(null, SWT.NONE));
294+
assertThrows(IllegalArgumentException.class, () -> createBrowser(null, swtBrowserSettings));
268295
}
269296

270297
/**
@@ -275,7 +302,7 @@ public void test_Constructor_asyncParentDisposal() {
275302
Display.getCurrent().asyncExec(() -> {
276303
shell.dispose();
277304
});
278-
Browser browser = createBrowser(shell, SWT.EDGE);
305+
Browser browser = createBrowser(shell, swtBrowserSettings);
279306
assertFalse(browser.isDisposed());
280307
}
281308

@@ -448,7 +475,7 @@ public void test_getChildren() {
448475
public void test_CloseWindowListener_closeShell() {
449476
Display display = Display.getCurrent();
450477
Shell shell = new Shell(display);
451-
Browser browser = createBrowser(shell, SWT.NONE);
478+
Browser browser = createBrowser(shell, swtBrowserSettings);
452479
browser.addCloseWindowListener(event -> {}); // shouldn't throw
453480
shell.close();
454481
}
@@ -487,7 +514,7 @@ public void test_CloseWindowListener_close () {
487514
public void test_LocationListener_adapter_closeShell() {
488515
Display display = Display.getCurrent();
489516
Shell shell = new Shell(display);
490-
Browser browser = createBrowser(shell, SWT.NONE);
517+
Browser browser = createBrowser(shell, swtBrowserSettings);
491518
LocationAdapter adapter = new LocationAdapter() {};
492519
browser.addLocationListener(adapter); // shouldn't throw
493520
shell.close();
@@ -526,9 +553,9 @@ public void test_LocationListener_changing() {
526553
boolean passed = waitForPassCondition(changingFired::get);
527554
assertTrue("LocationListener.changing() event was never fired", passed);
528555
}
556+
529557
@Test
530558
public void test_LocationListener_changed() {
531-
532559
AtomicBoolean changedFired = new AtomicBoolean(false);
533560
browser.addLocationListener(changedAdapter(e -> changedFired.set(true)));
534561
shell.open();
@@ -737,7 +764,7 @@ public void test_LocationListener_ProgressListener_noExtraEvents() {
737764
public void test_OpenWindowListener_closeShell() {
738765
Display display = Display.getCurrent();
739766
Shell shell = new Shell(display);
740-
Browser browser = createBrowser(shell, SWT.NONE);
767+
Browser browser = createBrowser(shell, swtBrowserSettings);
741768
browser.addOpenWindowListener(event -> {});
742769
shell.close();
743770
}
@@ -762,7 +789,7 @@ public void test_OpenWindowListener_addAndRemove() {
762789
@Test
763790
public void test_OpenWindowListener_openHasValidEventDetails() {
764791
AtomicBoolean openFiredCorrectly = new AtomicBoolean(false);
765-
final Browser browserChild = createBrowser(shell, SWT.None);
792+
final Browser browserChild = createBrowser(shell, swtBrowserSettings);
766793
browser.addOpenWindowListener(event -> {
767794
assertSame("Expected Browser1 instance, but have another instance", browser, event.widget);
768795
assertNull("Expected event.browser to be null", event.browser);
@@ -786,7 +813,7 @@ public void test_OpenWindowListener_open_ChildPopup() {
786813
Shell childShell = new Shell(shell, SWT.None);
787814
childShell.setText("Child shell");
788815
childShell.setLayout(new FillLayout());
789-
final Browser browserChild = createBrowser(childShell, SWT.NONE);
816+
final Browser browserChild = createBrowser(childShell, swtBrowserSettings);
790817

791818
browser.addOpenWindowListener(event -> {
792819
event.browser = browserChild;
@@ -816,15 +843,14 @@ public void test_OpenWindowListener_open_ChildPopup() {
816843
/** Validate event order : Child's visibility should come before progress completed event */
817844
@Test
818845
public void test_OpenWindow_Progress_Listener_ValidateEventOrder() {
819-
820846
AtomicBoolean windowOpenFired = new AtomicBoolean(false);
821847
AtomicBoolean childCompleted = new AtomicBoolean(false);
822848
AtomicBoolean visibilityShowed = new AtomicBoolean(false);
823849

824850
Shell childShell = new Shell(shell, SWT.None);
825851
childShell.setText("Child shell");
826852
childShell.setLayout(new FillLayout());
827-
final Browser browserChild = createBrowser(childShell, SWT.NONE);
853+
final Browser browserChild = createBrowser(childShell, swtBrowserSettings);
828854

829855
browser.addOpenWindowListener(event -> {
830856
event.browser = browserChild;
@@ -874,7 +900,7 @@ public void test_ProgressListener_newProgressAdapter() {
874900
public void test_ProgressListener_newProgressAdapter_closeShell() {
875901
Display display = Display.getCurrent();
876902
Shell shell = new Shell(display);
877-
Browser browser = createBrowser(shell, SWT.NONE);
903+
Browser browser = createBrowser(shell, swtBrowserSettings);
878904
browser.addProgressListener(new ProgressAdapter() {});
879905
shell.close();
880906
}
@@ -883,7 +909,7 @@ public void test_ProgressListener_newProgressAdapter_closeShell() {
883909
public void test_ProgressListener_newListener_closeShell() {
884910
Display display = Display.getCurrent();
885911
Shell shell = new Shell(display);
886-
Browser browser = createBrowser(shell, SWT.NONE);
912+
Browser browser = createBrowser(shell, swtBrowserSettings);
887913
browser.addProgressListener(new ProgressListener() {
888914
@Override
889915
public void changed(ProgressEvent event) {
@@ -980,13 +1006,13 @@ public void test_StatusTextListener_addAndRemove() {
9801006
*/
9811007
@Test
9821008
public void test_StatusTextListener_hoverMouseOverLink() {
983-
assumeFalse(isEdge); // no API in Edge for this
1009+
assumeFalse("no API in Edge for this", isEdge);
9841010

9851011
AtomicBoolean statusChanged = new AtomicBoolean(false);
9861012
int size = 500;
9871013

9881014
// 1) Create a page that has a hyper link (covering the whole page)
989-
Browser browser = createBrowser(shell, SWT.NONE);
1015+
Browser browser = createBrowser(shell, swtBrowserSettings);
9901016
StringBuilder longhtml = new StringBuilder();
9911017
for (int i = 0; i < 200; i++) {
9921018
longhtml.append("text text text text text text text text text text text text text text text text text text text text text text text text<br>");
@@ -1026,7 +1052,7 @@ public void test_StatusTextListener_hoverMouseOverLink() {
10261052
public void test_TitleListener_addListener_closeShell() {
10271053
Display display = Display.getCurrent();
10281054
Shell shell = new Shell(display);
1029-
Browser browser = createBrowser(shell, SWT.NONE);
1055+
Browser browser = createBrowser(shell, swtBrowserSettings);
10301056
browser.addTitleListener(event -> {
10311057
});
10321058
shell.close();
@@ -1205,7 +1231,7 @@ public void test_VisibilityWindowListener_newAdapter() {
12051231
public void test_VisibilityWindowListener_newAdapter_closeShell() {
12061232
Display display = Display.getCurrent();
12071233
Shell shell = new Shell(display);
1208-
Browser browser = createBrowser(shell, SWT.NONE);
1234+
Browser browser = createBrowser(shell, swtBrowserSettings);
12091235
browser.addVisibilityWindowListener(new VisibilityWindowAdapter(){});
12101236
shell.close();
12111237
}
@@ -1214,7 +1240,7 @@ public void test_VisibilityWindowListener_newAdapter_closeShell() {
12141240
public void test_VisibilityWindowListener_newListener_closeShell() {
12151241
Display display = Display.getCurrent();
12161242
Shell shell = new Shell(display);
1217-
Browser browser = createBrowser(shell, SWT.NONE);
1243+
Browser browser = createBrowser(shell, swtBrowserSettings);
12181244
browser.addVisibilityWindowListener(new VisibilityWindowListener() {
12191245
@Override
12201246
public void hide(WindowEvent event) {
@@ -1260,7 +1286,7 @@ public void test_VisibilityWindowListener_multiple_shells() {
12601286
Shell childShell = new Shell(shell);
12611287
childShell.setText("Child shell " + childCount.get());
12621288
childShell.setLayout(new FillLayout());
1263-
Browser browserChild = createBrowser(childShell, SWT.NONE);
1289+
Browser browserChild = createBrowser(childShell, swtBrowserSettings);
12641290
event.browser = browserChild;
12651291
browserChild.setText("Child window");
12661292
browserChild.addVisibilityWindowListener(new VisibilityWindowAdapter() {
@@ -1319,7 +1345,7 @@ public void test_VisibilityWindowListener_eventSize() {
13191345
childShell.setSize(250, 350);
13201346
childShell.setText("Child shell");
13211347
childShell.setLayout(new FillLayout());
1322-
final Browser browserChild = createBrowser(childShell, SWT.NONE);
1348+
final Browser browserChild = createBrowser(childShell, swtBrowserSettings);
13231349

13241350
browser.addOpenWindowListener(event -> {
13251351
event.browser = browserChild;
@@ -1439,7 +1465,7 @@ public void test_setJavascriptEnabled_multipleInstances() {
14391465
AtomicBoolean instanceTwoFinishedCorrectly = new AtomicBoolean(false);
14401466

14411467

1442-
Browser browserSecondInsance = createBrowser(shell, SWT.None);
1468+
Browser browserSecondInsance = createBrowser(shell, swtBrowserSettings);
14431469

14441470
browser.addProgressListener(completedAdapter(event -> {
14451471
if (pageLoadCount.get() == 1) {
@@ -2511,8 +2537,8 @@ public Object function(Object[] arguments) {
25112537
@Test
25122538
public void test_BrowserFunction_multiprocess() {
25132539
// Test that BrowserFunctions work in multiple Browser instances simultaneously.
2514-
Browser browser1 = createBrowser(shell, SWT.NONE);
2515-
Browser browser2 = createBrowser(shell, SWT.NONE);
2540+
Browser browser1 = createBrowser(shell, swtBrowserSettings);
2541+
Browser browser2 = createBrowser(shell, swtBrowserSettings);
25162542

25172543
class JavaFunc extends BrowserFunction {
25182544
JavaFunc(Browser browser) {

0 commit comments

Comments
 (0)