• Overview
@angular/cdk/testing

LocatorFactory

interface

Interface used to create asynchronous locator functions used find elements and component harnesses. This interface is used by ComponentHarness authors to create locator functions for their ComponentHarness subclass.

API

  
    interface LocatorFactory {}
  
  

documentRootLocatorFactory

LocatorFactory

Gets a locator factory rooted at the document root.

rootElement

TestElement

The root element of this LocatorFactory as a TestElement.

locatorFor

() => Promise<LocatorFnResult<T>>

Creates an asynchronous locator function that can be used to find a ComponentHarness instance or element under the root element of this LocatorFactory.

For example, given the following DOM and assuming DivHarness.hostSelector is 'div'

          
<div id="d1"></div><div id="d2"></div>

then we expect:

          
await lf.locatorFor(DivHarness, 'div')() // Gets a `DivHarness` instance for #d1await lf.locatorFor('div', DivHarness)() // Gets a `TestElement` instance for #d1await lf.locatorFor('span')()            // Throws because the `Promise` rejects
@paramqueriesT

A list of queries specifying which harnesses and elements to search for:

@returns() => Promise<LocatorFnResult<T>>

locatorForOptional

() => Promise<LocatorFnResult<T> | null>

Creates an asynchronous locator function that can be used to find a ComponentHarness instance or element under the root element of this LocatorFactory.

For example, given the following DOM and assuming DivHarness.hostSelector is 'div'

          
<div id="d1"></div><div id="d2"></div>

then we expect:

          
await lf.locatorForOptional(DivHarness, 'div')() // Gets a `DivHarness` instance for #d1await lf.locatorForOptional('div', DivHarness)() // Gets a `TestElement` instance for #d1await lf.locatorForOptional('span')()            // Gets `null`
@paramqueriesT

A list of queries specifying which harnesses and elements to search for:

@returns() => Promise<LocatorFnResult<T> | null>

locatorForAll

() => Promise<LocatorFnResult<T>[]>

Creates an asynchronous locator function that can be used to find ComponentHarness instances or elements under the root element of this LocatorFactory.

For example, given the following DOM and assuming DivHarness.hostSelector is 'div' and IdIsD1Harness.hostSelector is '#d1'

          
<div id="d1"></div><div id="d2"></div>

then we expect:

          
// Gets [DivHarness for #d1, TestElement for #d1, DivHarness for #d2, TestElement for #d2]await lf.locatorForAll(DivHarness, 'div')()// Gets [TestElement for #d1, TestElement for #d2]await lf.locatorForAll('div', '#d1')()// Gets [DivHarness for #d1, IdIsD1Harness for #d1, DivHarness for #d2]await lf.locatorForAll(DivHarness, IdIsD1Harness)()// Gets []await lf.locatorForAll('span')()
@paramqueriesT

A list of queries specifying which harnesses and elements to search for:

@returns() => Promise<LocatorFnResult<T>[]>

rootHarnessLoader

Promise<HarnessLoader>
@returnsPromise<HarnessLoader>

harnessLoaderFor

Promise<HarnessLoader>

Gets a HarnessLoader instance for an element under the root of this LocatorFactory.

@paramselectorstring

The selector for the root element.

@returnsPromise<HarnessLoader>

harnessLoaderForOptional

Promise<HarnessLoader | null>

Gets a HarnessLoader instance for an element under the root of this LocatorFactory

@paramselectorstring

The selector for the root element.

@returnsPromise<HarnessLoader | null>

harnessLoaderForAll

Promise<HarnessLoader[]>

Gets a list of HarnessLoader instances, one for each matching element.

@paramselectorstring

The selector for the root element.

@returnsPromise<HarnessLoader[]>

forceStabilize

Promise<void>

Flushes change detection and async tasks captured in the Angular zone. In most cases it should not be necessary to call this manually. However, there may be some edge cases where it is needed to fully flush animation events.

@returnsPromise<void>

waitForTasksOutsideAngular

Promise<void>

Waits for all scheduled or running async tasks to complete. This allows harness authors to wait for async tasks outside of the Angular zone.

@returnsPromise<void>
Jump to details