diff --git a/packages/core-app-api/src/apis/system/ApiProvider.test.tsx b/packages/core-app-api/src/apis/system/ApiProvider.test.tsx
index a6118f0f68..6460e12900 100644
--- a/packages/core-app-api/src/apis/system/ApiProvider.test.tsx
+++ b/packages/core-app-api/src/apis/system/ApiProvider.test.tsx
@@ -118,6 +118,10 @@ describe('ApiProvider', () => {
}).toThrow(/^API context is not available/);
}).error,
).toEqual([
+ expect.objectContaining({
+ detail: new Error('API context is not available'),
+ type: 'unhandled exception',
+ }),
expect.objectContaining({
detail: new Error('API context is not available'),
type: 'unhandled exception',
@@ -134,6 +138,10 @@ describe('ApiProvider', () => {
}).toThrow(/^API context is not available/);
}).error,
).toEqual([
+ expect.objectContaining({
+ detail: new Error('API context is not available'),
+ type: 'unhandled exception',
+ }),
expect.objectContaining({
detail: new Error('API context is not available'),
type: 'unhandled exception',
@@ -156,6 +164,10 @@ describe('ApiProvider', () => {
}).toThrow('No implementation available for apiRef{x}');
}).error,
).toEqual([
+ expect.objectContaining({
+ detail: new Error('No implementation available for apiRef{x}'),
+ type: 'unhandled exception',
+ }),
expect.objectContaining({
detail: new Error('No implementation available for apiRef{x}'),
type: 'unhandled exception',
@@ -176,6 +188,10 @@ describe('ApiProvider', () => {
}).toThrow('No implementation available for apiRef{x}');
}).error,
).toEqual([
+ expect.objectContaining({
+ detail: new Error('No implementation available for apiRef{x}'),
+ type: 'unhandled exception',
+ }),
expect.objectContaining({
detail: new Error('No implementation available for apiRef{x}'),
type: 'unhandled exception',
diff --git a/packages/core-app-api/src/app/AppManager.test.tsx b/packages/core-app-api/src/app/AppManager.test.tsx
index 3d0c47c4d5..fe8d2fa91a 100644
--- a/packages/core-app-api/src/app/AppManager.test.tsx
+++ b/packages/core-app-api/src/app/AppManager.test.tsx
@@ -639,26 +639,24 @@ describe('Integration Test', () => {
const Provider = app.getProvider();
const Router = app.getRouter();
const { error: errorLogs } = withLogCollector(() => {
- expect(() =>
- render(
-
-
-
- }>
- } />
-
-
-
- ,
- ),
- ).toThrow(
- 'Parameter :thing is duplicated in path test/:thing/some/:thing',
+ render(
+
+
+
+ }>
+ } />
+
+
+
+ ,
);
});
expect(errorLogs).toEqual([
- expect.stringContaining(
- 'The above error occurred in the component',
- ),
+ expect.objectContaining({
+ message: expect.stringContaining(
+ 'Parameter :thing is duplicated in path test/:thing/some/:thing',
+ ),
+ }),
]);
});
@@ -676,24 +674,22 @@ describe('Integration Test', () => {
const Provider = app.getProvider();
const Router = app.getRouter();
const { error: errorLogs } = withLogCollector(() => {
- expect(() =>
- render(
-
-
-
- } />
-
-
- ,
- ),
- ).toThrow(
- /^External route 'extRouteRef1' of the 'blob' plugin must be bound to a target route/,
+ render(
+
+
+
+ } />
+
+
+ ,
);
});
expect(errorLogs).toEqual([
- expect.stringContaining(
- 'The above error occurred in the component',
- ),
+ expect.objectContaining({
+ message: expect.stringMatching(
+ /^External route 'extRouteRef1' of the 'blob' plugin must be bound to a target route/,
+ ),
+ }),
]);
});
diff --git a/packages/core-app-api/src/routing/FlatRoutes.beta.test.tsx b/packages/core-app-api/src/routing/FlatRoutes.beta.test.tsx
index 30be04d2d4..8d4d10c52a 100644
--- a/packages/core-app-api/src/routing/FlatRoutes.beta.test.tsx
+++ b/packages/core-app-api/src/routing/FlatRoutes.beta.test.tsx
@@ -56,7 +56,7 @@ function makeRouteRenderer(node: ReactNode) {
);
if (rendered) {
rendered.unmount();
- rendered.rerender(content);
+ rendered = render(content);
} else {
rendered = render(content);
}
diff --git a/packages/core-app-api/src/routing/FlatRoutes.compat.test.tsx b/packages/core-app-api/src/routing/FlatRoutes.compat.test.tsx
index 5d2ca15672..c32b306387 100644
--- a/packages/core-app-api/src/routing/FlatRoutes.compat.test.tsx
+++ b/packages/core-app-api/src/routing/FlatRoutes.compat.test.tsx
@@ -83,7 +83,7 @@ describe.each(['beta', 'stable'])('FlatRoutes %s', rrVersion => {
);
if (rendered) {
rendered.unmount();
- rendered.rerender(content);
+ rendered = render(content);
} else {
rendered = render(content);
}
diff --git a/packages/core-app-api/src/routing/FlatRoutes.stable.test.tsx b/packages/core-app-api/src/routing/FlatRoutes.stable.test.tsx
index 93297edc4c..ece6c22ff2 100644
--- a/packages/core-app-api/src/routing/FlatRoutes.stable.test.tsx
+++ b/packages/core-app-api/src/routing/FlatRoutes.stable.test.tsx
@@ -56,7 +56,7 @@ function makeRouteRenderer(node: ReactNode) {
);
if (rendered) {
rendered.unmount();
- rendered.rerender(content);
+ rendered = render(content);
} else {
rendered = render(content);
}
diff --git a/packages/core-components/src/components/TabbedLayout/TabbedLayout.test.tsx b/packages/core-components/src/components/TabbedLayout/TabbedLayout.test.tsx
index f5a059d615..c7109686d5 100644
--- a/packages/core-components/src/components/TabbedLayout/TabbedLayout.test.tsx
+++ b/packages/core-components/src/components/TabbedLayout/TabbedLayout.test.tsx
@@ -48,6 +48,11 @@ describe('TabbedLayout', () => {
});
expect(error).toEqual([
+ expect.objectContaining({
+ detail: new Error(
+ 'Child of TabbedLayout must be an TabbedLayout.Route',
+ ),
+ }),
expect.objectContaining({
detail: new Error(
'Child of TabbedLayout must be an TabbedLayout.Route',
diff --git a/packages/core-components/src/layout/ErrorBoundary/ErrorBoundary.test.tsx b/packages/core-components/src/layout/ErrorBoundary/ErrorBoundary.test.tsx
index 6a16224a02..8bfb228f53 100644
--- a/packages/core-components/src/layout/ErrorBoundary/ErrorBoundary.test.tsx
+++ b/packages/core-components/src/layout/ErrorBoundary/ErrorBoundary.test.tsx
@@ -67,6 +67,9 @@ describe('', () => {
});
expect(error).toEqual([
+ expect.objectContaining({
+ detail: new Error('Bomb'),
+ }),
expect.objectContaining({
detail: new Error('Bomb'),
}),
@@ -75,6 +78,6 @@ describe('', () => {
),
expect.stringMatching(/^ErrorBoundary/),
]);
- expect(error.length).toEqual(3);
+ expect(error.length).toEqual(4);
});
});
diff --git a/packages/core-components/src/layout/HeaderTabs/HeaderTabs.test.tsx b/packages/core-components/src/layout/HeaderTabs/HeaderTabs.test.tsx
index ce5c572eef..0d5f3d5586 100644
--- a/packages/core-components/src/layout/HeaderTabs/HeaderTabs.test.tsx
+++ b/packages/core-components/src/layout/HeaderTabs/HeaderTabs.test.tsx
@@ -19,6 +19,8 @@ import Badge from '@material-ui/core/Badge';
import { makeStyles } from '@material-ui/core/styles';
import React from 'react';
import { HeaderTabs } from './HeaderTabs';
+import { act } from 'react-dom/test-utils';
+import userEvent from '@testing-library/user-event';
const mockTabs = [
{ id: 'overview', label: 'Overview' },
@@ -41,7 +43,7 @@ describe('', () => {
'false',
);
- rendered.getByText('Docs').click();
+ await act(() => userEvent.click(rendered.getByText('Docs')));
expect(rendered.getByText('Docs').parentElement).toHaveAttribute(
'aria-selected',
diff --git a/packages/frontend-app-api/src/routing/RouteResolver.test.ts b/packages/frontend-app-api/src/routing/RouteResolver.test.ts
index ef7a438734..e37ee14929 100644
--- a/packages/frontend-app-api/src/routing/RouteResolver.test.ts
+++ b/packages/frontend-app-api/src/routing/RouteResolver.test.ts
@@ -26,9 +26,8 @@ import { BackstagePlugin } from '@backstage/core-plugin-api';
import { RouteResolver } from './RouteResolver';
import { MATCH_ALL_ROUTE } from './extractRouteInfoFromInstanceTree';
-const element = () => null;
const rest = {
- element,
+ element: null,
caseSensitive: false,
children: [MATCH_ALL_ROUTE],
plugins: new Set(),
diff --git a/packages/test-utils/src/testUtils/appWrappers.test.tsx b/packages/test-utils/src/testUtils/appWrappers.test.tsx
index 19bdc15a48..79327afc0b 100644
--- a/packages/test-utils/src/testUtils/appWrappers.test.tsx
+++ b/packages/test-utils/src/testUtils/appWrappers.test.tsx
@@ -92,6 +92,11 @@ describe('wrapInTestApp', () => {
});
expect(error).toEqual([
+ expect.objectContaining({
+ detail: new Error(
+ 'MockErrorApi received unexpected error, Error: NOPE',
+ ),
+ }),
expect.objectContaining({
detail: new Error(
'MockErrorApi received unexpected error, Error: NOPE',