UNPKG

@atomic-testing/component-driver-mui-v6

Version:

Atomic Testing Component driver to help drive Material UI V6 components

606 lines (605 loc) 21.4 kB
import * as _atomic_testing_core0 from "@atomic-testing/core"; import { ComponentDriver, ComponentDriverCtor, ContainerDriver, ErrorBase, IComponentDriverOption, IContainerDriverOption, IFormFieldDriver, IInputDriver, IToggleDriver, Interactor, ListComponentDriver, ListComponentDriverSpecificOption, LocatorRelativePosition, Optional, PartLocator, ScenePart } from "@atomic-testing/core"; import { HTMLButtonDriver, HTMLCheckboxDriver, HTMLElementDriver, HTMLRadioButtonGroupDriver, HTMLSelectDriver, HTMLTextInputDriver } from "@atomic-testing/component-driver-html"; //#region src/components/AccordionDriver.d.ts declare const parts$13: { /** * The clickable area to expand/collapse the accordion. */ disclosure: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLElementDriver; }; summary: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLElementDriver; }; content: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLElementDriver; }; }; /** * Driver for Material UI v6 Accordion component. * @see https://mui.com/material-ui/react-accordion/ */ declare class AccordionDriver extends ComponentDriver<typeof parts$13> { constructor(locator: PartLocator, interactor: Interactor, option?: Partial<IComponentDriverOption>); /** * Get the title/summary of the accordion. * @returns The title/summary of the accordion. */ getSummary(): Promise<string | null>; /** * Whether the accordion is expanded. * @returns True if the accordion is expanded, false if collapsed. */ isExpanded(): Promise<boolean>; /** * Whether the accordion is disabled. * @returns True if the accordion is disabled, false if enabled. */ isDisabled(): Promise<boolean>; /** * Expand the accordion. */ expand(): Promise<void>; /** * Collapse the accordion. */ collapse(): Promise<void>; get driverName(): string; } //#endregion //#region src/components/AlertDriver.d.ts declare const parts$12: { title: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLElementDriver; }; message: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLElementDriver; }; }; /** * Driver for Material UI v6 Alert component. * @see https://mui.com/material-ui/react-alert/ */ declare class AlertDriver<ContentT extends ScenePart = {}> extends ContainerDriver<ContentT, typeof parts$12> { constructor(locator: PartLocator, interactor: Interactor, option?: Partial<IContainerDriverOption>); getTitle(): Promise<string | null>; getMessage(): Promise<string | null>; getSeverity(): Promise<string | null>; get driverName(): string; } //#endregion //#region src/components/AutoCompleteDriver.d.ts declare const parts$11: { input: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLTextInputDriver; }; dropdown: { locator: _atomic_testing_core0.LinkedCssLocator; driver: typeof HTMLElementDriver; }; }; /** * The match type of the autocomplete, default to 'exact' * 'exact': The value must match exactly to one of the options * 'first-available': The value will be set to the first available option */ type AutoCompleteMatchType = 'exact' | 'first-available'; interface AutoCompleteDriverSpecificOption { matchType: AutoCompleteMatchType; } interface AutoCompleteDriverOption extends IComponentDriverOption, AutoCompleteDriverSpecificOption {} declare const defaultAutoCompleteDriverOption: AutoCompleteDriverSpecificOption; declare class AutoCompleteDriver extends ComponentDriver<typeof parts$11> implements IInputDriver<string | null> { private _option; constructor(locator: PartLocator, interactor: Interactor, option?: Partial<AutoCompleteDriverOption>); /** * Get the display of the autocomplete */ getValue(): Promise<string | null>; /** * Set the value of the autocomplete, how selection happens * depends on the option assigned to AutoCompleteDriver * By default, when the option has matchType set to exact, only option with matching text would be selected * When the option has matchType set to first-available, the first option would be selected regardless of the text * * Option of auto complete can be set at the time of part definition, for example * ``` * { * myAutoComplete: { * locator: byCssSelector('my-auto-complete'), * driver: AutoCompleteDriver, * option: { * matchType: 'first-available', * }, * }, * } * ``` * * @param value * @returns */ setValue(value: string | null): Promise<boolean>; isDisabled(): Promise<boolean>; isReadonly(): Promise<boolean>; get driverName(): string; } //#endregion //#region src/components/BadgeDriver.d.ts declare const parts$10: { contentDisplay: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLElementDriver; }; }; /** * Driver for Material UI v6 Badge component. * @see https://mui.com/material-ui/react-badge/ */ declare class BadgeDriver extends ComponentDriver<typeof parts$10> { constructor(locator: PartLocator, interactor: Interactor, option?: Partial<IComponentDriverOption>); /** * Get the content of the badge. * @returns The content of the badge. */ getContent(): Promise<string | null>; get driverName(): string; } //#endregion //#region src/components/ButtonDriver.d.ts /** * Driver for Material UI v6 Button component. * @see https://mui.com/material-ui/react-button/ */ declare class ButtonDriver extends HTMLButtonDriver { getValue(): Promise<string | null>; get driverName(): string; } //#endregion //#region src/components/CheckboxDriver.d.ts declare const checkboxPart: { checkbox: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLCheckboxDriver; }; }; type CheckboxScenePart = typeof checkboxPart; declare class CheckboxDriver extends ComponentDriver<CheckboxScenePart> implements IFormFieldDriver<string | null>, IToggleDriver { constructor(locator: PartLocator, interactor: Interactor, option?: Partial<IComponentDriverOption>); isSelected(): Promise<boolean>; setSelected(selected: boolean): Promise<void>; getValue(): Promise<string | null>; isIndeterminate(): Promise<boolean>; isDisabled(): Promise<boolean>; isReadonly(): Promise<boolean>; get driverName(): string; } //#endregion //#region src/components/ChipDriver.d.ts declare const parts$9: { contentDisplay: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLElementDriver; }; removeButton: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLElementDriver; }; }; /** * Driver for Material UI v6 Chip component. * @see https://mui.com/material-ui/react-chip/ */ declare class ChipDriver extends ComponentDriver<typeof parts$9> { constructor(locator: PartLocator, interactor: Interactor, option?: Partial<IComponentDriverOption>); /** * Get the label content of the chip. * @returns The label text content of the chip. */ getLabel(): Promise<string | null>; clickRemove(): Promise<void>; get driverName(): string; } //#endregion //#region src/components/DialogDriver.d.ts declare const parts$8: { title: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLElementDriver; }; dialogContainer: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLElementDriver; }; }; declare class DialogDriver<ContentT extends ScenePart> extends ContainerDriver<ContentT, typeof parts$8> { constructor(locator: PartLocator, interactor: Interactor, option?: Partial<IContainerDriverOption>); overriddenParentLocator(): Optional<PartLocator>; overrideLocatorRelativePosition(): Optional<LocatorRelativePosition>; getTitle(): Promise<string | null>; /** * Wait for dialog to open * @param timeoutMs * @returns true open has performed successfully */ waitForOpen(timeoutMs?: number): Promise<boolean>; /** * Wait for dialog to close * @param timeoutMs * @returns true open has performed successfully */ waitForClose(timeoutMs?: number): Promise<boolean>; /** * Check if the dialog box is open. Caution, because of animation, upon an open/close action is performed * use waitForOpen() or waitForClose() before using isOpen() would result a more accurate open state of the dialog * @returns true if dialog box is open */ isOpen(): Promise<boolean>; get driverName(): string; } //#endregion //#region src/components/FabDriver.d.ts /** * Driver for Material UI v6 Floating Action Button component. * @see https://mui.com/material-ui/react-floating-action-button/ */ declare class FabDriver extends ButtonDriver { get driverName(): string; } //#endregion //#region src/components/InputDriver.d.ts declare const parts$7: { singlelineInput: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLTextInputDriver; }; multilineInput: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLTextInputDriver; }; }; /** * A driver for the Material UI v6 Input, FilledInput, OutlinedInput, and StandardInput components. */ declare class InputDriver extends ComponentDriver<typeof parts$7> implements IInputDriver<string | null> { constructor(locator: PartLocator, interactor: Interactor, option?: Partial<IComponentDriverOption>); private getInputType; /** * Retrieve the current value of the input element, handling both single line * and multiline configurations. */ getValue(): Promise<string | null>; /** * Set the value of the underlying input element. * * @param value The text to assign to the input. */ setValue(value: string | null): Promise<boolean>; /** * Determine whether the input element is disabled. */ isDisabled(): Promise<boolean>; /** * Determine whether the input element is read only. */ isReadonly(): Promise<boolean>; /** * Identifier for this driver. */ get driverName(): string; } //#endregion //#region src/components/ListItemDriver.d.ts /** * @internal */ declare class ListItemDriver extends ComponentDriver { label(): Promise<string | null>; isSelected(): Promise<boolean>; isDisabled(): Promise<boolean>; click(): Promise<void>; get driverName(): string; } //#endregion //#region src/components/ListDriver.d.ts declare class ListDriver<ItemT extends ListItemDriver = ListItemDriver> extends ListComponentDriver<ItemT> { constructor(locator: PartLocator, interactor: Interactor, option?: ListComponentDriverSpecificOption<ItemT> & Partial<IComponentDriverOption<any>>); getSelected(): Promise<ListItemDriver | null>; get driverName(): string; } //#endregion //#region src/components/MenuItemDriver.d.ts /** * @internal */ declare class MenuItemDriver extends ListItemDriver { value(): Promise<string | null>; get driverName(): string; } //#endregion //#region src/components/MenuDriver.d.ts declare const parts$6: { menu: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLElementDriver; }; }; declare class MenuDriver extends ComponentDriver<typeof parts$6> { constructor(locator: PartLocator, interactor: Interactor, option?: Partial<IComponentDriverOption>); overriddenParentLocator(): Optional<PartLocator>; overrideLocatorRelativePosition(): Optional<LocatorRelativePosition>; getMenuItemByLabel(label: string): Promise<MenuItemDriver | null>; selectByLabel(label: string): Promise<void>; get driverName(): string; } //#endregion //#region src/components/ProgressDriver.d.ts declare const parts$5: { choices: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLRadioButtonGroupDriver; }; }; declare class ProgressDriver extends ComponentDriver<typeof parts$5> implements IInputDriver<number | null> { constructor(locator: PartLocator, interactor: Interactor, option?: Partial<IComponentDriverOption>); getValue(): Promise<number | null>; getType(): Promise<'linear' | 'circular'>; isDeterminate(): Promise<boolean>; setValue(value: number | null): Promise<boolean>; get driverName(): string; } //#endregion //#region src/components/RatingDriver.d.ts declare const parts$4: { choices: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLRadioButtonGroupDriver; }; }; declare class RatingDriver extends ComponentDriver<typeof parts$4> implements IInputDriver<number | null> { constructor(locator: PartLocator, interactor: Interactor, option?: Partial<IComponentDriverOption>); getValue(): Promise<number | null>; setValue(value: number | null): Promise<boolean>; get driverName(): string; } //#endregion //#region src/components/SelectDriver.d.ts declare const selectPart: { trigger: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLButtonDriver; }; dropdown: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLElementDriver; }; input: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLTextInputDriver; }; nativeSelect: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLSelectDriver; }; }; type SelectScenePart$1 = typeof selectPart; interface MenuItemGetOption { /** * When true, the driver will not check if the dropdown is open, which helps speed the process up. */ skipDropdownCheck?: boolean; } declare class SelectDriver extends ComponentDriver<SelectScenePart$1> implements IInputDriver<string | null> { constructor(locator: PartLocator, interactor: Interactor, option?: Partial<IComponentDriverOption>); isNative(): Promise<boolean>; getValue(): Promise<string | null>; setValue(value: string | null): Promise<boolean>; /** * Select menu item by its label, if it exists * Limitation, this method will not work if the dropdown is a native select. * @param label * @returns */ getMenuItemByLabel(label: string, option?: MenuItemGetOption): Promise<MenuItemDriver | null>; /** * Selects an option by its label * @param label * @returns */ selectByLabel(label: string): Promise<void>; getSelectedLabel(): Promise<string | null>; exists(): Promise<boolean>; /** * Check if the dropdown is open, or if it is a native select, it is always open because there is no known way check its open state * @returns For native dropdown it is always true. For custom dropdown, it is true if the dropdown is open. */ isDropdownOpen(): Promise<boolean>; openDropdown(): Promise<void>; closeDropdown(): Promise<void>; isDisabled(): Promise<boolean>; isReadonly(): Promise<boolean>; get driverName(): string; } //#endregion //#region src/components/SliderDriver.d.ts declare const parts$3: { input: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLTextInputDriver; }; }; type SelectScenePart = typeof parts$3; declare class SliderDriver extends ComponentDriver<SelectScenePart> implements IInputDriver<number> { constructor(locator: PartLocator, interactor: Interactor, option?: Partial<IComponentDriverOption>); /** * Return the first occurrence of the Slider input * @returns */ getValue(): Promise<number>; /** * Set slider's range value. Do not use as it will throw an error * @param values * @see https://github.com/atomic-testing/atomic-testing/issues/73 */ setValue(value: number): Promise<boolean>; getRangeValues(count?: number): Promise<readonly number[]>; private getInputLocator; /** * Set slider's range values. Do not use as it will throw an error * @param values * @see https://github.com/atomic-testing/atomic-testing/issues/73 */ setRangeValues(_values: readonly number[]): Promise<boolean>; isDisabled(): Promise<boolean>; get driverName(): string; } //#endregion //#region src/components/SnackbarDriver.d.ts declare const parts$2: { contentDisplay: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLElementDriver; }; actionArea: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLElementDriver; }; }; /** * Driver for Material UI v6 Snackbar component. * @see https://mui.com/material-ui/react-snackbar/ */ declare class SnackbarDriver extends ComponentDriver<typeof parts$2> { constructor(locator: PartLocator, interactor: Interactor, option?: Partial<IComponentDriverOption>); /** * Get the label content of the snackbar. * @returns The label text content of the snackbar. */ getLabel(): Promise<string | null>; /** * Get a driver instance of a component in the action area of the snackbar. * @param locator * @param driverClass * @returns */ getActionComponent<ItemClass extends ComponentDriver>(locator: PartLocator, driverClass: ComponentDriverCtor<ItemClass>): Promise<ItemClass | null>; get driverName(): string; } //#endregion //#region src/components/SwitchDriver.d.ts declare const parts$1: { input: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLCheckboxDriver; }; }; declare class SwitchDriver extends ComponentDriver<typeof parts$1> implements IFormFieldDriver<string | null>, IToggleDriver { constructor(locator: PartLocator, interactor: Interactor, option?: Partial<IComponentDriverOption>); exists(): Promise<boolean>; isSelected(): Promise<boolean>; setSelected(selected: boolean): Promise<void>; getValue(): Promise<string | null>; isDisabled(): Promise<boolean>; isReadonly(): Promise<boolean>; get driverName(): string; } //#endregion //#region src/components/TextFieldDriver.d.ts declare const parts: { label: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLElementDriver; }; helperText: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLElementDriver; }; singlelineInput: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLTextInputDriver; }; multilineInput: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLTextInputDriver; }; selectInput: { locator: _atomic_testing_core0.CssLocator; driver: typeof SelectDriver; }; richSelectInputDetect: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLElementDriver; }; nativeSelectInputDetect: { locator: _atomic_testing_core0.CssLocator; driver: typeof HTMLElementDriver; }; }; /** * A driver for the Material UI v6 TextField component with single line or multiline text input. */ declare class TextFieldDriver extends ComponentDriver<typeof parts> implements IInputDriver<string | null> { constructor(locator: PartLocator, interactor: Interactor, option?: Partial<IComponentDriverOption>); private getInputType; getValue(): Promise<string | null>; setValue(value: string | null): Promise<boolean>; getLabel(): Promise<Optional<string>>; getHelperText(): Promise<Optional<string>>; isDisabled(): Promise<boolean>; isReadonly(): Promise<boolean>; get driverName(): string; } //#endregion //#region src/components/ToggleButtonDriver.d.ts declare class ToggleButtonDriver extends ButtonDriver implements IToggleDriver { isSelected(): Promise<boolean>; setSelected(targetState: boolean): Promise<void>; get driverName(): string; } //#endregion //#region src/components/ToggleButtonGroupDriver.d.ts declare class ToggleButtonGroupDriver extends ComponentDriver implements IInputDriver<readonly string[]> { protected itemLocator: _atomic_testing_core0.PartLocator; /** * Get all the selected toggle buttons' values. * @returns */ getValue(): Promise<readonly string[]>; /** * Toggle all the toggle buttons such that only those with value in the given array are selected. * @param value Always true * @returns */ setValue(value: readonly string[]): Promise<boolean>; get driverName(): string; } declare class ExclusiveToggleButtonGroupDriver extends ToggleButtonGroupDriver implements IInputDriver<string | null> { getValue(): Promise<string | null>; setValue(value: string | null): Promise<boolean>; get driverName(): string; } //#endregion //#region src/errors/MenuItemDisabledError.d.ts declare const MenuItemDisabledErrorId = "MenuItemDisabledError"; declare class MenuItemDisabledError extends ErrorBase { readonly label: string; readonly driver: ComponentDriver<any>; constructor(label: string, driver: ComponentDriver<any>); } //#endregion //#region src/errors/MenuItemNotFoundError.d.ts declare const MenuItemNotFoundErrorId = "MenuItemNotFoundError"; declare class MenuItemNotFoundError extends ErrorBase { readonly label: string; readonly driver: ComponentDriver<any>; constructor(label: string, driver: ComponentDriver<any>); } //#endregion export { AccordionDriver, AlertDriver, AutoCompleteDriver, AutoCompleteDriverOption, AutoCompleteDriverSpecificOption, AutoCompleteMatchType, BadgeDriver, ButtonDriver, CheckboxDriver, ChipDriver, DialogDriver, ExclusiveToggleButtonGroupDriver, FabDriver, InputDriver, ListDriver, ListItemDriver, MenuDriver, MenuItemDisabledError, MenuItemDisabledErrorId, MenuItemDriver, MenuItemNotFoundError, MenuItemNotFoundErrorId, ProgressDriver, RatingDriver, SelectDriver, SliderDriver, SnackbarDriver, SwitchDriver, TextFieldDriver, ToggleButtonDriver, ToggleButtonGroupDriver, defaultAutoCompleteDriverOption }; //# sourceMappingURL=index.d.ts.map