diff --git a/src/cdk/testing/component-harness.ts b/src/cdk/testing/component-harness.ts index 455fd5fdd54b..72e914558545 100644 --- a/src/cdk/testing/component-harness.ts +++ b/src/cdk/testing/component-harness.ts @@ -137,8 +137,8 @@ export interface LocatorFactory { * - `await lf.locatorFor('div', DivHarness)()` gets a `TestElement` instance for `#d1` * - `await lf.locatorFor('span')()` throws because the `Promise` rejects. */ - locatorFor | string)[]>(...queries: T): - AsyncFactoryFn>; + locatorFor | string)>(...queries: [T, ...T[]]): + AsyncFactoryFn>; /** * Creates an asynchronous locator function that can be used to find a `ComponentHarness` instance @@ -161,8 +161,8 @@ export interface LocatorFactory { * - `await lf.locatorForOptional('div', DivHarness)()` gets a `TestElement` instance for `#d1` * - `await lf.locatorForOptional('span')()` gets `null`. */ - locatorForOptional | string)[]>(...queries: T): - AsyncFactoryFn | null>; + locatorForOptional | string)>(...queries: [T, ...T[]]): + AsyncFactoryFn | null>; /** * Creates an asynchronous locator function that can be used to find `ComponentHarness` instances @@ -200,8 +200,8 @@ export interface LocatorFactory { * ]` * - `await lf.locatorForAll('span')()` gets `[]`. */ - locatorForAll | string)[]>(...queries: T): - AsyncFactoryFn[]>; + locatorForAll | string)>(...queries: [T, ...T[]]): + AsyncFactoryFn[]>; /** @return A `HarnessLoader` rooted at the root element of this `LocatorFactory`. */ rootHarnessLoader(): Promise; @@ -286,8 +286,8 @@ export abstract class ComponentHarness { * - `await ch.locatorFor('div', DivHarness)()` gets a `TestElement` instance for `#d1` * - `await ch.locatorFor('span')()` throws because the `Promise` rejects. */ - protected locatorFor | string)[]>(...queries: T): - AsyncFactoryFn> { + protected locatorFor | string)>(...queries: [T, ...T[]]): + AsyncFactoryFn> { return this.locatorFactory.locatorFor(...queries); } @@ -312,8 +312,8 @@ export abstract class ComponentHarness { * - `await ch.locatorForOptional('div', DivHarness)()` gets a `TestElement` instance for `#d1` * - `await ch.locatorForOptional('span')()` gets `null`. */ - protected locatorForOptional | string)[]>(...queries: T): - AsyncFactoryFn | null> { + protected locatorForOptional | string)>(...queries: [T, ...T[]]): + AsyncFactoryFn | null> { return this.locatorFactory.locatorForOptional(...queries); } @@ -353,8 +353,8 @@ export abstract class ComponentHarness { * ]` * - `await ch.locatorForAll('span')()` gets `[]`. */ - protected locatorForAll | string)[]>(...queries: T): - AsyncFactoryFn[]> { + protected locatorForAll | string)>(...queries: [T, ...T[]]): + AsyncFactoryFn[]> { return this.locatorFactory.locatorForAll(...queries); } diff --git a/src/cdk/testing/harness-environment.ts b/src/cdk/testing/harness-environment.ts index 96aea98a417e..c11276289aff 100644 --- a/src/cdk/testing/harness-environment.ts +++ b/src/cdk/testing/harness-environment.ts @@ -57,22 +57,22 @@ export abstract class HarnessEnvironment implements HarnessLoader, LocatorFac } // Implemented as part of the `LocatorFactory` interface. - locatorFor | string)[]>(...queries: T): - AsyncFactoryFn> { + locatorFor | string)>(...queries: [T, ...T[]]): + AsyncFactoryFn> { return () => _assertResultFound( this._getAllHarnessesAndTestElements(queries), _getDescriptionForLocatorForQueries(queries)); } // Implemented as part of the `LocatorFactory` interface. - locatorForOptional | string)[]>(...queries: T): - AsyncFactoryFn | null> { + locatorForOptional | string)>(...queries: [T, ...T[]]): + AsyncFactoryFn | null> { return async () => (await this._getAllHarnessesAndTestElements(queries))[0] || null; } // Implemented as part of the `LocatorFactory` interface. - locatorForAll | string)[]>(...queries: T): - AsyncFactoryFn[]> { + locatorForAll | string)>(...queries: [T, ...T[]]): + AsyncFactoryFn[]> { return () => this._getAllHarnessesAndTestElements(queries); } diff --git a/tools/public_api_guard/cdk/testing.md b/tools/public_api_guard/cdk/testing.md index 954a3e4de266..25ee234ba56b 100644 --- a/tools/public_api_guard/cdk/testing.md +++ b/tools/public_api_guard/cdk/testing.md @@ -33,9 +33,9 @@ export abstract class ComponentHarness { host(): Promise; // (undocumented) protected readonly locatorFactory: LocatorFactory; - protected locatorFor | string)[]>(...queries: T): AsyncFactoryFn>; - protected locatorForAll | string)[]>(...queries: T): AsyncFactoryFn[]>; - protected locatorForOptional | string)[]>(...queries: T): AsyncFactoryFn | null>; + protected locatorFor | string)>(...queries: [T, ...T[]]): AsyncFactoryFn>; + protected locatorForAll | string)>(...queries: [T, ...T[]]): AsyncFactoryFn[]>; + protected locatorForOptional | string)>(...queries: [T, ...T[]]): AsyncFactoryFn | null>; protected waitForTasksOutsideAngular(): Promise; } @@ -109,11 +109,11 @@ export abstract class HarnessEnvironment implements HarnessLoader, LocatorFac // (undocumented) harnessLoaderForOptional(selector: string): Promise; // (undocumented) - locatorFor | string)[]>(...queries: T): AsyncFactoryFn>; + locatorFor | string)>(...queries: [T, ...T[]]): AsyncFactoryFn>; // (undocumented) - locatorForAll | string)[]>(...queries: T): AsyncFactoryFn[]>; + locatorForAll | string)>(...queries: [T, ...T[]]): AsyncFactoryFn[]>; // (undocumented) - locatorForOptional | string)[]>(...queries: T): AsyncFactoryFn | null>; + locatorForOptional | string)>(...queries: [T, ...T[]]): AsyncFactoryFn | null>; // (undocumented) protected rawRootElement: E; // (undocumented) @@ -156,9 +156,9 @@ export interface LocatorFactory { harnessLoaderFor(selector: string): Promise; harnessLoaderForAll(selector: string): Promise; harnessLoaderForOptional(selector: string): Promise; - locatorFor | string)[]>(...queries: T): AsyncFactoryFn>; - locatorForAll | string)[]>(...queries: T): AsyncFactoryFn[]>; - locatorForOptional | string)[]>(...queries: T): AsyncFactoryFn | null>; + locatorFor | string)>(...queries: [T, ...T[]]): AsyncFactoryFn>; + locatorForAll | string)>(...queries: [T, ...T[]]): AsyncFactoryFn[]>; + locatorForOptional | string)>(...queries: [T, ...T[]]): AsyncFactoryFn | null>; rootElement: TestElement; rootHarnessLoader(): Promise; waitForTasksOutsideAngular(): Promise;