Skip to content

Commit 9239bf1

Browse files
Fix flaky BrowserComponentScreenshotTest on iOS
Addressed race condition where onLoad might fire before the test callback is registered. Increased post-load delay to 500ms to allow rendering to complete on slower devices. Modified test to instantiate BrowserComponent and add listeners before navigation starts.
1 parent ac2e71a commit 9239bf1

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

scripts/hellocodenameone/common/src/main/java/com/codenameone/examples/hellocodenameone/tests/BrowserComponentScreenshotTest.java

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,39 @@
77

88
public class BrowserComponentScreenshotTest extends BaseTest {
99
private BrowserComponent browser;
10+
private boolean loaded;
11+
private Runnable readyRunnable;
12+
private Form form;
13+
1014
@Override
1115
public boolean runTest() throws Exception {
1216
if (!BrowserComponent.isNativeBrowserSupported()) {
1317
done();
1418
return true;
1519
}
16-
Form form = createForm("Browser Test", new BorderLayout(), "BrowserComponent");
20+
form = createForm("Browser Test", new BorderLayout(), "BrowserComponent");
1721
browser = new BrowserComponent();
22+
browser.addWebEventListener(BrowserComponent.onLoad, evt -> {
23+
loaded = true;
24+
checkReady();
25+
});
1826
browser.setPage(buildHtml(), null);
1927
form.add(BorderLayout.CENTER, browser);
2028
form.show();
2129
return true;
2230
}
2331

32+
@Override
2433
protected void registerReadyCallback(Form parent, final Runnable run) {
25-
browser.addWebEventListener(BrowserComponent.onLoad, evt ->
26-
UITimer.timer(200, false, parent, run));
34+
this.readyRunnable = run;
35+
checkReady();
36+
}
37+
38+
private void checkReady() {
39+
if (loaded && readyRunnable != null) {
40+
UITimer.timer(500, false, form, readyRunnable);
41+
readyRunnable = null;
42+
}
2743
}
2844

2945
private static String buildHtml() {

0 commit comments

Comments
 (0)