UNPKG

@wix/design-system

Version:

@wix/design-system

92 lines 3.08 kB
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