wix-style-react
Version:
wix-style-react
86 lines • 3.34 kB
JavaScript
import { baseUniDriverFactory } from '../test-utils/utils/unidriver';
export const tabsUniDriverFactory = base => {
const findFirst = async (query) => {
const item = base.$$(query).get(0);
return (await item.exists()) ? item : null;
};
const getItemsContainer = async () => findFirst('div[role="tablist"]');
const getItems = async () => {
const itemsContainer = await getItemsContainer();
return itemsContainer.$$('button[role="tab"]').map(child => child);
};
const getItemsContainerType = async () => {
const itemContainer = await getItemsContainer();
return await itemContainer.attr('data-type');
};
return {
...baseUniDriverFactory(base),
/**
* Gets all titles text
* @return {Promise<string[]>}
*/
getTitles: async () => Promise.all((await getItems()).map(item => item.text())),
/**
* Clicks the tab at index
* @param {number} index
* @return {Promise<void>}
*/
clickTabAt: async (index) => (await getItems())[index].click(),
/**
* Gets active tab index
* @return {Promise<number>}
*/
getActiveTabIndex: async () => {
const itemsDataActivePromises = (await getItems()).map(item => item.attr('data-active'));
const itemsDataActive = await Promise.all(itemsDataActivePromises);
return itemsDataActive.findIndex(active => active === 'true');
},
/**
* Checks whether tabs type is default
* @return {Promise<boolean>}
*/
isDefaultType: async () => !(await getItemsContainerType()),
/**
* Checks whether tabs type is container
* @return {Promise<boolean>}
*/
getItemsContainerType,
/**
* Gets the data-hook
* @param {number} index
* @return {Promise<string>}
*/
getDataHook: async (index) => (await getItems())[index].attr('data-hook'),
/**
* Gets a set of tabs widths
* @return {Promise<Set<string>>}
*/
getItemsWidth: async () => {
const items = await getItems();
const itemsWidthArrayPromise = items.map(item => item._prop('style').then(style => style.width));
const itemsWidthArray = await Promise.all(itemsWidthArrayPromise);
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 {Promise<UniDriver|null>}
*/
getSideContent: async () => findFirst(`[data-content="true"]`),
/**
* Gets tabs max widths
* @return {Promise<string[]>}
*/
getItemsMaxWidths: async () => Promise.all((await getItems()).map(item => item._prop('style').then(style => style.maxWidth))),
/**
* Gets tabs min widths
* @return {Promise<string[]>}
*/
getItemsMinWidths: async () => Promise.all((await getItems()).map(item => item._prop('style').then(style => style.minWidth))),
};
};
//# sourceMappingURL=Tabs.uni.driver.js.map