@@ -15,12 +15,9 @@ export declare abstract class ComponentHarness {
1515 protected documentRootLocatorFactory ( ) : LocatorFactory ;
1616 protected forceStabilize ( ) : Promise < void > ;
1717 host ( ) : Promise < TestElement > ;
18- protected locatorFor ( selector : string ) : AsyncFactoryFn < TestElement > ;
19- protected locatorFor < T extends ComponentHarness > ( harnessType : ComponentHarnessConstructor < T > | HarnessPredicate < T > ) : AsyncFactoryFn < T > ;
20- protected locatorForAll ( selector : string ) : AsyncFactoryFn < TestElement [ ] > ;
21- protected locatorForAll < T extends ComponentHarness > ( harnessType : ComponentHarnessConstructor < T > | HarnessPredicate < T > ) : AsyncFactoryFn < T [ ] > ;
22- protected locatorForOptional ( selector : string ) : AsyncFactoryFn < TestElement | null > ;
23- protected locatorForOptional < T extends ComponentHarness > ( harnessType : ComponentHarnessConstructor < T > | HarnessPredicate < T > ) : AsyncFactoryFn < T | null > ;
18+ protected locatorFor < T extends ( HarnessQuery < any > | string ) [ ] > ( ...queries : T ) : AsyncFactoryFn < LocatorFnResult < T > > ;
19+ protected locatorForAll < T extends ( HarnessQuery < any > | string ) [ ] > ( ...queries : T ) : AsyncFactoryFn < LocatorFnResult < T > [ ] > ;
20+ protected locatorForOptional < T extends ( HarnessQuery < any > | string ) [ ] > ( ...queries : T ) : AsyncFactoryFn < LocatorFnResult < T > | null > ;
2421 protected waitForTasksOutsideAngular ( ) : Promise < void > ;
2522}
2623
@@ -39,28 +36,25 @@ export declare abstract class HarnessEnvironment<E> implements HarnessLoader, Lo
3936 documentRootLocatorFactory ( ) : LocatorFactory ;
4037 abstract forceStabilize ( ) : Promise < void > ;
4138 getAllChildLoaders ( selector : string ) : Promise < HarnessLoader [ ] > ;
42- getAllHarnesses < T extends ComponentHarness > ( harnessType : ComponentHarnessConstructor < T > | HarnessPredicate < T > ) : Promise < T [ ] > ;
39+ getAllHarnesses < T extends ComponentHarness > ( query : HarnessQuery < T > ) : Promise < T [ ] > ;
4340 protected abstract getAllRawElements ( selector : string ) : Promise < E [ ] > ;
4441 getChildLoader ( selector : string ) : Promise < HarnessLoader > ;
4542 protected abstract getDocumentRoot ( ) : E ;
46- getHarness < T extends ComponentHarness > ( harnessType : ComponentHarnessConstructor < T > | HarnessPredicate < T > ) : Promise < T > ;
43+ getHarness < T extends ComponentHarness > ( query : HarnessQuery < T > ) : Promise < T > ;
4744 harnessLoaderFor ( selector : string ) : Promise < HarnessLoader > ;
4845 harnessLoaderForAll ( selector : string ) : Promise < HarnessLoader [ ] > ;
4946 harnessLoaderForOptional ( selector : string ) : Promise < HarnessLoader | null > ;
50- locatorFor ( selector : string ) : AsyncFactoryFn < TestElement > ;
51- locatorFor < T extends ComponentHarness > ( harnessType : ComponentHarnessConstructor < T > | HarnessPredicate < T > ) : AsyncFactoryFn < T > ;
52- locatorForAll ( selector : string ) : AsyncFactoryFn < TestElement [ ] > ;
53- locatorForAll < T extends ComponentHarness > ( harnessType : ComponentHarnessConstructor < T > | HarnessPredicate < T > ) : AsyncFactoryFn < T [ ] > ;
54- locatorForOptional ( selector : string ) : AsyncFactoryFn < TestElement | null > ;
55- locatorForOptional < T extends ComponentHarness > ( harnessType : ComponentHarnessConstructor < T > | HarnessPredicate < T > ) : AsyncFactoryFn < T | null > ;
47+ locatorFor < T extends ( HarnessQuery < any > | string ) [ ] > ( ...queries : T ) : AsyncFactoryFn < LocatorFnResult < T > > ;
48+ locatorForAll < T extends ( HarnessQuery < any > | string ) [ ] > ( ...queries : T ) : AsyncFactoryFn < LocatorFnResult < T > [ ] > ;
49+ locatorForOptional < T extends ( HarnessQuery < any > | string ) [ ] > ( ...queries : T ) : AsyncFactoryFn < LocatorFnResult < T > | null > ;
5650 abstract waitForTasksOutsideAngular ( ) : Promise < void > ;
5751}
5852
5953export interface HarnessLoader {
6054 getAllChildLoaders ( selector : string ) : Promise < HarnessLoader [ ] > ;
61- getAllHarnesses < T extends ComponentHarness > ( harnessType : ComponentHarnessConstructor < T > | HarnessPredicate < T > ) : Promise < T [ ] > ;
55+ getAllHarnesses < T extends ComponentHarness > ( query : HarnessQuery < T > ) : Promise < T [ ] > ;
6256 getChildLoader ( selector : string ) : Promise < HarnessLoader > ;
63- getHarness < T extends ComponentHarness > ( harnessType : ComponentHarnessConstructor < T > | HarnessPredicate < T > ) : Promise < T > ;
57+ getHarness < T extends ComponentHarness > ( query : HarnessQuery < T > ) : Promise < T > ;
6458}
6559
6660export declare class HarnessPredicate < T extends ComponentHarness > {
@@ -75,22 +69,27 @@ export declare class HarnessPredicate<T extends ComponentHarness> {
7569 static stringMatches ( s : string | Promise < string > , pattern : string | RegExp ) : Promise < boolean > ;
7670}
7771
72+ export declare type HarnessQuery < T extends ComponentHarness > = ComponentHarnessConstructor < T > | HarnessPredicate < T > ;
73+
7874export interface LocatorFactory {
7975 rootElement : TestElement ;
8076 documentRootLocatorFactory ( ) : LocatorFactory ;
8177 forceStabilize ( ) : Promise < void > ;
8278 harnessLoaderFor ( selector : string ) : Promise < HarnessLoader > ;
8379 harnessLoaderForAll ( selector : string ) : Promise < HarnessLoader [ ] > ;
8480 harnessLoaderForOptional ( selector : string ) : Promise < HarnessLoader | null > ;
85- locatorFor ( selector : string ) : AsyncFactoryFn < TestElement > ;
86- locatorFor < T extends ComponentHarness > ( harnessType : ComponentHarnessConstructor < T > | HarnessPredicate < T > ) : AsyncFactoryFn < T > ;
87- locatorForAll ( selector : string ) : AsyncFactoryFn < TestElement [ ] > ;
88- locatorForAll < T extends ComponentHarness > ( harnessType : ComponentHarnessConstructor < T > | HarnessPredicate < T > ) : AsyncFactoryFn < T [ ] > ;
89- locatorForOptional ( selector : string ) : AsyncFactoryFn < TestElement | null > ;
90- locatorForOptional < T extends ComponentHarness > ( harnessType : ComponentHarnessConstructor < T > | HarnessPredicate < T > ) : AsyncFactoryFn < T | null > ;
81+ locatorFor < T extends ( HarnessQuery < any > | string ) [ ] > ( ...queries : T ) : AsyncFactoryFn < LocatorFnResult < T > > ;
82+ locatorForAll < T extends ( HarnessQuery < any > | string ) [ ] > ( ...queries : T ) : AsyncFactoryFn < LocatorFnResult < T > [ ] > ;
83+ locatorForOptional < T extends ( HarnessQuery < any > | string ) [ ] > ( ...queries : T ) : AsyncFactoryFn < LocatorFnResult < T > | null > ;
9184 waitForTasksOutsideAngular ( ) : Promise < void > ;
9285}
9386
87+ export declare type LocatorFnResult < T extends ( HarnessQuery < any > | string ) [ ] > = {
88+ [ I in keyof T ] : T [ I ] extends new ( ...args : any [ ] ) => infer C ? C : T [ I ] extends {
89+ harnessType : new ( ...args : any [ ] ) => infer C ;
90+ } ? C : T [ I ] extends string ? TestElement : never ;
91+ } [ number ] ;
92+
9493export interface TestElement {
9594 blur ( ) : Promise < void > ;
9695 clear ( ) : Promise < void > ;
0 commit comments