diff --git a/packages/frontend-test-utils/api-report.md b/packages/frontend-test-utils/api-report.md new file mode 100644 index 0000000000..c5afb3204d --- /dev/null +++ b/packages/frontend-test-utils/api-report.md @@ -0,0 +1,32 @@ +## API Report File for "@backstage/frontend-test-utils" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +import { Extension } from '@backstage/frontend-plugin-api'; +import { JsonObject } from '@backstage/types'; +import { RenderResult } from '@testing-library/react'; + +// @public (undocumented) +export function createExtensionTester( + subject: Extension, + options?: { + config?: TConfig; + }, +): ExtensionTester; + +// @public (undocumented) +export class ExtensionTester { + // (undocumented) + add( + extension: Extension, + options?: { + config?: TConfig; + }, + ): ExtensionTester; + // (undocumented) + render(options?: { config?: JsonObject }): Promise; +} + +// (No @packageDocumentation comment for this package) +``` diff --git a/packages/frontend-test-utils/package.json b/packages/frontend-test-utils/package.json index 064e996f82..b3438aa15f 100644 --- a/packages/frontend-test-utils/package.json +++ b/packages/frontend-test-utils/package.json @@ -35,5 +35,8 @@ "@backstage/test-utils": "workspace:^", "@backstage/types": "workspace:^", "@testing-library/react": "^14.0.0" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0 || ^18.0.0" } } diff --git a/packages/frontend-test-utils/src/app/createExtensionTester.ts b/packages/frontend-test-utils/src/app/createExtensionTester.ts index 211c7bb69a..c2d14d6a06 100644 --- a/packages/frontend-test-utils/src/app/createExtensionTester.ts +++ b/packages/frontend-test-utils/src/app/createExtensionTester.ts @@ -14,13 +14,14 @@ * limitations under the License. */ -import { createApp } from '@backstage/frontend-app-api'; +import { createSpecializedApp } from '@backstage/frontend-app-api'; import { Extension, createPlugin } from '@backstage/frontend-plugin-api'; import { MockConfigApi } from '@backstage/test-utils'; import { JsonArray, JsonObject, JsonValue } from '@backstage/types'; -import { RenderResult, render, waitFor } from '@testing-library/react'; +import { RenderResult, render } from '@testing-library/react'; -class ExtensionTester { +/** @public */ +export class ExtensionTester { /** @internal */ static forSubject( subject: Extension, @@ -90,25 +91,21 @@ class ExtensionTester { }, }; - const app = createApp({ + const app = createSpecializedApp({ features: [ createPlugin({ id: 'test', extensions: this.#extensions.map(entry => entry.extension), }), ], - configLoader: async () => new MockConfigApi(finalConfig), + config: new MockConfigApi(finalConfig), }); - const result = render(app.createRoot()); - await waitFor(() => - // eslint-disable-next-line jest/no-standalone-expect - expect(result.queryByText('Loading...')).not.toBeInTheDocument(), - ); - return result; + return render(app.createRoot()); } } +/** @public */ export function createExtensionTester( subject: Extension, options?: { config?: TConfig }, diff --git a/packages/frontend-test-utils/src/app/index.ts b/packages/frontend-test-utils/src/app/index.ts index caefbfd697..3152fac6e7 100644 --- a/packages/frontend-test-utils/src/app/index.ts +++ b/packages/frontend-test-utils/src/app/index.ts @@ -14,4 +14,7 @@ * limitations under the License. */ -export { createExtensionTester } from './createExtensionTester'; +export { + createExtensionTester, + type ExtensionTester, +} from './createExtensionTester'; diff --git a/yarn.lock b/yarn.lock index 3121aa5326..0bfa28f06c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4345,7 +4345,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/frontend-test-utils@workspace:packages/frontend-test-utils": +"@backstage/frontend-test-utils@workspace:^, @backstage/frontend-test-utils@workspace:packages/frontend-test-utils": version: 0.0.0-use.local resolution: "@backstage/frontend-test-utils@workspace:packages/frontend-test-utils" dependencies: @@ -4356,6 +4356,8 @@ __metadata: "@backstage/types": "workspace:^" "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 + peerDependencies: + react: ^16.13.1 || ^17.0.0 || ^18.0.0 languageName: unknown linkType: soft