diff --git a/.changeset/dependabot-a13a4a3.md b/.changeset/dependabot-a13a4a3.md new file mode 100644 index 0000000000..5a339330e7 --- /dev/null +++ b/.changeset/dependabot-a13a4a3.md @@ -0,0 +1,64 @@ +--- +'@backstage/core-app-api': patch +'@backstage/core-components': patch +'@backstage/core-plugin-api': patch +'@backstage/dev-utils': patch +'@backstage/integration-react': patch +'@backstage/test-utils': patch +'@backstage/plugin-airbrake': patch +'@backstage/plugin-allure': patch +'@backstage/plugin-analytics-module-ga': patch +'@backstage/plugin-apache-airflow': patch +'@backstage/plugin-api-docs': patch +'@backstage/plugin-azure-devops': patch +'@backstage/plugin-badges': patch +'@backstage/plugin-bitrise': patch +'@backstage/plugin-catalog-graph': patch +'@backstage/plugin-catalog-import': patch +'@backstage/plugin-catalog-react': patch +'@backstage/plugin-catalog': patch +'@backstage/plugin-circleci': patch +'@backstage/plugin-cloudbuild': patch +'@backstage/plugin-code-climate': patch +'@backstage/plugin-code-coverage': patch +'@backstage/plugin-config-schema': patch +'@backstage/plugin-cost-insights': patch +'@backstage/plugin-explore-react': patch +'@backstage/plugin-explore': patch +'@backstage/plugin-firehydrant': patch +'@backstage/plugin-fossa': patch +'@backstage/plugin-gcalendar': patch +'@backstage/plugin-gcp-projects': patch +'@backstage/plugin-git-release-manager': patch +'@backstage/plugin-github-actions': patch +'@backstage/plugin-github-deployments': patch +'@backstage/plugin-gitops-profiles': patch +'@backstage/plugin-gocd': patch +'@backstage/plugin-graphiql': patch +'@backstage/plugin-home': patch +'@backstage/plugin-ilert': patch +'@backstage/plugin-jenkins': patch +'@backstage/plugin-kafka': patch +'@backstage/plugin-kubernetes': patch +'@backstage/plugin-lighthouse': patch +'@backstage/plugin-newrelic': patch +'@backstage/plugin-org': patch +'@backstage/plugin-pagerduty': patch +'@backstage/plugin-periskop': patch +'@backstage/plugin-rollbar': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-search': patch +'@backstage/plugin-sentry': patch +'@backstage/plugin-shortcuts': patch +'@backstage/plugin-sonarqube': patch +'@backstage/plugin-splunk-on-call': patch +'@backstage/plugin-stack-overflow': patch +'@backstage/plugin-tech-insights': patch +'@backstage/plugin-tech-radar': patch +'@backstage/plugin-techdocs': patch +'@backstage/plugin-todo': patch +'@backstage/plugin-user-settings': patch +'@backstage/plugin-xcmetrics': patch +--- + +build(deps): bump `@testing-library/user-event` from 13.5.0 to 14.0.0 diff --git a/.changeset/popular-geese-prove.md b/.changeset/popular-geese-prove.md new file mode 100644 index 0000000000..1df79d06c7 --- /dev/null +++ b/.changeset/popular-geese-prove.md @@ -0,0 +1,16 @@ +--- +'@backstage/cli': patch +--- + +Updated the plugin template to install version 14 of `@testing-library/user-event`. + +To apply this change to your own project, update the `devDependencies` section in your `package.json` files: + +```diff + "devDependencies": { + ... omitted dev dependencies ... +- "@testing-library/user-event": "^13.1.8", ++ "@testing-library/user-event": "^14.0.0", + ... omitted dev dependencies ... + } +``` diff --git a/packages/app/package.json b/packages/app/package.json index 0f96afd6ec..813a085c47 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -81,7 +81,7 @@ "@testing-library/cypress": "^8.0.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/jquery": "^3.3.34", "@types/node": "^14.14.32", diff --git a/packages/cli/templates/default-plugin/package.json.hbs b/packages/cli/templates/default-plugin/package.json.hbs index 7f7e046605..dfe084ee24 100644 --- a/packages/cli/templates/default-plugin/package.json.hbs +++ b/packages/cli/templates/default-plugin/package.json.hbs @@ -46,7 +46,7 @@ "@backstage/test-utils": "{{versionQuery '@backstage/test-utils'}}", "@testing-library/jest-dom": "{{versionQuery '@testing-library/jest-dom' '5.10.1'}}", "@testing-library/react": "{{versionQuery '@testing-library/react' '12.1.3'}}", - "@testing-library/user-event": "{{versionQuery '@testing-library/user-event' '13.1.8'}}", + "@testing-library/user-event": "{{versionQuery '@testing-library/user-event' '14.0.0'}}", "@types/jest": "{{versionQuery '@types/jest' '26.0.7'}}", "@types/node": "{{versionQuery '@types/node' '14.14.32'}}", "msw": "{{versionQuery 'msw' '0.35.0'}}", diff --git a/packages/core-app-api/package.json b/packages/core-app-api/package.json index dd37f90369..6464d393d6 100644 --- a/packages/core-app-api/package.json +++ b/packages/core-app-api/package.json @@ -54,7 +54,7 @@ "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "@types/zen-observable": "^0.8.0", diff --git a/packages/core-components/package.json b/packages/core-components/package.json index e59af34012..add65a1cdd 100644 --- a/packages/core-components/package.json +++ b/packages/core-components/package.json @@ -84,7 +84,7 @@ "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/classnames": "^2.2.9", "@types/d3-selection": "^3.0.1", "@types/d3-shape": "^3.0.1", diff --git a/packages/core-components/src/components/LogViewer/RealLogViewer.test.tsx b/packages/core-components/src/components/LogViewer/RealLogViewer.test.tsx index 8d5efb9724..b56279a53f 100644 --- a/packages/core-components/src/components/LogViewer/RealLogViewer.test.tsx +++ b/packages/core-components/src/components/LogViewer/RealLogViewer.test.tsx @@ -15,7 +15,7 @@ */ import React, { ReactNode } from 'react'; -import UserEvent from '@testing-library/user-event'; +import userEvent from '@testing-library/user-event'; import { renderInTestApp } from '@backstage/test-utils'; import { RealLogViewer } from './RealLogViewer'; // eslint-disable-next-line import/no-extraneous-dependencies @@ -48,31 +48,30 @@ describe('RealLogViewer', () => { expect(rendered.getByText('Derp')).toBeInTheDocument(); expect(rendered.getByText('Foo Foo')).toBeInTheDocument(); - UserEvent.tab(); - UserEvent.keyboard('Foo'); - + await userEvent.tab(); + await userEvent.keyboard('Foo'); expect(rendered.getByText('1/3')).toBeInTheDocument(); - UserEvent.keyboard('{enter}'); + await userEvent.keyboard('{enter}'); expect(rendered.getByText('2/3')).toBeInTheDocument(); - UserEvent.keyboard('{enter}'); + await userEvent.keyboard('{enter}'); expect(rendered.getByText('3/3')).toBeInTheDocument(); - UserEvent.keyboard('{enter}'); + await userEvent.keyboard('{enter}'); expect(rendered.getByText('1/3')).toBeInTheDocument(); - UserEvent.keyboard('{shift}{enter}{/shift}'); + await userEvent.keyboard('{shift>}{enter}{/shift}'); expect(rendered.getByText('3/3')).toBeInTheDocument(); expect(rendered.queryByText('Some Log Line')).toBeInTheDocument(); - UserEvent.keyboard('{meta}{enter}{/meta}'); + await userEvent.keyboard('{meta>}{enter}{/meta}'); expect(rendered.queryByText('Some Log Line')).not.toBeInTheDocument(); - UserEvent.keyboard('{meta}{enter}{/meta}'); + await userEvent.keyboard('{meta>}{enter}{/meta}'); expect(rendered.queryByText('Some Log Line')).toBeInTheDocument(); // Tab down to line #2 and click - UserEvent.tab(); - UserEvent.tab(); - UserEvent.tab(); - UserEvent.click(document.activeElement!); - UserEvent.click(rendered.getByTestId('copy-button')); + await userEvent.tab(); + await userEvent.tab(); + await userEvent.tab(); + await userEvent.click(document.activeElement!); + await userEvent.click(rendered.getByTestId('copy-button')); expect(copyToClipboard).toHaveBeenCalledWith('Derp'); }); diff --git a/packages/core-components/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx b/packages/core-components/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx index 58785c5c90..3337571d4e 100644 --- a/packages/core-components/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx +++ b/packages/core-components/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx @@ -34,13 +34,13 @@ describe('', () => { ); expect(rendered.queryByText('Some label')).not.toBeInTheDocument(); expect(onClickFunction).not.toHaveBeenCalled(); - fireEvent.click(rendered.getByTestId('header-action-menu')); + await fireEvent.click(rendered.getByTestId('header-action-menu')); expect(onClickFunction).not.toHaveBeenCalled(); expect(rendered.getByTestId('header-action-item')).not.toHaveAttribute( 'aria-disabled', 'true', ); - fireEvent.click(rendered.queryByText('Some label') as Node); + await fireEvent.click(rendered.queryByText('Some label') as Node); expect(onClickFunction).toHaveBeenCalled(); // We do not expect the dropdown to disappear after click expect(rendered.queryByText('Some label')).toBeInTheDocument(); @@ -77,9 +77,9 @@ describe('', () => { ); expect(onClickFunction).not.toHaveBeenCalled(); - fireEvent.click(rendered.getByTestId('header-action-menu')); + await fireEvent.click(rendered.getByTestId('header-action-menu')); expect(onClickFunction).not.toHaveBeenCalled(); - fireEvent.click(rendered.queryByText('Secondary label') as Node); + await fireEvent.click(rendered.queryByText('Secondary label') as Node); expect(onClickFunction).toHaveBeenCalled(); // We do not expect the dropdown to disappear after click expect(rendered.queryByText('Some label')).toBeInTheDocument(); @@ -90,9 +90,12 @@ describe('', () => { , ); expect(rendered.container.getAttribute('aria-hidden')).toBeNull(); - fireEvent.click(rendered.getByTestId('header-action-menu')); + await fireEvent.click(rendered.getByTestId('header-action-menu')); expect(rendered.container.getAttribute('aria-hidden')).toBe('true'); - userEvent.type(rendered.getByTestId('header-action-menu'), '{esc}'); + await userEvent.type( + rendered.getByTestId('header-action-menu'), + '{Escape}', + ); expect(rendered.container.getAttribute('aria-hidden')).toBeNull(); }); }); diff --git a/packages/core-components/src/layout/Sidebar/Bar.test.tsx b/packages/core-components/src/layout/Sidebar/Bar.test.tsx index fc42e7a94e..4baa859bd0 100644 --- a/packages/core-components/src/layout/Sidebar/Bar.test.tsx +++ b/packages/core-components/src/layout/Sidebar/Bar.test.tsx @@ -86,11 +86,11 @@ describe('Sidebar', () => { describe('Click to Expand', () => { it('Sidebar should show expanded items when expand button is clicked', async () => { - userEvent.click(screen.getByTestId('sidebar-expand-button')); + await userEvent.click(screen.getByTestId('sidebar-expand-button')); expect(await screen.findByText('Create...')).toBeInTheDocument(); }); it('Sidebar should not show expanded items when hovered on', async () => { - userEvent.hover(screen.getByTestId('sidebar-root')); + await userEvent.hover(screen.getByTestId('sidebar-root')); expect(screen.queryByText('Create...')).not.toBeInTheDocument(); }); }); @@ -101,21 +101,21 @@ describe('Sidebar', () => { }); it('Extended sidebar with submenu content visible when hover over submenu items', async () => { - userEvent.hover(screen.getByTestId('item-with-submenu')); + await userEvent.hover(screen.getByTestId('item-with-submenu')); expect(await screen.findByText('Tools')).toBeInTheDocument(); expect(await screen.findByText('Misc')).toBeInTheDocument(); }); it('Multicategory item in submenu shows drop down on click', async () => { - userEvent.hover(screen.getByTestId('item-with-submenu')); - userEvent.click(screen.getByText('Misc')); + await userEvent.hover(screen.getByTestId('item-with-submenu')); + await userEvent.click(screen.getByText('Misc')); expect(screen.getByText('dropdown item 1')).toBeInTheDocument(); expect(screen.getByText('dropdown item 2')).toBeInTheDocument(); }); it('Dropdown item in submenu renders a link when `to` value is provided', async () => { - userEvent.hover(screen.getByTestId('item-with-submenu')); - userEvent.click(screen.getByText('Misc')); + await userEvent.hover(screen.getByTestId('item-with-submenu')); + await userEvent.click(screen.getByText('Misc')); expect(screen.getByText('dropdown item 1').closest('a')).toHaveAttribute( 'href', '/dropdownitemlink', @@ -123,7 +123,7 @@ describe('Sidebar', () => { }); it('Submenu item renders an external link when `to` value is provided', async () => { - userEvent.hover(screen.getByTestId('item-with-submenu')); + await userEvent.hover(screen.getByTestId('item-with-submenu')); expect(screen.getByText('External Link').closest('a')).toHaveAttribute( 'href', 'https://backstage.io/', @@ -131,8 +131,8 @@ describe('Sidebar', () => { }); it('Dropdown item in submenu renders an external link when `to` value is provided', async () => { - userEvent.hover(screen.getByTestId('item-with-submenu')); - userEvent.click(screen.getByText('Misc')); + await userEvent.hover(screen.getByTestId('item-with-submenu')); + await userEvent.click(screen.getByText('Misc')); expect(screen.getByText('dropdown item 3').closest('a')).toHaveAttribute( 'href', 'https://backstage.io/', diff --git a/packages/core-components/src/layout/Sidebar/Items.test.tsx b/packages/core-components/src/layout/Sidebar/Items.test.tsx index b2cabd03b8..0f81f7ce63 100644 --- a/packages/core-components/src/layout/Sidebar/Items.test.tsx +++ b/packages/core-components/src/layout/Sidebar/Items.test.tsx @@ -47,7 +47,7 @@ async function renderSidebar() { , ); - userEvent.hover(screen.getByTestId('sidebar-root')); + await userEvent.hover(screen.getByTestId('sidebar-root')); } describe('Items', () => { diff --git a/packages/core-plugin-api/package.json b/packages/core-plugin-api/package.json index 35c716863a..05194462cf 100644 --- a/packages/core-plugin-api/package.json +++ b/packages/core-plugin-api/package.json @@ -52,7 +52,7 @@ "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "@types/prop-types": "^15.7.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index ac5d30aa39..dc875c5ab5 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -46,7 +46,7 @@ "@material-ui/icons": "^4.9.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "react-use": "^17.2.4", "react-hot-loader": "^4.13.0", "react-router": "6.0.0-beta.0", diff --git a/packages/dev-utils/src/devApp/SidebarThemeSwitcher.test.tsx b/packages/dev-utils/src/devApp/SidebarThemeSwitcher.test.tsx index 9229bc61dc..e71bc4e25d 100644 --- a/packages/dev-utils/src/devApp/SidebarThemeSwitcher.test.tsx +++ b/packages/dev-utils/src/devApp/SidebarThemeSwitcher.test.tsx @@ -61,7 +61,7 @@ describe('SidebarThemeSwitcher', () => { const button = getByLabelText('Switch Theme'); expect(button).toBeInTheDocument(); - userEvent.click(button); + await userEvent.click(button); expect(getByRole('listbox')).toBeInTheDocument(); expect(getByText('Dark Theme')).toBeInTheDocument(); @@ -80,11 +80,11 @@ describe('SidebarThemeSwitcher', () => { const button = getByLabelText('Switch Theme'); expect(button).toBeInTheDocument(); - userEvent.click(button); + await userEvent.click(button); expect(getByRole('listbox')).toBeInTheDocument(); - userEvent.click(getByText('Light Theme')); + await userEvent.click(getByText('Light Theme')); expect(appThemeApi.setActiveThemeId).toHaveBeenCalledWith('light'); }); diff --git a/packages/e2e-test/src/commands/run.ts b/packages/e2e-test/src/commands/run.ts index 83e0bc78e9..86914d72be 100644 --- a/packages/e2e-test/src/commands/run.ts +++ b/packages/e2e-test/src/commands/run.ts @@ -111,6 +111,10 @@ async function buildDistWorkspace(workspaceName: string, rootDir: string) { { helpers: { version(name: string) { + // Ignore non Backstage packages + if (!name.startsWith('@backstage/')) { + return '^0.0.0'; + } const pkge = require(`${name}/package.json`); if (!pkge) { throw new Error(`No version available for package ${name}`); @@ -118,6 +122,10 @@ async function buildDistWorkspace(workspaceName: string, rootDir: string) { return pkge.version; }, versionQuery(name: string, hint: string) { + // Ignore non Backstage packages + if (!name.startsWith('@backstage/')) { + return '^0.0.0'; + } const pkgData = require(`${name}/package.json`); if (!pkgData) { if (typeof hint !== 'string') { diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json index 70902e8fb3..55ef77b6d2 100644 --- a/packages/integration-react/package.json +++ b/packages/integration-react/package.json @@ -43,7 +43,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "msw": "^0.35.0", diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index 4330ba46f3..397c99e249 100644 --- a/packages/techdocs-cli-embedded-app/package.json +++ b/packages/techdocs-cli-embedded-app/package.json @@ -32,7 +32,7 @@ "@backstage/cli": "^0.17.0-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "@types/react-dom": "*", diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 8d7dd24b85..03ba4d714d 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -44,7 +44,7 @@ "@material-ui/icons": "^4.11.2", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "cross-fetch": "^3.1.5", "react-router": "6.0.0-beta.0", "react-router-dom": "6.0.0-beta.0", diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index c129c14156..5f6d7ff385 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -46,7 +46,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "@types/object-hash": "^2.2.1", diff --git a/plugins/allure/package.json b/plugins/allure/package.json index 6434cd13a5..93be4dd5ce 100644 --- a/plugins/allure/package.json +++ b/plugins/allure/package.json @@ -46,7 +46,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json index 1e7b96311a..829c3321f9 100644 --- a/plugins/analytics-module-ga/package.json +++ b/plugins/analytics-module-ga/package.json @@ -44,7 +44,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json index c19b0d8776..2531936274 100644 --- a/plugins/apache-airflow/package.json +++ b/plugins/apache-airflow/package.json @@ -42,7 +42,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "msw": "^0.35.0" diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index b59333cf1a..2a0b682cd1 100644 --- a/plugins/api-docs/package.json +++ b/plugins/api-docs/package.json @@ -62,7 +62,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "@types/swagger-ui-react": "^4.1.1", diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json index a8a29667c5..9e23ed7c8a 100644 --- a/plugins/azure-devops/package.json +++ b/plugins/azure-devops/package.json @@ -55,7 +55,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/badges/package.json b/plugins/badges/package.json index 244be5fff3..8e2dd50cfe 100644 --- a/plugins/badges/package.json +++ b/plugins/badges/package.json @@ -52,7 +52,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json index 8293a73c34..598eba449f 100644 --- a/plugins/bitrise/package.json +++ b/plugins/bitrise/package.json @@ -49,7 +49,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "@types/recharts": "^1.8.15", diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json index 800086c2eb..68b92f57af 100644 --- a/plugins/catalog-graph/package.json +++ b/plugins/catalog-graph/package.json @@ -53,7 +53,7 @@ "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7" }, "files": [ diff --git a/plugins/catalog-graph/src/components/CatalogGraphCard/CatalogGraphCard.test.tsx b/plugins/catalog-graph/src/components/CatalogGraphCard/CatalogGraphCard.test.tsx index 9fbe110811..eb65f77242 100644 --- a/plugins/catalog-graph/src/components/CatalogGraphCard/CatalogGraphCard.test.tsx +++ b/plugins/catalog-graph/src/components/CatalogGraphCard/CatalogGraphCard.test.tsx @@ -141,7 +141,7 @@ describe('', () => { ); expect(await findByText('b:d/c')).toBeInTheDocument(); - userEvent.click(await findByText('b:d/c')); + await userEvent.click(await findByText('b:d/c')); expect(analyticsSpy.getEvents()[0]).toMatchObject({ action: 'click', diff --git a/plugins/catalog-graph/src/components/CatalogGraphPage/CatalogGraphPage.test.tsx b/plugins/catalog-graph/src/components/CatalogGraphPage/CatalogGraphPage.test.tsx index 9453d5a000..fc5676e7c9 100644 --- a/plugins/catalog-graph/src/components/CatalogGraphPage/CatalogGraphPage.test.tsx +++ b/plugins/catalog-graph/src/components/CatalogGraphPage/CatalogGraphPage.test.tsx @@ -45,6 +45,14 @@ describe('', () => { value: () => ({ width: 100, height: 100 }), configurable: true, }); + Object.defineProperty(window.SVGElement.prototype, 'viewBox', { + value: { baseVal: { x: 0, y: 0, width: 100, height: 100 } }, + configurable: true, + }); + Object.defineProperty(window.MouseEvent.prototype, 'view', { + value: window, + configurable: true, + }); }); beforeEach(() => { @@ -142,7 +150,7 @@ describe('', () => { expect(queryByText('Max Depth')).toBeNull(); - userEvent.click(getByText('Filters')); + await userEvent.click(getByText('Filters')); expect(getByText('Max Depth')).toBeInTheDocument(); }); @@ -159,7 +167,7 @@ describe('', () => { expect(await findAllByTestId('node')).toHaveLength(2); - userEvent.click(getByText('b:d/e')); + await userEvent.click(getByText('b:d/e')); expect(await findByText('hasPart')).toBeInTheDocument(); }); @@ -173,8 +181,9 @@ describe('', () => { expect(await findAllByTestId('node')).toHaveLength(2); - userEvent.click(getByText('b:d/e'), { shiftKey: true }); - + const user = userEvent.setup(); + await user.keyboard('{Shift>}'); + await user.click(getByText('b:d/e')); expect(navigate).toBeCalledWith('/entity/{kind}/{namespace}/{name}'); }); @@ -193,7 +202,10 @@ describe('', () => { expect(await findAllByTestId('node')).toHaveLength(2); - userEvent.click(getByText('b:d/e')); + // We wait a bit here to reliably reproduce an issue where that requires the `baseVal` and `view` mocks + await new Promise(r => setTimeout(r, 100)); + + await userEvent.click(getByText('b:d/e')); expect(analyticsSpy.getEvents()[0]).toMatchObject({ action: 'click', @@ -216,7 +228,9 @@ describe('', () => { expect(await findAllByTestId('node')).toHaveLength(2); - userEvent.click(getByText('b:d/e'), { shiftKey: true }); + const user = userEvent.setup(); + await user.keyboard('{Shift>}'); + await user.click(getByText('b:d/e')); expect(analyticsSpy.getEvents()[0]).toMatchObject({ action: 'click', diff --git a/plugins/catalog-graph/src/components/CatalogGraphPage/DirectionFilter.test.tsx b/plugins/catalog-graph/src/components/CatalogGraphPage/DirectionFilter.test.tsx index a3ee8d7e51..634a4bf442 100644 --- a/plugins/catalog-graph/src/components/CatalogGraphPage/DirectionFilter.test.tsx +++ b/plugins/catalog-graph/src/components/CatalogGraphPage/DirectionFilter.test.tsx @@ -36,8 +36,8 @@ describe('', () => { expect(getByText('Right to left')).toBeInTheDocument(); - userEvent.click(getByTestId('select')); - userEvent.click(getByText('Top to bottom')); + await userEvent.click(getByTestId('select')); + await userEvent.click(getByText('Top to bottom')); await waitFor(() => { expect(getByText('Top to bottom')).toBeInTheDocument(); diff --git a/plugins/catalog-graph/src/components/CatalogGraphPage/MaxDepthFilter.test.tsx b/plugins/catalog-graph/src/components/CatalogGraphPage/MaxDepthFilter.test.tsx index 1c22227c08..bddb2ac8ab 100644 --- a/plugins/catalog-graph/src/components/CatalogGraphPage/MaxDepthFilter.test.tsx +++ b/plugins/catalog-graph/src/components/CatalogGraphPage/MaxDepthFilter.test.tsx @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { render } from '@testing-library/react'; +import { render, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import React from 'react'; import { MaxDepthFilter } from './MaxDepthFilter'; @@ -37,24 +37,24 @@ describe('', () => { expect(getByLabelText('maxp')).toHaveValue(null); }); - test('should clear max depth', () => { + test('should clear max depth', async () => { const onChange = jest.fn(); const { getByLabelText } = render( , ); - userEvent.click(getByLabelText('clear max depth')); + await userEvent.click(getByLabelText('clear max depth')); expect(onChange).toBeCalledWith(Number.POSITIVE_INFINITY); }); - test('should set max depth to undefined if below one', () => { + test('should set max depth to undefined if below one', async () => { const onChange = jest.fn(); const { getByLabelText } = render( , ); - userEvent.clear(getByLabelText('maxp')); - userEvent.type(getByLabelText('maxp'), '0'); + await userEvent.clear(getByLabelText('maxp')); + await userEvent.type(getByLabelText('maxp'), '0'); expect(onChange).toBeCalledWith(Number.POSITIVE_INFINITY); }); @@ -67,9 +67,10 @@ describe('', () => { expect(getByLabelText('maxp')).toHaveValue(5); - userEvent.clear(getByLabelText('maxp')); - userEvent.type(getByLabelText('maxp'), '10'); - - expect(onChange).toBeCalledWith(10); + await userEvent.clear(getByLabelText('maxp')); + await userEvent.type(getByLabelText('maxp'), '10'); + waitFor(() => { + expect(onChange).toBeCalledWith(10); + }); }); }); diff --git a/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedKindsFilter.test.tsx b/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedKindsFilter.test.tsx index 5ac5bc5a5f..233553620a 100644 --- a/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedKindsFilter.test.tsx +++ b/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedKindsFilter.test.tsx @@ -69,10 +69,10 @@ describe('', () => { , ); - userEvent.click(getByLabelText('Open')); + await userEvent.click(getByLabelText('Open')); await waitFor(() => expect(getByText('System')).toBeInTheDocument()); - userEvent.click(getByText('System')); + await userEvent.click(getByText('System')); await waitFor(() => { expect(onChange).toBeCalledWith(['api', 'component', 'system']); @@ -89,11 +89,11 @@ describe('', () => { /> , ); - userEvent.click(getByLabelText('Open')); + await userEvent.click(getByLabelText('Open')); await waitFor(() => expect(getByText('Resource')).toBeInTheDocument()); - userEvent.click(getByText('Resource')); + await userEvent.click(getByText('Resource')); await waitFor(() => { expect(onChange).toBeCalledWith(undefined); @@ -108,7 +108,7 @@ describe('', () => { , ); - userEvent.click(getByRole('combobox')); + await userEvent.click(getByRole('combobox')); userEvent.tab(); await waitFor(() => { diff --git a/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedRelationsFilter.test.tsx b/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedRelationsFilter.test.tsx index 49f264fc0d..8d5acf282c 100644 --- a/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedRelationsFilter.test.tsx +++ b/plugins/catalog-graph/src/components/CatalogGraphPage/SelectedRelationsFilter.test.tsx @@ -48,13 +48,13 @@ describe('', () => { />, ); - userEvent.click(getByLabelText('Open')); + await userEvent.click(getByLabelText('Open')); await waitFor(() => expect(getByText(RELATION_HAS_MEMBER)).toBeInTheDocument(), ); - userEvent.click(getByText(RELATION_HAS_MEMBER)); + await userEvent.click(getByText(RELATION_HAS_MEMBER)); await waitFor(() => { expect(onChange).toBeCalledWith([ @@ -77,13 +77,13 @@ describe('', () => { />, ); - userEvent.click(getByLabelText('Open')); + await userEvent.click(getByLabelText('Open')); await waitFor(() => expect(getByText(RELATION_HAS_MEMBER)).toBeInTheDocument(), ); - userEvent.click(getByText(RELATION_HAS_MEMBER)); + await userEvent.click(getByText(RELATION_HAS_MEMBER)); await waitFor(() => { expect(onChange).toBeCalledWith(undefined); @@ -100,7 +100,7 @@ describe('', () => { />, ); - userEvent.click(getByRole('combobox')); + await userEvent.click(getByRole('combobox')); userEvent.tab(); await waitFor(() => { diff --git a/plugins/catalog-graph/src/components/CatalogGraphPage/SwitchFilter.test.tsx b/plugins/catalog-graph/src/components/CatalogGraphPage/SwitchFilter.test.tsx index a100b1ee83..de53f4682e 100644 --- a/plugins/catalog-graph/src/components/CatalogGraphPage/SwitchFilter.test.tsx +++ b/plugins/catalog-graph/src/components/CatalogGraphPage/SwitchFilter.test.tsx @@ -28,7 +28,7 @@ describe('', () => { expect(getByLabelText('My label')).not.toBeChecked(); }); - test('should toggle value', () => { + test('should toggle value', async () => { const onChange = jest.fn(); const { getByLabelText } = render( , @@ -37,7 +37,7 @@ describe('', () => { expect(getByLabelText('My label')).toBeInTheDocument(); expect(getByLabelText('My label')).toBeChecked(); - userEvent.click(getByLabelText('My label')); + await userEvent.click(getByLabelText('My label')); expect(onChange).toBeCalledWith(false); }); diff --git a/plugins/catalog-graph/src/components/EntityRelationsGraph/CustomNode.test.tsx b/plugins/catalog-graph/src/components/EntityRelationsGraph/CustomNode.test.tsx index 48272b8d1e..7602f4558d 100644 --- a/plugins/catalog-graph/src/components/EntityRelationsGraph/CustomNode.test.tsx +++ b/plugins/catalog-graph/src/components/EntityRelationsGraph/CustomNode.test.tsx @@ -81,7 +81,7 @@ describe('', () => { ); expect(getByText('kind:namespace/name')).toBeInTheDocument(); - userEvent.click(getByText('kind:namespace/name')); + await userEvent.click(getByText('kind:namespace/name')); expect(onClick).toBeCalledTimes(1); }); diff --git a/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.test.tsx b/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.test.tsx index 5d9e9b18a6..8c8898a734 100644 --- a/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.test.tsx +++ b/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.test.tsx @@ -377,7 +377,7 @@ describe('', () => { , ); - userEvent.click(await findByText('k:d/a1')); + await userEvent.click(await findByText('k:d/a1')); expect(onNodeClick).toBeCalledTimes(1); }); diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json index 9033203e15..7ecad7a0cd 100644 --- a/plugins/catalog-import/package.json +++ b/plugins/catalog-import/package.json @@ -67,7 +67,7 @@ "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "cross-fetch": "^3.1.5", "msw": "^0.35.0" diff --git a/plugins/catalog-import/src/components/StepInitAnalyzeUrl/StepInitAnalyzeUrl.test.tsx b/plugins/catalog-import/src/components/StepInitAnalyzeUrl/StepInitAnalyzeUrl.test.tsx index 8d28fb8604..37f3c1a389 100644 --- a/plugins/catalog-import/src/components/StepInitAnalyzeUrl/StepInitAnalyzeUrl.test.tsx +++ b/plugins/catalog-import/src/components/StepInitAnalyzeUrl/StepInitAnalyzeUrl.test.tsx @@ -100,7 +100,7 @@ describe('', () => { await act(async () => { try { - userEvent.click(getByRole('button', { name: /Analyze/i })); + await userEvent.click(getByRole('button', { name: /Analyze/i })); } catch { return; } @@ -126,7 +126,7 @@ describe('', () => { getByRole('textbox', { name: /Repository/i }), 'http:/', ); - userEvent.click(getByRole('button', { name: /Analyze/i })); + await userEvent.click(getByRole('button', { name: /Analyze/i })); }); expect(catalogImportApi.analyzeUrl).toBeCalledTimes(0); @@ -161,7 +161,7 @@ describe('', () => { getByRole('textbox', { name: /Repository/i }), 'https://my-repository', ); - userEvent.click(getByRole('button', { name: /Analyze/i })); + await userEvent.click(getByRole('button', { name: /Analyze/i })); }); expect(onAnalysisFn).toBeCalledTimes(1); @@ -198,7 +198,7 @@ describe('', () => { getByRole('textbox', { name: /Repository/i }), 'https://my-repository-1', ); - userEvent.click(getByRole('button', { name: /Analyze/i })); + await userEvent.click(getByRole('button', { name: /Analyze/i })); }); expect(onAnalysisFn).toBeCalledTimes(1); @@ -234,7 +234,7 @@ describe('', () => { getByRole('textbox', { name: /Repository/i }), 'https://my-repository-1', ); - userEvent.click(getByRole('button', { name: /Analyze/i })); + await userEvent.click(getByRole('button', { name: /Analyze/i })); }); expect(onAnalysisFn).toBeCalledTimes(0); @@ -278,7 +278,7 @@ describe('', () => { getByRole('textbox', { name: /Repository/i }), 'https://my-repository-2', ); - userEvent.click(getByRole('button', { name: /Analyze/i })); + await userEvent.click(getByRole('button', { name: /Analyze/i })); }); expect(onAnalysisFn).toBeCalledTimes(1); @@ -316,7 +316,7 @@ describe('', () => { getByRole('textbox', { name: /Repository/i }), 'https://my-repository-2', ); - userEvent.click(getByRole('button', { name: /Analyze/i })); + await userEvent.click(getByRole('button', { name: /Analyze/i })); }); expect(onAnalysisFn).toBeCalledTimes(0); @@ -360,7 +360,7 @@ describe('', () => { getByRole('textbox', { name: /Repository/i }), 'https://my-repository-2', ); - userEvent.click(getByRole('button', { name: /Analyze/i })); + await userEvent.click(getByRole('button', { name: /Analyze/i })); }); expect(onAnalysisFn).toBeCalledTimes(0); @@ -389,7 +389,7 @@ describe('', () => { getByRole('textbox', { name: /Repository/i }), 'https://my-repository-2', ); - userEvent.click(getByRole('button', { name: /Analyze/i })); + await userEvent.click(getByRole('button', { name: /Analyze/i })); }); expect(onAnalysisFn).toBeCalledTimes(0); diff --git a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreparePullRequestForm.test.tsx b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreparePullRequestForm.test.tsx index 4e18ae6544..20b4bc986e 100644 --- a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreparePullRequestForm.test.tsx +++ b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/PreparePullRequestForm.test.tsx @@ -39,7 +39,7 @@ describe('', () => { ); await act(async () => { - userEvent.click(getByRole('button', { name: /submit/i })); + await userEvent.click(getByRole('button', { name: /submit/i })); }); expect(onSubmitFn).toBeCalledTimes(1); @@ -69,7 +69,7 @@ describe('', () => { await act(async () => { userEvent.clear(getByLabelText('Main Field')); await userEvent.type(getByLabelText('Main Field'), 'My Text'); - userEvent.click(getByRole('button', { name: /submit/i })); + await userEvent.click(getByRole('button', { name: /submit/i })); }); expect(onSubmitFn).toBeCalledTimes(1); @@ -104,7 +104,7 @@ describe('', () => { expect(queryByText('Error in required main field')).not.toBeInTheDocument(); await act(async () => { - userEvent.click(getByRole('button', { name: /submit/i })); + await userEvent.click(getByRole('button', { name: /submit/i })); }); expect(onSubmitFn).not.toBeCalled(); diff --git a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/StepPrepareCreatePullRequest.test.tsx b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/StepPrepareCreatePullRequest.test.tsx index ea2bee9425..dac7f394a4 100644 --- a/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/StepPrepareCreatePullRequest.test.tsx +++ b/plugins/catalog-import/src/components/StepPrepareCreatePullRequest/StepPrepareCreatePullRequest.test.tsx @@ -168,9 +168,9 @@ describe('', () => { }, ); - userEvent.type(await screen.findByLabelText('name'), '-changed'); - userEvent.type(await screen.findByLabelText('owner'), '-changed'); - userEvent.click(screen.getByRole('button', { name: /Create PR/i })); + await userEvent.type(await screen.findByLabelText('name'), '-changed'); + await userEvent.type(await screen.findByLabelText('owner'), '-changed'); + await userEvent.click(screen.getByRole('button', { name: /Create PR/i })); }); expect(catalogImportApi.submitPullRequest).toBeCalledTimes(1); @@ -244,7 +244,7 @@ spec: }, ); - userEvent.click( + await userEvent.click( await screen.findByRole('button', { name: /Create PR/i }), ); }); diff --git a/plugins/catalog-import/src/components/StepPrepareSelectLocations/StepPrepareSelectLocations.test.tsx b/plugins/catalog-import/src/components/StepPrepareSelectLocations/StepPrepareSelectLocations.test.tsx index 6a5e952491..973a4fa3d7 100644 --- a/plugins/catalog-import/src/components/StepPrepareSelectLocations/StepPrepareSelectLocations.test.tsx +++ b/plugins/catalog-import/src/components/StepPrepareSelectLocations/StepPrepareSelectLocations.test.tsx @@ -124,14 +124,14 @@ describe('', () => { expect(getByRole('button', { name: /Review/i })).toBeDisabled(); await act(async () => { - userEvent.click(getByRole('button', { name: /Select All/i })); + await userEvent.click(getByRole('button', { name: /Select All/i })); }); checkboxes.forEach(c => expect(c).toBeChecked()); expect(getByRole('button', { name: /Review/i })).not.toBeDisabled(); await act(async () => { - userEvent.click(getByRole('button', { name: /Select All/i })); + await userEvent.click(getByRole('button', { name: /Select All/i })); }); checkboxes.forEach(c => expect(c).not.toBeChecked()); @@ -171,7 +171,7 @@ describe('', () => { checkboxes.forEach(c => expect(c).not.toBeChecked()); await act(async () => { - userEvent.click(checkboxes[1]); + await userEvent.click(checkboxes[1]); }); expect(checkboxes[0]).not.toBeChecked(); @@ -179,7 +179,7 @@ describe('', () => { expect(checkboxes[2]).not.toBeChecked(); await act(async () => { - userEvent.click(checkboxes[1]); + await userEvent.click(checkboxes[1]); }); checkboxes.forEach(c => expect(c).not.toBeChecked()); @@ -197,7 +197,7 @@ describe('', () => { ); await act(async () => { - userEvent.click(getByRole('button', { name: /Back/i })); + await userEvent.click(getByRole('button', { name: /Back/i })); }); expect(onGoBack).toBeCalledTimes(1); @@ -217,11 +217,11 @@ describe('', () => { const checkboxes = getAllByRole('checkbox'); await act(async () => { - userEvent.click(checkboxes[1]); + await userEvent.click(checkboxes[1]); }); await act(async () => { - userEvent.click(getByRole('button', { name: /Review/i })); + await userEvent.click(getByRole('button', { name: /Review/i })); }); expect(onPrepare).toBeCalledTimes(1); diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index 4b85951632..3b34ee16e1 100644 --- a/plugins/catalog-react/package.json +++ b/plugins/catalog-react/package.json @@ -71,7 +71,7 @@ "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/jwt-decode": "^3.1.0", "@types/zen-observable": "^0.8.0", diff --git a/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.test.tsx b/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.test.tsx index fd59c0c036..9d76ba4e15 100644 --- a/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.test.tsx +++ b/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.test.tsx @@ -98,7 +98,7 @@ describe('UnregisterEntityDialog', () => { }, ); - userEvent.click(screen.getByText('Cancel')); + await userEvent.click(screen.getByText('Cancel')); await waitFor(() => { expect(onClose).toBeCalled(); @@ -187,13 +187,13 @@ describe('UnregisterEntityDialog', () => { expect(screen.getByText(/You cannot unregister/)).toBeInTheDocument(); }); - userEvent.click(screen.getByText('Advanced Options')); + await userEvent.click(screen.getByText('Advanced Options')); await waitFor(() => { expect(screen.getByText(/option to delete/)).toBeInTheDocument(); }); - userEvent.click(screen.getByText('Delete Entity')); + await userEvent.click(screen.getByText('Delete Entity')); await waitFor(() => { expect(deleteEntity).toBeCalled(); @@ -233,7 +233,7 @@ describe('UnregisterEntityDialog', () => { ).toBeInTheDocument(); }); - userEvent.click(screen.getByText('Delete Entity')); + await userEvent.click(screen.getByText('Delete Entity')); await waitFor(() => { expect(deleteEntity).toBeCalled(); @@ -281,7 +281,7 @@ describe('UnregisterEntityDialog', () => { expect(screen.getByText(/k2:ns2\/n2/)).toBeInTheDocument(); }); - userEvent.click(screen.getByText('Unregister Location')); + await userEvent.click(screen.getByText('Unregister Location')); await waitFor(() => { expect(unregisterLocation).toBeCalled(); @@ -329,7 +329,7 @@ describe('UnregisterEntityDialog', () => { expect(screen.getByText(/k2:ns2\/n2/)).toBeInTheDocument(); }); - userEvent.click(screen.getByText('Advanced Options')); + await userEvent.click(screen.getByText('Advanced Options')); await waitFor(() => { expect( @@ -337,7 +337,7 @@ describe('UnregisterEntityDialog', () => { ).toBeInTheDocument(); }); - userEvent.click(screen.getByText('Delete Entity')); + await userEvent.click(screen.getByText('Delete Entity')); await waitFor(() => { expect(deleteEntity).toBeCalled(); diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index 962a068d76..1fe0f081b4 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -67,7 +67,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "cross-fetch": "^3.1.5" }, diff --git a/plugins/catalog/src/components/AboutCard/AboutCard.test.tsx b/plugins/catalog/src/components/AboutCard/AboutCard.test.tsx index 563ccd0cd7..f2fee7d9f4 100644 --- a/plugins/catalog/src/components/AboutCard/AboutCard.test.tsx +++ b/plugins/catalog/src/components/AboutCard/AboutCard.test.tsx @@ -298,7 +298,7 @@ describe('', () => { 'component:default/software', ); - userEvent.click(getByTitle('Schedule entity refresh')); + await userEvent.click(getByTitle('Schedule entity refresh')); expect(catalogApi.refreshEntity).toHaveBeenCalledWith( 'component:default/software', diff --git a/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.test.tsx b/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.test.tsx index c5442f3a3d..ca7cbeec67 100644 --- a/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.test.tsx +++ b/plugins/catalog/src/components/EntityOrphanWarning/DeleteEntityDialog.test.tsx @@ -77,7 +77,7 @@ describe('DeleteEntityDialog', () => { , ); - userEvent.click(screen.getByText('Cancel')); + await userEvent.click(screen.getByText('Cancel')); await waitFor(() => { expect(onClose).toBeCalled(); @@ -98,7 +98,7 @@ describe('DeleteEntityDialog', () => { , ); - userEvent.click(screen.getByText('Delete')); + await userEvent.click(screen.getByText('Delete')); await waitFor(() => { expect(catalogClient.removeEntityByUid).toBeCalledWith('123'); @@ -121,7 +121,7 @@ describe('DeleteEntityDialog', () => { ); catalogClient.removeEntityByUid.mockRejectedValue(new Error('no no no')); - userEvent.click(screen.getByText('Delete')); + await userEvent.click(screen.getByText('Delete')); await waitFor(() => { expect(catalogClient.removeEntityByUid).toBeCalledWith('123'); diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index 353e4034a3..fb560e8874 100644 --- a/plugins/circleci/package.json +++ b/plugins/circleci/package.json @@ -61,7 +61,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/humanize-duration": "^3.25.1", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index a0b4c10c82..d42cb57479 100644 --- a/plugins/cloudbuild/package.json +++ b/plugins/cloudbuild/package.json @@ -58,7 +58,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/code-climate/package.json b/plugins/code-climate/package.json index b8d0f219c2..3f960fcf48 100644 --- a/plugins/code-climate/package.json +++ b/plugins/code-climate/package.json @@ -45,7 +45,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/humanize-duration": "^3.27.1", "@types/jest": "^26.0.7", "@types/luxon": "^2.0.9", diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json index e8e2800bdc..6a06e0ea8a 100644 --- a/plugins/code-coverage/package.json +++ b/plugins/code-coverage/package.json @@ -52,7 +52,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/highlightjs": "^10.1.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json index 1926877f5a..b39ef87e55 100644 --- a/plugins/config-schema/package.json +++ b/plugins/config-schema/package.json @@ -47,7 +47,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index 422fc275f3..8bebc963b4 100644 --- a/plugins/cost-insights/package.json +++ b/plugins/cost-insights/package.json @@ -66,7 +66,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "@types/pluralize": "^0.0.29", diff --git a/plugins/cost-insights/src/components/CostInsightsTabs/CostInsightsTabs.test.tsx b/plugins/cost-insights/src/components/CostInsightsTabs/CostInsightsTabs.test.tsx index e6111a6acf..6da6286515 100644 --- a/plugins/cost-insights/src/components/CostInsightsTabs/CostInsightsTabs.test.tsx +++ b/plugins/cost-insights/src/components/CostInsightsTabs/CostInsightsTabs.test.tsx @@ -16,7 +16,7 @@ import React from 'react'; import { CostInsightsTabs } from './CostInsightsTabs'; -import UserEvent from '@testing-library/user-event'; +import userEvent from '@testing-library/user-event'; import { Group } from '../../types'; import { MockFilterProvider, MockLoadingProvider } from '../../testUtils'; import { renderInTestApp } from '@backstage/test-utils'; @@ -65,8 +65,8 @@ describe('', () => { const rendered = await renderWrapped( , ); - UserEvent.click(rendered.getByTestId('cost-insights-groups-tab')); - UserEvent.click(rendered.getByTestId('test-group-1')); + await userEvent.click(rendered.getByTestId('cost-insights-groups-tab')); + await userEvent.click(rendered.getByTestId('test-group-1')); expect(mockSetPageFilters).toHaveBeenCalledWith(selectedGroup); }); @@ -74,7 +74,7 @@ describe('', () => { const rendered = await renderWrapped( , ); - UserEvent.click(rendered.getByTestId('cost-insights-groups-tab')); + await userEvent.click(rendered.getByTestId('cost-insights-groups-tab')); mockGroups.forEach(group => expect(rendered.getByText(group.id)).toBeInTheDocument(), ); diff --git a/plugins/cost-insights/src/components/MetricSelect/MetricSelect.test.tsx b/plugins/cost-insights/src/components/MetricSelect/MetricSelect.test.tsx index ddcf5dda8b..8a8cc9d03f 100644 --- a/plugins/cost-insights/src/components/MetricSelect/MetricSelect.test.tsx +++ b/plugins/cost-insights/src/components/MetricSelect/MetricSelect.test.tsx @@ -15,7 +15,7 @@ */ import React from 'react'; import { waitFor } from '@testing-library/react'; -import UserEvent from '@testing-library/user-event'; +import userEvent from '@testing-library/user-event'; import { MetricSelect, MetricSelectProps } from './MetricSelect'; import { renderInTestApp } from '@backstage/test-utils'; @@ -46,7 +46,7 @@ describe('', () => { ); const button = getByRole('button'); - UserEvent.click(button); + await userEvent.click(button); await waitFor(() => getAllByText(/None/)); diff --git a/plugins/cost-insights/src/components/PeriodSelect/PeriodSelect.test.tsx b/plugins/cost-insights/src/components/PeriodSelect/PeriodSelect.test.tsx index 3cdd896ff1..dfac13dd42 100644 --- a/plugins/cost-insights/src/components/PeriodSelect/PeriodSelect.test.tsx +++ b/plugins/cost-insights/src/components/PeriodSelect/PeriodSelect.test.tsx @@ -17,7 +17,7 @@ import React from 'react'; import { getByRole, waitFor } from '@testing-library/react'; import { renderInTestApp } from '@backstage/test-utils'; -import UserEvent from '@testing-library/user-event'; +import userEvent from '@testing-library/user-event'; import { PeriodSelect, getDefaultOptions } from './PeriodSelect'; import { getDefaultPageFilters } from '../../utils/filters'; import { MockBillingDateProvider } from '../../testUtils'; @@ -55,7 +55,7 @@ describe('', () => { ); const periodSelectContainer = rendered.getByTestId('period-select'); const button = getByRole(periodSelectContainer, 'button'); - UserEvent.click(button); + await userEvent.click(button); await waitFor(() => rendered.getByText('Past 60 Days')); options.forEach(option => expect( @@ -88,8 +88,10 @@ describe('', () => { const periodSelect = rendered.getByTestId('period-select'); const button = getByRole(periodSelect, 'button'); - UserEvent.click(button); - UserEvent.click(rendered.getByTestId(`period-select-option-${duration}`)); + await userEvent.click(button); + await userEvent.click( + rendered.getByTestId(`period-select-option-${duration}`), + ); expect(mockOnSelect).toHaveBeenLastCalledWith(duration); }); }); diff --git a/plugins/cost-insights/src/components/ProjectSelect/ProjectSelect.test.tsx b/plugins/cost-insights/src/components/ProjectSelect/ProjectSelect.test.tsx index 630cfd718b..798b29de0d 100644 --- a/plugins/cost-insights/src/components/ProjectSelect/ProjectSelect.test.tsx +++ b/plugins/cost-insights/src/components/ProjectSelect/ProjectSelect.test.tsx @@ -16,7 +16,7 @@ import React from 'react'; import { getByRole, waitFor } from '@testing-library/react'; -import UserEvent from '@testing-library/user-event'; +import userEvent from '@testing-library/user-event'; import { ProjectSelect } from './ProjectSelect'; import { MockFilterProvider } from '../../testUtils'; import { renderInTestApp } from '@backstage/test-utils'; @@ -52,7 +52,7 @@ describe('', () => { 'project-filter-select', ); const button = getByRole(projectSelectContainer, 'button'); - UserEvent.click(button); + await userEvent.click(button); await waitFor(() => rendered.getByTestId('option-all')); mockProjects.forEach(project => diff --git a/plugins/explore-react/package.json b/plugins/explore-react/package.json index 8615543348..e4ec9bad09 100644 --- a/plugins/explore-react/package.json +++ b/plugins/explore-react/package.json @@ -41,7 +41,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/explore/package.json b/plugins/explore/package.json index 84b5fee2c1..9ab1495e91 100644 --- a/plugins/explore/package.json +++ b/plugins/explore/package.json @@ -59,7 +59,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json index ce6e63b697..5a67ffd52c 100644 --- a/plugins/firehydrant/package.json +++ b/plugins/firehydrant/package.json @@ -45,7 +45,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json index 5ecc83a79d..42ba6a3e81 100644 --- a/plugins/fossa/package.json +++ b/plugins/fossa/package.json @@ -59,7 +59,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "msw": "^0.35.0" diff --git a/plugins/gcalendar/package.json b/plugins/gcalendar/package.json index 5489cd2e19..a74c1e9268 100644 --- a/plugins/gcalendar/package.json +++ b/plugins/gcalendar/package.json @@ -48,7 +48,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/dompurify": "^2.3.3", "@types/gapi": "^0.0.41", "@types/gapi.auth2": "^0.0.56", diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index 3fc896e12d..271663631b 100644 --- a/plugins/gcp-projects/package.json +++ b/plugins/gcp-projects/package.json @@ -53,7 +53,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json index ee587cb1e1..beaed66493 100644 --- a/plugins/git-release-manager/package.json +++ b/plugins/git-release-manager/package.json @@ -50,7 +50,7 @@ "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "@types/recharts": "^1.8.15", diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index c95a755653..d938d0f5dc 100644 --- a/plugins/github-actions/package.json +++ b/plugins/github-actions/package.json @@ -61,7 +61,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json index daffa4a305..4348df8312 100644 --- a/plugins/github-deployments/package.json +++ b/plugins/github-deployments/package.json @@ -49,7 +49,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index 2367f711ef..80d1d5e09c 100644 --- a/plugins/gitops-profiles/package.json +++ b/plugins/gitops-profiles/package.json @@ -54,7 +54,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json index ff84cee1e8..b8c9b30bf3 100644 --- a/plugins/gocd/package.json +++ b/plugins/gocd/package.json @@ -55,7 +55,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/lodash": "^4.14.173", "@types/luxon": "^2.0.4", diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index 436d07594f..1cd7a1970e 100644 --- a/plugins/graphiql/package.json +++ b/plugins/graphiql/package.json @@ -54,7 +54,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/codemirror": "^0.0.108", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", diff --git a/plugins/home/package.json b/plugins/home/package.json index 5a45e1f179..38d53c09f8 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -60,7 +60,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/home/src/componentRenderers/ComponentTabs/ComponentTabs.test.tsx b/plugins/home/src/componentRenderers/ComponentTabs/ComponentTabs.test.tsx index 96ab37a8aa..c646e840a8 100644 --- a/plugins/home/src/componentRenderers/ComponentTabs/ComponentTabs.test.tsx +++ b/plugins/home/src/componentRenderers/ComponentTabs/ComponentTabs.test.tsx @@ -46,7 +46,7 @@ describe('', () => { }); }); - test('should switch tab on click', () => { + test('should switch tab on click', async () => { const { getByText } = render( ', () => { display: 'none', }); - userEvent.click(getByText('TabB')); + await userEvent.click(getByText('TabB')); expect(getByText('ContentA')).toHaveStyle({ display: 'none', diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json index c310f219c2..34df77cc2c 100644 --- a/plugins/ilert/package.json +++ b/plugins/ilert/package.json @@ -49,7 +49,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index 352dc3091e..59930bea6d 100644 --- a/plugins/jenkins/package.json +++ b/plugins/jenkins/package.json @@ -60,7 +60,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "@types/testing-library__jest-dom": "^5.9.1", diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json index d22d0438c9..14fc791d50 100644 --- a/plugins/kafka/package.json +++ b/plugins/kafka/package.json @@ -46,7 +46,7 @@ "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index b823492464..b075199da8 100644 --- a/plugins/kubernetes/package.json +++ b/plugins/kubernetes/package.json @@ -64,7 +64,7 @@ "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index 7a4fbf176b..d685984b31 100644 --- a/plugins/lighthouse/package.json +++ b/plugins/lighthouse/package.json @@ -58,7 +58,7 @@ "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "@types/react": "^16.13.1 || ^17.0.0", diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index bf63e562ee..9be5d535a9 100644 --- a/plugins/newrelic/package.json +++ b/plugins/newrelic/package.json @@ -53,7 +53,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/org/package.json b/plugins/org/package.json index 59848188e9..9cb72c7c2c 100644 --- a/plugins/org/package.json +++ b/plugins/org/package.json @@ -55,7 +55,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json index 85cef8755c..d64d1dc92d 100644 --- a/plugins/pagerduty/package.json +++ b/plugins/pagerduty/package.json @@ -58,7 +58,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/periskop/package.json b/plugins/periskop/package.json index 95f95bb040..7321332676 100644 --- a/plugins/periskop/package.json +++ b/plugins/periskop/package.json @@ -48,7 +48,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/luxon": "^2.0.4", "@types/node": "^14.14.32", diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json index 6ae130da63..bade8b69b2 100644 --- a/plugins/rollbar/package.json +++ b/plugins/rollbar/package.json @@ -60,7 +60,7 @@ "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "@types/react": "^16.13.1 || ^17.0.0", diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 35f3bfafa4..e98a0f3ebe 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -87,7 +87,7 @@ "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/humanize-duration": "^3.18.1", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", diff --git a/plugins/search/package.json b/plugins/search/package.json index f95b581b0b..aa10c13c67 100644 --- a/plugins/search/package.json +++ b/plugins/search/package.json @@ -63,7 +63,7 @@ "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/search/src/components/SearchBar/SearchBar.test.tsx b/plugins/search/src/components/SearchBar/SearchBar.test.tsx index cb4008d494..73afb44f12 100644 --- a/plugins/search/src/components/SearchBar/SearchBar.test.tsx +++ b/plugins/search/src/components/SearchBar/SearchBar.test.tsx @@ -108,6 +108,7 @@ describe('SearchBar', () => { }); it('Updates term state when text is entered', async () => { + const user = userEvent.setup({ delay: null }); jest.useFakeTimers(); const defaultDebounceTime = 200; @@ -124,7 +125,7 @@ describe('SearchBar', () => { const value = 'value'; - userEvent.type(textbox, value); + await user.type(textbox, value); act(() => { jest.advanceTimersByTime(defaultDebounceTime); @@ -137,6 +138,7 @@ describe('SearchBar', () => { expect(query).toHaveBeenLastCalledWith( expect.objectContaining({ term: value }), ); + jest.useRealTimers(); }); it('Clear button clears term state', async () => { @@ -152,7 +154,7 @@ describe('SearchBar', () => { expect(screen.getByRole('textbox', { name })).toHaveValue(term); }); - userEvent.click(screen.getByRole('button', { name: 'Clear' })); + await userEvent.click(screen.getByRole('button', { name: 'Clear' })); await waitFor(() => { expect(screen.getByRole('textbox', { name })).toHaveValue(''); @@ -172,12 +174,15 @@ describe('SearchBar', () => { , ); - expect( - screen.queryByRole('button', { name: 'Clear' }), - ).not.toBeInTheDocument(); + await waitFor(() => { + expect( + screen.queryByRole('button', { name: 'Clear' }), + ).not.toBeInTheDocument(); + }); }); it('Adheres to provided debounceTime', async () => { + const user = userEvent.setup({ delay: null }); jest.useFakeTimers(); const debounceTime = 600; @@ -199,7 +204,7 @@ describe('SearchBar', () => { const value = 'value'; - userEvent.type(textbox, value); + await user.type(textbox, value); expect(query).not.toHaveBeenLastCalledWith( expect.objectContaining({ term: value }), @@ -208,17 +213,16 @@ describe('SearchBar', () => { act(() => { jest.advanceTimersByTime(debounceTime); }); - - await waitFor(() => { - expect(textbox).toHaveValue(value); - }); + expect(textbox).toHaveValue(value); expect(query).toHaveBeenLastCalledWith( expect.objectContaining({ term: value }), ); + jest.useRealTimers(); }); it('does not capture analytics event if not enabled in app', async () => { + const user = userEvent.setup({ delay: null }); jest.useFakeTimers(); const debounceTime = 600; @@ -240,7 +244,7 @@ describe('SearchBar', () => { const value = 'value'; - userEvent.type(textbox, value); + await user.type(textbox, value); act(() => { jest.advanceTimersByTime(debounceTime); @@ -249,9 +253,11 @@ describe('SearchBar', () => { await waitFor(() => expect(textbox).toHaveValue(value)); expect(analyticsApiSpy.getEvents()).toHaveLength(0); + jest.useRealTimers(); }); it('captures analytics events if enabled in app', async () => { + const user = userEvent.setup({ delay: null }); jest.useFakeTimers(); const debounceTime = 600; @@ -296,7 +302,7 @@ describe('SearchBar', () => { const value = 'value'; - userEvent.type(textbox, value); + await user.type(textbox, value); expect(analyticsApiSpy.getEvents()).toHaveLength(0); @@ -318,10 +324,10 @@ describe('SearchBar', () => { subject: 'value', }); - userEvent.clear(textbox); + await user.clear(textbox); // make sure new term is captured - userEvent.type(textbox, 'new value'); + await user.type(textbox, 'new value'); act(() => { jest.advanceTimersByTime(debounceTime); @@ -340,5 +346,6 @@ describe('SearchBar', () => { }, subject: 'new value', }); + jest.useRealTimers(); }); }); diff --git a/plugins/search/src/components/SearchFilter/SearchFilter.Autocomplete.test.tsx b/plugins/search/src/components/SearchFilter/SearchFilter.Autocomplete.test.tsx index 5c774c0d2f..ae0eeb30be 100644 --- a/plugins/search/src/components/SearchFilter/SearchFilter.Autocomplete.test.tsx +++ b/plugins/search/src/components/SearchFilter/SearchFilter.Autocomplete.test.tsx @@ -54,7 +54,7 @@ describe('SearchFilter.Autocomplete', () => { const autocomplete = screen.getByRole('combobox'); const input = within(autocomplete).getByRole('textbox'); - userEvent.click(input); + await userEvent.click(input); await waitFor(() => { screen.getByRole('listbox'); @@ -75,7 +75,7 @@ describe('SearchFilter.Autocomplete', () => { const autocomplete = screen.getByRole('combobox'); const input = within(autocomplete).getByRole('textbox'); - userEvent.click(input); + await userEvent.click(input); await waitFor(() => { screen.getByRole('listbox'); @@ -109,11 +109,11 @@ describe('SearchFilter.Autocomplete', () => { // Select a value from the autocomplete filter. const autocomplete = screen.getByRole('combobox'); const input = within(autocomplete).getByRole('textbox'); - userEvent.click(input); + await userEvent.click(input); await waitFor(() => { screen.getByRole('listbox'); }); - userEvent.click(screen.getByRole('option', { name: values[1] })); + await userEvent.click(screen.getByRole('option', { name: values[1] })); // Wait for the autocomplete filter's value to change. await waitFor(() => { @@ -193,11 +193,11 @@ describe('SearchFilter.Autocomplete', () => { // Select the first option in the autocomplete. const autocomplete = screen.getByRole('combobox'); const input = within(autocomplete).getByRole('textbox'); - userEvent.click(input); + await userEvent.click(input); await waitFor(() => { screen.getByRole('listbox'); }); - userEvent.click(screen.getByRole('option', { name: values[0] })); + await userEvent.click(screen.getByRole('option', { name: values[0] })); // The value should be present in the context. await waitFor(() => { @@ -208,7 +208,7 @@ describe('SearchFilter.Autocomplete', () => { // Click the "Clear" button to remove the value. const clearButton = within(autocomplete).getByLabelText('Clear'); - userEvent.click(clearButton); + await userEvent.click(clearButton); // That value should have been unset from the context. await waitFor(() => { @@ -284,11 +284,11 @@ describe('SearchFilter.Autocomplete', () => { const input = within(autocomplete).getByRole('textbox'); // Select the second value. - userEvent.click(input); + await userEvent.click(input); await waitFor(() => { screen.getByRole('listbox'); }); - userEvent.click(screen.getByRole('option', { name: values[1] })); + await userEvent.click(screen.getByRole('option', { name: values[1] })); await waitFor(() => { expect( screen.getByRole('button', { name: values[1] }), @@ -296,11 +296,11 @@ describe('SearchFilter.Autocomplete', () => { }); // Select the first value. - userEvent.click(input); + await userEvent.click(input); await waitFor(() => { screen.getByRole('listbox'); }); - userEvent.click(screen.getByRole('option', { name: values[0] })); + await userEvent.click(screen.getByRole('option', { name: values[0] })); await waitFor(() => { expect( screen.getByRole('button', { name: values[0] }), @@ -329,16 +329,16 @@ describe('SearchFilter.Autocomplete', () => { // Select both values in the autocomplete. const input = within(autocomplete).getByRole('textbox'); - userEvent.click(input); + await userEvent.click(input); await waitFor(() => { screen.getByRole('listbox'); }); - userEvent.click(screen.getByRole('option', { name: values[0] })); - userEvent.click(input); + await userEvent.click(screen.getByRole('option', { name: values[0] })); + await userEvent.click(input); await waitFor(() => { screen.getByRole('listbox'); }); - userEvent.click(screen.getByRole('option', { name: values[1] })); + await userEvent.click(screen.getByRole('option', { name: values[1] })); // Both options should be present in the context. await waitFor(() => { @@ -349,7 +349,7 @@ describe('SearchFilter.Autocomplete', () => { // Click the "Clear" button to remove the value. const clearButton = within(autocomplete).getByLabelText('Clear'); - userEvent.click(clearButton); + await userEvent.click(clearButton); // There should be no content in the filter context. await waitFor(() => { diff --git a/plugins/search/src/components/SearchFilter/SearchFilter.test.tsx b/plugins/search/src/components/SearchFilter/SearchFilter.test.tsx index 7b997088ec..ba7abe7023 100644 --- a/plugins/search/src/components/SearchFilter/SearchFilter.test.tsx +++ b/plugins/search/src/components/SearchFilter/SearchFilter.test.tsx @@ -134,7 +134,7 @@ describe('SearchFilter', () => { const checkBox = screen.getByRole('checkbox', { name: values[0] }); // Check the box. - userEvent.click(checkBox); + await userEvent.click(checkBox); await waitFor(() => { expect(query).toHaveBeenLastCalledWith( expect.objectContaining({ filters: { field: [values[0]] } }), @@ -142,7 +142,7 @@ describe('SearchFilter', () => { }); // Uncheck the box. - userEvent.click(checkBox); + await userEvent.click(checkBox); await waitFor(() => { expect(query).toHaveBeenLastCalledWith( expect.objectContaining({ filters: {} }), @@ -164,7 +164,7 @@ describe('SearchFilter', () => { const checkBox = screen.getByRole('checkbox', { name: values[0] }); // Check the box. - userEvent.click(checkBox); + await userEvent.click(checkBox); await waitFor(() => { expect(query).toHaveBeenLastCalledWith( expect.objectContaining({ @@ -174,7 +174,7 @@ describe('SearchFilter', () => { }); // Uncheck the box. - userEvent.click(checkBox); + await userEvent.click(checkBox); await waitFor(() => { expect(query).toHaveBeenLastCalledWith( expect.objectContaining({ filters }), @@ -195,7 +195,7 @@ describe('SearchFilter', () => { expect(screen.getByText(label)).toBeInTheDocument(); }); - userEvent.click(screen.getByRole('button')); + await userEvent.click(screen.getByRole('button')); await waitFor(() => { expect(screen.getByRole('listbox')).toBeInTheDocument(); @@ -227,7 +227,7 @@ describe('SearchFilter', () => { ).not.toBe('true'); }); - userEvent.click(screen.getByRole('button')); + await userEvent.click(screen.getByRole('button')); await waitFor(() => { expect(screen.getByRole('listbox')).toBeInTheDocument(); @@ -259,7 +259,7 @@ describe('SearchFilter', () => { expect(screen.getByText(label)).toBeInTheDocument(); }); - userEvent.click(screen.getByRole('button')); + await userEvent.click(screen.getByRole('button')); await waitFor(() => { expect(screen.getByRole('listbox')).toBeInTheDocument(); @@ -293,7 +293,7 @@ describe('SearchFilter', () => { expect(screen.getByText(label)).toBeInTheDocument(); }); - userEvent.click(screen.getByRole('button')); + await userEvent.click(screen.getByRole('button')); await waitFor(() => { expect(screen.getByRole('listbox')).toBeInTheDocument(); @@ -324,13 +324,13 @@ describe('SearchFilter', () => { const button = screen.getByRole('button'); - userEvent.click(button); + await userEvent.click(button); await waitFor(() => { expect(screen.getByRole('listbox')).toBeInTheDocument(); }); - userEvent.click(screen.getByRole('option', { name: values[0] })); + await userEvent.click(screen.getByRole('option', { name: values[0] })); await waitFor(() => { expect(query).toHaveBeenLastCalledWith( @@ -340,13 +340,13 @@ describe('SearchFilter', () => { ); }); - userEvent.click(button); + await userEvent.click(button); await waitFor(() => { expect(screen.getByRole('listbox')).toBeInTheDocument(); }); - userEvent.click(screen.getByRole('option', { name: 'All' })); + await userEvent.click(screen.getByRole('option', { name: 'All' })); await waitFor(() => { expect(query).toHaveBeenLastCalledWith( @@ -375,13 +375,13 @@ describe('SearchFilter', () => { const button = screen.getByRole('button'); - userEvent.click(button); + await userEvent.click(button); await waitFor(() => { expect(screen.getByRole('listbox')).toBeInTheDocument(); }); - userEvent.click(screen.getByRole('option', { name: values[0] })); + await userEvent.click(screen.getByRole('option', { name: values[0] })); await waitFor(() => { expect(query).toHaveBeenLastCalledWith( @@ -391,13 +391,13 @@ describe('SearchFilter', () => { ); }); - userEvent.click(button); + await userEvent.click(button); await waitFor(() => { expect(screen.getByRole('listbox')).toBeInTheDocument(); }); - userEvent.click(screen.getByRole('option', { name: 'All' })); + await userEvent.click(screen.getByRole('option', { name: 'All' })); await waitFor(() => { expect(query).toHaveBeenLastCalledWith( diff --git a/plugins/search/src/components/SearchModal/SearchModal.test.tsx b/plugins/search/src/components/SearchModal/SearchModal.test.tsx index d3b2a825e2..9b3f04ad46 100644 --- a/plugins/search/src/components/SearchModal/SearchModal.test.tsx +++ b/plugins/search/src/components/SearchModal/SearchModal.test.tsx @@ -68,7 +68,7 @@ describe('SearchModal', () => { ); expect(query).toHaveBeenCalledTimes(1); - userEvent.keyboard('{esc}'); + await userEvent.keyboard('{Escape}'); expect(toggleModal).toHaveBeenCalledTimes(1); }); diff --git a/plugins/search/src/components/SearchResultPager/SearchResultPager.test.tsx b/plugins/search/src/components/SearchResultPager/SearchResultPager.test.tsx index ab46d77938..f24a73d63e 100644 --- a/plugins/search/src/components/SearchResultPager/SearchResultPager.test.tsx +++ b/plugins/search/src/components/SearchResultPager/SearchResultPager.test.tsx @@ -42,17 +42,14 @@ describe('SearchResultPager', () => { await waitFor(() => { expect(getByLabelText('previous page')).toBeInTheDocument(); - - userEvent.click(getByLabelText('previous page')); }); - + await userEvent.click(getByLabelText('previous page')); expect(fetchPreviousPage).toBeCalled(); await waitFor(() => { expect(getByLabelText('next page')).toBeInTheDocument(); - - userEvent.click(getByLabelText('next page')); }); + await userEvent.click(getByLabelText('next page')); expect(fetchNextPage).toBeCalled(); }); diff --git a/plugins/search/src/components/SearchType/SearchType.Accordion.test.tsx b/plugins/search/src/components/SearchType/SearchType.Accordion.test.tsx index 1aae64c463..a62d061663 100644 --- a/plugins/search/src/components/SearchType/SearchType.Accordion.test.tsx +++ b/plugins/search/src/components/SearchType/SearchType.Accordion.test.tsx @@ -78,19 +78,19 @@ describe('SearchType.Accordion', () => { await act(() => Promise.resolve()); }); - it('should set entire types array when a type is selected', () => { + it('should set entire types array when a type is selected', async () => { const { getByText } = render( , ); - user.click(getByText(expectedType.name)); + await user.click(getByText(expectedType.name)); expect(contextSpy.setTypes).toHaveBeenCalledWith([expectedType.value]); }); - it('should reset types array when all is selected', () => { + it('should reset types array when all is selected', async () => { const { getByText } = render( { , ); - user.click(getByText('All')); + await user.click(getByText('All')); expect(contextSpy.setTypes).toHaveBeenCalledWith([]); }); - it('should reset page cursor when a new type is selected', () => { + it('should reset page cursor when a new type is selected', async () => { const { getByText } = render( , ); - user.click(getByText(expectedType.name)); + await user.click(getByText(expectedType.name)); expect(contextSpy.setPageCursor).toHaveBeenCalledWith(undefined); }); - it('should collapse when a new type is selected', () => { + it('should collapse when a new type is selected', async () => { const { getByText, queryByText } = render( , ); - user.click(getByText(expectedType.name)); + await user.click(getByText(expectedType.name)); expect(queryByText('Collapse')).not.toBeInTheDocument(); }); diff --git a/plugins/search/src/components/SearchType/SearchType.Tabs.test.tsx b/plugins/search/src/components/SearchType/SearchType.Tabs.test.tsx index 741ee6e83f..2886b63ae7 100644 --- a/plugins/search/src/components/SearchType/SearchType.Tabs.test.tsx +++ b/plugins/search/src/components/SearchType/SearchType.Tabs.test.tsx @@ -70,19 +70,19 @@ describe('SearchType.Tabs', () => { await act(() => Promise.resolve()); }); - it('should set entire types array when a type is selected', () => { + it('should set entire types array when a type is selected', async () => { const { getByText } = render( , ); - user.click(getByText(expectedType.name)); + await user.click(getByText(expectedType.name)); expect(contextSpy.setTypes).toHaveBeenCalledWith([expectedType.value]); }); - it('should reset types array when all is selected', () => { + it('should reset types array when all is selected', async () => { const { getByText } = render( { , ); - user.click(getByText('All')); + await user.click(getByText('All')); expect(contextSpy.setTypes).toHaveBeenCalledWith([]); }); - it('should reset page cursor when a new type is selected', () => { + it('should reset page cursor when a new type is selected', async () => { const { getByText } = render( , ); - user.click(getByText(expectedType.name)); + await user.click(getByText(expectedType.name)); expect(contextSpy.setPageCursor).toHaveBeenCalledWith(undefined); }); diff --git a/plugins/search/src/components/SearchType/SearchType.test.tsx b/plugins/search/src/components/SearchType/SearchType.test.tsx index d3792bb9f4..94f6cf716c 100644 --- a/plugins/search/src/components/SearchType/SearchType.test.tsx +++ b/plugins/search/src/components/SearchType/SearchType.test.tsx @@ -56,7 +56,7 @@ describe('SearchType', () => { expect(screen.getByText(name)).toBeInTheDocument(); }); - userEvent.click(screen.getByRole('button')); + await userEvent.click(screen.getByRole('button')); await waitFor(() => { expect(screen.getByRole('listbox')).toBeInTheDocument(); @@ -86,7 +86,7 @@ describe('SearchType', () => { expect(screen.getByText(name)).toBeInTheDocument(); }); - userEvent.click(screen.getByRole('button')); + await userEvent.click(screen.getByRole('button')); await waitFor(() => { expect(screen.getByRole('listbox')).toBeInTheDocument(); @@ -112,7 +112,7 @@ describe('SearchType', () => { expect(screen.getByText(name)).toBeInTheDocument(); }); - userEvent.click(screen.getByRole('button')); + await userEvent.click(screen.getByRole('button')); await waitFor(() => { expect(screen.getByRole('listbox')).toBeInTheDocument(); @@ -140,13 +140,13 @@ describe('SearchType', () => { const button = screen.getByRole('button'); - userEvent.click(button); + await userEvent.click(button); await waitFor(() => { expect(screen.getByRole('listbox')).toBeInTheDocument(); }); - userEvent.click(screen.getByRole('option', { name: values[0] })); + await userEvent.click(screen.getByRole('option', { name: values[0] })); await waitFor(() => { expect(query).toHaveBeenLastCalledWith( @@ -156,7 +156,7 @@ describe('SearchType', () => { ); }); - userEvent.click(button); + await userEvent.click(button); await waitFor(() => { expect(screen.getByRole('listbox')).toBeInTheDocument(); @@ -181,13 +181,13 @@ describe('SearchType', () => { const button = screen.getByRole('button'); - userEvent.click(button); + await userEvent.click(button); await waitFor(() => { expect(screen.getByRole('listbox')).toBeInTheDocument(); }); - userEvent.click(screen.getByRole('option', { name: values[0] })); + await userEvent.click(screen.getByRole('option', { name: values[0] })); await waitFor(() => { expect(query).toHaveBeenLastCalledWith( @@ -197,13 +197,13 @@ describe('SearchType', () => { ); }); - userEvent.click(button); + await userEvent.click(button); await waitFor(() => { expect(screen.getByRole('listbox')).toBeInTheDocument(); }); - userEvent.click(screen.getByRole('option', { name: values[0] })); + await userEvent.click(screen.getByRole('option', { name: values[0] })); await waitFor(() => { expect(query).toHaveBeenLastCalledWith(expect.objectContaining([])); diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index c8c89b9a24..fbe50c8ac5 100644 --- a/plugins/sentry/package.json +++ b/plugins/sentry/package.json @@ -59,7 +59,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/luxon": "^2.0.4", "@types/node": "^14.14.32", diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json index d84e8005a8..5204fc7d99 100644 --- a/plugins/shortcuts/package.json +++ b/plugins/shortcuts/package.json @@ -48,7 +48,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json index 8e1603d36c..b40810495b 100644 --- a/plugins/sonarqube/package.json +++ b/plugins/sonarqube/package.json @@ -59,7 +59,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "msw": "^0.35.0" diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json index ee7132c38c..47b58ac8b3 100644 --- a/plugins/splunk-on-call/package.json +++ b/plugins/splunk-on-call/package.json @@ -57,7 +57,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/luxon": "^2.0.4", "@types/node": "^14.14.32", diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json index 7f2cb6261f..106ff8b8b1 100644 --- a/plugins/stack-overflow/package.json +++ b/plugins/stack-overflow/package.json @@ -47,7 +47,7 @@ "@backstage/dev-utils": "^1.0.1-next.0", "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "msw": "^0.35.0" diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json index b86905ea5c..18a0ce55b5 100644 --- a/plugins/tech-insights/package.json +++ b/plugins/tech-insights/package.json @@ -53,7 +53,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index 6045d28d99..452c083f33 100644 --- a/plugins/tech-radar/package.json +++ b/plugins/tech-radar/package.json @@ -55,7 +55,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/color": "^3.0.1", "@types/d3-force": "^2.1.1", "@types/jest": "^26.0.7", diff --git a/plugins/tech-radar/src/components/RadarEntry/RadarEntry.test.tsx b/plugins/tech-radar/src/components/RadarEntry/RadarEntry.test.tsx index c57083bece..b1e468899d 100644 --- a/plugins/tech-radar/src/components/RadarEntry/RadarEntry.test.tsx +++ b/plugins/tech-radar/src/components/RadarEntry/RadarEntry.test.tsx @@ -61,7 +61,7 @@ describe('RadarEntry', () => { expect(screen.getByText(String(minProps.value))).toBeInTheDocument(); }); - it('should render with description', () => { + it('should render with description', async () => { render( @@ -70,7 +70,7 @@ describe('RadarEntry', () => { , ); - userEvent.click(screen.getByRole('button')); + await userEvent.click(screen.getByRole('button')); const radarEntry = screen.getByTestId('radar-entry'); expect(radarEntry).toBeInTheDocument(); diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index d318700111..d5aceb9c7c 100644 --- a/plugins/techdocs/package.json +++ b/plugins/techdocs/package.json @@ -71,7 +71,7 @@ "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/dompurify": "^2.2.2", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", diff --git a/plugins/todo/package.json b/plugins/todo/package.json index 84f306c1b1..00430642c8 100644 --- a/plugins/todo/package.json +++ b/plugins/todo/package.json @@ -51,7 +51,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index 3159e4332f..96433eb9e2 100644 --- a/plugins/user-settings/package.json +++ b/plugins/user-settings/package.json @@ -53,7 +53,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/node": "^14.14.32", "cross-fetch": "^3.1.5", diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json index 4968128a8c..8180472905 100644 --- a/plugins/xcmetrics/package.json +++ b/plugins/xcmetrics/package.json @@ -46,7 +46,7 @@ "@backstage/test-utils": "^1.0.1-next.1", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^12.1.3", - "@testing-library/user-event": "^13.1.8", + "@testing-library/user-event": "^14.0.0", "@types/jest": "^26.0.7", "@types/luxon": "^2.0.4", "@types/node": "^14.14.32", diff --git a/plugins/xcmetrics/src/components/Accordion/Accordion.test.tsx b/plugins/xcmetrics/src/components/Accordion/Accordion.test.tsx index 70be560abf..404cf09294 100644 --- a/plugins/xcmetrics/src/components/Accordion/Accordion.test.tsx +++ b/plugins/xcmetrics/src/components/Accordion/Accordion.test.tsx @@ -45,7 +45,7 @@ describe('Accordion', () => { expect(rendered.getByText('Content')).not.toBeVisible(); - userEvent.click(rendered.getByRole('button')); + await userEvent.click(rendered.getByRole('button')); expect(await rendered.findByText('Content')).toBeVisible(); }); }); diff --git a/plugins/xcmetrics/src/components/BuildList/BuildList.test.tsx b/plugins/xcmetrics/src/components/BuildList/BuildList.test.tsx index 53471f5e9f..94178d0388 100644 --- a/plugins/xcmetrics/src/components/BuildList/BuildList.test.tsx +++ b/plugins/xcmetrics/src/components/BuildList/BuildList.test.tsx @@ -52,8 +52,10 @@ describe('BuildList', () => { , ); - userEvent.click( - (await rendered.findAllByLabelText('Detail panel visiblity toggle'))[0], + await userEvent.click( + ( + await rendered.findAllByLabelText('Detail panel visiblity toggle') + )[0], ); expect(await rendered.findByText('BuildDetails')).toBeInTheDocument(); }); diff --git a/plugins/xcmetrics/src/components/BuildListFilter/BuildListFilter.test.tsx b/plugins/xcmetrics/src/components/BuildListFilter/BuildListFilter.test.tsx index 06f4aed1b7..fd9fee0f15 100644 --- a/plugins/xcmetrics/src/components/BuildListFilter/BuildListFilter.test.tsx +++ b/plugins/xcmetrics/src/components/BuildListFilter/BuildListFilter.test.tsx @@ -44,21 +44,21 @@ const renderWithFiltersVisible = async ( , ); - userEvent.click(rendered.getByLabelText('show filters')); + await userEvent.click(rendered.getByLabelText('show filters')); return rendered; }; const setStatusFilter = async (rendered: RenderResult, option: string) => { const statusSelect = rendered.getAllByTestId('select')[0]; - userEvent.click(statusSelect); - userEvent.click((await rendered.findAllByText(option))[0]); + await userEvent.click(statusSelect); + await userEvent.click((await rendered.findAllByText(option))[0]); }; const setProjectFilter = async (rendered: RenderResult, option: string) => { const statusSelect = rendered.getAllByTestId('select')[1]; - userEvent.click(statusSelect); + await userEvent.click(statusSelect); const options = await rendered.findAllByText(option); - userEvent.click(options[options.length - 1]); + await userEvent.click(options[options.length - 1]); }; describe('BuildListFilter', () => { @@ -82,7 +82,7 @@ describe('BuildListFilter', () => { expect(await rendered.findByText('Status')).toBeInTheDocument(); expect(await rendered.findByText('Project')).toBeInTheDocument(); - userEvent.click(rendered.getByLabelText('hide filters')); + await userEvent.click(rendered.getByLabelText('hide filters')); expect(rendered.queryByText('DatePicker')).toBeNull(); expect(rendered.queryByText('Status')).toBeNull(); expect(rendered.queryByText('Project')).toBeNull(); @@ -91,7 +91,7 @@ describe('BuildListFilter', () => { it('should load projects', async () => { const callback = jest.fn(); const rendered = await renderWithFiltersVisible(callback); - userEvent.click((await rendered.findAllByText('All'))[1]); + await userEvent.click((await rendered.findAllByText('All'))[1]); expect( await rendered.findByText(client.mockBuild.projectName), @@ -143,7 +143,7 @@ describe('BuildListFilter', () => { await setProjectFilter(rendered, client.mockBuild.projectName); callback.mockClear(); - userEvent.click(await rendered.findByText('Clear all')); + await userEvent.click(await rendered.findByText('Clear all')); expect(callback).toHaveBeenCalledWith(initialValues); expect(await rendered.findByText('Filters (0)')).toBeInTheDocument(); diff --git a/plugins/xcmetrics/src/components/DatePicker/DatePicker.test.tsx b/plugins/xcmetrics/src/components/DatePicker/DatePicker.test.tsx index 924e83da7e..c9acf5ac51 100644 --- a/plugins/xcmetrics/src/components/DatePicker/DatePicker.test.tsx +++ b/plugins/xcmetrics/src/components/DatePicker/DatePicker.test.tsx @@ -33,7 +33,7 @@ describe('DatePicker', () => { ); const input = rendered.getByLabelText(label); - userEvent.type(input, '2020-02-02'); + await userEvent.type(input, '2020-02-02'); expect(callback).toBeCalledWith('2020-02-02'); }); @@ -45,7 +45,7 @@ describe('DatePicker', () => { ); const input = rendered.getByLabelText(label); - userEvent.type(input, 'test'); + await userEvent.type(input, 'test'); expect(callback).not.toHaveBeenCalled(); }); }); diff --git a/plugins/xcmetrics/src/components/OverviewTrends/OverviewTrends.test.tsx b/plugins/xcmetrics/src/components/OverviewTrends/OverviewTrends.test.tsx index db7904a8d1..1aa5fd4060 100644 --- a/plugins/xcmetrics/src/components/OverviewTrends/OverviewTrends.test.tsx +++ b/plugins/xcmetrics/src/components/OverviewTrends/OverviewTrends.test.tsx @@ -53,8 +53,8 @@ describe('OverviewTrends', () => { , ); - userEvent.click(rendered.getByText('14 days')); - userEvent.click(await rendered.findByText('30 days')); + await userEvent.click(rendered.getByText('14 days')); + await userEvent.click(await rendered.findByText('30 days')); expect(await rendered.findByText('30 days')).toBeInTheDocument(); }); diff --git a/plugins/xcmetrics/src/components/StatusCell/StatusCell.test.tsx b/plugins/xcmetrics/src/components/StatusCell/StatusCell.test.tsx index 6e5b7f73b9..1d4fb264fb 100644 --- a/plugins/xcmetrics/src/components/StatusCell/StatusCell.test.tsx +++ b/plugins/xcmetrics/src/components/StatusCell/StatusCell.test.tsx @@ -38,7 +38,7 @@ describe('StatusCell', () => { , ); - userEvent.hover(rendered.getByTestId(client.mockBuild.id)); + await userEvent.hover(rendered.getByTestId(client.mockBuild.id)); expect( await rendered.findByText(formatStatus(client.mockBuild.buildStatus)), ).toBeInTheDocument(); diff --git a/plugins/xcmetrics/src/components/XcmetricsLayout/XcmetricsLayout.test.tsx b/plugins/xcmetrics/src/components/XcmetricsLayout/XcmetricsLayout.test.tsx index 29d6407b03..b4beeefe4e 100644 --- a/plugins/xcmetrics/src/components/XcmetricsLayout/XcmetricsLayout.test.tsx +++ b/plugins/xcmetrics/src/components/XcmetricsLayout/XcmetricsLayout.test.tsx @@ -51,7 +51,7 @@ describe('XcmetricsLayout', () => { , ); - userEvent.click(rendered.getByText('Builds')); + await userEvent.click(rendered.getByText('Builds')); expect(await rendered.findByText('BuildList')).toBeInTheDocument(); }); }); diff --git a/yarn.lock b/yarn.lock index c894d72c20..b4c63825b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5575,12 +5575,10 @@ "@testing-library/dom" "^8.0.0" "@types/react-dom" "*" -"@testing-library/user-event@^13.1.8": - version "13.5.0" - resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz#69d77007f1e124d55314a2b73fd204b333b13295" - integrity sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg== - dependencies: - "@babel/runtime" "^7.12.5" +"@testing-library/user-event@^14.0.0": + version "14.0.0" + resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.0.0.tgz#3906aa6f0e56fd012d73559f5f05c02e63ba18dd" + integrity sha512-hZhjNrle/DMi1ziHwHy8LS0fYJtf+cID7fuG5+4h+Bk83xQaRDQT/DlqfL4hJYw3mxW6KTIxoODrhGnhqJebdQ== "@tokenizer/token@^0.3.0": version "0.3.0"