diff --git a/dwds/test/debug_extension_test.dart b/dwds/test/debug_extension_test.dart index b56cdbd94..72bf7609f 100644 --- a/dwds/test/debug_extension_test.dart +++ b/dwds/test/debug_extension_test.dart @@ -38,6 +38,23 @@ final context = TestContext(); final devToolsLoadTime = const Duration(seconds: 4); void main() async { + Future waitForDartDevToolsWithRetry({ + int retryCount = 6, + Duration retryWait = const Duration(seconds: 1), + }) async { + if (retryCount == 0) return; + var windows = await context.webDriver.windows.toList(); + await context.webDriver.driver.switchTo.window(windows.last); + final title = await context.webDriver.title; + if (title == 'Dart DevTools') return; + + await Future.delayed(retryWait); + return waitForDartDevToolsWithRetry( + retryCount: retryCount--, + retryWait: retryWait, + ); + } + for (var useSse in [true, false]) { group(useSse ? 'SSE' : 'WebSockets', () { group('Without encoding', () { @@ -76,11 +93,9 @@ void main() async { await context.extensionConnection.sendCommand('Runtime.evaluate', { 'expression': 'fakeClick()', }); - await Future.delayed(devToolsLoadTime); - var windows = await context.webDriver.windows.toList(); - await context.webDriver.driver.switchTo.window(windows.last); + await waitForDartDevToolsWithRetry(); expect(await context.webDriver.title, 'Dart DevTools'); - }, skip: 'https://github.com/dart-lang/webdev/issues/1512'); + }); }); group('With a sharded Dart app', () { @@ -154,11 +169,9 @@ void main() async { await context.extensionConnection.sendCommand('Runtime.evaluate', { 'expression': 'fakeClick()', }); - await Future.delayed(devToolsLoadTime); - var windows = await context.webDriver.windows.toList(); - await context.webDriver.driver.switchTo.window(windows.last); + await waitForDartDevToolsWithRetry(); expect(await context.webDriver.title, 'Dart DevTools'); - }, skip: 'https://github.com/dart-lang/webdev/issues/1512'); + }); }); }); }