From 64d2d164facfba2aeeec215291d704d035f90c1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dudak?= Date: Wed, 3 Jul 2024 11:06:13 +0200 Subject: [PATCH 1/5] Update internal-test-utils --- docs/package.json | 2 +- package.json | 2 +- packages/mui-base/package.json | 2 +- .../src/Popover/Root/PopoverRoot.test.tsx | 36 ++-- .../Tooltip/Provider/TooltipProvider.test.tsx | 13 +- .../src/Tooltip/Root/TooltipRoot.test.tsx | 67 +++--- .../mui-base/src/legacy/Badge/Badge.test.tsx | 4 +- .../src/legacy/Button/Button.test.tsx | 4 +- .../legacy/FormControl/FormControl.test.tsx | 4 +- .../mui-base/src/legacy/Input/Input.test.tsx | 4 +- .../mui-base/src/legacy/Menu/Menu.test.tsx | 10 +- .../src/legacy/MenuButton/MenuButton.test.tsx | 9 +- .../src/legacy/MenuItem/MenuItem.test.tsx | 7 +- .../mui-base/src/legacy/Modal/Modal.test.tsx | 4 +- .../src/legacy/Option/Option.test.tsx | 19 +- .../legacy/OptionGroup/OptionGroup.test.tsx | 4 +- .../src/legacy/Popper/Popper.test.tsx | 4 +- .../src/legacy/Select/Select.test.tsx | 47 ++--- .../src/legacy/Snackbar/Snackbar.test.tsx | 5 +- .../TablePagination/TablePagination.test.tsx | 13 +- .../TextareaAutosize.test.tsx | 11 +- .../src/legacy/Unstable_Popup/Popup.test.tsx | 4 +- packages/mui-base/test/createRenderer.ts | 54 +---- .../test/describeConformanceUnstyled.tsx | 20 +- pnpm-lock.yaml | 196 ++++++++++++++++-- test/package.json | 2 +- 26 files changed, 303 insertions(+), 244 deletions(-) diff --git a/docs/package.json b/docs/package.json index 1d77cb4523a..cb9b1b57804 100644 --- a/docs/package.json +++ b/docs/package.json @@ -77,7 +77,7 @@ "@babel/plugin-transform-react-constant-elements": "^7.24.6", "@babel/preset-typescript": "^7.24.6", "@mui/internal-docs-utils": "^1.0.7", - "@mui/internal-test-utils": "1.0.0-dev.20240529-082515-213b5e33ab", + "@mui/internal-test-utils": "1.0.3", "@types/autosuggest-highlight": "^3.2.3", "@types/chai": "^4.3.16", "@types/node": "^18.19.33", diff --git a/package.json b/package.json index fa216344584..51a15c6f4ec 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "@mui/internal-docs-utils": "^1.0.7", "@mui/internal-markdown": "^1.0.6", "@mui/internal-scripts": "^1.0.11", - "@mui/internal-test-utils": "1.0.0-dev.20240529-082515-213b5e33ab", + "@mui/internal-test-utils": "1.0.3", "@mui/material": "6.0.0-alpha.13", "@mui/monorepo": "github:mui/material-ui#v6.0.0-alpha.12", "@mui/utils": "6.0.0-alpha.13", diff --git a/packages/mui-base/package.json b/packages/mui-base/package.json index 037cb0e2987..5cd9af24012 100644 --- a/packages/mui-base/package.json +++ b/packages/mui-base/package.json @@ -50,7 +50,7 @@ }, "devDependencies": { "@mui/internal-babel-macros": "^1.0.1", - "@mui/internal-test-utils": "1.0.0-dev.20240529-082515-213b5e33ab", + "@mui/internal-test-utils": "1.0.3", "@testing-library/react": "^15.0.7", "@testing-library/user-event": "^14.5.2", "@types/chai": "^4.3.16", diff --git a/packages/mui-base/src/Popover/Root/PopoverRoot.test.tsx b/packages/mui-base/src/Popover/Root/PopoverRoot.test.tsx index 4b5c09f12fd..723ea8f538a 100644 --- a/packages/mui-base/src/Popover/Root/PopoverRoot.test.tsx +++ b/packages/mui-base/src/Popover/Root/PopoverRoot.test.tsx @@ -1,13 +1,11 @@ import * as React from 'react'; import * as Popover from '@base_ui/react/Popover'; -import { act, fireEvent, screen } from '@mui/internal-test-utils'; +import { fireEvent, flushMicrotasks, screen } from '@mui/internal-test-utils'; import { expect } from 'chai'; import { spy } from 'sinon'; import { createRenderer } from '../../../test'; import { OPEN_DELAY } from '../utils/constants'; -const waitForPosition = async () => act(async () => {}); - function Root(props: Popover.RootProps) { return ; } @@ -27,7 +25,7 @@ describe('', () => { describe('uncontrolled open', () => { it('should open when the anchor is clicked', async () => { - render( + await render( @@ -40,13 +38,13 @@ describe('', () => { fireEvent.click(anchor); - await waitForPosition(); + await flushMicrotasks(); expect(screen.getByText('Content')).not.to.equal(null); }); it('should close when the anchor is clicked twice', async () => { - render( + await render( @@ -59,7 +57,7 @@ describe('', () => { fireEvent.click(anchor); - await waitForPosition(); + await flushMicrotasks(); expect(screen.getByText('Content')).not.to.equal(null); @@ -116,7 +114,7 @@ describe('', () => { ); } - render(); + await render(); expect(screen.queryByText('Content')).to.equal(null); @@ -124,7 +122,7 @@ describe('', () => { fireEvent.click(anchor); - await waitForPosition(); + await flushMicrotasks(); expect(screen.getByText('Content')).not.to.equal(null); @@ -158,7 +156,7 @@ describe('', () => { ); } - render(); + await render(); expect(screen.queryByText('Content')).to.equal(null); @@ -166,7 +164,7 @@ describe('', () => { fireEvent.click(anchor); - await waitForPosition(); + await flushMicrotasks(); expect(screen.getByText('Content')).not.to.equal(null); expect(handleChange.callCount).to.equal(1); @@ -238,7 +236,7 @@ describe('', () => { clock.withFakeTimers(); it('should open after delay with rest type by default', async () => { - render( + await render( @@ -252,19 +250,19 @@ describe('', () => { fireEvent.mouseEnter(anchor); fireEvent.mouseMove(anchor); - await waitForPosition(); + await flushMicrotasks(); expect(screen.queryByText('Content')).to.equal(null); clock.tick(100); - await waitForPosition(); + await flushMicrotasks(); expect(screen.getByText('Content')).not.to.equal(null); }); it('should open after delay with hover type', async () => { - render( + await render( @@ -278,13 +276,13 @@ describe('', () => { fireEvent.mouseEnter(anchor); clock.tick(OPEN_DELAY / 2); - await waitForPosition(); + await flushMicrotasks(); expect(screen.queryByText('Content')).to.equal(null); clock.tick(OPEN_DELAY / 2); - await waitForPosition(); + await flushMicrotasks(); expect(screen.getByText('Content')).not.to.equal(null); }); @@ -294,7 +292,7 @@ describe('', () => { clock.withFakeTimers(); it('should close after delay', async () => { - render( + await render( @@ -310,7 +308,7 @@ describe('', () => { clock.tick(OPEN_DELAY); - await waitForPosition(); + await flushMicrotasks(); expect(screen.getByText('Content')).not.to.equal(null); diff --git a/packages/mui-base/src/Tooltip/Provider/TooltipProvider.test.tsx b/packages/mui-base/src/Tooltip/Provider/TooltipProvider.test.tsx index 98d341e095b..748c71e6407 100644 --- a/packages/mui-base/src/Tooltip/Provider/TooltipProvider.test.tsx +++ b/packages/mui-base/src/Tooltip/Provider/TooltipProvider.test.tsx @@ -1,10 +1,9 @@ import * as React from 'react'; import * as Tooltip from '@base_ui/react/Tooltip'; -import { createRenderer, act, screen, fireEvent } from '@mui/internal-test-utils'; +import { screen, fireEvent, flushMicrotasks } from '@mui/internal-test-utils'; import { expect } from 'chai'; import { OPEN_DELAY } from '../utils/constants'; - -const waitForPosition = async () => act(async () => {}); +import { createRenderer } from '../../../test'; describe('', () => { const { render, clock } = createRenderer(); @@ -13,7 +12,7 @@ describe('', () => { clock.withFakeTimers(); it('waits for the delay before showing the tooltip', async () => { - render( + await render( @@ -37,7 +36,7 @@ describe('', () => { clock.tick(9_000); - await waitForPosition(); + await flushMicrotasks(); expect(screen.queryByText('Content')).not.to.equal(null); }); @@ -47,7 +46,7 @@ describe('', () => { clock.withFakeTimers(); it('waits for the closeDelay before hiding the tooltip', async () => { - render( + await render( @@ -65,7 +64,7 @@ describe('', () => { clock.tick(OPEN_DELAY); - await waitForPosition(); + await flushMicrotasks(); expect(screen.queryByText('Content')).not.to.equal(null); diff --git a/packages/mui-base/src/Tooltip/Root/TooltipRoot.test.tsx b/packages/mui-base/src/Tooltip/Root/TooltipRoot.test.tsx index ff0aba99c63..9342ec26b48 100644 --- a/packages/mui-base/src/Tooltip/Root/TooltipRoot.test.tsx +++ b/packages/mui-base/src/Tooltip/Root/TooltipRoot.test.tsx @@ -1,11 +1,10 @@ import * as React from 'react'; import * as Tooltip from '@base_ui/react/Tooltip'; -import { act, createRenderer, fireEvent, screen } from '@mui/internal-test-utils'; +import { act, fireEvent, flushMicrotasks, screen } from '@mui/internal-test-utils'; import { expect } from 'chai'; import { spy } from 'sinon'; import { OPEN_DELAY } from '../utils/constants'; - -const waitForPosition = async () => act(async () => {}); +import { createRenderer } from '../../../test'; function Root(props: Tooltip.RootProps) { return ; @@ -18,7 +17,7 @@ describe('', () => { clock.withFakeTimers(); it('should open when the trigger is hovered', async () => { - render( + await render( @@ -35,13 +34,13 @@ describe('', () => { clock.tick(OPEN_DELAY); - await waitForPosition(); + await flushMicrotasks(); expect(screen.getByText('Content')).not.to.equal(null); }); it('should close when the trigger is unhovered', async () => { - render( + await render( @@ -58,7 +57,7 @@ describe('', () => { clock.tick(OPEN_DELAY); - await waitForPosition(); + await flushMicrotasks(); fireEvent.mouseLeave(trigger); @@ -71,7 +70,7 @@ describe('', () => { return; } - render( + await render( @@ -84,13 +83,13 @@ describe('', () => { act(() => trigger.focus()); - await waitForPosition(); + await flushMicrotasks(); expect(screen.getByText('Content')).not.to.equal(null); }); it('should close when the trigger is blurred', async () => { - render( + await render( @@ -105,7 +104,7 @@ describe('', () => { clock.tick(OPEN_DELAY); - await waitForPosition(); + await flushMicrotasks(); act(() => trigger.blur()); @@ -119,7 +118,7 @@ describe('', () => { clock.withFakeTimers(); it('should open when controlled open is true', async () => { - render( + await render( Content @@ -131,7 +130,7 @@ describe('', () => { }); it('should close when controlled open is false', async () => { - render( + await render( Content @@ -164,7 +163,7 @@ describe('', () => { ); } - render(); + await render(); expect(screen.queryByText('Content')).to.equal(null); @@ -175,7 +174,7 @@ describe('', () => { clock.tick(OPEN_DELAY); - await waitForPosition(); + await flushMicrotasks(); expect(screen.getByText('Content')).not.to.equal(null); @@ -209,7 +208,7 @@ describe('', () => { ); } - render(); + await render(); expect(screen.queryByText('Content')).to.equal(null); @@ -220,7 +219,7 @@ describe('', () => { clock.tick(OPEN_DELAY); - await waitForPosition(); + await flushMicrotasks(); expect(screen.getByText('Content')).not.to.equal(null); expect(handleChange.callCount).to.equal(1); @@ -230,7 +229,7 @@ describe('', () => { describe('prop: defaultOpen', () => { it('should open when the component is rendered', async () => { - render( + await render( @@ -239,13 +238,13 @@ describe('', () => { , ); - await waitForPosition(); + await flushMicrotasks(); expect(screen.getByText('Content')).not.to.equal(null); }); it('should not open when the component is rendered and open is controlled', async () => { - render( + await render( @@ -254,13 +253,13 @@ describe('', () => { , ); - await waitForPosition(); + await flushMicrotasks(); expect(screen.queryByText('Content')).to.equal(null); }); it('should not close when the component is rendered and open is controlled', async () => { - render( + await render( @@ -269,13 +268,13 @@ describe('', () => { , ); - await waitForPosition(); + await flushMicrotasks(); expect(screen.getByText('Content')).not.to.equal(null); }); it('should remain uncontrolled', async () => { - render( + await render( @@ -284,7 +283,7 @@ describe('', () => { , ); - await waitForPosition(); + await flushMicrotasks(); expect(screen.getByText('Content')).not.to.equal(null); @@ -292,7 +291,7 @@ describe('', () => { fireEvent.mouseLeave(trigger); - await waitForPosition(); + await flushMicrotasks(); expect(screen.queryByText('Content')).to.equal(null); }); @@ -302,7 +301,7 @@ describe('', () => { clock.withFakeTimers(); it('should open after delay with rest type by default', async () => { - render( + await render( @@ -316,19 +315,19 @@ describe('', () => { fireEvent.mouseEnter(trigger); fireEvent.mouseMove(trigger); - await waitForPosition(); + await flushMicrotasks(); expect(screen.queryByText('Content')).to.equal(null); clock.tick(100); - await waitForPosition(); + await flushMicrotasks(); expect(screen.getByText('Content')).not.to.equal(null); }); it('should open after delay with hover type', async () => { - render( + await render( @@ -342,13 +341,13 @@ describe('', () => { fireEvent.mouseEnter(trigger); clock.tick(OPEN_DELAY - 100); - await waitForPosition(); + await flushMicrotasks(); expect(screen.queryByText('Content')).to.equal(null); clock.tick(100); - await waitForPosition(); + await flushMicrotasks(); expect(screen.getByText('Content')).not.to.equal(null); }); @@ -358,7 +357,7 @@ describe('', () => { clock.withFakeTimers(); it('should close after delay', async () => { - render( + await render( @@ -374,7 +373,7 @@ describe('', () => { clock.tick(OPEN_DELAY); - await waitForPosition(); + await flushMicrotasks(); expect(screen.getByText('Content')).not.to.equal(null); diff --git a/packages/mui-base/src/legacy/Badge/Badge.test.tsx b/packages/mui-base/src/legacy/Badge/Badge.test.tsx index e19ffad1e77..d8eacb08b48 100644 --- a/packages/mui-base/src/legacy/Badge/Badge.test.tsx +++ b/packages/mui-base/src/legacy/Badge/Badge.test.tsx @@ -1,11 +1,10 @@ import * as React from 'react'; -import { createRenderer, createMount } from '@mui/internal-test-utils'; +import { createRenderer } from '@mui/internal-test-utils'; import { Badge, badgeClasses as classes } from '@base_ui/react/legacy/Badge'; import { describeConformanceUnstyled } from '../../../test/describeConformanceUnstyled'; describe('', () => { const { render } = createRenderer(); - const mount = createMount(); describeConformanceUnstyled( @@ -15,7 +14,6 @@ describe('', () => { classes, inheritComponent: 'span', render, - mount, refInstanceof: window.HTMLSpanElement, testComponentPropWith: 'div', slots: { diff --git a/packages/mui-base/src/legacy/Button/Button.test.tsx b/packages/mui-base/src/legacy/Button/Button.test.tsx index d3b1e3d781f..4b6257d1177 100644 --- a/packages/mui-base/src/legacy/Button/Button.test.tsx +++ b/packages/mui-base/src/legacy/Button/Button.test.tsx @@ -1,18 +1,16 @@ import * as React from 'react'; -import { act, createMount, createRenderer, fireEvent } from '@mui/internal-test-utils'; +import { act, createRenderer, fireEvent } from '@mui/internal-test-utils'; import { expect } from 'chai'; import { spy } from 'sinon'; import { Button, buttonClasses } from '@base_ui/react/legacy/Button'; import { describeConformanceUnstyled } from '../../../test/describeConformanceUnstyled'; describe('