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(
,
);
- 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"