@wix/design-system
Version:
@wix/design-system
92 lines • 3.08 kB
JavaScript
import { baseUniDriverFactory } from '../utils/test-utils/unidriver';
export const tabsUniDriverFactory = (base) => {
const findFirst = (query) => {
return base.$$(query).at(0);
};
const itemsContainer = findFirst('div[role="tablist"]');
const items = itemsContainer.$$('button[role="tab"]');
const getItemsContainerType = () => {
return itemsContainer.attr('data-type');
};
return {
...baseUniDriverFactory(base),
/**
* Gets all titles text
* @return {Promise<string[]>}
*/
getTitles: async () => await items.map(item => item.text()),
/**
* Clicks the tab at index
* @param {number} index
* @return {Promise<void>}
*/
clickTabAt: (index) => items.at(index).click(),
/**
* Gets active tab index
* @return {Promise<number>}
*/
getActiveTabIndex: async () => {
const itemsDataActive = await items.map(item => item.attr('data-active'));
return itemsDataActive.findIndex(active => active === 'true');
},
/**
* Checks whether tabs type is default
* @return {Promise<boolean>}
*/
isDefaultType: async () => !(await getItemsContainerType()),
/**
* Gets tabs container type
* @return {Promise<string>}
*/
getItemsContainerType,
/**
* Gets the data-hook
* @param {number} index
* @return {Promise<string>}
*/
getDataHook: (index) => items.at(index).attr('data-hook'),
/**
* Gets a set of tabs widths
* @return {Promise<Set<string>>}
*/
getItemsWidth: async () => {
const itemsWidthArray = await items.map(async (item) => {
const style = await item.prop('style');
return style.width;
});
return new Set(itemsWidthArray);
},
/**
* Checks whether tabs has a divider
* @return {Promise<boolean>}
*/
hasDivider: async () => (await base.attr('data-divider')) === 'true',
/**
* Gets the side content
* @return {UniDriver}
*/
sideContent: findFirst(`[data-content="true"]`),
/**
* @deprecated use sideContent
* @return {Promise<UniDriver>}
*/
getSideContent: async () => findFirst(`[data-content="true"]`),
/**
* Gets tabs max widths
* @return {Promise<string[]>}
*/
getItemsMaxWidths: async () => await items.map(async (item) => {
const style = await item.prop('style');
return style.maxWidth;
}),
/**
* Gets tabs min widths
* @return {Promise<string[]>}
*/
getItemsMinWidths: async () => await items.map(async (item) => {
const style = await item.prop('style');
return style.minWidth;
}),
};
};
//# sourceMappingURL=Tabs.uni.driver.js.map