UNPKG

8.19 kBPlain TextView Raw
1import { expectTypeOf } from 'expect-type';
2
3import {
4 // DOM Interaction Helpers
5 blur,
6 click,
7 doubleClick,
8 fillIn,
9 focus,
10 scrollTo,
11 select,
12 tab,
13 tap,
14 triggerEvent,
15 triggerKeyEvent,
16 typeIn,
17 // DOM Query Helpers
18 find,
19 findAll,
20 getRootElement,
21 // Routing Helpers
22 visit,
23 currentRouteName,
24 currentURL,
25 // Rendering Helpers
26 render,
27 rerender,
28 clearRender,
29 // Wait Helpers
30 waitFor,
31 waitUntil,
32 settled,
33 isSettled,
34 getSettledState,
35 // Pause Helpers
36 pauseTest,
37 resumeTest,
38 // Debug Helpers
39 getDebugInfo,
40 registerDebugInfoHelper,
41 // Test Framework APIs
42 setResolver,
43 getResolver,
44 setupContext,
45 getContext,
46 setContext,
47 unsetContext,
48 teardownContext,
49 setupRenderingContext,
50 RenderingTestContext,
51 getApplication,
52 setApplication,
53 setupApplicationContext,
54 validateErrorHandler,
55 setupOnerror,
56 resetOnerror,
57 getTestMetadata,
58 // deprecation and warning APIs
59 getDeprecations,
60 getDeprecationsDuringCallback,
61 getWarnings,
62 getWarningsDuringCallback,
63 BaseContext,
64 TestContext,
65 TestMetadata,
66 DebugInfo as InternalDebugInfo,
67 DeprecationFailure,
68 Warning,
69 Target,
70 // Helper hooks
71 registerHook,
72 runHooks,
73 type Hook,
74 type HookLabel,
75 type HookUnregister,
76} from '@ember/test-helpers';
77import { ComponentInstance } from '@glimmer/interfaces';
78import { Owner } from '@ember/test-helpers/build-owner';
79import { DebugInfo as BackburnerDebugInfo } from '@ember/runloop/-private/backburner';
80import type { Resolver as EmberResolver } from '@ember/owner';
81import Application from '@ember/application';
82import { TemplateFactory } from 'ember-cli-htmlbars';
83import type { IDOMElementDescriptor } from 'dom-element-descriptors';
84
85// DOM Interaction Helpers
86expectTypeOf(blur).toEqualTypeOf<(target?: Target) => Promise<void>>();
87expectTypeOf(click).toEqualTypeOf<
88 (target: Target, options?: MouseEventInit) => Promise<void>
89>();
90expectTypeOf(doubleClick).toEqualTypeOf<
91 (target: Target, options?: MouseEventInit) => Promise<void>
92>();
93expectTypeOf(fillIn).toEqualTypeOf<
94 (target: Target, text: string) => Promise<void>
95>();
96expectTypeOf(focus).toEqualTypeOf<(target: Target) => Promise<void>>();
97expectTypeOf(scrollTo).toEqualTypeOf<
98 (
99 target: string | HTMLElement | IDOMElementDescriptor,
100 x: number,
101 y: number
102 ) => Promise<void>
103>();
104expectTypeOf(select).toEqualTypeOf<
105 (
106 target: Target,
107 options: string | string[],
108 keepPreviouslySelected?: boolean
109 ) => Promise<void>
110>();
111expectTypeOf(tab).toEqualTypeOf<
112 ({
113 backwards,
114 unRestrainTabIndex,
115 }?: {
116 backwards?: boolean | undefined;
117 unRestrainTabIndex?: boolean | undefined;
118 }) => Promise<void>
119>();
120expectTypeOf(tap).toEqualTypeOf<
121 (target: Target, options?: TouchEventInit) => Promise<void>
122>();
123expectTypeOf(triggerEvent).toEqualTypeOf<
124 (
125 target: Target,
126 eventType: string,
127 options?: Record<string, unknown>
128 ) => Promise<void>
129>();
130expectTypeOf(triggerKeyEvent).toEqualTypeOf<
131 (
132 target: Target,
133 eventType: 'keydown' | 'keyup' | 'keypress',
134 key: number | string,
135 modifiers?: {
136 ctrlKey?: boolean;
137 altKey?: boolean;
138 shiftKey?: boolean;
139 metaKey?: boolean;
140 }
141 ) => Promise<void>
142>();
143expectTypeOf(typeIn).toEqualTypeOf<
144 (
145 target: Target,
146 text: string,
147 options?: {
148 delay?: number;
149 }
150 ) => Promise<void>
151>();
152
153// DOM Query Helpers
154expectTypeOf(find).toEqualTypeOf<Document['querySelector']>();
155expectTypeOf(find('a')).toEqualTypeOf<HTMLAnchorElement | SVGAElement | null>();
156expectTypeOf(find('div')).toEqualTypeOf<HTMLDivElement | null>();
157expectTypeOf(find('circle')).toEqualTypeOf<SVGCircleElement | null>();
158expectTypeOf(find('.corkscrew')).toEqualTypeOf<Element | null>();
159expectTypeOf(findAll).toEqualTypeOf<(selector: string) => Array<Element>>();
160expectTypeOf(findAll('a')).toEqualTypeOf<(HTMLAnchorElement | SVGAElement)[]>();
161expectTypeOf(findAll('div')).toEqualTypeOf<HTMLDivElement[]>();
162expectTypeOf(findAll('circle')).toEqualTypeOf<SVGCircleElement[]>();
163expectTypeOf(findAll('.corkscrew')).toEqualTypeOf<Element[]>();
164expectTypeOf(getRootElement).toEqualTypeOf<() => Element | Document>();
165
166// Routing Helpers
167expectTypeOf(visit).toEqualTypeOf<
168 (url: string, options?: Record<string, unknown>) => Promise<void>
169>();
170expectTypeOf(currentRouteName).toEqualTypeOf<() => string>();
171expectTypeOf(currentURL).toEqualTypeOf<() => string>();
172
173// Rendering Helpers
174expectTypeOf(render).toMatchTypeOf<
175 (templateOrComponent: object, options?: { owner?: Owner }) => Promise<void>
176>();
177expectTypeOf(rerender).toMatchTypeOf<() => Promise<void>>();
178expectTypeOf(clearRender).toEqualTypeOf<() => Promise<void>>();
179
180// Wait Helpers
181expectTypeOf(waitFor).toEqualTypeOf<
182 (
183 selector: string | IDOMElementDescriptor,
184 options?: {
185 timeout?: number;
186 count?: number | null;
187 timeoutMessage?: string;
188 }
189 ) => Promise<Element | Array<Element>>
190>();
191expectTypeOf(waitUntil).toEqualTypeOf<
192 <T>(
193 callback: () => T | void | false | 0 | '' | null | undefined,
194 options?: {
195 timeout?: number;
196 timeoutMessage?: string;
197 }
198 ) => Promise<T>
199>();
200expectTypeOf(settled).toEqualTypeOf<() => Promise<void>>();
201expectTypeOf(isSettled).toEqualTypeOf<() => boolean>();
202expectTypeOf(getSettledState).toEqualTypeOf<
203 () => {
204 hasRunLoop: boolean;
205 hasPendingTimers: boolean;
206 hasPendingWaiters: boolean;
207 hasPendingRequests: boolean;
208 hasPendingTransitions: boolean | null;
209 isRenderPending: boolean;
210 pendingRequestCount: number;
211 debugInfo: InternalDebugInfo;
212 }
213>();
214
215// Pause Helpers
216expectTypeOf(pauseTest).toEqualTypeOf<() => Promise<void>>();
217expectTypeOf(resumeTest).toEqualTypeOf<() => void>();
218
219// Debug Helpers
220expectTypeOf(getDebugInfo).toEqualTypeOf<() => BackburnerDebugInfo | null>();
221expectTypeOf(registerDebugInfoHelper).toEqualTypeOf<
222 (debugInfoHelper: { name: string; log: () => void }) => void
223>();
224
225// Test Framework APIs
226expectTypeOf(setResolver).toEqualTypeOf<(resolver: EmberResolver) => void>();
227expectTypeOf(getResolver).toEqualTypeOf<() => EmberResolver | undefined>();
228expectTypeOf(setupContext).toEqualTypeOf<
229 (
230 context: BaseContext,
231 options?: { resolver?: EmberResolver }
232 ) => Promise<TestContext>
233>();
234expectTypeOf(getContext).toEqualTypeOf<() => BaseContext | undefined>();
235expectTypeOf(setContext).toEqualTypeOf<(context: BaseContext) => void>();
236expectTypeOf(unsetContext).toEqualTypeOf<() => void>();
237expectTypeOf(teardownContext).toEqualTypeOf<
238 (
239 context: TestContext,
240 options?: { waitForSettled?: boolean }
241 ) => Promise<void>
242>();
243expectTypeOf(setupRenderingContext).toEqualTypeOf<
244 (context: TestContext) => Promise<RenderingTestContext>
245>();
246expectTypeOf(getApplication).toEqualTypeOf<() => Application | undefined>();
247expectTypeOf(setApplication).toEqualTypeOf<
248 (application: Application) => void
249>();
250expectTypeOf(setupApplicationContext).toEqualTypeOf<
251 (context: TestContext) => Promise<void>
252>();
253expectTypeOf(validateErrorHandler).toMatchTypeOf<
254 (
255 callback?: (error: Error) => void
256 ) =>
257 | Readonly<{ isValid: true; message: null }>
258 | Readonly<{ isValid: false; message: string }>
259>();
260expectTypeOf(setupOnerror).toEqualTypeOf<
261 (onError?: (error: Error) => void) => void
262>();
263expectTypeOf(resetOnerror).toEqualTypeOf<() => void>();
264expectTypeOf(getTestMetadata).toEqualTypeOf<
265 (context: BaseContext) => TestMetadata
266>();
267
268// deprecation and warning APIs
269expectTypeOf(getDeprecations).toEqualTypeOf<() => Array<DeprecationFailure>>();
270expectTypeOf(getDeprecationsDuringCallback).toEqualTypeOf<
271 (
272 callback: () => void
273 ) => Array<DeprecationFailure> | Promise<Array<DeprecationFailure>>
274>();
275expectTypeOf(getWarnings).toEqualTypeOf<() => Array<Warning>>();
276expectTypeOf(getWarningsDuringCallback).toEqualTypeOf<
277 (callback: () => void) => Array<Warning> | Promise<Array<Warning>>
278>();
279
280// Helper hooks
281expectTypeOf(registerHook).toEqualTypeOf<
282 (helperName: string, label: HookLabel, hook: Hook) => HookUnregister
283>();
284expectTypeOf(runHooks).toEqualTypeOf<
285 (helperName: string, label: HookLabel, ...args: unknown[]) => Promise<void>
286>();