wix-style-react
Version:
wix-style-react
134 lines (99 loc) • 4.46 kB
Markdown
# DatePicker TestKits
## DatePicker TestKit API
### Polyfills
Since the tests won't be ran in a browser environment, the `<DatePicker/>` component might need some
polyfills. You can use them as follows:
```javascript
import {rangePolyfill, requestAnimationFramePolyfill} from 'wix-style-react/dist/testkit/polyfills';
beforeAll(() => {
rangePolyfill.install();
requestAnimationFramePolyfill.install();
});
```
## Unit testing
### driver
| method | arguments | returned value | description |
|--------|-----------|----------------|-------------|
| exists | - | bool | checks if element does exist |
### inputDriver
[See Input component driver documentation](https://wix-wix-style-react.surge.sh/?selectedKind=Core&selectedStory=Input).
### calendarDriver
| method | arguments | returned value | description |
|--------|-----------|----------------|-------------|
| isVisible | - | bool | checks if calendar is visible |
| clickOnNthDay | number | - | select Nth available day |
| clickOnYearDropdown | - | - | open year dropdown options list |
| clickOnNthYear | number | - | select Nth year (should start with 1 because of additional control arrows) |
| clickOnPrevMonthButton | - | - | clicks on previous month button |
| clickOnNextMonthButton | - | - | clicks on next month button |
| getCurrentMonthWithYear | - | string | returns the month and year |
| getNthWeekDayName | number | string | returns the n'th day name in the week |
| open | - | - | open the calendar |
| close | - | - | close the calendar |
| mouseClickOutside | - | - | hides the calendar without saving the value |
| pressLeftArrow | - | - | focuses previous day in calendar |
| pressRightArrow | - | - | focuses next day in calendar |
### Usage Example
> Unit testing example
```javascript
import React from 'react';
import {datePickerTestkitFactory} from 'wix-style-react/dist/testkit';
import {datePickerTestkitFactory as enzymeDatePickerTestkitFactory} from 'wix-style-react/dist/testkit/enzyme';
/***************
enzyme example
***************/
const dataHook = 'myDataHook';
const wrapper = mount(<div/><DatePicker dataHook={dataHook}/></div>);
const {driver} = enzymeDatePickerTestkitFactory({wrapper, dataHook});
//Do tests
expect(driver.exists()).toBeTruthy();
/**********************
ReactTestUtils example
**********************/
const div = document.createElement('div');
const dataHook = 'myDataHook';
const wrapper = div.appendChild(
ReactTestUtils.renderIntoDocument(<div/><DatePicker dataHook={dataHook}/></div>, {dataHook})
);
const testkit = DatePickerTestkitFactory({wrapper, dataHook});
//Do tests
expect(testkit.driver.exists()).toBeTruthy();
```
## E2E testing
### input
| method | arguments | returned value | description |
|--------|-----------|----------------|-------------|
| exists | - | bool | checks if element is present in DOM |
| isDisplayed | - | bool | check if input is visible |
| click | - | - | clicks on input |
| pressEnterKey | - | - | press "Enter" key on input |
| pressEscKey | - | - | press "Escape" key on input |
| pressTabKey | - | - | press "Tab" key on input |
### calendar
| method | arguments | returned value | description |
|--------|-----------|----------------|-------------|
| exists | - | bool | checks if element is present in DOM |
| isDisplayed | - | bool | check if calendar is visible |
| clickOnNthAvailableDay | number | - | click on Nth available date for current month|
| openYearDropdownOptions | - | - | open year options dropdown |
| clickOnNthYear | number | - | click on Nth year from year options dropdown |
| openMonthDropdownOptions | - | - | open month options dropdown |
| clickOnNthMonth | number | - | click on Nth month from month options dropdown |
### Usage Example
> E2E example
```javascript
//Element should be rendered with a data-hook into the DOM
<DatePicker dataHook='myDataHook'/>
/*******************
protractor example
*******************/
import {DatePickerTestkitFactory, waitForVisibilityOf} from 'wix-style-react/dist/testkit/protractor';
//Create an element testkit via the data-hook attribute
const testkit = DatePickerTestkitFactory({dataHook: 'myDataHook'});
browser.get(appUrl); //Your application url
waitForVisibilityOf(testkit.element(), 'Cannot find DatePicker')
.then(() => {
//Do tests
expect(testkit.element().isDisplayed()).toBeTruthy();
});
```