diff --git a/devtools/projects/ng-devtools-backend/src/lib/component-tree/component-tree.spec.ts b/devtools/projects/ng-devtools-backend/src/lib/component-tree/component-tree.spec.ts index 00601d20e700..15fa0e79e721 100644 --- a/devtools/projects/ng-devtools-backend/src/lib/component-tree/component-tree.spec.ts +++ b/devtools/projects/ng-devtools-backend/src/lib/component-tree/component-tree.spec.ts @@ -59,7 +59,13 @@ describe('component-tree', () => { describe('getRootElements', () => { beforeEach(() => { const ng: Partial = { - getComponent: jasmine.createSpy('getComponent').and.returnValue({}), + getComponent: jasmine.createSpy('getComponent').and.callFake((element: HTMLElement) => { + // Will treat only `ng-*` elements as Angular components. + if (element.tagName.toLowerCase().startsWith('ng-')) { + return element; + } + return null; + }), }; (window as any).ng = ng; }); @@ -105,6 +111,21 @@ describe('component-tree', () => { expect(roots.length).toEqual(1); expect(roots).toContain(document.body); }); + + it('should return all root elements with all non-application root components', () => { + const rootElement = createRoot(); + const childElement = createRoot(); + const nonAppRootCmp = document.createElement('ng-cmp'); + + rootElement.appendChild(childElement); + document.body.appendChild(rootElement); + document.body.appendChild(nonAppRootCmp); + + const roots = getRootElements(); + + expect(roots.length).toEqual(2); + expect(roots).toEqual([rootElement, nonAppRootCmp]); + }); }); describe('serializeProviderRecord', () => {