diff --git a/lib/introspection.dart b/lib/introspection.dart index 11b1944ae..a7a5d0a3a 100644 --- a/lib/introspection.dart +++ b/lib/introspection.dart @@ -46,6 +46,9 @@ Scope ngScope(dom.Node node) => ngProbe(node).scope; List ngQuery(dom.Node element, String selector, [String containsText]) { var list = []; var children = [element]; + if ((element is dom.Element) && element.shadowRoot != null) { + children.add(element.shadowRoot); + } while (!children.isEmpty) { var child = children.removeAt(0); child.querySelectorAll(selector).forEach((e) { diff --git a/test/introspection_spec.dart b/test/introspection_spec.dart index 7740d2a0b..df8892b14 100644 --- a/test/introspection_spec.dart +++ b/test/introspection_spec.dart @@ -27,4 +27,11 @@ main() => describe('introspection', () { expect(toHtml(ngQuery(div, 'li', 'secret'))).toEqual('
  • secret
  • '); expect(toHtml(ngQuery(div, 'li', 'xxx'))).toEqual(''); }); + + it('should select elements in the root shadow root', () { + var div = new Element.html('
    '); + var shadowRoot = div.createShadowRoot(); + shadowRoot.innerHtml = '