From 84db7c4fdad75fec3b0b9ce146cb631930c15d24 Mon Sep 17 00:00:00 2001 From: Chris Bedwell Date: Tue, 23 Jul 2024 13:52:27 +0100 Subject: [PATCH] fix: reimplement user.type as actually pasting in the meta framework (#882) --- package.json | 2 -- src/components/CheckList/CheckList.test.tsx | 2 -- src/page/AlertingPage.test.tsx | 1 - src/page/ChecksPage.test.tsx | 5 +---- src/page/__testHelpers__/checkForm.tsx | 21 ++++++++++++++++++--- 5 files changed, 19 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 4398db0bd..91f6d04f7 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,6 @@ "sign": "npx --yes @grafana/sign-plugin@latest", "spellcheck": "cspell -c cspell.config.json \"**/*.{ts,tsx,js,go,md,mdx,yml,yaml,json,scss,css}\"", "test": "jest --all", - "test:accessibility": "pa11y --runner axe --reporter json http://localhost:3000/a/grafana-synthetic-monitoring-app/?page=checks > pa11y-report.json", - "test:ci": "jest --passWithNoTests --maxWorkers 4", "test:changed": "jest --watch --onlyChanged", "typecheck": "tsc --noEmit" }, diff --git a/src/components/CheckList/CheckList.test.tsx b/src/components/CheckList/CheckList.test.tsx index d224fda6c..954dba49c 100644 --- a/src/components/CheckList/CheckList.test.tsx +++ b/src/components/CheckList/CheckList.test.tsx @@ -28,8 +28,6 @@ jest.mock('hooks/useNavigation', () => { }); const useNavigationHook = require('hooks/useNavigation'); -jest.setTimeout(20000); - const renderCheckList = async (checks = BASIC_CHECK_LIST, searchParams = '') => { server.use( apiRoute(`listChecks`, { diff --git a/src/page/AlertingPage.test.tsx b/src/page/AlertingPage.test.tsx index 54b57cf1e..58ee34af2 100644 --- a/src/page/AlertingPage.test.tsx +++ b/src/page/AlertingPage.test.tsx @@ -24,7 +24,6 @@ const useAlertsHook = require('hooks/useAlerts'); const { defaultRules } = jest.requireActual('hooks/useAlerts'); const setDefaultRules = jest.fn(); const setRules = jest.fn().mockImplementation(() => Promise.resolve({ ok: true })); -jest.setTimeout(30000); const renderAlerting = () => { return render(); diff --git a/src/page/ChecksPage.test.tsx b/src/page/ChecksPage.test.tsx index 83fbf39f5..cec288d99 100644 --- a/src/page/ChecksPage.test.tsx +++ b/src/page/ChecksPage.test.tsx @@ -12,15 +12,13 @@ import { PLUGIN_URL_PATH } from 'components/Routing.consts'; import { CheckRouter } from './CheckRouter'; -jest.setTimeout(20000); - const renderChecksPage = async () => { const res = render(, { path: `${PLUGIN_URL_PATH}${ROUTES.Checks}`, route: `${PLUGIN_URL_PATH}${ROUTES.Checks}`, }); - await waitFor(() => expect(screen.getByText('Add new check')).toBeInTheDocument()); + await waitFor(() => expect(screen.getByText('Add new check')).toBeInTheDocument(), { timeout: 10000 }); return res; }; @@ -150,7 +148,6 @@ test(`renders retry button when unable to fetch alerts`, async () => { ); const { user } = await renderChecksPage(); - await waitFor(() => {}, { timeout: 10000 }); const refetchButton = await screen.findByLabelText('Unable to fetch alerting rules. Retry?'); server.use( diff --git a/src/page/__testHelpers__/checkForm.tsx b/src/page/__testHelpers__/checkForm.tsx index b1a47c2d9..b368d0031 100644 --- a/src/page/__testHelpers__/checkForm.tsx +++ b/src/page/__testHelpers__/checkForm.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { screen, within } from '@testing-library/react'; +import { act, screen, waitFor, within } from '@testing-library/react'; import { UserEvent } from '@testing-library/user-event'; import { DataTestIds } from 'test/dataTestIds'; import { apiRoute, getServerRequests } from 'test/handlers'; @@ -33,11 +33,26 @@ export async function renderNewForm(checkType: CheckType) { path: `${PLUGIN_URL_PATH}${ROUTES.NewCheck}/${checkTypeGroup}?checkType=${checkType}`, }); - await screen.findByTestId(DataTestIds.PAGE_READY); + await waitFor(async () => await screen.findByTestId(DataTestIds.PAGE_READY), { timeout: 10000 }); + + const typeButReallyPaste = async (target: Element, value: string, args?: any) => { + if (target instanceof HTMLElement) { + await act(() => { + target.focus(); + }); + await res.user.paste(value); + } + }; + + const user: UserEvent = { + ...res.user, + type: typeButReallyPaste, + }; return { ...res, read, + user, }; } @@ -52,7 +67,7 @@ export async function renderEditForm(check: Pick) { path: `${PLUGIN_URL_PATH}${ROUTES.EditCheck}/edit/${checkTypeGroup}/${check.id}`, }); - await screen.findByText(/^Editing/); + await waitFor(async () => await screen.findByText(/^Editing/), { timeout: 10000 }); return { ...res,