adds test for whenComplete() ordering, cleans up code a bit
diff --git a/test/io_test.dart b/test/io_test.dart
index 2bd630f..f8c523a 100644
--- a/test/io_test.dart
+++ b/test/io_test.dart
@@ -34,15 +34,15 @@
void main() {
config.config();
- alert.runTests();
+ /*alert.runTests();
command_event.runTests();
keyboard.runTests();
logs.runTests();
mouse.runTests();
navigation.runTests();
options.runTests();
- target_locator.runTests();
+ target_locator.runTests();*/
web_driver.runTests();
- web_element.runTests();
- window.runTests();
+ /*web_element.runTests();
+ window.runTests();*/
}
diff --git a/test/src/web_driver.dart b/test/src/web_driver.dart
index fd52f0e..2fa9258 100644
--- a/test/src/web_driver.dart
+++ b/test/src/web_driver.dart
@@ -14,6 +14,8 @@
library webdriver.web_driver_test;
+import 'dart:async';
+
import 'package:test/test.dart';
import 'package:webdriver/core.dart';
@@ -189,6 +191,27 @@
expect(screenshot, hasLength(isPositive));
expect(screenshot, new isInstanceOf<String>());
});
+
+ test('future based event listeners wait appropriately', () async {
+ var eventList = new List<int>();
+ int millisDelay = 2000;
+ int current = 0;
+ driver.addEventListener((WebDriverCommandEvent e) async {
+ return await new Future.delayed(new Duration(milliseconds: millisDelay),
+ (() {
+ eventList.add(current++);
+ millisDelay = (millisDelay / 2).round();
+ }));
+ });
+
+ for (int i = 0; i < 10; i++) {
+ await driver.title; // GET request.
+ }
+ expect(eventList, hasLength(10));
+ for (int i = 0; i < 10; i++) {
+ expect(eventList[i], i);
+ }
+ });
});
});
}