diff --git a/runtime/observatory/.packages b/runtime/observatory/.packages
index 08b8b0b..69347be 100644
--- a/runtime/observatory/.packages
+++ b/runtime/observatory/.packages
@@ -3,7 +3,6 @@
 collection:../../third_party/observatory_pub_packages/packages/collection/lib
 intl:../../third_party/observatory_pub_packages/packages/intl/lib
 logging:../../third_party/observatory_pub_packages/packages/logging/lib
-matcher:../../third_party/observatory_pub_packages/packages/matcher/lib
 meta:../../third_party/observatory_pub_packages/packages/meta/lib
 observable:../../third_party/observatory_pub_packages/packages/observable/lib
 path:../../third_party/observatory_pub_packages/packages/path/lib
@@ -11,4 +10,25 @@
 stack_trace:../../third_party/observatory_pub_packages/packages/stack_trace/lib
 unittest:../../third_party/observatory_pub_packages/packages/unittest/lib
 usage:../../third_party/observatory_pub_packages/packages/usage/lib
-observatory:lib/
+observatory:lib
+
+# Testing only
+async:../../third_party/pkg/async/lib
+boolean_selector:../../third_party/pkg/boolean_selector/lib
+charcode:../../third_party/pkg/charcode/lib
+dart_internal:../../pkg/dart_internal/lib
+http:../../third_party/pkg/http/lib
+http_parser:../../third_party/pkg/http_parser/lib
+matcher:../../third_party/pkg/matcher/lib
+package_config:../../third_party/pkg_tested/package_config/lib
+package_resolver:../../third_party/pkg_tested/package_resolver/lib
+pool:../../third_party/pkg/pool/lib
+pub_semver:../../third_party/pkg/pub_semver/lib
+source_map_stack_trace:../../third_party/pkg/source_map_stack_trace/lib
+source_maps:../../third_party/pkg/source_maps/lib
+source_span:../../third_party/pkg/source_span/lib
+stream_channel:../../third_party/pkg/stream_channel/lib
+string_scanner:../../third_party/pkg/string_scanner/lib
+term_glyph:../../third_party/pkg/term_glyph/lib
+test:../../third_party/pkg/test/lib
+typed_data:../../third_party/pkg/typed_data/lib
diff --git a/runtime/observatory/tests/observatory_ui/allocation_profile/element_test.dart b/runtime/observatory/tests/observatory_ui/allocation_profile/element_test.dart
index 5fe996a..3673da4 100644
--- a/runtime/observatory/tests/observatory_ui/allocation_profile/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/allocation_profile/element_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:html';
 import 'dart:async';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/models.dart' as M;
 import 'package:observatory/src/elements/allocation_profile.dart';
 import 'package:observatory/src/elements/class_ref.dart';
@@ -32,7 +32,7 @@
     final completer = new Completer<AllocationProfileMock>();
     final repo = new AllocationProfileRepositoryMock(
         getter:
-            expectAsync((M.IsolateRef i, bool gc, bool reset, bool combine) {
+            expectAsync4((M.IsolateRef i, bool gc, bool reset, bool combine) {
       expect(i, equals(isolate));
       expect(gc, isFalse);
       expect(reset, isFalse);
@@ -57,7 +57,7 @@
       int step = 0;
       final repo = new AllocationProfileRepositoryMock(
           getter:
-              expectAsync((M.IsolateRef i, bool gc, bool reset, bool combine) {
+              expectAsync4((M.IsolateRef i, bool gc, bool reset, bool combine) {
         expect(i, equals(isolate));
         expect(combine, isFalse);
         switch (step) {
@@ -100,7 +100,7 @@
       int count = 0;
       final repo = new AllocationProfileRepositoryMock(
           getter:
-              expectAsync((M.IsolateRef i, bool gc, bool reset, bool combine) {
+              expectAsync4((M.IsolateRef i, bool gc, bool reset, bool combine) {
         expect(i, equals(isolate));
         expect(gc, isFalse);
         expect(reset, isFalse);
@@ -151,7 +151,7 @@
       final completer = new Completer<AllocationProfileMock>();
       final repo = new AllocationProfileRepositoryMock(
           getter:
-              expectAsync((M.IsolateRef i, bool gc, bool reset, bool combine) {
+              expectAsync4((M.IsolateRef i, bool gc, bool reset, bool combine) {
         expect(i, equals(isolate));
         expect(gc, isFalse);
         expect(reset, isFalse);
diff --git a/runtime/observatory/tests/observatory_ui/class_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/class_ref/element_test.dart
index 41aeb10..3baccf5 100644
--- a/runtime/observatory/tests/observatory_ui/class_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/class_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/class_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/class_tree/element_test.dart b/runtime/observatory/tests/observatory_ui/class_tree/element_test.dart
index 495e841..ed05811 100644
--- a/runtime/observatory/tests/observatory_ui/class_tree/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/class_tree/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/class_tree.dart';
 import 'package:observatory/src/elements/nav/notify.dart';
 import '../mocks.dart';
@@ -43,12 +43,12 @@
           events,
           notifications,
           new ClassRepositoryMock(
-              object: expectAsync((i) async {
+              object: expectAsync1((i) async {
                 expect(i, equals(isolate));
                 expect(rendered, isFalse);
                 return object;
               }, count: 1),
-              getter: expectAsync((i, id) async {
+              getter: expectAsync2((i, id) async {
                 expect(i, equals(isolate));
                 expect(ids.contains(id), isTrue);
                 switch (id) {
diff --git a/runtime/observatory/tests/observatory_ui/code_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/code_ref/element_test.dart
index 7a65c84..4f9e229 100644
--- a/runtime/observatory/tests/observatory_ui/code_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/code_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/code_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/context_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/context_ref/element_test.dart
index dadeb4d..857f99b 100644
--- a/runtime/observatory/tests/observatory_ui/context_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/context_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/context_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/context_view/element_test.dart b/runtime/observatory/tests/observatory_ui/context_view/element_test.dart
index 6228d54..f2552d3 100644
--- a/runtime/observatory/tests/observatory_ui/context_view/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/context_view/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/context_view.dart';
 import 'package:observatory/src/elements/nav/refresh.dart';
 import 'package:observatory/src/elements/object_common.dart';
@@ -35,7 +35,7 @@
   });
   test('elements created after attachment', () async {
     final contexts = new ContextRepositoryMock(
-        getter: expectAsync((i, id) async {
+        getter: expectAsync2((i, id) async {
       expect(i, equals(isolate));
       expect(id, equals(context.id));
       return context;
diff --git a/runtime/observatory/tests/observatory_ui/cpu_profile/element_test.dart b/runtime/observatory/tests/observatory_ui/cpu_profile/element_test.dart
index 1bba139..a596684 100644
--- a/runtime/observatory/tests/observatory_ui/cpu_profile/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/cpu_profile/element_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:html';
 import 'dart:async';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/models.dart' as M;
 import 'package:observatory/src/elements/cpu_profile.dart';
 import 'package:observatory/src/elements/cpu_profile/virtual_tree.dart';
diff --git a/runtime/observatory/tests/observatory_ui/cpu_profile/virtual-tree/element_test.dart b/runtime/observatory/tests/observatory_ui/cpu_profile/virtual-tree/element_test.dart
index cb93e56..1f15445 100644
--- a/runtime/observatory/tests/observatory_ui/cpu_profile/virtual-tree/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/cpu_profile/virtual-tree/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/models.dart' as M;
 import 'package:observatory/src/elements/cpu_profile/virtual_tree.dart';
 import '../../mocks.dart';
diff --git a/runtime/observatory/tests/observatory_ui/cpu_profile_table/element_test.dart b/runtime/observatory/tests/observatory_ui/cpu_profile_table/element_test.dart
index f4bd1c8..9857f12 100644
--- a/runtime/observatory/tests/observatory_ui/cpu_profile_table/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/cpu_profile_table/element_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:html';
 import 'dart:async';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/models.dart' as M;
 import 'package:observatory/src/elements/cpu_profile_table.dart';
 import 'package:observatory/src/elements/cpu_profile/virtual_tree.dart';
diff --git a/runtime/observatory/tests/observatory_ui/curly_block/element_test.dart b/runtime/observatory/tests/observatory_ui/curly_block/element_test.dart
index 882f665..e647e5f 100644
--- a/runtime/observatory/tests/observatory_ui/curly_block/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/curly_block/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/curly_block.dart';
 
 main() {
@@ -152,7 +152,7 @@
       await e.onRendered.first;
     });
     test('fires on toggle', () async {
-      e.onToggle.listen(expectAsync((CurlyBlockToggleEvent event) {
+      e.onToggle.listen(expectAsync1((CurlyBlockToggleEvent event) {
         expect(event, isNotNull);
         expect(event.control, equals(e));
       }, count: 1));
@@ -160,7 +160,7 @@
       await e.onRendered.first;
     });
     test('fires on manual toggle', () async {
-      e.onToggle.listen(expectAsync((CurlyBlockToggleEvent event) {
+      e.onToggle.listen(expectAsync1((CurlyBlockToggleEvent event) {
         expect(event, isNotNull);
         expect(event.control, equals(e));
       }, count: 1));
@@ -168,7 +168,7 @@
       await e.onRendered.first;
     });
     test('does not fire if setting same expanded value', () async {
-      e.onToggle.listen(expectAsync((_) {}, count: 0));
+      e.onToggle.listen(expectAsync1((_) {}, count: 0));
       e.expanded = e.expanded;
       await e.onRendered.first;
     });
diff --git a/runtime/observatory/tests/observatory_ui/error_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/error_ref/element_test.dart
index 59bddca..867b5f2 100644
--- a/runtime/observatory/tests/observatory_ui/error_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/error_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/error_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/error_view/element_test.dart b/runtime/observatory/tests/observatory_ui/error_view/element_test.dart
index 7d30a03..e69fec7 100644
--- a/runtime/observatory/tests/observatory_ui/error_view/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/error_view/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/error_view.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/field_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/field_ref/element_test.dart
index 653f0c6..75df874 100644
--- a/runtime/observatory/tests/observatory_ui/field_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/field_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/models.dart' as M;
 import 'package:observatory/src/elements/field_ref.dart';
 import 'package:observatory/src/elements/instance_ref.dart';
diff --git a/runtime/observatory/tests/observatory_ui/flag_list/element_test.dart b/runtime/observatory/tests/observatory_ui/flag_list/element_test.dart
index e2c74f5..023f08a 100644
--- a/runtime/observatory/tests/observatory_ui/flag_list/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/flag_list/element_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:html';
 import 'package:observatory/models.dart' as M;
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/flag_list.dart';
 import 'package:observatory/src/elements/nav/notify.dart';
 import '../mocks.dart';
diff --git a/runtime/observatory/tests/observatory_ui/function_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/function_ref/element_test.dart
index 4068493..516b9d5 100644
--- a/runtime/observatory/tests/observatory_ui/function_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/function_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/function_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/general_error/element_test.dart b/runtime/observatory/tests/observatory_ui/general_error/element_test.dart
index 4957467..2509c92 100644
--- a/runtime/observatory/tests/observatory_ui/general_error/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/general_error/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/general_error.dart';
 import 'package:observatory/src/elements/nav/notify.dart';
 import '../mocks.dart';
diff --git a/runtime/observatory/tests/observatory_ui/heap_snapshot/element_test.dart b/runtime/observatory/tests/observatory_ui/heap_snapshot/element_test.dart
index ecebb93..1907d27 100644
--- a/runtime/observatory/tests/observatory_ui/heap_snapshot/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/heap_snapshot/element_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:html';
 import 'dart:async';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/models.dart' as M;
 import 'package:observatory/src/elements/containers/virtual_tree.dart';
 import 'package:observatory/src/elements/heap_snapshot.dart';
diff --git a/runtime/observatory/tests/observatory_ui/icdata_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/icdata_ref/element_test.dart
index 89063c4..263c4fb 100644
--- a/runtime/observatory/tests/observatory_ui/icdata_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/icdata_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/instance_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/icdata_view/element_test.dart b/runtime/observatory/tests/observatory_ui/icdata_view/element_test.dart
index 9599570..3e4907b 100644
--- a/runtime/observatory/tests/observatory_ui/icdata_view/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/icdata_view/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/icdata_view.dart';
 import 'package:observatory/src/elements/nav/refresh.dart';
 import 'package:observatory/src/elements/object_common.dart';
@@ -35,7 +35,7 @@
   });
   test('elements created after attachment', () async {
     final icdatas = new ICDataRepositoryMock(
-        getter: expectAsync((i, id) async {
+        getter: expectAsync2((i, id) async {
       expect(i, equals(isolate));
       expect(id, equals(icdata.id));
       return icdata;
diff --git a/runtime/observatory/tests/observatory_ui/inbound_references/element_test.dart b/runtime/observatory/tests/observatory_ui/inbound_references/element_test.dart
index 5ecf47b..aa0eac2 100644
--- a/runtime/observatory/tests/observatory_ui/inbound_references/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/inbound_references/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/curly_block.dart';
 import 'package:observatory/src/elements/inbound_references.dart';
 import 'package:observatory/src/elements/instance_ref.dart';
@@ -32,7 +32,7 @@
         elements: const [const InboundReferenceMock(source: source)]);
     bool invoked = false;
     final inbounds = new InboundReferencesRepositoryMock(
-        getter: expectAsync((i, id) async {
+        getter: expectAsync2((i, id) async {
       expect(i, equals(isolate));
       expect(id, equals(object.id));
       invoked = true;
diff --git a/runtime/observatory/tests/observatory_ui/instance_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/instance_ref/element_test.dart
index e156fa7..bbec367 100644
--- a/runtime/observatory/tests/observatory_ui/instance_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/instance_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/icdata_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/isolate/counter_chart/element_test.dart b/runtime/observatory/tests/observatory_ui/isolate/counter_chart/element_test.dart
index 8aef7df..af3b05f 100644
--- a/runtime/observatory/tests/observatory_ui/isolate/counter_chart/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/isolate/counter_chart/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/isolate/counter_chart.dart';
 
 main() {
diff --git a/runtime/observatory/tests/observatory_ui/isolate/isolate-shared-summary/element_test.dart b/runtime/observatory/tests/observatory_ui/isolate/isolate-shared-summary/element_test.dart
index f87a61a..fbbfaf1 100644
--- a/runtime/observatory/tests/observatory_ui/isolate/isolate-shared-summary/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/isolate/isolate-shared-summary/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/isolate/counter_chart.dart';
 import 'package:observatory/src/elements/isolate/shared_summary.dart';
 import '../../mocks.dart';
diff --git a/runtime/observatory/tests/observatory_ui/isolate_reconnect/element_test.dart b/runtime/observatory/tests/observatory_ui/isolate_reconnect/element_test.dart
index 9a40331c..10ba984 100644
--- a/runtime/observatory/tests/observatory_ui/isolate_reconnect/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/isolate_reconnect/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/isolate_reconnect.dart';
 import 'package:observatory/src/elements/nav/notify.dart';
 import '../mocks.dart';
diff --git a/runtime/observatory/tests/observatory_ui/isolate_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/isolate_ref/element_test.dart
index 6d4e25b..7dd81cc 100644
--- a/runtime/observatory/tests/observatory_ui/isolate_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/isolate_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/isolate_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/library_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/library_ref/element_test.dart
index f1e2dda..53d176d 100644
--- a/runtime/observatory/tests/observatory_ui/library_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/library_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/library_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/local_var_descriptor_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/local_var_descriptor_ref/element_test.dart
index c3071a8..eeae150 100644
--- a/runtime/observatory/tests/observatory_ui/local_var_descriptor_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/local_var_descriptor_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/local_var_descriptors_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/megamorphiccache_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/megamorphiccache_ref/element_test.dart
index 41e879d..7a48808 100644
--- a/runtime/observatory/tests/observatory_ui/megamorphiccache_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/megamorphiccache_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/megamorphiccache_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/megamorphiccache_view/element_test.dart b/runtime/observatory/tests/observatory_ui/megamorphiccache_view/element_test.dart
index 7024d41..81dc1cd 100644
--- a/runtime/observatory/tests/observatory_ui/megamorphiccache_view/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/megamorphiccache_view/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/megamorphiccache_view.dart';
 import 'package:observatory/src/elements/nav/refresh.dart';
 import 'package:observatory/src/elements/object_common.dart';
@@ -45,7 +45,7 @@
   });
   test('elements created after attachment', () async {
     final caches = new MegamorphicCacheRepositoryMock(
-        getter: expectAsync((i, id) async {
+        getter: expectAsync2((i, id) async {
       expect(i, equals(isolate));
       expect(id, equals(cache.id));
       return cache;
diff --git a/runtime/observatory/tests/observatory_ui/mocks/repositories/event.dart b/runtime/observatory/tests/observatory_ui/mocks/repositories/event.dart
index 2bbdb4b..8b74218 100644
--- a/runtime/observatory/tests/observatory_ui/mocks/repositories/event.dart
+++ b/runtime/observatory/tests/observatory_ui/mocks/repositories/event.dart
@@ -6,134 +6,146 @@
 
 class EventRepositoryMock implements M.EventRepository {
   final _onEvent = new StreamController<M.Event>.broadcast();
-  get onEvent => _onEvent.stream;
+  Stream<M.Event> get onEvent => _onEvent.stream;
   get onEventHasListener => _onEvent.hasListener;
 
   final _onVMEvent = new StreamController<M.VMEvent>.broadcast();
-  get onVMEvent => _onVMEvent.stream;
+  Stream<M.VMEvent> get onVMEvent => _onVMEvent.stream;
   get onVMEventHasListener => _onVMEvent.hasListener;
 
-  final _onVMUpdate = new StreamController<M.Event>.broadcast();
-  get onVMUpdate => _onVMUpdate.stream;
+  final _onVMUpdate = new StreamController<M.VMUpdateEvent>.broadcast();
+  Stream<M.VMUpdateEvent> get onVMUpdate => _onVMUpdate.stream;
   get onVMUpdateHasListener => _onVMUpdate.hasListener;
 
   final _onIsolateEvent = new StreamController<M.IsolateEvent>.broadcast();
-  get onIsolateEvent => _onIsolateEvent.stream;
+  Stream<M.IsolateEvent> get onIsolateEvent => _onIsolateEvent.stream;
   get onIsolateEventHasListener => _onIsolateEvent.hasListener;
 
   final _onIsolateStart = new StreamController<M.IsolateStartEvent>.broadcast();
-  get onIsolateStart => _onIsolateStart.stream;
+  Stream<M.IsolateStartEvent> get onIsolateStart => _onIsolateStart.stream;
   get onIsolateStartHasListener => _onIsolateStart.hasListener;
 
   final _onIsolateRunnable =
       new StreamController<M.IsolateRunnableEvent>.broadcast();
-  get onIsolateRunnable => _onIsolateRunnable.stream;
+  Stream<M.IsolateRunnableEvent> get onIsolateRunnable =>
+      _onIsolateRunnable.stream;
   get onIsolateRunnableHasListener => _onIsolateRunnable.hasListener;
 
   final _onIsolateExit = new StreamController<M.IsolateExitEvent>.broadcast();
-  get onIsolateExit => _onIsolateExit.stream;
+  Stream<M.IsolateExitEvent> get onIsolateExit => _onIsolateExit.stream;
   get onIsolateExitHasListener => _onIsolateExit.hasListener;
 
   final _onIsolateUpdate =
       new StreamController<M.IsolateUpdateEvent>.broadcast();
-  get onIsolateUpdate => _onIsolateUpdate.stream;
+  Stream<M.IsolateUpdateEvent> get onIsolateUpdate => _onIsolateUpdate.stream;
   get onIsolateUpdateHasListener => _onIsolateUpdate.hasListener;
 
   final _onIsolateReload =
       new StreamController<M.IsolateReloadEvent>.broadcast();
-  get onIsolateReload => _onIsolateReload.stream;
+  Stream<M.IsolateReloadEvent> get onIsolateReload => _onIsolateReload.stream;
   get onIsolateReloadHasListener => _onIsolateReload.hasListener;
 
   final _onServiceExtensionAdded =
       new StreamController<M.ServiceExtensionAddedEvent>.broadcast();
-  get onServiceExtensionAdded => _onServiceExtensionAdded.stream;
+  Stream<M.ServiceExtensionAddedEvent> get onServiceExtensionAdded =>
+      _onServiceExtensionAdded.stream;
   get onServiceExtensionAddedHasListener =>
       _onServiceExtensionAdded.hasListener;
 
   final _onDebugEvent = new StreamController<M.DebugEvent>.broadcast();
-  get onDebugEvent => _onDebugEvent.stream;
+  Stream<M.DebugEvent> get onDebugEvent => _onDebugEvent.stream;
   get onDebugEventHasListener => _onDebugEvent.hasListener;
 
   final _onPauseStart = new StreamController<M.PauseStartEvent>.broadcast();
-  get onPauseStart => _onPauseStart.stream;
+  Stream<M.PauseStartEvent> get onPauseStart => _onPauseStart.stream;
   get onPauseStartHasListener => _onPauseStart.hasListener;
 
   final _onPauseExit = new StreamController<M.PauseExitEvent>.broadcast();
-  get onPauseExit => _onPauseExit.stream;
+  Stream<M.PauseExitEvent> get onPauseExit => _onPauseExit.stream;
   get onPauseExitHasListener => _onPauseExit.hasListener;
 
   final _onPauseBreakpoint =
       new StreamController<M.PauseBreakpointEvent>.broadcast();
-  get onPauseBreakpoint => _onPauseBreakpoint.stream;
+  Stream<M.PauseBreakpointEvent> get onPauseBreakpoint =>
+      _onPauseBreakpoint.stream;
   get onPauseBreakpointHasListener => _onPauseBreakpoint.hasListener;
 
   final _onPauseInterrupted =
       new StreamController<M.PauseInterruptedEvent>.broadcast();
-  get onPauseInterrupted => _onPauseInterrupted.stream;
+  Stream<M.PauseInterruptedEvent> get onPauseInterrupted =>
+      _onPauseInterrupted.stream;
   get onPauseInterruptedHasListener => _onPauseInterrupted.hasListener;
 
   final _onPauseException =
       new StreamController<M.PauseExceptionEvent>.broadcast();
-  get onPauseException => _onPauseException.stream;
+  Stream<M.PauseExceptionEvent> get onPauseException =>
+      _onPauseException.stream;
   get onPauseExceptionHasListener => _onPauseException.hasListener;
 
   final _onResume = new StreamController<M.ResumeEvent>.broadcast();
-  get onResume => _onResume.stream;
+  Stream<M.ResumeEvent> get onResume => _onResume.stream;
   get onResumeHasListener => _onResume.hasListener;
 
   final _onBreakpointAdded =
       new StreamController<M.BreakpointAddedEvent>.broadcast();
-  get onBreakpointAdded => _onBreakpointAdded.stream;
+  Stream<M.BreakpointAddedEvent> get onBreakpointAdded =>
+      _onBreakpointAdded.stream;
   get onBreakpointAddedHasListener => _onBreakpointAdded.hasListener;
 
   final _onBreakpointResolved =
       new StreamController<M.BreakpointResolvedEvent>.broadcast();
-  get onBreakpointResolved => _onBreakpointResolved.stream;
+  Stream<M.BreakpointResolvedEvent> get onBreakpointResolved =>
+      _onBreakpointResolved.stream;
   get onBreakpointResolvedHasListener => _onBreakpointResolved.hasListener;
 
   final _onBreakpointRemoved =
       new StreamController<M.BreakpointRemovedEvent>.broadcast();
-  get onBreakpointRemoved => _onBreakpointRemoved.stream;
+  Stream<M.BreakpointRemovedEvent> get onBreakpointRemoved =>
+      _onBreakpointRemoved.stream;
   get onBreakpointRemovedHasListener => _onBreakpointRemoved.hasListener;
 
   final _onInspect = new StreamController<M.InspectEvent>.broadcast();
-  get onInspect => _onInspect.stream;
+  Stream<M.InspectEvent> get onInspect => _onInspect.stream;
   get onInspectHasListener => _onInspect.hasListener;
 
   final _onGCEvent = new StreamController<M.GCEvent>.broadcast();
-  get onGCEvent => _onGCEvent.stream;
+  Stream<M.GCEvent> get onGCEvent => _onGCEvent.stream;
   get onGCEventHasListener => _onGCEvent.hasListener;
 
   final _onLoggingEvent = new StreamController<M.LoggingEvent>.broadcast();
-  get onLoggingEvent => _onLoggingEvent.stream;
+  Stream<M.LoggingEvent> get onLoggingEvent => _onLoggingEvent.stream;
   get onLoggingEventHasListener => _onLoggingEvent.hasListener;
 
   final _onExtensionEvent = new StreamController<M.ExtensionEvent>.broadcast();
-  get onExtensionEvent => _onExtensionEvent.stream;
+  Stream<M.ExtensionEvent> get onExtensionEvent => _onExtensionEvent.stream;
   get onExtensionEventHasListener => _onExtensionEvent.hasListener;
 
   final _onTimelineEvents =
       new StreamController<M.TimelineEventsEvent>.broadcast();
-  get onTimelineEvents => _onTimelineEvents.stream;
+  Stream<M.TimelineEventsEvent> get onTimelineEvents =>
+      _onTimelineEvents.stream;
   get onTimelineEventsEventHasListener => _onTimelineEvents.hasListener;
 
   final _onConnectionClosed =
       new StreamController<M.ConnectionClosedEvent>.broadcast();
-  get onConnectionClosed => _onConnectionClosed.stream;
+  Stream<M.ConnectionClosedEvent> get onConnectionClosed =>
+      _onConnectionClosed.stream;
   get onConnectionClosedHasListener => _onConnectionClosed.hasListener;
 
   final _onServiceEvent = new StreamController<M.ServiceEvent>.broadcast();
-  get onServiceEvent => _onServiceEvent.stream;
+  Stream<M.ServiceEvent> get onServiceEvent => _onServiceEvent.stream;
   get onServiceEventHasListener => _onServiceEvent.hasListener;
 
   final _onServiceRegistered =
       new StreamController<M.ServiceRegisteredEvent>.broadcast();
-  get onServiceRegistered => _onServiceRegistered.stream;
+  Stream<M.ServiceRegisteredEvent> get onServiceRegistered =>
+      _onServiceRegistered.stream;
   get onServiceRegisteredHasListener => _onServiceRegistered.hasListener;
 
   final _onServiceUnregistered =
       new StreamController<M.ServiceUnregisteredEvent>.broadcast();
-  get onServiceUnregistered => _onServiceUnregistered.stream;
+  Stream<M.ServiceUnregisteredEvent> get onServiceUnregistered =>
+      _onServiceUnregistered.stream;
   get onServiceUnregisteredHasListener => _onServiceUnregistered.hasListener;
 
   void add(M.Event event) {
diff --git a/runtime/observatory/tests/observatory_ui/nav/class-menu/element_test.dart b/runtime/observatory/tests/observatory_ui/nav/class-menu/element_test.dart
index 263ab43..ba755bc 100644
--- a/runtime/observatory/tests/observatory_ui/nav/class-menu/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/class-menu/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/class_menu.dart';
 import '../../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/nav/isolate-menu/element_test.dart b/runtime/observatory/tests/observatory_ui/nav/isolate-menu/element_test.dart
index 5d40f27..80d3e70 100644
--- a/runtime/observatory/tests/observatory_ui/nav/isolate-menu/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/isolate-menu/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/isolate_menu.dart';
 import '../../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/nav/library-menu/element_test.dart b/runtime/observatory/tests/observatory_ui/nav/library-menu/element_test.dart
index c566588..59c59b6 100644
--- a/runtime/observatory/tests/observatory_ui/nav/library-menu/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/library-menu/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/library_menu.dart';
 import '../../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/nav/menu-item/element_test.dart b/runtime/observatory/tests/observatory_ui/nav/menu-item/element_test.dart
index ccb778f..8f77748 100644
--- a/runtime/observatory/tests/observatory_ui/nav/menu-item/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/menu-item/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/menu_item.dart';
 
 main() {
diff --git a/runtime/observatory/tests/observatory_ui/nav/notify/element_test.dart b/runtime/observatory/tests/observatory_ui/nav/notify/element_test.dart
index 1b647d8..3fafd60 100644
--- a/runtime/observatory/tests/observatory_ui/nav/notify/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/notify/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html' hide Notification, NotificationEvent;
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/models.dart' as M;
 import 'package:observatory/src/elements/nav/notify.dart';
 import 'package:observatory/src/elements/nav/notify_event.dart';
diff --git a/runtime/observatory/tests/observatory_ui/nav/notify_event/element_test.dart b/runtime/observatory/tests/observatory_ui/nav/notify_event/element_test.dart
index e653dbc..557a278 100644
--- a/runtime/observatory/tests/observatory_ui/nav/notify_event/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/notify_event/element_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:html';
 import 'dart:async';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/notify_event.dart';
 import '../../mocks.dart';
 
@@ -14,9 +14,11 @@
   final event = new PauseStartEventMock(
       isolate: new IsolateMock(id: 'isolate-id', name: 'isolate-name'));
   group('instantiation', () {
-    final e = new NavNotifyEventElement(event);
-    expect(e, isNotNull, reason: 'element correctly created');
-    expect(e.event, equals(event));
+    test('default', () {
+      final e = new NavNotifyEventElement(event);
+      expect(e, isNotNull, reason: 'element correctly created');
+      expect(e.event, equals(event));
+    });
   });
   group('elements', () {
     test('created after attachment', () async {
@@ -43,18 +45,18 @@
     });
     test('navigation after connect', () async {
       sub = window.onPopState
-          .listen(expectAsync((_) {}, count: 1, reason: 'event is fired'));
+          .listen(expectAsync1((_) {}, count: 1, reason: 'event is fired'));
       e.querySelector('a').click();
     });
     test('onDelete events (DOM)', () async {
-      sub = e.onDelete.listen(expectAsync((EventDeleteEvent ev) {
+      sub = e.onDelete.listen(expectAsync1((EventDeleteEvent ev) {
         expect(ev, isNotNull, reason: 'event is passed');
         expect(ev.event, equals(event), reason: 'exception is the same');
       }, count: 1, reason: 'event is fired'));
       e.querySelector('button').click();
     });
     test('onDelete events (code)', () async {
-      sub = e.onDelete.listen(expectAsync((EventDeleteEvent ev) {
+      sub = e.onDelete.listen(expectAsync1((EventDeleteEvent ev) {
         expect(ev, isNotNull, reason: 'event is passed');
         expect(ev.event, equals(event), reason: 'exception is the same');
       }, count: 1, reason: 'event is fired'));
diff --git a/runtime/observatory/tests/observatory_ui/nav/notify_exception/connection_exception_test.dart b/runtime/observatory/tests/observatory_ui/nav/notify_exception/connection_exception_test.dart
index 4f19e64..473ab77 100644
--- a/runtime/observatory/tests/observatory_ui/nav/notify_exception/connection_exception_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/notify_exception/connection_exception_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:html';
 import 'dart:async';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/notify_exception.dart';
 import '../../mocks.dart';
 
@@ -39,11 +39,11 @@
     });
     test('navigation after connect', () async {
       sub = window.onPopState
-          .listen(expectAsync((_) {}, count: 1, reason: 'event is fired'));
+          .listen(expectAsync1((_) {}, count: 1, reason: 'event is fired'));
       e.querySelector('a').click();
     });
     test('onDelete events (DOM)', () async {
-      sub = e.onDelete.listen(expectAsync((ExceptionDeleteEvent event) {
+      sub = e.onDelete.listen(expectAsync1((ExceptionDeleteEvent event) {
         expect(event, isNotNull, reason: 'event is passed');
         expect(event.exception, equals(exception),
             reason: 'exception is the same');
@@ -52,7 +52,7 @@
       e.querySelector('button').click();
     });
     test('onDelete events (code)', () async {
-      sub = e.onDelete.listen(expectAsync((ExceptionDeleteEvent event) {
+      sub = e.onDelete.listen(expectAsync1((ExceptionDeleteEvent event) {
         expect(event, isNotNull, reason: 'event is passed');
         expect(event.exception, equals(exception),
             reason: 'exception is the same');
diff --git a/runtime/observatory/tests/observatory_ui/nav/notify_exception/exception_test.dart b/runtime/observatory/tests/observatory_ui/nav/notify_exception/exception_test.dart
index 8d4b94e..d521aa2 100644
--- a/runtime/observatory/tests/observatory_ui/nav/notify_exception/exception_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/notify_exception/exception_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:html';
 import 'dart:async';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/notify_exception.dart';
 
 main() {
@@ -65,11 +65,11 @@
       });
       test('navigation after connect', () async {
         sub = window.onPopState
-            .listen(expectAsync((_) {}, count: 1, reason: 'event is fired'));
+            .listen(expectAsync1((_) {}, count: 1, reason: 'event is fired'));
         e.querySelector('a').click();
       });
       test('onDelete events (DOM)', () async {
-        sub = e.onDelete.listen(expectAsync((ExceptionDeleteEvent event) {
+        sub = e.onDelete.listen(expectAsync1((ExceptionDeleteEvent event) {
           expect(event, isNotNull, reason: 'event is passed');
           expect(event.exception, equals(ex), reason: 'exception is the same');
           expect(event.stacktrace, equals(st),
@@ -78,7 +78,7 @@
         e.querySelector('button').click();
       });
       test('onDelete events (code)', () async {
-        sub = e.onDelete.listen(expectAsync((ExceptionDeleteEvent event) {
+        sub = e.onDelete.listen(expectAsync1((ExceptionDeleteEvent event) {
           expect(event, isNotNull, reason: 'event is passed');
           expect(event.exception, equals(ex), reason: 'exception is the same');
           expect(event.stacktrace, equals(st),
diff --git a/runtime/observatory/tests/observatory_ui/nav/refresh/element_test.dart b/runtime/observatory/tests/observatory_ui/nav/refresh/element_test.dart
index 6752929..6880244 100644
--- a/runtime/observatory/tests/observatory_ui/nav/refresh/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/refresh/element_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:html';
 import 'dart:async';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/refresh.dart';
 
 main() {
@@ -95,7 +95,7 @@
       await e.onRendered.first;
     });
     test('fires', () async {
-      sub = e.onRefresh.listen(expectAsync((event) {
+      sub = e.onRefresh.listen(expectAsync1((event) {
         expect(event, isNotNull, reason: 'event passed');
         expect(event is RefreshEvent, isTrue, reason: 'is the right event');
         expect(event.element, equals(e), reason: 'is related to the element');
@@ -103,7 +103,7 @@
       e.refresh();
     });
     test('fires on click', () async {
-      sub = e.onRefresh.listen(expectAsync((event) {
+      sub = e.onRefresh.listen(expectAsync1((event) {
         expect(event, isNotNull, reason: 'event passed');
         expect(event is RefreshEvent, isTrue, reason: 'is the right event');
         expect(event.element, equals(e), reason: 'is related to the element');
@@ -112,12 +112,12 @@
     });
     test('does not fire if disabled', () async {
       e.disabled = true;
-      sub = e.onRefresh.listen(expectAsync((_) {}, count: 0));
+      sub = e.onRefresh.listen(expectAsync1((_) {}, count: 0));
       e.refresh();
     });
     test('does not fires on click if disabled', () async {
       e.disabled = true;
-      sub = e.onRefresh.listen(expectAsync((_) {}, count: 0));
+      sub = e.onRefresh.listen(expectAsync1((_) {}, count: 0));
       e.querySelector('button').click();
     });
   });
diff --git a/runtime/observatory/tests/observatory_ui/nav/top_menu/element_test.dart b/runtime/observatory/tests/observatory_ui/nav/top_menu/element_test.dart
index 165bfe5..7ddd2ca 100644
--- a/runtime/observatory/tests/observatory_ui/nav/top_menu/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/top_menu/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/top_menu.dart';
 
 main() {
diff --git a/runtime/observatory/tests/observatory_ui/nav/vm_menu/element_test.dart b/runtime/observatory/tests/observatory_ui/nav/vm_menu/element_test.dart
index e29cb9a..be95c7a 100644
--- a/runtime/observatory/tests/observatory_ui/nav/vm_menu/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/vm_menu/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/menu_item.dart';
 import 'package:observatory/src/elements/nav/vm_menu.dart';
 import '../../mocks.dart';
diff --git a/runtime/observatory/tests/observatory_ui/object_common/element_test.dart b/runtime/observatory/tests/observatory_ui/object_common/element_test.dart
index b0813be..c589cbf 100644
--- a/runtime/observatory/tests/observatory_ui/object_common/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/object_common/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/class_ref.dart';
 import 'package:observatory/src/elements/inbound_references.dart';
 import 'package:observatory/src/elements/object_common.dart';
@@ -50,7 +50,7 @@
           const InstanceMock(valueAsString: '10'));
       bool invoked = false;
       final reachableSizes = new ReachableSizeRepositoryMock(
-          getter: expectAsync((i, id) async {
+          getter: expectAsync2((i, id) async {
         expect(i, equals(isolate));
         expect(id, equals(object.id));
         invoked = true;
@@ -77,7 +77,7 @@
           const InstanceMock(valueAsString: '10'));
       bool invoked = false;
       final retainedSizes = new RetainedSizeRepositoryMock(
-          getter: expectAsync((i, id) async {
+          getter: expectAsync2((i, id) async {
         expect(i, equals(isolate));
         expect(id, equals(object.id));
         invoked = true;
diff --git a/runtime/observatory/tests/observatory_ui/objectpool_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/objectpool_ref/element_test.dart
index f38ab9f..5c5ec9d 100644
--- a/runtime/observatory/tests/observatory_ui/objectpool_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/objectpool_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/objectpool_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/objectpool_view/element_test.dart b/runtime/observatory/tests/observatory_ui/objectpool_view/element_test.dart
index 52680fb..a8c1d4a 100644
--- a/runtime/observatory/tests/observatory_ui/objectpool_view/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/objectpool_view/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/refresh.dart';
 import 'package:observatory/src/elements/object_common.dart';
 import 'package:observatory/src/elements/objectpool_view.dart';
@@ -35,7 +35,7 @@
   });
   test('elements created after attachment', () async {
     final pools = new ObjectPoolRepositoryMock(
-        getter: expectAsync((i, id) async {
+        getter: expectAsync2((i, id) async {
       expect(i, equals(isolate));
       expect(id, equals(pool.id));
       return pool;
diff --git a/runtime/observatory/tests/observatory_ui/objectstore_view/element_test.dart b/runtime/observatory/tests/observatory_ui/objectstore_view/element_test.dart
index 924085d..1c8ca9b 100644
--- a/runtime/observatory/tests/observatory_ui/objectstore_view/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/objectstore_view/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/objectstore_view.dart';
 import '../mocks.dart';
 
@@ -30,7 +30,7 @@
     ];
     const store = const ObjectStoreMock(fields: fields);
     final stores = new ObjectStoreRepositoryMock(
-        getter: expectAsync((i) async {
+        getter: expectAsync1((i) async {
       expect(i, equals(isolate));
       return store;
     }, count: 1));
diff --git a/runtime/observatory/tests/observatory_ui/observatory_ui.status b/runtime/observatory/tests/observatory_ui/observatory_ui.status
index 002abb6..eba0fce 100644
--- a/runtime/observatory/tests/observatory_ui/observatory_ui.status
+++ b/runtime/observatory/tests/observatory_ui/observatory_ui.status
@@ -4,34 +4,8 @@
 
 [ $strong ]
 allocation_profile/element_test: CompileTimeError # observatory is not strong clean (Issue 32503)
-class_tree/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-context_view/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-cpu_profile/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-cpu_profile_table/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-curly_block/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-flag_list/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-icdata_view/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-inbound_references/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
 isolate/counter_chart/element_test: CompileTimeError # observatory is not strong clean (Issue 32503)
 isolate/isolate-shared-summary/element_test: CompileTimeError # observatory is not strong clean (Issue 32503)
-isolate_reconnect/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-megamorphiccache_view/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-nav/notify_event/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-nav/notify_exception/connection_exception_test: Timeout, RuntimeError # observatory is not strong clean (Issue 32503)
-nav/notify_exception/exception_test: Timeout, RuntimeError # observatory is not strong clean (Issue 32503)
-nav/vm_menu/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-object_common/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-objectpool_view/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-objectstore_view/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-persistent_handles_page/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-ports/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-retaining_path/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-source_link/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-vm_connect/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-vm_connect_target/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-
-[ $runtime == chrome || $runtime == ff || $runtime == safari ]
-heap_snapshot/element_test: RuntimeError # Issue 27925
 
 [ $runtime == drt || !$browser || $fast_startup ]
 *: SkipByDesign
diff --git a/runtime/observatory/tests/observatory_ui/pc_descriptors_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/pc_descriptors_ref/element_test.dart
index 472df2b..4b5c081 100644
--- a/runtime/observatory/tests/observatory_ui/pc_descriptors_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/pc_descriptors_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/sentinel_value.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/persistent_handles_page/element_test.dart b/runtime/observatory/tests/observatory_ui/persistent_handles_page/element_test.dart
index 43d8c76..75cafc5 100644
--- a/runtime/observatory/tests/observatory_ui/persistent_handles_page/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/persistent_handles_page/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/persistent_handles.dart';
 import '../mocks.dart';
 
@@ -24,7 +24,7 @@
   });
   test('elements created after attachment', () async {
     final repository = new PersistentHandlesRepositoryMock(
-        getter: expectAsync((i) async {
+        getter: expectAsync1((i) async {
       expect(i, equals(isolate));
       return const PersistentHandlesMock();
     }, count: 1));
diff --git a/runtime/observatory/tests/observatory_ui/ports/element_test.dart b/runtime/observatory/tests/observatory_ui/ports/element_test.dart
index f614a53..876f0db 100644
--- a/runtime/observatory/tests/observatory_ui/ports/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/ports/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/ports.dart';
 import '../mocks.dart';
 
@@ -30,7 +30,7 @@
     ];
     const isolatePorts = const PortsAndHandlesMock(elements: elements);
     final ports = new PortsRepositoryMock(
-        getter: expectAsync((i) async {
+        getter: expectAsync1((i) async {
       expect(i, equals(isolate));
       return isolatePorts;
     }, count: 1));
diff --git a/runtime/observatory/tests/observatory_ui/retaining_path/element_test.dart b/runtime/observatory/tests/observatory_ui/retaining_path/element_test.dart
index 5770fa6..2f10ece 100644
--- a/runtime/observatory/tests/observatory_ui/retaining_path/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/retaining_path/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/curly_block.dart';
 import 'package:observatory/src/elements/instance_ref.dart';
 import 'package:observatory/src/elements/retaining_path.dart';
@@ -31,7 +31,7 @@
         elements: const [const RetainingPathItemMock(source: source)]);
     bool invoked = false;
     final paths = new RetainingPathRepositoryMock(
-        getter: expectAsync((i, id) async {
+        getter: expectAsync2((i, id) async {
       expect(i, equals(isolate));
       expect(id, equals(object.id));
       invoked = true;
diff --git a/runtime/observatory/tests/observatory_ui/sample_buffer_control/element_test.dart b/runtime/observatory/tests/observatory_ui/sample_buffer_control/element_test.dart
index 226ee35..9820989 100644
--- a/runtime/observatory/tests/observatory_ui/sample_buffer_control/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/sample_buffer_control/element_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:html';
 import 'dart:async';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/models.dart' as M;
 import 'package:observatory/src/elements/sample_buffer_control.dart';
 import '../mocks.dart';
@@ -150,7 +150,7 @@
               profile: new SampleProfileMock())));
       await e.onRendered.first;
       expect(e.selectedTag, equals(M.SampleProfileTag.none));
-      e.onTagChange.listen(expectAsync((_) {
+      e.onTagChange.listen(expectAsync1((_) {
         expect(e.selectedTag, equals(M.SampleProfileTag.userOnly));
       }, count: 1));
       final select = (e.querySelector('.tag-select') as SelectElement);
diff --git a/runtime/observatory/tests/observatory_ui/script_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/script_ref/element_test.dart
index fad7cf8..ae6d7f5 100644
--- a/runtime/observatory/tests/observatory_ui/script_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/script_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/script_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/sentinel_value/element_test.dart b/runtime/observatory/tests/observatory_ui/sentinel_value/element_test.dart
index 304adbc..69d3b11 100644
--- a/runtime/observatory/tests/observatory_ui/sentinel_value/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/sentinel_value/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/pc_descriptors_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/source_link/element_test.dart b/runtime/observatory/tests/observatory_ui/source_link/element_test.dart
index 8a8efe9..a6c10bb 100644
--- a/runtime/observatory/tests/observatory_ui/source_link/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/source_link/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/source_link.dart';
 import '../mocks.dart';
 
@@ -30,7 +30,7 @@
   test('elements created after attachment', () async {
     bool rendered = false;
     final repository = new ScriptRepositoryMock(
-        getter: expectAsync((isolate, id) async {
+        getter: expectAsync2((isolate, id) async {
       expect(rendered, isFalse);
       expect(id, equals(script_id));
       return script;
diff --git a/runtime/observatory/tests/observatory_ui/stack_trace_tree_config/element_test.dart b/runtime/observatory/tests/observatory_ui/stack_trace_tree_config/element_test.dart
index 1a8bef1..3649041 100644
--- a/runtime/observatory/tests/observatory_ui/stack_trace_tree_config/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/stack_trace_tree_config/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/models.dart' as M;
 import 'package:observatory/src/elements/stack_trace_tree_config.dart';
 
@@ -138,7 +138,7 @@
       document.body.append(e);
       await e.onRendered.first;
       expect(e.mode, equals(ProfileTreeMode.function));
-      e.onModeChange.listen(expectAsync((_) {
+      e.onModeChange.listen(expectAsync1((_) {
         expect(e.mode, equals(ProfileTreeMode.code));
       }, count: 1));
       final select = (e.querySelector('.mode-select') as SelectElement);
@@ -155,7 +155,7 @@
       document.body.append(e);
       await e.onRendered.first;
       expect(e.direction, equals(M.ProfileTreeDirection.exclusive));
-      e.onDirectionChange.listen(expectAsync((_) {
+      e.onDirectionChange.listen(expectAsync1((_) {
         expect(e.direction, equals(M.ProfileTreeDirection.inclusive));
       }, count: 1));
       final select = (e.querySelector('.direction-select') as SelectElement);
@@ -172,7 +172,7 @@
       document.body.append(e);
       await e.onRendered.first;
       expect(e.direction, equals(M.ProfileTreeDirection.exclusive));
-      e.onFilterChange.listen(expectAsync((_) {
+      e.onFilterChange.listen(expectAsync1((_) {
         expect(e.filter, equals('value'));
       }, count: 1));
       var input = (e.querySelector('input') as TextInputElement);
diff --git a/runtime/observatory/tests/observatory_ui/token_stream_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/token_stream_ref/element_test.dart
index 16c22fd..12f7351 100644
--- a/runtime/observatory/tests/observatory_ui/token_stream_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/token_stream_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/token_stream_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/unknown_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/unknown_ref/element_test.dart
index f966374..66f907d 100644
--- a/runtime/observatory/tests/observatory_ui/unknown_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/unknown_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/unknown_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/view_footer/element_test.dart b/runtime/observatory/tests/observatory_ui/view_footer/element_test.dart
index 77cb4cc..cc0e635 100644
--- a/runtime/observatory/tests/observatory_ui/view_footer/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/view_footer/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/view_footer.dart';
 
 main() {
diff --git a/runtime/observatory/tests/observatory_ui/virtual_tree/element_test.dart b/runtime/observatory/tests/observatory_ui/virtual_tree/element_test.dart
index f2040cf..2520f74 100644
--- a/runtime/observatory/tests/observatory_ui/virtual_tree/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/virtual_tree/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/containers/virtual_collection.dart';
 import 'package:observatory/src/elements/containers/virtual_tree.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/vm_connect/element_test.dart b/runtime/observatory/tests/observatory_ui/vm_connect/element_test.dart
index f087af7..8727212 100644
--- a/runtime/observatory/tests/observatory_ui/vm_connect/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/vm_connect/element_test.dart
@@ -3,7 +3,8 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
+import 'package:observatory/models.dart' as M;
 import 'package:observatory/src/elements/nav/notify.dart';
 import 'package:observatory/src/elements/vm_connect_target.dart';
 import 'package:observatory/src/elements/vm_connect.dart';
@@ -76,7 +77,7 @@
       final list = <TargetMock>[const TargetMock(name: 't-1')];
       final targets = new TargetRepositoryMock(
           list: list,
-          add: expectAsync((String val) {
+          add: expectAsync1((String val) {
             expect(val, equals(address));
           }, count: 1, reason: 'should be invoked'));
       final e = new VMConnectElement(
@@ -92,7 +93,7 @@
       final list = <TargetMock>[const TargetMock(name: 't-1')];
       final targets = new TargetRepositoryMock(
           list: list,
-          setCurrent: expectAsync((TargetMock t) {
+          setCurrent: expectAsync1((M.Target t) {
             expect(t, equals(list[0]));
           }, count: 1, reason: 'should be invoked'));
       final e =
@@ -107,7 +108,7 @@
       final list = <TargetMock>[const TargetMock(name: 't-1')];
       final targets = new TargetRepositoryMock(
           list: list,
-          delete: expectAsync((TargetMock t) {
+          delete: expectAsync1((M.Target t) {
             expect(t, equals(list[0]));
           }, count: 1, reason: 'should be invoked'));
       final e =
diff --git a/runtime/observatory/tests/observatory_ui/vm_connect_target/element_test.dart b/runtime/observatory/tests/observatory_ui/vm_connect_target/element_test.dart
index 082e588..79003c8 100644
--- a/runtime/observatory/tests/observatory_ui/vm_connect_target/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/vm_connect_target/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/vm_connect_target.dart';
 import '../mocks.dart';
 
@@ -55,28 +55,28 @@
       await e.onRendered.first;
     });
     test('onConnect events (DOM)', () async {
-      e.onConnect.listen(expectAsync((TargetEvent event) {
+      e.onConnect.listen(expectAsync1((TargetEvent event) {
         expect(event, isNotNull, reason: 'event is passed');
         expect(event.target, t, reason: 'target is the same');
       }, count: 1, reason: 'event is fired'));
       e.querySelector('a').click();
     });
     test('onConnect events (code)', () async {
-      e.onConnect.listen(expectAsync((TargetEvent event) {
+      e.onConnect.listen(expectAsync1((TargetEvent event) {
         expect(event, isNotNull, reason: 'event is passed');
         expect(event.target, t, reason: 'target is the same');
       }, count: 1, reason: 'event is fired'));
       e.connect();
     });
     test('onRemove events (DOM)', () async {
-      e.onDelete.listen(expectAsync((TargetEvent event) {
+      e.onDelete.listen(expectAsync1((TargetEvent event) {
         expect(event, isNotNull, reason: 'event is passed');
         expect(event.target, t, reason: 'target is the same');
       }, count: 1, reason: 'event is fired'));
       e.querySelector('button').click();
     });
     test('onRemove events (code)', () async {
-      e.onDelete.listen(expectAsync((TargetEvent event) {
+      e.onDelete.listen(expectAsync1((TargetEvent event) {
         expect(event, isNotNull, reason: 'event is passed');
         expect(event.target, t, reason: 'target is the same');
       }, count: 1, reason: 'event is fired'));
