@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
TypeScript
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