import { UniDriver } from '@wix/wix-ui-test-utils/unidriver'; import { InputWithOptionsUniDriver, TabsUniDriver, } from '@wix/design-system/dist/testkit/unidriver'; import { baseUniDriverFactory } from '../../unidriver'; export function TabsFilterUniDriver(base: UniDriver, body: UniDriver) { const tabsBase = () => base.$('[data-hook="tabs-default"]'); const tabsUniDriver = TabsUniDriver(tabsBase(), body); const getTabs = () => tabsBase().$$('[data-hook="tabs-filter-tab-title"]'); const getTabAt = (index: number) => getTabs().get(index); return { /** * Wait for tabs filter to render * @param timeout */ wait: (timeout?: number) => base.wait(timeout), ...baseUniDriverFactory(base), /** * Get all tabs titles text */ getTitles: () => getTabs().map((e) => e.$('[data-hook="title-text"]').text()), /** * * Get all tabs total text (requires ) */ getParensTotals: () => getTabs().map((e) => e.$('[data-hook="title-badge"]').$('[data-hook="total"]').text(), ), /** * Get all tabs total text (requires ) */ getCounterBadgeTotals: () => getTabs().map((e) => e.$('[data-hook="title-badge"]').text()), /** * Get the index of the current active tab */ getActiveTabIndex: () => tabsUniDriver.getActiveTabIndex(), /** * Click a tab * @param index */ clickTabAt: (index: number) => tabsUniDriver.clickTabAt(index), /** * Hover a tab * @param index */ hoverTabAt: (index: number) => getTabAt(index).hover(), /** * Get the title text of a tab * @param index */ getTitleTextAt: (index: number) => getTabs().get(index).$('[data-hook="title-text"]').text(), /** * Get the total text of a tab (requires ) * @param index */ getTotalBadgeTextAt: (index: number) => getTabs().get(index).$('[data-hook="title-badge"]').text(), /** * Get the total text of a tab (requires ) * @param index */ getTotalParensTextAt: (index: number) => getTabs() .get(index) .$('[data-hook="title-badge"]') .$('[data-hook="total"]') .text(), dropdown: () => InputWithOptionsUniDriver(base.$('[data-hook="tabs-dropdown"]'), body), tabsBadgesExists: () => getTabs().at(0).$('[data-hook="title-badge"]').exists(), }; } export default TabsFilterUniDriver;