From 4dac624603feae6c1afc99f2c223df3c6bc4a0a2 Mon Sep 17 00:00:00 2001 From: Abhishek Jakhar Date: Sun, 18 Oct 2020 22:16:08 +0530 Subject: [PATCH 1/4] fix the warning by wrapping in act --- .../HorizontalScrollGrid.test.tsx | 38 ++--- .../components/Lifecycle/Lifecycle.test.tsx | 11 +- .../components/ProgressBars/Gauge.test.tsx | 34 ++-- .../ProgressBars/GaugeCard.test.tsx | 19 +-- .../SimpleStepper/SimpleStepper.test.tsx | 156 +++++++++--------- .../core/src/components/Table/Table.test.tsx | 13 +- .../core/src/components/Tabs/Tab.test.tsx | 7 +- .../components/TrendLine/TrendLine.test.tsx | 14 +- .../WarningPanel/WarningPanel.test.tsx | 13 +- .../src/layout/BottomLink/BottomLink.test.tsx | 7 +- .../ContentHeader/ContentHeader.test.tsx | 19 +-- .../src/layout/ErrorPage/ErrorPage.test.tsx | 9 +- .../core/src/layout/Header/Header.test.tsx | 35 ++-- .../HeaderActionMenu.test.tsx | 60 ++++--- .../layout/HeaderLabel/HeaderLabel.test.tsx | 29 ++-- .../src/layout/HeaderTabs/HeaderTabs.test.tsx | 11 +- .../src/layout/InfoCard/InfoCard.test.tsx | 11 +- .../src/layout/TabbedCard/TabbedCard.test.tsx | 44 +++-- 18 files changed, 248 insertions(+), 282 deletions(-) diff --git a/packages/core/src/components/HorizontalScrollGrid/HorizontalScrollGrid.test.tsx b/packages/core/src/components/HorizontalScrollGrid/HorizontalScrollGrid.test.tsx index 1dbdbcc3b9..0d07d8ec84 100644 --- a/packages/core/src/components/HorizontalScrollGrid/HorizontalScrollGrid.test.tsx +++ b/packages/core/src/components/HorizontalScrollGrid/HorizontalScrollGrid.test.tsx @@ -15,8 +15,8 @@ */ import React from 'react'; -import { render, fireEvent } from '@testing-library/react'; -import { renderWithEffects, wrapInTestApp } from '@backstage/test-utils'; +import { fireEvent } from '@testing-library/react'; +import { renderInTestApp } from '@backstage/test-utils'; import { HorizontalScrollGrid } from './HorizontalScrollGrid'; import { Grid } from '@material-ui/core'; @@ -33,14 +33,12 @@ describe('', () => { jest.restoreAllMocks(); }); - it('renders without exploding', () => { - const rendered = render( - wrapInTestApp( - - item1 - item2 - , - ), + it('renders without exploding', async () => { + const rendered = await renderInTestApp( + + item1 + item2 + , ); rendered.getByText('item1'); rendered.getByText('item2'); @@ -65,17 +63,15 @@ describe('', () => { lastScroll = left || 0; }) as any; - const rendered = await renderWithEffects( - wrapInTestApp( - - - item1 - - - item2 - - , - ), + const rendered = await renderInTestApp( + + + item1 + + + item2 + + , ); rendered.getByTitle('Scroll Left'); diff --git a/packages/core/src/components/Lifecycle/Lifecycle.test.tsx b/packages/core/src/components/Lifecycle/Lifecycle.test.tsx index ac3823d85c..b5567b2b5a 100644 --- a/packages/core/src/components/Lifecycle/Lifecycle.test.tsx +++ b/packages/core/src/components/Lifecycle/Lifecycle.test.tsx @@ -15,28 +15,27 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { Lifecycle } from './Lifecycle'; describe('', () => { it('renders Alpha with shorthand', async () => { - const { getByText } = render(wrapInTestApp()); + const { getByText } = await renderInTestApp(); expect(getByText('α')).toBeInTheDocument(); }); it('renders Alpha without shorthand', async () => { - const { getByText } = render(wrapInTestApp()); + const { getByText } = await renderInTestApp(); expect(getByText('Alpha')).toBeInTheDocument(); }); it('renders Beta with shorthand', async () => { - const { getByText } = render(wrapInTestApp()); + const { getByText } = await renderInTestApp(); expect(getByText('β')).toBeInTheDocument(); }); it('renders Beta without shorthand', async () => { - const { getByText } = render(wrapInTestApp()); + const { getByText } = await renderInTestApp(); expect(getByText('Beta')).toBeInTheDocument(); }); }); diff --git a/packages/core/src/components/ProgressBars/Gauge.test.tsx b/packages/core/src/components/ProgressBars/Gauge.test.tsx index 3d2ac17506..00cf0fd009 100644 --- a/packages/core/src/components/ProgressBars/Gauge.test.tsx +++ b/packages/core/src/components/ProgressBars/Gauge.test.tsx @@ -15,36 +15,34 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { Gauge, getProgressColor } from './Gauge'; import * as theme from '@backstage/theme'; describe('', () => { - it('renders without exploding', () => { - const { getByText } = render( - wrapInTestApp(), + it('renders without exploding', async () => { + const { getByText } = await renderInTestApp( + , + ); + getByText('10%'); + }); + it('handles fractional prop', async () => { + const { getByText } = await renderInTestApp( + , ); getByText('10%'); }); - it('handles fractional prop', () => { - const { getByText } = render( - wrapInTestApp(), - ); - getByText('10%'); - }); - - it('handles max prop', () => { - const { getByText } = render( - wrapInTestApp(), + it('handles max prop', async () => { + const { getByText } = await renderInTestApp( + , ); getByText('1%'); }); - it('handles unit prop', () => { - const { getByText } = render( - wrapInTestApp(), + it('handles unit prop', async () => { + const { getByText } = await renderInTestApp( + , ); getByText('10m'); }); diff --git a/packages/core/src/components/ProgressBars/GaugeCard.test.tsx b/packages/core/src/components/ProgressBars/GaugeCard.test.tsx index 496a620170..db112fa2ab 100644 --- a/packages/core/src/components/ProgressBars/GaugeCard.test.tsx +++ b/packages/core/src/components/ProgressBars/GaugeCard.test.tsx @@ -15,33 +15,32 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { GaugeCard } from './GaugeCard'; const minProps = { title: 'Tingle upgrade', progress: 0.12 }; describe('', () => { - it('renders without exploding', () => { - const { getByText } = render(wrapInTestApp()); + it('renders without exploding', async () => { + const { getByText } = await renderInTestApp(); expect(getByText(/Tingle.*/)).toBeInTheDocument(); }); - it('renders progress and title', () => { - const { getByText } = render(wrapInTestApp()); + it('renders progress and title', async () => { + const { getByText } = await renderInTestApp(); expect(getByText(/Tingle.*/)).toBeInTheDocument(); expect(getByText(/12%.*/)).toBeInTheDocument(); }); - it('does not render deepLink', () => { - const { queryByText } = render(wrapInTestApp()); + it('does not render deepLink', async () => { + const { queryByText } = await renderInTestApp(); expect(queryByText('View more')).not.toBeInTheDocument(); }); - it('handles invalid numbers', () => { + it('handles invalid numbers', async () => { const badProps = { title: 'Tingle upgrade', progress: 'hejjo' } as any; - const { getByText } = render(wrapInTestApp()); + const { getByText } = await renderInTestApp(); expect(getByText(/N\/A.*/)).toBeInTheDocument(); }); }); diff --git a/packages/core/src/components/SimpleStepper/SimpleStepper.test.tsx b/packages/core/src/components/SimpleStepper/SimpleStepper.test.tsx index 043084e4fb..527160c4ff 100644 --- a/packages/core/src/components/SimpleStepper/SimpleStepper.test.tsx +++ b/packages/core/src/components/SimpleStepper/SimpleStepper.test.tsx @@ -14,8 +14,8 @@ * limitations under the License. */ import React from 'react'; -import { render, fireEvent, within } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { fireEvent, within } from '@testing-library/react'; +import { renderInTestApp } from '@backstage/test-utils'; import { SimpleStepper as Stepper } from './SimpleStepper'; import { SimpleStepperStep as Step } from './SimpleStepperStep'; @@ -24,20 +24,18 @@ const getTextInSlide = (rendered: any, index: number) => describe('Stepper', () => { it('Maintains state history', async () => { - const rendered = render( - wrapInTestApp( - - -
step0
-
- -
step1
-
- -
step2
-
-
, - ), + const rendered = await renderInTestApp( + + +
step0
+
+ +
step1
+
+ +
step2
+
+
, ); fireEvent.click(getTextInSlide(rendered, 0)('Next') as Node); @@ -51,27 +49,25 @@ describe('Stepper', () => { }); it('Handles nextStep property', async () => { - const rendered = render( - wrapInTestApp( - - -
step0
-
- 3 }} - data-testid="step1" - > -
step1
-
- -
step2
-
- -
step3
-
-
, - ), + const rendered = await renderInTestApp( + + +
step0
+
+ 3 }} + data-testid="step1" + > +
step1
+
+ +
step2
+
+ +
step3
+
+
, ); fireEvent.click(getTextInSlide(rendered, 0)('Next') as Node); @@ -84,28 +80,26 @@ describe('Stepper', () => { expect(rendered.getByText('step1')).toBeInTheDocument(); }); - it('Shows controls and content when going back to first step', () => { - const rendered = render( - wrapInTestApp( - - -
step0
-
- 3 }} - data-testid="step1" - > -
step1
-
- -
step2
-
- -
step3
-
-
, - ), + it('Shows controls and content when going back to first step', async () => { + const rendered = await renderInTestApp( + + +
step0
+
+ 3 }} + data-testid="step1" + > +
step1
+
+ +
step2
+
+ +
step3
+
+
, ); fireEvent.click(getTextInSlide(rendered, 0)('Next') as Node); @@ -123,30 +117,28 @@ describe('Stepper', () => { expect(getTextInSlide(rendered, 0)('Next')).toBeInTheDocument(); }); - it('uses nextText if specified in all steps', () => { - const rendered = render( - wrapInTestApp( + it('uses nextText if specified in all steps', async () => { + const rendered = await renderInTestApp( + - - -
step0
-
- -
final step
-
-
-
, - ), + +
step0
+
+ +
final step
+
+
+ , ); expect(rendered.getByText('Step0Next')).toBeInTheDocument(); fireEvent.click(rendered.getByText('Step0Next')); diff --git a/packages/core/src/components/Table/Table.test.tsx b/packages/core/src/components/Table/Table.test.tsx index 24d68fe0d1..48b90be419 100644 --- a/packages/core/src/components/Table/Table.test.tsx +++ b/packages/core/src/components/Table/Table.test.tsx @@ -15,8 +15,7 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { Table } from './Table'; const minProps = { @@ -43,14 +42,14 @@ const minProps = { }; describe('', () => { - it('renders without exploding', () => { - const rendered = render(wrapInTestApp(
)); + it('renders without exploding', async () => { + const rendered = await renderInTestApp(
); expect(rendered.getByText('second value, second row')).toBeInTheDocument(); }); - it('renders with subtitle', () => { - const rendered = render( - wrapInTestApp(
), + it('renders with subtitle', async () => { + const rendered = await renderInTestApp( +
, ); expect(rendered.getByText('subtitle')).toBeInTheDocument(); }); diff --git a/packages/core/src/components/Tabs/Tab.test.tsx b/packages/core/src/components/Tabs/Tab.test.tsx index 5b155ef536..df8540ff14 100644 --- a/packages/core/src/components/Tabs/Tab.test.tsx +++ b/packages/core/src/components/Tabs/Tab.test.tsx @@ -15,13 +15,12 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { StyledTab } from './Tab'; describe('', () => { - it('renders without exploding', () => { - const rendered = render(wrapInTestApp()); + it('renders without exploding', async () => { + const rendered = await renderInTestApp(); expect(rendered.getByText('test')).toBeInTheDocument(); }); }); diff --git a/packages/core/src/components/TrendLine/TrendLine.test.tsx b/packages/core/src/components/TrendLine/TrendLine.test.tsx index dbd8adfccf..f3d658265b 100644 --- a/packages/core/src/components/TrendLine/TrendLine.test.tsx +++ b/packages/core/src/components/TrendLine/TrendLine.test.tsx @@ -17,24 +17,24 @@ /* eslint-disable jest/no-disabled-tests */ import React from 'react'; import { render } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp, wrapInTestApp } from '@backstage/test-utils'; import { TrendLine } from './TrendLine'; describe('TrendLine', () => { describe('when no data is present', () => { - it('renders null without throwing', () => { - const rendered = render( - wrapInTestApp(), + it('renders null without throwing', async () => { + const rendered = await renderInTestApp( + , ); expect(rendered.queryByTitle('sparkline')).not.toBeInTheDocument(); }); }); describe('when one datapoint is present', () => { - it('renders as a straight line', () => { - const rendered = render( - wrapInTestApp(), + it('renders as a straight line', async () => { + const rendered = await renderInTestApp( + , ); expect(rendered.getByTitle('sparkline')).toBeInTheDocument(); }); diff --git a/packages/core/src/components/WarningPanel/WarningPanel.test.tsx b/packages/core/src/components/WarningPanel/WarningPanel.test.tsx index 493b143bbf..07a25d34c8 100644 --- a/packages/core/src/components/WarningPanel/WarningPanel.test.tsx +++ b/packages/core/src/components/WarningPanel/WarningPanel.test.tsx @@ -15,22 +15,21 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { WarningPanel } from './WarningPanel'; const minProps = { title: 'Mock title', message: 'Some more info' }; describe('', () => { - it('renders without exploding', () => { - const { getByText } = render(wrapInTestApp()); + it('renders without exploding', async () => { + const { getByText } = await renderInTestApp(); expect(getByText('Mock title')).toBeInTheDocument(); }); - it('renders message and children', () => { - const { getByText } = render( - wrapInTestApp(children), + it('renders message and children', async () => { + const { getByText } = await renderInTestApp( + children, ); expect(getByText('Some more info')).toBeInTheDocument(); expect(getByText('children')).toBeInTheDocument(); diff --git a/packages/core/src/layout/BottomLink/BottomLink.test.tsx b/packages/core/src/layout/BottomLink/BottomLink.test.tsx index 9871e18ebb..92ae2ecb3b 100644 --- a/packages/core/src/layout/BottomLink/BottomLink.test.tsx +++ b/packages/core/src/layout/BottomLink/BottomLink.test.tsx @@ -15,8 +15,7 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { BottomLink } from './BottomLink'; const minProps = { @@ -25,8 +24,8 @@ const minProps = { }; describe('', () => { - it('renders without exploding', () => { - const rendered = render(wrapInTestApp()); + it('renders without exploding', async () => { + const rendered = await renderInTestApp(); expect(rendered.getByText('A deepLink title')).toBeInTheDocument(); }); }); diff --git a/packages/core/src/layout/ContentHeader/ContentHeader.test.tsx b/packages/core/src/layout/ContentHeader/ContentHeader.test.tsx index 5db676dcc5..b28ad614bf 100644 --- a/packages/core/src/layout/ContentHeader/ContentHeader.test.tsx +++ b/packages/core/src/layout/ContentHeader/ContentHeader.test.tsx @@ -15,9 +15,8 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; import { ContentHeader } from './ContentHeader'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; jest.mock('react-helmet', () => { return { @@ -26,23 +25,23 @@ jest.mock('react-helmet', () => { }); describe('', () => { - it('should render with title', () => { - const rendered = render(wrapInTestApp()); + it('should render with title', async () => { + const rendered = await renderInTestApp(); rendered.getByText('Title'); }); - it('should render with titleComponent', () => { + it('should render with titleComponent', async () => { const title = 'Custom title'; const titleComponent = () =>

{title}

; - const rendered = render( - wrapInTestApp(), + const rendered = await renderInTestApp( + , ); rendered.getByText(title); }); - it('should render with description', () => { - const rendered = render( - wrapInTestApp(), + it('should render with description', async () => { + const rendered = await renderInTestApp( + , ); rendered.getByText('description'); }); diff --git a/packages/core/src/layout/ErrorPage/ErrorPage.test.tsx b/packages/core/src/layout/ErrorPage/ErrorPage.test.tsx index c47ff8d49e..91322ee2a5 100644 --- a/packages/core/src/layout/ErrorPage/ErrorPage.test.tsx +++ b/packages/core/src/layout/ErrorPage/ErrorPage.test.tsx @@ -15,14 +15,13 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; import { ErrorPage } from './ErrorPage'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; describe('', () => { - it('should render with status code, status message and go back link', () => { - const rendered = render( - wrapInTestApp(), + it('should render with status code, status message and go back link', async () => { + const rendered = await renderInTestApp( + , ); rendered.getByText(/page not found/i); rendered.getByText(/404/i); diff --git a/packages/core/src/layout/Header/Header.test.tsx b/packages/core/src/layout/Header/Header.test.tsx index 320592c218..51468f6ab5 100644 --- a/packages/core/src/layout/Header/Header.test.tsx +++ b/packages/core/src/layout/Header/Header.test.tsx @@ -15,8 +15,7 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { Header } from './Header'; jest.mock('react-helmet', () => { @@ -26,42 +25,42 @@ jest.mock('react-helmet', () => { }); describe('
', () => { - it('should render with title', () => { - const rendered = render(wrapInTestApp(
)); + it('should render with title', async () => { + const rendered = await renderInTestApp(
); rendered.getByText('Title'); }); - it('should set document title', () => { - const rendered = render(wrapInTestApp(
)); + it('should set document title', async () => { + const rendered = await renderInTestApp(
); rendered.getByText('Title1'); rendered.getByText('defaultTitle: Title1 | Backstage'); }); - it('should override document title', () => { - const rendered = render( - wrapInTestApp(
), + it('should override document title', async () => { + const rendered = await renderInTestApp( +
, ); rendered.getByText('Title1'); rendered.getByText('defaultTitle: Title2 | Backstage'); }); - it('should have subtitle', () => { - const rendered = render( - wrapInTestApp(
), + it('should have subtitle', async () => { + const rendered = await renderInTestApp( +
, ); rendered.getByText('Subtitle'); }); - it('should have type rendered', () => { - const rendered = render( - wrapInTestApp(
), + it('should have type rendered', async () => { + const rendered = await renderInTestApp( +
, ); rendered.getByText('tool'); }); - it('should have breadcrumb rendered', () => { - const rendered = render( - wrapInTestApp(
), + it('should have breadcrumb rendered', async () => { + const rendered = await renderInTestApp( +
, ); rendered.getAllByText('Title'); }); diff --git a/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx b/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx index 00fa4d27ac..76ede5398d 100644 --- a/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx +++ b/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx @@ -16,22 +16,24 @@ import React from 'react'; import { render, fireEvent } from '@testing-library/react'; -import { wrapInTestApp, Keyboard } from '@backstage/test-utils'; +import { + wrapInTestApp, + Keyboard, + renderInTestApp, +} from '@backstage/test-utils'; import { HeaderActionMenu } from './HeaderActionMenu'; describe('', () => { - it('renders without any items and without exploding', () => { - render(wrapInTestApp()); + it('renders without any items and without exploding', async () => { + await renderInTestApp(); }); - it('can open the menu and click menu items', () => { + it('can open the menu and click menu items', async () => { const onClickFunction = jest.fn(); - const rendered = render( - wrapInTestApp( - , - ), + const rendered = await renderInTestApp( + , ); expect(rendered.queryByText('Some label')).not.toBeInTheDocument(); expect(onClickFunction).not.toHaveBeenCalled(); @@ -48,12 +50,10 @@ describe('', () => { }); it('Disabled', async () => { - const rendered = render( - wrapInTestApp( - , - ), + const rendered = await renderInTestApp( + , ); fireEvent.click(rendered.getByTestId('header-action-menu')); @@ -63,22 +63,20 @@ describe('', () => { ); }); - it('Test wrapper, and secondary label', () => { + it('Test wrapper, and secondary label', async () => { const onClickFunction = jest.fn(); - const rendered = render( - wrapInTestApp( - ( - - ), - }, - ]} - />, - ), + const rendered = await renderInTestApp( + ( + + ), + }, + ]} + />, ); expect(onClickFunction).not.toHaveBeenCalled(); diff --git a/packages/core/src/layout/HeaderLabel/HeaderLabel.test.tsx b/packages/core/src/layout/HeaderLabel/HeaderLabel.test.tsx index fdc6ef8c6e..acadb22525 100644 --- a/packages/core/src/layout/HeaderLabel/HeaderLabel.test.tsx +++ b/packages/core/src/layout/HeaderLabel/HeaderLabel.test.tsx @@ -15,38 +15,37 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { HeaderLabel } from './HeaderLabel'; describe('', () => { - it('should have a label', () => { - const rendered = render(wrapInTestApp()); + it('should have a label', async () => { + const rendered = await renderInTestApp(); expect(rendered.getByText('Label')).toBeInTheDocument(); }); - it('should say unknown', () => { - const rendered = render(wrapInTestApp()); + it('should say unknown', async () => { + const rendered = await renderInTestApp(); expect(rendered.getByText('')).toBeInTheDocument(); }); - it('should say unknown when passing null as value prop', () => { - const rendered = render( - wrapInTestApp(), + it('should say unknown when passing null as value prop', async () => { + const rendered = await renderInTestApp( + , ); expect(rendered.getByText('')).toBeInTheDocument(); }); - it('should have value', () => { - const rendered = render( - wrapInTestApp(), + it('should have value', async () => { + const rendered = await renderInTestApp( + , ); expect(rendered.getByText('Value')).toBeInTheDocument(); }); - it('should have a link', () => { - const rendered = render( - wrapInTestApp(), + it('should have a link', async () => { + const rendered = await renderInTestApp( + , ); const anchor = rendered.container.querySelector('a') as HTMLAnchorElement; expect(rendered.getByText('Value')).toBeInTheDocument(); diff --git a/packages/core/src/layout/HeaderTabs/HeaderTabs.test.tsx b/packages/core/src/layout/HeaderTabs/HeaderTabs.test.tsx index a007bf9113..81d2123049 100644 --- a/packages/core/src/layout/HeaderTabs/HeaderTabs.test.tsx +++ b/packages/core/src/layout/HeaderTabs/HeaderTabs.test.tsx @@ -15,8 +15,7 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { HeaderTabs } from './'; const mockTabs = [ @@ -25,15 +24,15 @@ const mockTabs = [ ]; describe('', () => { - it('should render tabs', () => { - const rendered = render(wrapInTestApp()); + it('should render tabs', async () => { + const rendered = await renderInTestApp(); expect(rendered.getByText('Overview')).toBeInTheDocument(); expect(rendered.getByText('Docs')).toBeInTheDocument(); }); - it('should render correct selected tab', () => { - const rendered = render(wrapInTestApp()); + it('should render correct selected tab', async () => { + const rendered = await renderInTestApp(); expect(rendered.getByText('Docs').parentElement).toHaveAttribute( 'aria-selected', diff --git a/packages/core/src/layout/InfoCard/InfoCard.test.tsx b/packages/core/src/layout/InfoCard/InfoCard.test.tsx index d58fdb2ccb..f82d51fe06 100644 --- a/packages/core/src/layout/InfoCard/InfoCard.test.tsx +++ b/packages/core/src/layout/InfoCard/InfoCard.test.tsx @@ -15,8 +15,7 @@ */ import React from 'react'; -import { render } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { InfoCard } from './InfoCard'; const minProps = { @@ -28,13 +27,13 @@ const minProps = { }; describe('', () => { - it('renders without exploding', () => { - const rendered = render(wrapInTestApp()); + it('renders without exploding', async () => { + const rendered = await renderInTestApp(); expect(rendered.getByText('Some title')).toBeInTheDocument(); }); - it('renders a deepLink when prop is set', () => { - const rendered = render(wrapInTestApp()); + it('renders a deepLink when prop is set', async () => { + const rendered = await renderInTestApp(); expect(rendered.getByText('A deepLink title')).toBeInTheDocument(); }); }); diff --git a/packages/core/src/layout/TabbedCard/TabbedCard.test.tsx b/packages/core/src/layout/TabbedCard/TabbedCard.test.tsx index ceeae8d49d..89abdfdd53 100644 --- a/packages/core/src/layout/TabbedCard/TabbedCard.test.tsx +++ b/packages/core/src/layout/TabbedCard/TabbedCard.test.tsx @@ -16,7 +16,7 @@ import React from 'react'; import { render, fireEvent } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { renderInTestApp, wrapInTestApp } from '@backstage/test-utils'; import { TabbedCard, CardTab } from '.'; const minProps = { @@ -28,38 +28,32 @@ const minProps = { }; describe('', () => { - it('renders without exploding', () => { - const rendered = render( - wrapInTestApp( - - Test Content - Test Content - , - ), + it('renders without exploding', async () => { + const rendered = await renderInTestApp( + + Test Content + Test Content + , ); expect(rendered.getByText('Some title')).toBeInTheDocument(); }); - it('renders a deepLink when prop is set', () => { - const rendered = render( - wrapInTestApp( - - Test Content - Test Content - , - ), + it('renders a deepLink when prop is set', async () => { + const rendered = await renderInTestApp( + + Test Content + Test Content + , ); expect(rendered.getByText('A deepLink title')).toBeInTheDocument(); }); - it('switches tabs when clicking', () => { - const rendered = render( - wrapInTestApp( - - Test Content 1 - Test Content 2 - , - ), + it('switches tabs when clicking', async () => { + const rendered = await renderInTestApp( + + Test Content 1 + Test Content 2 + , ); expect(rendered.getByText('Test Content 1')).toBeInTheDocument(); From ed26004cd46964a47d45a964769bb8e3dcf67393 Mon Sep 17 00:00:00 2001 From: Abhishek Jakhar Date: Tue, 20 Oct 2020 08:20:35 +0530 Subject: [PATCH 2/4] fix CopyTextButton test case warnings --- .../CopyTextButton/CopyTextButton.test.tsx | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/packages/core/src/components/CopyTextButton/CopyTextButton.test.tsx b/packages/core/src/components/CopyTextButton/CopyTextButton.test.tsx index cab992e11a..07bce97d74 100644 --- a/packages/core/src/components/CopyTextButton/CopyTextButton.test.tsx +++ b/packages/core/src/components/CopyTextButton/CopyTextButton.test.tsx @@ -15,8 +15,9 @@ */ import React from 'react'; -import { render, fireEvent } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { fireEvent } from '@testing-library/react'; +import { act } from 'react-dom/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { CopyTextButton } from './CopyTextButton'; import { ApiRegistry, @@ -55,29 +56,30 @@ const apiRegistry = ApiRegistry.from([ ]); describe('', () => { - it('renders without exploding', () => { - const { getByDisplayValue } = render( - wrapInTestApp( - - - , - ), + it('renders without exploding', async () => { + const { getByDisplayValue } = await renderInTestApp( + + + , ); getByDisplayValue('mockText'); }); it('displays tooltip on click', async () => { + jest.useFakeTimers(); document.execCommand = jest.fn(); - const rendered = render( - wrapInTestApp( - - - , - ), + const rendered = await renderInTestApp( + + + , ); const button = rendered.getByTitle('mockTooltip'); fireEvent.click(button); + act(() => { + jest.runAllTimers(); + }); expect(document.execCommand).toHaveBeenCalled(); rendered.getByText('mockTooltip'); + jest.useRealTimers(); }); }); From 3783335f31255f53bc6ff788dd6e8e557e735d54 Mon Sep 17 00:00:00 2001 From: Abhishek Jakhar Date: Tue, 20 Oct 2020 08:48:35 +0530 Subject: [PATCH 3/4] fix CodeSnippet test case warnings --- .../CodeSnippet/CodeSnippet.test.tsx | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/packages/core/src/components/CodeSnippet/CodeSnippet.test.tsx b/packages/core/src/components/CodeSnippet/CodeSnippet.test.tsx index 466abe6012..7d5d4de087 100644 --- a/packages/core/src/components/CodeSnippet/CodeSnippet.test.tsx +++ b/packages/core/src/components/CodeSnippet/CodeSnippet.test.tsx @@ -15,8 +15,9 @@ */ import React from 'react'; -import { render, fireEvent } from '@testing-library/react'; -import { wrapInTestApp } from '@backstage/test-utils'; +import { fireEvent } from '@testing-library/react'; +import { act } from 'react-dom/test-utils'; +import { renderInTestApp } from '@backstage/test-utils'; import { CodeSnippet } from './CodeSnippet'; @@ -32,24 +33,24 @@ const minProps = { }; describe('', () => { - it('renders text without exploding', () => { - const { getByText } = render(wrapInTestApp()); + it('renders text without exploding', async () => { + const { getByText } = await renderInTestApp(); expect(getByText(/"Hello"/)).toBeInTheDocument(); expect(getByText(/"World"/)).toBeInTheDocument(); }); - it('renders without line numbers', () => { - const { queryByText } = render( - wrapInTestApp(), + it('renders without line numbers', async () => { + const { queryByText } = await renderInTestApp( + , ); expect(queryByText('1')).not.toBeInTheDocument(); expect(queryByText('2')).not.toBeInTheDocument(); expect(queryByText('3')).not.toBeInTheDocument(); }); - it('renders with line numbers', () => { - const { getByText } = render( - wrapInTestApp(), + it('renders with line numbers', async () => { + const { getByText } = await renderInTestApp( + , ); expect(getByText('1')).toBeInTheDocument(); expect(getByText('2')).toBeInTheDocument(); @@ -57,12 +58,17 @@ describe('', () => { }); it('copy code using button', async () => { + jest.useFakeTimers(); document.execCommand = jest.fn(); - const { getByTitle } = render( - wrapInTestApp(), + const { getByTitle } = await renderInTestApp( + , ); const button = getByTitle('Text copied to clipboard'); fireEvent.click(button); + act(() => { + jest.runAllTimers(); + }); expect(document.execCommand).toHaveBeenCalled(); + jest.useRealTimers(); }); }); From 2713f28f4461aba675048920dc58b2b979fa07cd Mon Sep 17 00:00:00 2001 From: Abhishek Jakhar Date: Tue, 20 Oct 2020 08:50:38 +0530 Subject: [PATCH 4/4] add changeset --- .changeset/funny-readers-breathe.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/funny-readers-breathe.md diff --git a/.changeset/funny-readers-breathe.md b/.changeset/funny-readers-breathe.md new file mode 100644 index 0000000000..8897b24cf6 --- /dev/null +++ b/.changeset/funny-readers-breathe.md @@ -0,0 +1,5 @@ +--- +'@backstage/core': patch +--- + +fix the warning of all the core components test cases