diff --git a/packages/frontend-test-utils/src/app/createExtensionTester.test.tsx b/packages/frontend-test-utils/src/app/createExtensionTester.test.tsx
index 7467f61c4e..9528562198 100644
--- a/packages/frontend-test-utils/src/app/createExtensionTester.test.tsx
+++ b/packages/frontend-test-utils/src/app/createExtensionTester.test.tsx
@@ -18,10 +18,10 @@ import React, { useCallback } from 'react';
import { Link } from 'react-router-dom';
import { fireEvent, screen, waitFor } from '@testing-library/react';
import {
+ ApiBlueprint,
analyticsApiRef,
configApiRef,
coreExtensionData,
- createApiExtension,
createApiFactory,
createExtension,
createExtensionDataRef,
@@ -64,8 +64,8 @@ describe('createExtensionTester', () => {
it("should fail to render an extension that doesn't output a react element", async () => {
const extension = createExtension({
...defaultDefinition,
- output: { path: coreExtensionData.routePath },
- factory: () => ({ path: '/foo' }),
+ output: [coreExtensionData.routePath],
+ factory: () => [coreExtensionData.routePath('/foo')],
});
const tester = createExtensionTester(extension);
expect(() => tester.render()).toThrowErrorMatchingInlineSnapshot(
@@ -122,7 +122,7 @@ describe('createExtensionTester', () => {
const appTitle = configApi.getOptionalString('app.title');
return (
-
{appTitle ?? 'Backstafe app'}
+ {appTitle ?? 'Backstage app'}
{config.title ?? 'Index page'}
See details
@@ -186,12 +186,14 @@ describe('createExtensionTester', () => {
// Mocking the analytics api implementation
const analyticsApiMock = new MockAnalyticsApi();
- const analyticsApiOverride = createApiExtension({
- factory: createApiFactory({
- api: analyticsApiRef,
- deps: {},
- factory: () => analyticsApiMock,
- }),
+ const analyticsApiOverride = ApiBlueprint.make({
+ params: {
+ factory: createApiFactory({
+ api: analyticsApiRef,
+ deps: {},
+ factory: () => analyticsApiMock,
+ }),
+ },
});
const indexPageExtension = createExtension({
diff --git a/packages/frontend-test-utils/src/app/createExtensionTester.tsx b/packages/frontend-test-utils/src/app/createExtensionTester.tsx
index 1f901699b1..63de46a76e 100644
--- a/packages/frontend-test-utils/src/app/createExtensionTester.tsx
+++ b/packages/frontend-test-utils/src/app/createExtensionTester.tsx
@@ -26,13 +26,13 @@ import {
ExtensionDataRef,
ExtensionDefinition,
IconComponent,
+ NavItemBlueprint,
RouteRef,
+ RouterBlueprint,
coreExtensionData,
createExtension,
createExtensionInput,
createExtensionOverrides,
- createNavItemExtension,
- createRouterExtension,
useRouteRef,
} from '@backstage/frontend-plugin-api';
import { Config, ConfigReader } from '@backstage/config';
@@ -74,30 +74,29 @@ const TestAppNavExtension = createExtension({
name: 'nav',
attachTo: { id: 'app/layout', input: 'nav' },
inputs: {
- items: createExtensionInput({
- target: createNavItemExtension.targetDataRef,
- }),
- },
- output: {
- element: coreExtensionData.reactElement,
+ items: createExtensionInput([NavItemBlueprint.dataRefs.target]),
},
+ output: [coreExtensionData.reactElement],
factory({ inputs }) {
- return {
- element: (
+ return [
+ coreExtensionData.reactElement(
+ ,
),
- };
+ ];
},
});
@@ -253,18 +252,7 @@ export class ExtensionTester {
let subjectOverride;
// attaching to app/routes to render as index route
if (subjectInternal.version === 'v1') {
- subjectOverride = createExtension({
- ...subjectInternal,
- attachTo: { id: 'app/routes', input: 'routes' },
- output: {
- ...subjectInternal.output,
- path: coreExtensionData.routePath,
- },
- factory: params => ({
- ...subjectInternal.factory(params as any),
- path: '/',
- }),
- });
+ throw new Error('The extension tester does not support v1 extensions');
} else if (subjectInternal.version === 'v2') {
subjectOverride = createExtension({
...subjectInternal,
@@ -282,6 +270,7 @@ export class ExtensionTester {
return [...parentOutput, coreExtensionData.routePath('/')];
},
});
+ (subjectOverride as any).configSchema = subjectInternal.configSchema;
} else {
throw new Error('Unsupported extension version');
}
@@ -293,11 +282,13 @@ export class ExtensionTester {
subjectOverride,
...this.#extensions.slice(1).map(extension => extension.definition),
TestAppNavExtension,
- createRouterExtension({
+ RouterBlueprint.make({
namespace: 'test',
- Component: ({ children }) => (
- {children}
- ),
+ params: {
+ Component: ({ children }) => (
+ {children}
+ ),
+ },
}),
],
}),