wix-style-react
Version:
113 lines (97 loc) • 2.89 kB
JavaScript
import {
baseUniDriverFactory,
findByHookAtIndex,
} from '../../test/utils/unidriver';
import { dataHooks } from './constants';
import { sleep } from 'wix-ui-test-utils/react-helpers';
const ANIMATION_TIME = 350;
const accordionDriverFactory = (base, body) => ({
...baseUniDriverFactory(base),
/**
* Gets the title by item index
* @param {number} idx Item index
* @returns {Promise<string>} Title at item index
*/
getItemTitleAt: idx =>
findByHookAtIndex(base, dataHooks.item, idx)
.$('[data-hook="title"]')
.text(),
/**
* Gets the subtitle by item index
* @param {number} idx Item index
* @returns {Promise<string>} Subtitle at item index
*/
getItemSubtitleAt: idx =>
findByHookAtIndex(base, dataHooks.item, idx)
.$('[data-hook="accordion-item-subtitle"]')
.text(),
/**
* Checks whether an icon exist at item index
* @param {number} idx Item index
* @returns {Promise<boolean>}
*/
isIconExistsAt: idx =>
findByHookAtIndex(base, dataHooks.item, idx)
.$('[data-hook="icon"]')
.exists(),
/**
* Checks whether an item is expanded at index
* @param {number} idx Item index
* @returns {Promise<boolean>}
*/
isItemExpandedAt: idx =>
findByHookAtIndex(base, dataHooks.item, idx)
.$('[data-hook="children"]')
.exists(),
/**
* Clicks toggle button at item index
* @param {number} idx Item index
* @returns {Promise<void>}
*/
clickToggleButtonAt: async idx => {
await findByHookAtIndex(base, dataHooks.item, idx)
.$('[data-hook="toggle-accordion-wrapper"]')
.click();
// Wait for animation to finish
return await sleep(ANIMATION_TIME);
},
/**
* Clicks item at index
* @param {number} idx Item index
* @returns {Promise<void, number>}
*/
clickItemAt: async idx => {
await findByHookAtIndex(base, dataHooks.item, idx)
.$('[data-hook="header"]')
.click();
// Wait for animation to finish
return await sleep(ANIMATION_TIME);
},
/**
* Gets toggle button label at item index
* @param {number} idx Item index
* @returns {Promise<string>}
*/
getToggleButtonLabelAt: idx =>
findByHookAtIndex(base, dataHooks.item, idx)
.$(
`[data-hook="toggle-accordion-wrapper"] [data-hook="${dataHooks.toggleButton}"]`,
)
.text(),
/**
* Gets transition speed
* @returns {Promise<string>}
*/
getTransitionSpeed: () => base.attr('data-transition-speed'),
/**
* Returns skin
* @returns {Promise<’light’ | ‘standard’ | ‘neutral’>}
*/
getSkin: () => base.attr('data-skin'),
/**
* Returns size of horizontal padding
* @returns {Promise<‘tiny’ | ‘small’ | ‘medium’ | ‘large’>}
*/
getHorizontalPadding: () => base.attr('data-horizontal-padding'),
});
export default accordionDriverFactory;