import { type EmptyObject, type IsAny, type MaybePromise, type PartialWithUndefined } from '@augment-vir/common'; import { type AnyDuration } from '@date-vir/duration'; import { type DeclarativeElementDefinition, type DefinedTypedEvent, type TypedEvent } from 'element-vir'; import { type UniversalTestContext } from '../augments/universal-testing-suite/universal-test-context.js'; /** * Expectations for `testWeb.elementCases`. * * @category Test : Util * @category Package : @augment-vir/test * @package [`@augment-vir/test`](https://www.npmjs.com/package/@augment-vir/test) */ export type ElementTestCaseExpect = { text: string | string[]; events: Map, unknown[]>; }; /** * Individual test case for `testWeb.elementCases`. * * @category Test : Util * @category Package : @augment-vir/test * @package [`@augment-vir/test`](https://www.npmjs.com/package/@augment-vir/test) */ export type ElementTestCase> = { it: string; } & (IsAny extends true ? { createInputs?: ((testContext: Readonly) => MaybePromise) | undefined; } : Definition['InputsType'] extends EmptyObject ? { createInputs?: never; } : { createInputs: (testContext: Readonly) => MaybePromise; }) & PartialWithUndefined<{ expect: PartialWithUndefined; act: (instance: Definition['InstanceType']) => MaybePromise; only: boolean; skip: boolean; }>; /** * Options for `testWeb.elementCases`. * * @category Test : Util * @category Package : @augment-vir/test * @package [`@augment-vir/test`](https://www.npmjs.com/package/@augment-vir/test) */ export type ElementCasesOptions = { /** * The timeout for checking an element case's expectations. * * @default {seconds: 10} */ timeout: AnyDuration; }; export declare function elementCases>(elementDefinition: Readonly, testCases: ReadonlyArray>>, options?: Readonly>): void;