wix-style-react
Version:
75 lines (71 loc) • 2.65 kB
JavaScript
import { baseUniDriverFactory } from 'wix-ui-test-utils/base-driver';
import { infoIconDriverFactory } from '../InfoIcon/InfoIcon.uni.driver';
import { textUniDriverFactory } from '../Text/Text.uni.driver';
import { dataHooks } from './constants';
export const formFieldUniDriverFactory = (base, body) => {
const charactersCounter = () => base.$(`[data-hook*="${dataHooks.counter}"]`);
return {
...baseUniDriverFactory(base),
/** get children */
getChildren: async () => {
const baseUniDriverElement = base.$(
`[data-hook*="${dataHooks.children}"]`,
);
return (await baseUniDriverElement.exists())
? baseUniDriverElement.getNative() // eslint-disable-line no-restricted-properties
: null;
},
/** get label */
getLabel: async () => {
const baseUniDriverElement = base.$(`[data-hook*="${dataHooks.label}"]`);
return (await baseUniDriverElement.exists())
? baseUniDriverElement.getNative() // eslint-disable-line no-restricted-properties
: null;
},
/** returns label size */
getLabelSize: async () => {
const labelDriver = textUniDriverFactory(
base.$(`[data-hook="${dataHooks.label}"]`),
);
return labelDriver.getSize();
},
/** returns true whether form field is required */
isRequired: async () =>
base.$(`[data-hook*="${dataHooks.asterisk}"]`).exists(),
/** returns the length left */
getLengthLeft: async () => {
const counter = charactersCounter();
return (await counter.exists())
? parseInt(await counter._prop('innerHTML'), 10)
: null;
},
/** returns whether the form field length is exceeded */
isLengthExceeded: async () => {
const counter = charactersCounter();
if (await counter.exists()) {
const length = parseInt(await counter._prop('innerHTML'), 10);
return length < 0;
}
return false;
},
/** returns true whether form field has tooltip */
hasTooltip: async () => {
return base.$(`[data-hook="${dataHooks.infoIcon}"]`).exists();
},
/** returns tooltip text of the info content */
getInfoContent: async () => {
const testkit = infoIconDriverFactory(
base.$(`[data-hook="${dataHooks.infoIcon}"]`),
body,
);
return testkit.getContent();
},
/** get form field suffix */
getSuffix: async () => {
const suffixElement = base.$(`[data-hook="${dataHooks.suffix}"]`);
return (await suffixElement.exists())
? suffixElement.getNative() // eslint-disable-line no-restricted-properties
: null;
},
};
};