diff --git a/test/custom_element_proxy_test.dart b/test/custom_element_proxy_test.dart
index 4e3c188..ed2342f 100644
--- a/test/custom_element_proxy_test.dart
+++ b/test/custom_element_proxy_test.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 library custom_element_proxy_test;
 
+import 'dart:async';
 import 'dart:html';
 import 'dart:js';
 import 'package:initialize/initialize.dart' as init;
@@ -33,7 +34,7 @@
 
 main() {
   useHtmlConfiguration();
-  init.run();
+  init.run().then((_) {
 
   var container = querySelector('#container') as DivElement;
 
@@ -44,20 +45,32 @@
   test('basic custom element', () {
     container.append(new BasicElement());
     container.appendHtml('<basic-element></basic_element>');
-    var elements = container.querySelectorAll('basic-element');
-    for (var element in elements) {
-      expect(element.runtimeType, BasicElement);
-      expect(element.isBasicElement, isTrue);
-    }
+    // TODO(jakemac): after appendHtml elements are upgraded asynchronously,
+    // why? https://github.com/dart-lang/web-components/issues/4
+    return new Future(() {}).then((_) {
+      var elements = container.querySelectorAll('basic-element');
+      expect(elements.length, 2);
+      for (BasicElement element in elements) {
+        print(element.outerHtml);
+        print(element.runtimeType);
+        expect(element.isBasicElement, isTrue);
+      }
+    });
   });
 
   test('extends custom element', () {
     container.append(new ExtendedElement());
     container.appendHtml('<input is="extended-element" />');
-    var elements = container.querySelectorAll('extended-element');
-    for (var element in elements) {
-      expect(element.runtimeType, ExtendedElement);
-      expect(element.isExtendedElement, isTrue);
-    }
+    // TODO(jakemac): after appendHtml elements are upgraded asynchronously,
+    // why? https://github.com/dart-lang/web-components/issues/4
+    return new Future(() {}).then((_) {
+      var elements = container.querySelectorAll('input');
+      expect(elements.length, 2);
+      for (ExtendedElement element in elements) {
+        expect(element.isExtendedElement, isTrue);
+      }
+    });
+  });
+
   });
 }
