Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
a8b8627
progress on updating the testing docs
LFDanLu Nov 29, 2023
790e8ad
setup and testing of new util packages
LFDanLu Nov 30, 2023
5c5b8c9
move test utils to react-spectrum and add provider wrapper
LFDanLu Nov 30, 2023
80b67c1
restoring StrictModeWrapper
LFDanLu Dec 1, 2023
9c8ef8f
add desktop and mobile mock util setup
LFDanLu Dec 1, 2023
8d02268
starting to remove triggerPress in favor of user event library click
LFDanLu Dec 1, 2023
3c1eadf
remove triggerPress
LFDanLu Dec 1, 2023
04c7290
fix SSR tests and react 16/17 tests
LFDanLu Dec 4, 2023
7760e95
work around weird react16/17 test failure for now
LFDanLu Dec 4, 2023
4848110
get rid of triggerTouch and typeText
LFDanLu Dec 4, 2023
af7ce33
move stuff to aria/test-utils package
LFDanLu Dec 4, 2023
488da8e
fix menutrigger tests
LFDanLu Dec 4, 2023
a84a6df
replacing fireEvent with userEvent equivalents in hooks tests pt1
LFDanLu Dec 5, 2023
1d80361
wrapping up hooks tests fireEvent replacements
LFDanLu Dec 5, 2023
0cc42d5
fix some lint issues
LFDanLu Dec 5, 2023
79a71f4
first batch of spectrum test fireEvent -> userEvent replacement
LFDanLu Dec 5, 2023
6537adb
fix tests in 16/17 again
LFDanLu Dec 6, 2023
409e8b4
updating testing docs and linking to it from various components
LFDanLu Dec 7, 2023
8d839cb
temporarily restore old test util package and move ssr stuff there
LFDanLu Dec 7, 2023
215c2e8
make react-spectrum/test-util-internal to limit what is exposed from …
LFDanLu Dec 7, 2023
e17318e
adding docs for installmouseevent
LFDanLu Dec 7, 2023
dc74ebe
add peer deps
LFDanLu Dec 7, 2023
ad731c2
Merge branch 'main' of github.com:adobe/react-spectrum into updating_…
LFDanLu Dec 7, 2023
0ef44bf
fix combobox test
LFDanLu Dec 7, 2023
2ff15bf
try to fix tsfork
LFDanLu Dec 7, 2023
808670d
fix ts fork pt 2
LFDanLu Dec 7, 2023
755f06b
test lower version requirements
LFDanLu Dec 8, 2023
44bf80e
Merge branch 'main' into updating_testing_docs
LFDanLu Jan 2, 2024
66e34cf
fix tests
LFDanLu Jan 2, 2024
0017ae4
missed one test update
LFDanLu Jan 2, 2024
03fdd4d
review updates
LFDanLu Jan 25, 2024
c07d8e9
Merge branch 'main' of github.com:adobe/react-spectrum into updating_…
LFDanLu Jan 25, 2024
8e6611e
Merge branch 'main' of github.com:adobe/react-spectrum into updating_…
LFDanLu Feb 14, 2024
81cf49b
removing todo
LFDanLu Feb 14, 2024
b2200df
messed up a copy paste
LFDanLu Feb 14, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions jest.ssr.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ module.exports = {

testTimeout: 30000,

globalSetup: require.resolve('@react-spectrum/test-utils/src/ssrSetup'),
globalTeardown: require.resolve('@react-spectrum/test-utils/src/ssrTeardown'),
globalSetup: require.resolve('@react-spectrum/test-utils-internal/src/ssrSetup'),
globalTeardown: require.resolve('@react-spectrum/test-utils-internal/src/ssrTeardown'),

// The test environment that will be used for testing
testEnvironment: 'jsdom',
Expand Down
2 changes: 1 addition & 1 deletion packages/@adobe/react-spectrum/test/ActionGroup.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import {ActionGroup, Item} from '../';
import {Provider} from '@react-spectrum/provider';
import React from 'react';
import {render} from '@react-spectrum/test-utils';
import {render} from '@react-spectrum/test-utils-internal';
import scaleMedium from '@adobe/spectrum-css-temp/vars/spectrum-medium-unique.css';
import themeLight from '@adobe/spectrum-css-temp/vars/spectrum-light-unique.css';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

import {createRef} from 'react';
import {FocusableElement} from '@react-types/shared';
import {renderHook} from '@react-spectrum/test-utils';
import {renderHook} from '@react-spectrum/test-utils-internal';
import {useActionGroup} from '../';
import {useListState} from '@react-stately/list';

Expand Down
44 changes: 17 additions & 27 deletions packages/@react-aria/aria-modal-polyfill/test/index.test.tsx
Copy link
Member Author

@LFDanLu LFDanLu Dec 8, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In many of the tests, I got rid of triggerPress and typeText where ever possible in favor of userEvent. Also got rid of fireEvent where I could as well. Didn't get to all the tests since there is quite a bit

Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,22 @@
* governing permissions and limitations under the License.
*/

import {act, fireEvent, render, triggerPress, waitFor} from '@react-spectrum/test-utils';
import {act, pointerMap, render, simulateMobile, waitFor} from '@react-spectrum/test-utils-internal';
import {ActionButton, Button} from '@react-spectrum/button';
import {Content} from '@react-spectrum/view';
import {Dialog, DialogTrigger} from '@react-spectrum/dialog';
import {Item, Menu, MenuTrigger, Section} from '@react-spectrum/menu';
import {Provider} from '@react-spectrum/provider';
import React from 'react';
import {theme} from '@react-spectrum/theme-default';
import userEvent from '@testing-library/user-event';
import {watchModals} from '../';

describe('watchModals', () => {
let user;

beforeAll(() => {
user = userEvent.setup({delay: null, pointerMap});
Comment on lines +25 to +28
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In some of the tests that didn't have userEvent added, I opted to put the userEvent.setup inline with each test case as per https://kentcdodds.com/blog/avoid-nesting-when-youre-testing. Not sure which I prefer tbh...

jest.useFakeTimers();
});

Expand All @@ -44,9 +48,7 @@ describe('watchModals', () => {
expect(queryByRole('separator')).toBeNull();

expect(document.activeElement).toBe(modal);

fireEvent.keyDown(modal, {key: 'Escape'});
fireEvent.keyUp(modal, {key: 'Escape'});
await user.keyboard('{Escape}');

act(() => {
jest.runAllTimers();
Expand All @@ -73,9 +75,7 @@ describe('watchModals', () => {
</>
);
expect(getByRole('separator')).toBeVisible();
act(() => {
triggerPress(getByLabelText('Trigger'));
});
await user.click(getByLabelText('Trigger'));
act(() => {
jest.runAllTimers();
});
Expand Down Expand Up @@ -106,9 +106,7 @@ describe('watchModals', () => {
);
// expect just the button labeled Trigger, and open the first dialog
expect(getByRole('separator')).toBeVisible();
act(() => {
triggerPress(getByLabelText('Trigger'));
});
await user.click(getByLabelText('Trigger'));
act(() => {
jest.runAllTimers();
});
Expand All @@ -123,9 +121,7 @@ describe('watchModals', () => {
let buttons = getAllByRole('button');
expect(buttons.length).toBe(1);
expect(buttons[0]).toBe(getByLabelText('Nested Trigger'));
act(() => {
triggerPress(getByLabelText('Nested Trigger'));
});
await user.click(getByLabelText('Nested Trigger'));
act(() => {
jest.runAllTimers();
});
Expand All @@ -139,8 +135,8 @@ describe('watchModals', () => {
expect(queryByRole('separator')).toBeNull();

// start closing dialogs
fireEvent.keyDown(innerDialog, {key: 'Escape'});
fireEvent.keyUp(innerDialog, {key: 'Escape'});
await user.keyboard('{Escape}');

act(() => {
jest.runAllTimers();
});
Expand All @@ -155,8 +151,7 @@ describe('watchModals', () => {
expect(queryByRole('separator')).toBeNull();

// close the outer dialog
fireEvent.keyDown(dialog, {key: 'Escape'});
fireEvent.keyUp(dialog, {key: 'Escape'});
await user.keyboard('{Escape}');
act(() => {
jest.runAllTimers();
});
Expand Down Expand Up @@ -196,9 +191,8 @@ describe('watchModals', () => {
</>
);
expect(getByRole('separator')).toBeVisible();
act(() => {
triggerPress(getByLabelText('Trigger'));
});
await user.click(getByLabelText('Trigger'));

act(() => {
jest.runAllTimers();
});
Expand All @@ -215,7 +209,7 @@ describe('watchModals', () => {
]}
];
// menu should be a tray
jest.spyOn(window.screen, 'width', 'get').mockImplementation(() => 700);
simulateMobile();
watchModals();
let {getByLabelText, getByRole, queryByRole} = render(
<>
Expand All @@ -235,9 +229,7 @@ describe('watchModals', () => {
</>
);
expect(getByRole('separator')).toBeVisible();
act(() => {
triggerPress(getByLabelText('Trigger'));
});
await user.click(getByLabelText('Trigger'));
act(() => {
jest.runAllTimers();
});
Expand All @@ -259,9 +251,7 @@ describe('watchModals', () => {
</>
);
expect(getByRole('separator')).toBeVisible();
act(() => {
triggerPress(getByLabelText('Trigger'));
});
await user.click(getByLabelText('Trigger'));
act(() => {
jest.runAllTimers();
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import {Item} from '@react-stately/collections';
import {ListLayout} from '@react-stately/layout';
import React from 'react';
import {renderHook} from '@react-spectrum/test-utils';
import {renderHook} from '@react-spectrum/test-utils-internal';
import {useComboBoxState} from '@react-stately/combobox';
import {useSearchAutocomplete} from '../';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
*/

import React from 'react';
import {renderHook} from '@react-spectrum/test-utils';
import {renderHook} from '@react-spectrum/test-utils-internal';
import {useBreadcrumbItem} from '../';

describe('useBreadcrumbItem', function () {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
*/

import React from 'react';
import {renderHook} from '@react-spectrum/test-utils';
import {renderHook} from '@react-spectrum/test-utils-internal';
import {useBreadcrumbs} from '../';

describe('useBreadcrumbs', function () {
Expand Down
2 changes: 1 addition & 1 deletion packages/@react-aria/button/test/useButton.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
*/

import React from 'react';
import {renderHook} from '@react-spectrum/test-utils';
import {renderHook} from '@react-spectrum/test-utils-internal';
import {useButton} from '../';

describe('useButton tests', function () {
Expand Down
50 changes: 29 additions & 21 deletions packages/@react-aria/calendar/test/useCalendar.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,17 @@
* governing permissions and limitations under the License.
*/

import {act, fireEvent, render} from '@react-spectrum/test-utils';
import {act, pointerMap, render} from '@react-spectrum/test-utils-internal';
import {CalendarDate} from '@internationalized/date';
import {Example} from '../stories/Example';
import React from 'react';
import userEvent from '@testing-library/user-event';

describe('useCalendar', () => {
let user;
beforeAll(() => {
jest.useFakeTimers();
user = userEvent.setup({delay: null, pointerMap});
});

afterEach(() => {
Expand All @@ -36,8 +39,15 @@ describe('useCalendar', () => {
expect(document.activeElement).toBe(cell);

for (let i = 0; i < count; i++) {
fireEvent.keyDown(document.activeElement, {key, ...opts});
fireEvent.keyUp(document.activeElement, {key, ...opts});
if (opts?.shiftKey) {
await user.keyboard('{Shift>}');
}

await user.keyboard(`{${key}}`);

if (opts?.shiftKey) {
await user.keyboard('{/Shift}');
}
}

cell = getByLabelText(value, {exact: false});
Expand Down Expand Up @@ -142,21 +152,19 @@ describe('useCalendar', () => {
});
});

function testPagination(defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior) {
async function testPagination(defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior) {
let {getByTestId, getByLabelText, unmount} = render(<Example defaultValue={defaultValue} autoFocus visibleDuration={visibleDuration} pageBehavior={pageBehavior} />);
let grid = getByTestId('range');
expect(grid).toHaveTextContent(rangeBefore);

let btn = getByLabelText(rel);

for (let i = 0; i < count; i++) {
fireEvent.click(btn);
await user.click(btn);
}

expect(grid).toHaveTextContent(rangeAfter);

unmount();
}
}

describe('pagination', () => {
it.each`
Expand All @@ -165,18 +173,18 @@ describe('useCalendar', () => {
${'going forward two'} | ${new CalendarDate(2019, 1, 1)} | ${'January to February 2019'} | ${'May to June 2019'} | ${'Next'} | ${2} | ${{months: 2}}
${'going backward one'} | ${new CalendarDate(2019, 1, 1)} | ${'January to February 2019'} | ${'November to December 2018'} | ${'Previous'} | ${1} | ${{months: 2}}
${'going backward two'} | ${new CalendarDate(2019, 1, 1)} | ${'January to February 2019'} | ${'September to October 2018'} | ${'Previous'} | ${2} | ${{months: 2}}
`('should use visible as default value $Name', ({defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration}) => {
testPagination(defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration);
`('should use visible as default value $Name', async ({defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration}) => {
await testPagination(defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration);
});

it.each`
Name | defaultValue | rangeBefore | rangeAfter | rel | count | visibleDuration | pageBehavior
${'going forward one'} | ${new CalendarDate(2019, 1, 1)} | ${'January to February 2019'} | ${'February to March 2019'} | ${'Next'} | ${1} | ${{months: 2}} | ${'single'}
${'going forward two'} | ${new CalendarDate(2019, 1, 1)} | ${'January to February 2019'} | ${'March to April 2019'} | ${'Next'} | ${2} | ${{months: 2}} | ${'single'}
${'going backward one'} | ${new CalendarDate(2019, 1, 1)} | ${'January to February 2019'} | ${'December 2018 to January 2019'} | ${'Previous'} | ${1} | ${{months: 2}} | ${'single'}
${'going backward two'} | ${new CalendarDate(2019, 1, 1)} | ${'January to February 2019'} | ${'November to December 2018'} | ${'Previous'} | ${2} | ${{months: 2}} | ${'single'}
`('should use pageBehavior single $Name', ({defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior}) => {
testPagination(defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior);
`('should use pageBehavior single $Name', async ({defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior}) => {
await testPagination(defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior);
});

it.each`
Expand All @@ -185,8 +193,8 @@ describe('useCalendar', () => {
${'week going forward two'} | ${new CalendarDate(2019, 1, 1)} | ${'December 23, 2018 to January 12, 2019'} | ${'February 3 to 23, 2019'} | ${'Next'} | ${2} | ${{weeks: 3}}
${'week going backward one'} | ${new CalendarDate(2019, 1, 1)} | ${'December 23, 2018 to January 12, 2019'} | ${'December 2 to 22, 2018'} | ${'Previous'} | ${1} | ${{weeks: 3}}
${'week going backward two'} | ${new CalendarDate(2019, 1, 1)} | ${'December 23, 2018 to January 12, 2019'} | ${'November 11 to December 1, 2018'} | ${'Previous'} | ${2} | ${{weeks: 3}}
`('should use visible as default $Name', ({defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior}) => {
testPagination(defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior);
`('should use visible as default $Name', async ({defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior}) => {
await testPagination(defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior);
});

it.each`
Expand All @@ -195,8 +203,8 @@ describe('useCalendar', () => {
${'week going forward four'} | ${new CalendarDate(2019, 1, 1)} | ${'December 23, 2018 to January 12, 2019'} | ${'January 20 to February 9, 2019'} | ${'Next'} | ${4} | ${{weeks: 3}} | ${'single'}
${'week going backward one'} | ${new CalendarDate(2019, 1, 1)} | ${'December 23, 2018 to January 12, 2019'} | ${'December 16, 2018 to January 5, 2019'} | ${'Previous'} | ${1} | ${{weeks: 3}} | ${'single'}
${'week going backward four'} | ${new CalendarDate(2019, 1, 1)} | ${'December 23, 2018 to January 12, 2019'} | ${'November 25 to December 15, 2018'} | ${'Previous'} | ${4} | ${{weeks: 3}} | ${'single'}
`('should use pageBehavior single $Name', ({defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior}) => {
testPagination(defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior);
`('should use pageBehavior single $Name', async ({defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior}) => {
await testPagination(defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior);
});

it.each`
Expand All @@ -205,8 +213,8 @@ describe('useCalendar', () => {
${'day going forward two'} | ${new CalendarDate(2019, 1, 1)} | ${'December 30, 2018 to January 3, 2019'} | ${'January 9 to 13, 2019'} | ${'Next'} | ${2} | ${{days: 5}}
${'day going backward one'} | ${new CalendarDate(2019, 1, 1)} | ${'December 30, 2018 to January 3, 2019'} | ${'December 25 to 29, 2018'} | ${'Previous'} | ${1} | ${{days: 5}}
${'day going backward two'} | ${new CalendarDate(2019, 1, 1)} | ${'December 30, 2018 to January 3, 2019'} | ${'December 20 to 24, 2018'} | ${'Previous'} | ${2} | ${{days: 5}}
`('should use visible as default $Name', ({defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior}) => {
testPagination(defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior);
`('should use visible as default $Name', async ({defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior}) => {
await testPagination(defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior);
});

it.each`
Expand All @@ -215,8 +223,8 @@ describe('useCalendar', () => {
${'day going forward five'} | ${new CalendarDate(2019, 1, 1)} | ${'December 30, 2018 to January 3, 2019'} | ${'January 3 to 7, 2019'} | ${'Next'} | ${4} | ${{days: 5}} | ${'single'}
${'day going backward one'} | ${new CalendarDate(2019, 1, 1)} | ${'December 30, 2018 to January 3, 2019'} | ${'December 29, 2018 to January 2, 2019'} | ${'Previous'} | ${1} | ${{days: 5}} | ${'single'}
${'day going backward five'} | ${new CalendarDate(2019, 1, 1)} | ${'December 30, 2018 to January 3, 2019'} | ${'December 26 to 30, 2018'} | ${'Previous'} | ${4} | ${{days: 5}} | ${'single'}
`('should use pageBehavior single $Name', ({defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior}) => {
testPagination(defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior);
`('should use pageBehavior single $Name', async ({defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior}) => {
await testPagination(defaultValue, rangeBefore, rangeAfter, rel, count, visibleDuration, pageBehavior);
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

import {AriaCheckboxGroupItemProps, AriaCheckboxGroupProps} from '@react-types/checkbox';
import {CheckboxGroupState, useCheckboxGroupState} from '@react-stately/checkbox';
import {pointerMap, render} from '@react-spectrum/test-utils';
import {pointerMap, render} from '@react-spectrum/test-utils-internal';
import React, {useRef} from 'react';
import {useCheckboxGroup, useCheckboxGroupItem} from '../';
import userEvent from '@testing-library/user-event';
Expand Down
2 changes: 1 addition & 1 deletion packages/@react-aria/color/test/useColorField.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

import {parseColor, useColorFieldState} from '@react-stately/color';
import React from 'react';
import {renderHook} from '@react-spectrum/test-utils';
import {renderHook} from '@react-spectrum/test-utils-internal';
import {useColorField} from '../';

describe('useColorField', function () {
Expand Down
Loading