diff --git a/pkg/polymer/test/js_interop_test.dart b/pkg/polymer/test/js_interop_test.dart index e4bc6aa5307..154cd01d8a2 100644 --- a/pkg/polymer/test/js_interop_test.dart +++ b/pkg/polymer/test/js_interop_test.dart @@ -95,13 +95,22 @@ main() => initPolymer().run(() { // Text will update asynchronously expect(jsElem.shadowRoot.text, 'FOOBAR:40'); - return new Future(() { + return _onTextChanged(jsElem.shadowRoot).then((_) { expect(jsElem.shadowRoot.text, 'FOOBAR:42'); }); }); }); }); +Future> _onTextChanged(Node node) { + var completer = new Completer(); + new MutationObserver((mutations, observer) { + observer.disconnect(); + completer.complete(mutations); + })..observe(node, characterData: true, subtree: true); + return completer.future; +} + testInterop(jsElem) { expect(jsElem.shadowRoot.text, 'FOOBAR'); var interop = new JsObject.fromBrowserObject(jsElem);