UNPKG

wix-style-react

Version:
103 lines (81 loc) 2.69 kB
import eyes from 'eyes.it'; import { sleep } from 'wix-ui-test-utils/react-helpers'; import { scrollToElement, waitForVisibilityOf, isFocused, } from 'wix-ui-test-utils/protractor'; import { browser, $ } from 'protractor'; import { dropdownLayoutTestkitFactory } from '../../../testkit/protractor'; import { storySettings, testStories } from './storySettings'; import { createTestStoryUrl } from '../../../test/utils/storybook-helpers'; async function waitForFetching() { await sleep(700); } describe('DropdownLayout', () => { let driver; const storyUrl = createTestStoryUrl({ ...storySettings, testName: testStories.infiniteScroll, }); beforeAll(async () => { browser.get(storyUrl); driver = dropdownLayoutTestkitFactory({ dataHook: 'infinite-scroll-dropdownLayout', }); }); beforeEach(async () => { await waitForVisibilityOf( driver.element(), 'Cant find infinite scroll dropdownLayout', ); await waitForFetching(); await scrollToElement(driver.element()); }); eyes.it('should add more items from server when scrolling down', async () => { expect(await driver.getDropdownItemsCount()).toEqual(15); await driver.scrollToElement(14); await waitForFetching(); expect(await driver.getDropdownItemsCount()).toEqual(30); }); eyes.it('should show loader', async () => { await driver.scrollToElement(14); expect(await driver.loaderExists()).toBeTruthy(); }); }); describe('DropdownLayout - Focus behaviour', () => { let driver; const navigateToTestUrl = async testName => { const testStoryUrl = createTestStoryUrl({ category: storySettings.category, storyName: storySettings.storyName, dataHook: storySettings.dataHook, testName, }); await browser.get(testStoryUrl); }; beforeEach(async () => { await navigateToTestUrl(testStories.tabsSwitches); driver = dropdownLayoutTestkitFactory({ dataHook: storySettings.dataHook, }); await waitForVisibilityOf( driver.element(), `Cant find ${storySettings.dataHook}`, ); }); const pressTab = () => browser.actions().sendKeys(protractor.Key.TAB).perform(); async function focusOnDropdownLayout() { const firstElement = $(`[data-hook="input-for-initial-focus"]`); await pressTab(); expect(await isFocused(firstElement)).toEqual(true); await pressTab(); expect(await driver.isFocused()).toEqual(true); } it('should move out focus of dropdown when pressing tab without any selection', async () => { await focusOnDropdownLayout(); await pressTab(); expect(await driver.isFocused()).toEqual(false); }); });