diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 000000000..d5f97c6ac --- /dev/null +++ b/index.d.ts @@ -0,0 +1,87 @@ +// DOM Interaction Helpers + +export type Target = string | Element; + +export type KeyEvent = 'keydown' | 'keyup' | 'keypress'; + +export interface KeyModifiers { + ctrlKey?: boolean; + altKey?: boolean; + shiftKey?: boolean; + metaKey?: boolean; +} + +export function click(target: Target): Promise; +export function tap(target: Target): Promise; +export function focus(target: Target): Promise; +export function blur(target: Target): Promise; +export function triggerEvent(target: Target, eventType: string, options?: object): Promise; +export function triggerKeyEvent(target: Target, eventType: KeyEvent, modifiers?: KeyModifiers): Promise; +export function fillIn(target: Target, text: string): Promise; + +// DOM Query Helpers + +export function find(selector: string): Element | null; +export function findAll(selector: string): Array; +export function getRootElement(): Element; + +// Routing Helpers + +export function visit(url: string): Promise; +export function currentRouteName(): string; +export function currentURL(): string; + +// Rendering Helpers + +import { TemplateFactory } from 'htmlbars-inline-precompile'; + +export function render(template: TemplateFactory): Promise; +export function clearRender(): Promise; + +// Wait Helpers + +export interface WaitForOptions { + timeout?: number; + count?: number; + timeoutMessage?: string; +} + +export interface SettledState { + hasRunLoop: boolean; + hasPendingTimers: boolean; + hasPendingWaiters: boolean; + hasPendingRequests: boolean; + pendingRequestCount: number; +} + +export function waitFor(selector: string, options?: WaitForOptions): Element | Array; +export function waitUntil(callback: () => T, options?: WaitUntilOptions): Promise; +export function settled(): Promise; +export function isSettled(): boolean; +export function getSettledState(): SettledState; + +// Pause Helpers + +export function pauseTest(): Promise; +export function resumeTest(): void; + +// Test Framework APIs + +import Application from '@ember/application'; +import Resolver from '@ember/application/resolver'; +import Error from '@ember/error'; + +export function setResolver(resolver: Resolver): void; +export function getResolver(): Resolver; +export function setupContext(context: C, options?: { resolver?: Resolver }): Promise; +export function getContext(): object; +export function setContext(context: object): void; +export function unsetContext(): void; +export function teardownContext(context: object): Promise; +export function setupRenderingContext(context: C): Promise; +export function teardownRenderingContext(context: object): Promise; +export function getApplication(): Application; +export function setApplication(aplication: Application): void; +export function setupApplicationContext(context: C): Promise; +export function teardownApplicationContext(context: object): Promise; +export function validateErrorHandler(callback?: (error: Error) => void): { isValid: boolean, message: string };