Patrik Oldsberg
a0de7cf2b7
Merge pull request #31933 from backstage/upgrade-jsdom
...
chore: upgrade jsdom to v27 and Jest to v30
2025-12-15 16:01:01 +01:00
Patrik Oldsberg
9b8bde47d1
frontend-plugin-api: remove unnecessary dependencies
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-12-12 14:39:24 +01:00
Johan Persson
cd0b8a11a3
chore: make jest a peer dependency with v29/v30 support
...
Move jest from dependencies to peer dependencies, allowing users to
choose between Jest 29 and Jest 30.
The CLI now detects the Jest version at runtime and uses the
appropriate environment:
- Jest 29: Uses standard jest-environment-jsdom
- Jest 30: Uses a custom environment based on @jest/environment-jsdom-abstract
with fixes for Web API globals (fetch, streams, Error, etc.)
The cross-fetch polyfill is only injected for Jest 29, as with Jest 30+
our patched Jest environment is used. The network request blocker is made
MSW-compatible by checking if fetch was wrapped before blocking.
Jest 30 (with jsdom v27) fixes `Could not parse CSS stylesheet`
warnings/errors when testing components from @backstage/ui or other
packages using CSS `@layer` declarations.
New peer dependencies (install based on your Jest version):
- jest (required, ^29 or ^30)
- Jest 29 requires: jest-environment-jsdom
- Jest 30 requires: @jest/environment-jsdom-abstract, jsdom
Production code changes for jsdom 27 testability:
- AppIdentityProxy: extract navigateToUrl method for spying
- LiveReloadAddon: export utils.reloadPage for spying
- collect.ts: export internal.resolvePackagePath for mocking
MockFetchApi: evaluate global.fetch at call time instead of construction
time, allowing MSW to patch fetch after MockFetchApi is constructed.
Test adaptations for jsdom 27:
- Use RGB values instead of named colors in CSS assertions
- Update error format expectations (hyphenated type names, SyntaxError
instead of FetchError for JSON parse errors)
- Simplify URL error assertions for cross-version compatibility
- Fix accessible name whitespace handling for external links
- Use history.replaceState for location mocking (non-configurable)
- Use fireEvent.blur for contentEditable elements
- Move async assertions inside waitFor for race conditions
- Remove Blob.prototype.text polyfill (now native)
- Remove test case using credentials in plugin:// URLs
Test adaptations for Jest 30:
- Replace `expect.objectContaining([...])` with direct array equality
- Replace `expect.objectContaining({ length: N })` with
`expect.any(Array)` + separate `toHaveLength()` assertions
- Use child process for native Node.js module resolution in
collect.test.ts to work around Jest 30's resolver behavior
- Update snapshot headers for new Jest format
Also removes the jest-haste-map patch which is no longer needed.
Signed-off-by: Johan Persson <johanopersson@gmail.com >
2025-12-11 18:06:55 +01:00
Patrik Oldsberg
75683ed6c0
frontend-plugin-api: new error boundary API option + boundary for app root elements
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-12-08 16:06:08 +01:00
Fredrik Adelöw
f3f84f1e4b
make .withOverrides have a simplified result type
...
Signed-off-by: Fredrik Adelöw <freben@gmail.com >
2025-12-03 16:51:12 +01:00
Patrik Oldsberg
debd56dcf2
frontend-plugin-api: copy SignInPageProps
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-11-23 12:43:21 +01:00
Patrik Oldsberg
5fc53cb298
{core,frontend}-plugin-api: inverse dependency
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-11-23 01:59:06 +01:00
Patrik Oldsberg
0bc1ce919e
frontend-plugin-api: fix input incompatibility crash
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-11-19 17:42:16 +01:00
Patrik Oldsberg
83439b1539
core-plugin-api: add forwards compatibility for route refs
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-11-18 10:26:20 +01:00
Patrik Oldsberg
4d03f08d19
frontend-plugin-api: refactor to use opaque type for route refs
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-11-18 10:26:20 +01:00
Patrik Oldsberg
7d87b4f6ad
frontend-plugin-api: add OverridableExtensionDefinition
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-11-17 10:35:43 +01:00
Patrik Oldsberg
c6b9f50337
frontend-plugin-api: type safe attachTo references
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-11-11 09:41:23 -05:00
Patrik Oldsberg
8b84f39946
frontend-plugin-api: runtime attachTo by reference
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-11-08 19:01:10 +01:00
Patrik Oldsberg
7c6a66dd9f
frontend-plugin-api: add support for relative attachments
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-11-08 11:26:08 +01:00
Patrik Oldsberg
878c25146c
frontend-plugin-api: make ExtensionInput type parameters optional
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-11-03 22:36:53 +01:00
Paul Schultz
05f60e1e0a
refactor: convert constructor parameter properties for erasableSyntaxOnly compatibility
...
Signed-off-by: Paul Schultz <pschultz@pobox.com >
2025-10-14 08:29:21 -05:00
Vincenzo Scamporlino
e557c5da94
Merge pull request #31353 from backstage/fix/not-found
...
NFS: fixed Not found page when a page extension is mounted on /
2025-10-13 16:14:35 +02:00
Vincenzo Scamporlino
1c43d5a7c7
frontend-plugin-api: minor expect improvements
...
Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com >
2025-10-13 15:16:55 +02:00
Vincenzo Scamporlino
898859f41b
frontend-plugin-api: migrate to renderTestApp
...
Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com >
2025-10-07 21:45:03 +02:00
Patrik Oldsberg
8ed53eb466
frontend-plugin-api: add coreExtensionData.title
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-09-16 01:02:26 +02:00
Patrik Oldsberg
d18818be84
Merge pull request #31082 from backstage/rugvip/errors
...
frontend-app-api: new error handling for app startup
2025-09-15 17:14:48 +02:00
Patrik Oldsberg
4907da392a
frontend-test-utils: updated to use and report errors via error collector
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-09-08 12:38:36 +02:00
Yannik Daellenbach
f6309a56d9
Forward openshiftAuthApiRef to the new frontend system
...
Signed-off-by: Yannik Daellenbach <git@daellenbach.org >
2025-09-02 14:08:17 +02:00
Patrik Oldsberg
2fb8b04f79
frontend-plugin-api: improve type errors for createFrontend{Plugin,Module}
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-08-31 10:21:44 +02:00
Patrik Oldsberg
12b6db78eb
frontend-plugin-api: add OverridableFrontendPlugin type
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-08-15 20:29:04 +02:00
benjdlambert
d274e0c90e
feat: updating name for default swappable refs
...
Signed-off-by: benjdlambert <ben@blam.sh >
2025-08-11 13:41:27 +02:00
Camila Belo
89d587026c
Merge pull request #30816 from backstage/camilaibs/make-app-node-spec-plugin-required
...
[NFS] frontend-plugin-api: make app spec plugin required
2025-08-11 10:33:34 +02:00
Patrik Oldsberg
3bc9c96572
frontend-plugin-api: tsdoc review fixes
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-08-08 16:48:47 +02:00
Patrik Oldsberg
bd55cc941f
frontend-plugin-api: TsDoc for createFrontendModule
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-08-08 15:09:50 +02:00
Patrik Oldsberg
5a29c86a92
frontend-plugin-api: TsDoc for createFrontendPlugin
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-08-08 15:09:50 +02:00
Patrik Oldsberg
f416e9f499
frontend-plugin-api: TsDoc for createExtensionBlueprint
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-08-08 15:09:50 +02:00
Patrik Oldsberg
d84d3e3892
frontend-plugin-api: TsDoc for createExtension
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-08-08 15:09:50 +02:00
Fredrik Adelöw
10bb855e1c
Merge pull request #30813 from backstage/freben/advanced-options
...
Arrange most `create[Specialized]App` options into an `advanced` field
2025-08-08 15:09:05 +02:00
Patrik Oldsberg
3588639a53
Merge pull request #30838 from backstage/rugvip/maybe
...
frontend-plugin-api: tweak return type of createSwappableComponent
2025-08-08 14:57:40 +02:00
Patrik Oldsberg
ad43c95ecd
Merge pull request #30828 from backstage/rugvip/nfs-type-cleanup
...
frontend-plugin-api: stop exporting ResolveInputValueOverrides
2025-08-08 14:48:30 +02:00
Patrik Oldsberg
1cf1e141d7
frontend-plugin-api: tweak return type of createSwappableComponent
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-08-08 14:43:34 +02:00
Ben Lambert
92827cbd98
Merge pull request #30750 from backstage/mob/component-refs-wth
...
`nfs(componentRefs)`: Reworking how Component Refs are defined and used
2025-08-08 12:52:36 +02:00
benjdlambert
e0fd7f4046
chore: overriden -> overridden
...
Signed-off-by: benjdlambert <ben@blam.sh >
2025-08-08 12:10:15 +02:00
benjdlambert
f4b9fd74ca
chore: some changeset tweaks a few other changes
...
Signed-off-by: benjdlambert <ben@blam.sh >
2025-08-08 12:08:23 +02:00
Patrik Oldsberg
f433c72b52
frontend-plugin-api: rename to ResolvedInputValueOverrides
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-08-07 17:28:32 +02:00
Patrik Oldsberg
1e6410b770
frontend-plugin-api: stop exporting ResolveInputValueOverrides
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-08-07 17:26:16 +02:00
benjdlambert
8a19aba608
chore: add deps
...
Signed-off-by: benjdlambert <ben@blam.sh >
2025-08-07 17:12:46 +02:00
Patrik Oldsberg
bcf1ac06b6
Merge pull request #30822 from backstage/rugvip/noid
...
frontend-plugin-api: remove deprecated variant of createFrontendPlugin
2025-08-07 16:50:21 +02:00
benjdlambert
de3ad4aced
chore: fixing tests
...
Signed-off-by: benjdlambert <ben@blam.sh >
2025-08-07 16:49:07 +02:00
Patrik Oldsberg
6a75e00b14
frontend-plugin-api: remove deprecated variant of createFrontendPlugin
...
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com >
2025-08-07 16:34:40 +02:00
benjdlambert
20f1d88971
chore: some more refactor to get ready for shipping
...
Signed-off-by: benjdlambert <ben@blam.sh >
2025-08-07 15:58:03 +02:00
benjdlambert
75ea6f14c5
feat: refactor to error display instead
...
Signed-off-by: benjdlambert <ben@blam.sh >
2025-08-07 15:58:03 +02:00
benjdlambert
4b3ba2b048
chore: make more things swoppable
...
Signed-off-by: benjdlambert <ben@blam.sh >
Signed-off-by: benjdlambert <ben@blam.sh >
2025-08-07 15:58:03 +02:00
benjdlambert
d996f05ae5
chore: adaptable -> swappable
...
Signed-off-by: benjdlambert <ben@blam.sh >
Signed-off-by: benjdlambert <ben@blam.sh >
2025-08-07 15:58:03 +02:00
benjdlambert
3a34fb4cc7
chore: fixing types
...
Signed-off-by: benjdlambert <ben@blam.sh >
2025-08-07 15:58:03 +02:00