From cf9de85bb3da24447f793f7d24433254bade6d2f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 28 May 2026 12:32:05 +0000 Subject: [PATCH 1/8] fix(deps): update digdir design system to v1.15.0 --- package.json | 4 +- yarn.lock | 142 +++++++++++++++++++++++++++++---------------------- 2 files changed, 82 insertions(+), 64 deletions(-) diff --git a/package.json b/package.json index dd06d561e7..a95aca75b7 100644 --- a/package.json +++ b/package.json @@ -122,8 +122,8 @@ }, "dependencies": { "@date-fns/tz": "1.4.1", - "@digdir/designsystemet-css": "1.11.1", - "@digdir/designsystemet-react": "1.11.1", + "@digdir/designsystemet-css": "1.15.0", + "@digdir/designsystemet-react": "1.15.0", "@navikt/aksel-icons": "8.10.5", "@tanstack/react-query": "5.100.10", "@terraformer/wkt": "2.2.1", diff --git a/yarn.lock b/yarn.lock index d6c5278d01..e3d2f432e6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2108,40 +2108,51 @@ __metadata: languageName: node linkType: hard -"@digdir/designsystemet-css@npm:1.11.1": - version: 1.11.1 - resolution: "@digdir/designsystemet-css@npm:1.11.1" +"@digdir/designsystemet-css@npm:1.15.0": + version: 1.15.0 + resolution: "@digdir/designsystemet-css@npm:1.15.0" dependencies: - "@digdir/designsystemet-types": "npm:^1.11.1" - checksum: 10c0/59e4e1b739a55ea41c18f114c21b3affba2a2209c4a8a353ace7721bffb7441e20e603edd031087f78871c1073aeec380688b3c203c24452d9e9a82fb6a8d6bc + "@digdir/designsystemet-types": "npm:1.15.0" + checksum: 10c0/8b6722e99d9a0217a71a6c529b5f86f0109e2705ac297e35701a5d819e0102c1929cc64a66feb5113f65348d38ec3df7910af87379cb1ba34023626922c40647 languageName: node linkType: hard -"@digdir/designsystemet-react@npm:1.11.1": - version: 1.11.1 - resolution: "@digdir/designsystemet-react@npm:1.11.1" +"@digdir/designsystemet-react@npm:1.15.0": + version: 1.15.0 + resolution: "@digdir/designsystemet-react@npm:1.15.0" dependencies: - "@digdir/designsystemet-types": "npm:^1.11.1" - "@floating-ui/dom": "npm:^1.7.5" + "@digdir/designsystemet-types": "npm:1.15.0" + "@digdir/designsystemet-web": "npm:1.15.0" + "@floating-ui/dom": "npm:^1.7.6" "@floating-ui/react": "npm:0.26.23" - "@navikt/aksel-icons": "npm:^8.2.0" + "@navikt/aksel-icons": "npm:^8.10.5" "@radix-ui/react-slot": "npm:^1.2.4" - "@tanstack/react-virtual": "npm:^3.13.18" - "@u-elements/u-combobox": "npm:^1.0.7" - "@u-elements/u-datalist": "npm:^1.1.0" - "@u-elements/u-details": "npm:^0.1.5" + "@tanstack/react-virtual": "npm:^3.13.24" clsx: "npm:^2.1.1" peerDependencies: react: ">=18.3.1 || ^19.0.0" react-dom: ">=18.3.1 || ^19.0.0" - checksum: 10c0/77fa75942604990051cd82b50e68b4020571c1e0b3cf55de82802ab1e0f9fdb9988a217e418bcebb579b191f19badc3e086dbf73e299715cfe8e6e0804bc308e + checksum: 10c0/45ff9088aa46c9274d2f97d1c9bf96a16bca28bafe97134541c49b855f151f868fe825feb28debb674cb3984856a5fa94a602cf378d0d9e4b0946b315034f773 languageName: node linkType: hard -"@digdir/designsystemet-types@npm:^1.11.1": - version: 1.12.1 - resolution: "@digdir/designsystemet-types@npm:1.12.1" - checksum: 10c0/91f349e666a2d2f7471d3fd03c66489ea5e47754c04d58e810a154f1b949f3c82c05fefd9a715f6ddb90bb5ef277fe2a4f935c5bf434cd76791cc6de08b5fd8c +"@digdir/designsystemet-types@npm:1.15.0": + version: 1.15.0 + resolution: "@digdir/designsystemet-types@npm:1.15.0" + checksum: 10c0/672e73e95a60da80cbcefab8838003947849d8edd7ecc37af6e4de074592846f77e6fad92deccb19479c12e7833a2c25f9447b3be42738ecf3ed4a1d93869bc4 + languageName: node + linkType: hard + +"@digdir/designsystemet-web@npm:1.15.0": + version: 1.15.0 + resolution: "@digdir/designsystemet-web@npm:1.15.0" + dependencies: + "@floating-ui/dom": "npm:^1.7.6" + "@u-elements/u-combobox": "npm:^2.0.4" + "@u-elements/u-datalist": "npm:^2.0.1" + "@u-elements/u-details": "npm:^1.0.0" + "@u-elements/u-tabs": "npm:^1.0.3" + checksum: 10c0/74e69f1ef410ac6f0622f696b299d42c19ab553d439920849a0a2c31a20a90d49ffb06dbff2d698002097c4b147c8a487e65dd26d55610dc499cdf59537f78ab languageName: node linkType: hard @@ -2668,12 +2679,12 @@ __metadata: languageName: node linkType: hard -"@floating-ui/core@npm:^1.7.4": - version: 1.7.4 - resolution: "@floating-ui/core@npm:1.7.4" +"@floating-ui/core@npm:^1.7.5": + version: 1.7.5 + resolution: "@floating-ui/core@npm:1.7.5" dependencies: - "@floating-ui/utils": "npm:^0.2.10" - checksum: 10c0/b1175d92c0edbd0053c4ba014ad1f798ccc107de87a43a099e97af6265610cc25ef600f2b15d3763d39a79f7d36db11fcb84d0c28027beb3317e13a7ba197516 + "@floating-ui/utils": "npm:^0.2.11" + checksum: 10c0/f9c52205e198b231d63a387b09c659aab08c46a1899e0b0bbe147b8b4f048b546f15ba17cb5d2a471da9534f1883d979425e13e5c4ceee67be63e4b0abd4db5d languageName: node linkType: hard @@ -2687,13 +2698,13 @@ __metadata: languageName: node linkType: hard -"@floating-ui/dom@npm:^1.7.5": - version: 1.7.5 - resolution: "@floating-ui/dom@npm:1.7.5" +"@floating-ui/dom@npm:^1.7.6": + version: 1.7.6 + resolution: "@floating-ui/dom@npm:1.7.6" dependencies: - "@floating-ui/core": "npm:^1.7.4" - "@floating-ui/utils": "npm:^0.2.10" - checksum: 10c0/94bd262127fbf1177e542f4908cb07c17392782b1ca0ab9f2dfd7e102cabcc77b4de807847304dcb4c864d4b48e8ba292b27cdcfaca3ad4e3525ab397b766a3a + "@floating-ui/core": "npm:^1.7.5" + "@floating-ui/utils": "npm:^0.2.11" + checksum: 10c0/5c098e0d7b58c9bc769f276cca1766994c2c9c70c92d091a61bba8b3e9be53c011e0a79a8457fc2fb2f3d91697a26eb52e0a4962ef936dc963b45f58613c212f languageName: node linkType: hard @@ -2723,10 +2734,10 @@ __metadata: languageName: node linkType: hard -"@floating-ui/utils@npm:^0.2.10": - version: 0.2.10 - resolution: "@floating-ui/utils@npm:0.2.10" - checksum: 10c0/e9bc2a1730ede1ee25843937e911ab6e846a733a4488623cd353f94721b05ec2c9ec6437613a2ac9379a94c2fd40c797a2ba6fa1df2716f5ce4aa6ddb1cf9ea4 +"@floating-ui/utils@npm:^0.2.11": + version: 0.2.11 + resolution: "@floating-ui/utils@npm:0.2.11" + checksum: 10c0/f4bcea1559bdbb721ecc8e8ead423ac58d6a5b6e70b602cf0810ba6ad4ed1c77211b207faa88b278a9042f0c743133de08a203ed6741c1b6443423332884d5b3 languageName: node linkType: hard @@ -3538,10 +3549,10 @@ __metadata: languageName: node linkType: hard -"@navikt/aksel-icons@npm:^8.2.0": - version: 8.6.0 - resolution: "@navikt/aksel-icons@npm:8.6.0" - checksum: 10c0/fb6b54edb594f440db8d3ba93822f31e7c589ca1c2a8ccb49b5ff2f699a52faa77e692a981e0f5a98b339df7a8e130654517ff00e278c98953570a36ca3c2089 +"@navikt/aksel-icons@npm:^8.10.5": + version: 8.11.0 + resolution: "@navikt/aksel-icons@npm:8.11.0" + checksum: 10c0/86facf0f914164d1f3e7e298a80058bdc3ab16c6a40b8e197d07a1789e752c38ced953a78a4b232446bf4b68d658a6f3f4a8bdeae4b0ccbb5ba68039c78eadb4 languageName: node linkType: hard @@ -4497,22 +4508,22 @@ __metadata: languageName: node linkType: hard -"@tanstack/react-virtual@npm:^3.13.18": - version: 3.13.19 - resolution: "@tanstack/react-virtual@npm:3.13.19" +"@tanstack/react-virtual@npm:^3.13.24": + version: 3.13.26 + resolution: "@tanstack/react-virtual@npm:3.13.26" dependencies: - "@tanstack/virtual-core": "npm:3.13.19" + "@tanstack/virtual-core": "npm:3.16.0" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - checksum: 10c0/3b3d512590980ac609b1b319948c0a3f75f4ffa28677329d3dca6bd1fa3b15a88ea4229e45e4f3803cfd97a3c587ab4a7d9f016ddf7ea8f02be3c76f86fcf993 + checksum: 10c0/f993dd0de6566c0f78d58a8183d9fad248c9a6ddf37e8572ea9cbb2a8635da16a368bfb7d44b8a84f6cd23fe927e96b9215927c14ef8381e2da8ed9e02f8e3be languageName: node linkType: hard -"@tanstack/virtual-core@npm:3.13.19": - version: 3.13.19 - resolution: "@tanstack/virtual-core@npm:3.13.19" - checksum: 10c0/7bcff6560902e157bec2753d009288bc3be0251a9762532cb2f43f9e9fb9b5d9a2d441eba87e0463c7a891e5966b9cfda88555d428149f6a7a54a65e66ba6726 +"@tanstack/virtual-core@npm:3.16.0": + version: 3.16.0 + resolution: "@tanstack/virtual-core@npm:3.16.0" + checksum: 10c0/03016cf464108ce8354d44d89393442e2457e0539933ee5af56691e76c0a351e268faf4f619395c5fabd3f2e4c23e5fc963b7f359d22805f2164be2403d2803e languageName: node linkType: hard @@ -5374,24 +5385,31 @@ __metadata: languageName: node linkType: hard -"@u-elements/u-combobox@npm:^1.0.7": - version: 1.0.7 - resolution: "@u-elements/u-combobox@npm:1.0.7" - checksum: 10c0/4a6d5c02946db27827a18ab4d6703820e11ef46dc66abed287cbf0a2c945db241d00731c64b828dbf3ebb9f33827d900561e09c8b1ceeacbc6f47ef0c2acd4c8 +"@u-elements/u-combobox@npm:^2.0.4": + version: 2.0.4 + resolution: "@u-elements/u-combobox@npm:2.0.4" + checksum: 10c0/e88030f2f7993e52a4d50d9f48c4240a29a2164ca24fa99ea562c6cdb8620dc7101c771649fab4d8ae2ecf4f7b8ededa3cbb1db389b48d18ae2d254bcc34a710 languageName: node linkType: hard -"@u-elements/u-datalist@npm:^1.1.0": - version: 1.1.0 - resolution: "@u-elements/u-datalist@npm:1.1.0" - checksum: 10c0/7aa76ad961bc11ea87be7b8589b990fc4066aae53a82691131d1afeb9511f261541fc0760e624c203f50ceb72796caa8204660f0add2c57508125ad918b935ca +"@u-elements/u-datalist@npm:^2.0.1": + version: 2.0.1 + resolution: "@u-elements/u-datalist@npm:2.0.1" + checksum: 10c0/77fec73e0afd07486dd70b12ddb14877349015e8a4d015c4b5523c38ebc2bf9015014e2775d54c67682f5c14820ecd357404b3de939372957457113d29a2d211 languageName: node linkType: hard -"@u-elements/u-details@npm:^0.1.5": - version: 0.1.5 - resolution: "@u-elements/u-details@npm:0.1.5" - checksum: 10c0/285342d86f8c4b9503ca707a368f07ef43d0d6370869098b59e1147c067fd0f475b0662a877a88a6a135c74624fc918971050f0715af67c0a2a88022fa85dbc0 +"@u-elements/u-details@npm:^1.0.0": + version: 1.0.0 + resolution: "@u-elements/u-details@npm:1.0.0" + checksum: 10c0/688df3e9657139bf506c81d70bd6aedf06a1619b1bbb78dd02f1b65a20765fa727fc7d577f513184f9cf563b658057ca44004a2703d1f14d71301a706849f1a2 + languageName: node + linkType: hard + +"@u-elements/u-tabs@npm:^1.0.3": + version: 1.0.3 + resolution: "@u-elements/u-tabs@npm:1.0.3" + checksum: 10c0/edaaabbaaa36afe7f7e2658e3fb3d87150dfbc69b6c6975f46eee839fce6f21f03d9f4840e6935d0523c5aa1436a56c6672033029d0fa53e6f8131a536b60260 languageName: node linkType: hard @@ -6021,8 +6039,8 @@ __metadata: "@babel/runtime": "npm:7.29.2" "@babel/runtime-corejs3": "npm:7.29.2" "@date-fns/tz": "npm:1.4.1" - "@digdir/designsystemet-css": "npm:1.11.1" - "@digdir/designsystemet-react": "npm:1.11.1" + "@digdir/designsystemet-css": "npm:1.15.0" + "@digdir/designsystemet-react": "npm:1.15.0" "@eslint/compat": "npm:2.1.0" "@eslint/js": "npm:^10.0.1" "@navikt/aksel-icons": "npm:8.10.5" From 0c1595cde91724619be48c7701ae2e825422e802 Mon Sep 17 00:00:00 2001 From: Magnus Revheim Martinsen Date: Fri, 29 May 2026 10:42:50 +0200 Subject: [PATCH 2/8] fix unit tests --- .../instantiate/containers/UnknownError.test.tsx | 9 +++++++-- src/layout/Accordion/Accordion.test.tsx | 8 ++++---- src/setupTests.ts | 5 +++++ 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/features/instantiate/containers/UnknownError.test.tsx b/src/features/instantiate/containers/UnknownError.test.tsx index 599c1be9dd..fec2c453dd 100644 --- a/src/features/instantiate/containers/UnknownError.test.tsx +++ b/src/features/instantiate/containers/UnknownError.test.tsx @@ -31,8 +31,13 @@ describe('Unknown error', () => { expect(console.error).not.toHaveBeenCalled(); - const showDetailsButton = screen.getByRole('button', { name: 'Vis detaljer om feilen' }); - await user.click(showDetailsButton); + const detailsGroup = screen.getByRole('group'); + expect(detailsGroup).toHaveTextContent('Vis detaljer om feilen'); + const summary = detailsGroup.querySelector('summary'); + if (!summary) { + throw new Error('Expected a inside the details group'); + } + await user.click(summary); expect(screen.getByText('Error test message')).toBeInTheDocument(); const writeTextMock = jest.spyOn(navigator.clipboard, 'writeText').mockResolvedValue(); diff --git a/src/layout/Accordion/Accordion.test.tsx b/src/layout/Accordion/Accordion.test.tsx index 49aac58edd..6df8a15d34 100644 --- a/src/layout/Accordion/Accordion.test.tsx +++ b/src/layout/Accordion/Accordion.test.tsx @@ -9,23 +9,23 @@ describe('Accordion', () => { it('should display text from textResourceBindings', async () => { await render({ title: 'Accordion title' }); - expect(await screen.findByRole('button', { name: /accordion title/i })).toBeInTheDocument(); + expect(await screen.findByRole('group')).toHaveTextContent(/accordion title/i); }); it('should display text from textResourceBindings if an ID to a text resource is used as title', async () => { await render({ title: 'accordion.title' }); - expect(await screen.findByRole('button', { name: /this is a title/i })).toBeInTheDocument(); + expect(await screen.findByRole('group')).toHaveTextContent(/this is a title/i); }); it('should open accordion by default if openByDefault is set to true', async () => { await render({ openByDefault: true, title: 'accordion.title' }); - expect(await screen.findByRole('button', { name: /this is a title/i })).toHaveAttribute('aria-expanded', 'true'); + expect(await screen.findByRole('group')).toHaveAttribute('open'); }); it('accordion should be closed by default if openByDefault is set to false', async () => { await render({ openByDefault: false, title: 'accordion.title' }); - expect(await screen.findByRole('button', { name: /this is a title/i })).toHaveAttribute('aria-expanded', 'false'); + expect(await screen.findByRole('group')).not.toHaveAttribute('open'); }); }); diff --git a/src/setupTests.ts b/src/setupTests.ts index 16ce7e38e8..f251638131 100644 --- a/src/setupTests.ts +++ b/src/setupTests.ts @@ -60,6 +60,11 @@ Element.prototype.getClientRects = () => ({ [Symbol.iterator]: jest.fn(), }); +// jsdom doesn't implement elementFromPoint, which Designsystemet's Popover uses +// in its `isTopLayer` check when handling Escape keydown. Returning the open +// popover element makes the check pass so ESC actually closes the popover in tests. +document.elementFromPoint = () => document.querySelector('[popover]'); + // Forcing a low timeout for useDelayedSaveState() global.delayedSaveState = 50; From 05488975f6899fa901a533ca7ea1c4685c5affbe Mon Sep 17 00:00:00 2001 From: Magnus Revheim Martinsen Date: Mon, 1 Jun 2026 08:55:10 +0200 Subject: [PATCH 3/8] fix some cypress tests --- src/components/atoms/AltinnAttachments.tsx | 3 +-- src/layout/AttachmentList/AttachmentListComponent.tsx | 3 ++- test/e2e/support/fail-on-console-log.ts | 6 ++++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/components/atoms/AltinnAttachments.tsx b/src/components/atoms/AltinnAttachments.tsx index 9ecafebf2d..cd28d1785c 100644 --- a/src/components/atoms/AltinnAttachments.tsx +++ b/src/components/atoms/AltinnAttachments.tsx @@ -5,7 +5,6 @@ import { Link, List } from '@digdir/designsystemet-react'; import cn from 'classnames'; import classes from 'src/components/atoms/AltinnAttachment.module.css'; -import { MainAttachmentHeader } from 'src/components/atoms/AttachmentHeader'; import { Lang } from 'src/features/language/Lang'; import { useCurrentLanguage } from 'src/features/language/LanguageProvider'; import { useLanguage } from 'src/features/language/useLanguage'; @@ -39,7 +38,7 @@ export function AltinnAttachments({ id={id} data-testid='attachment-list' > - + {title} : undefined} showLinks={showLinks} showDescription={showDescription} /> diff --git a/test/e2e/support/fail-on-console-log.ts b/test/e2e/support/fail-on-console-log.ts index f4abb7300a..7c2ea792f1 100644 --- a/test/e2e/support/fail-on-console-log.ts +++ b/test/e2e/support/fail-on-console-log.ts @@ -24,5 +24,11 @@ export const ignoredConsoleMessages = [ // https://github.com/Altinn/app-frontend-react/issues/1851 /Warning: validateDOMNesting.*?Add a , or to your code to match the DOM tree generated by the browser/, + // Designsystemet 1.15.0 deprecated RovingFocusRoot / RovingFocusItem / useRovingFocus without + // shipping a replacement. Used by LanguageSelector — remove once dsg provides a successor. + // https://github.com/Altinn/app-frontend-react/issues/4240 + /^Designsystemet: RovingFocus(Root|Item) is deprecated/, + /^Designsystemet: useRovingFocus is deprecated/, + /AxiosError: Request failed with status code 400/, ]; From f5a3652320f384ae01316267ef667adcb85d9bc2 Mon Sep 17 00:00:00 2001 From: Magnus Revheim Martinsen Date: Mon, 29 Jun 2026 09:22:12 +0200 Subject: [PATCH 4/8] change wording of comment --- test/e2e/support/fail-on-console-log.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/support/fail-on-console-log.ts b/test/e2e/support/fail-on-console-log.ts index 7c2ea792f1..b71a3fd448 100644 --- a/test/e2e/support/fail-on-console-log.ts +++ b/test/e2e/support/fail-on-console-log.ts @@ -25,7 +25,7 @@ export const ignoredConsoleMessages = [ /Warning: validateDOMNesting.*?Add a , or to your code to match the DOM tree generated by the browser/, // Designsystemet 1.15.0 deprecated RovingFocusRoot / RovingFocusItem / useRovingFocus without - // shipping a replacement. Used by LanguageSelector — remove once dsg provides a successor. + // shipping a replacement. Used by LanguageSelector — remove once dsg provides a successor, or we have refactored it out. // https://github.com/Altinn/app-frontend-react/issues/4240 /^Designsystemet: RovingFocus(Root|Item) is deprecated/, /^Designsystemet: useRovingFocus is deprecated/, From 0edf04fe075b6ca69698cb10c2a908d6e564f1ea Mon Sep 17 00:00:00 2001 From: Magnus Revheim Martinsen Date: Mon, 29 Jun 2026 09:27:58 +0200 Subject: [PATCH 5/8] update to 1.18.0 --- package.json | 4 +- yarn.lock | 112 +++++++++++++++++++++++++-------------------------- 2 files changed, 58 insertions(+), 58 deletions(-) diff --git a/package.json b/package.json index f6b831cf08..c7f8cfd30b 100644 --- a/package.json +++ b/package.json @@ -122,8 +122,8 @@ }, "dependencies": { "@date-fns/tz": "1.4.1", - "@digdir/designsystemet-css": "1.15.0", - "@digdir/designsystemet-react": "1.15.0", + "@digdir/designsystemet-css": "1.18.0", + "@digdir/designsystemet-react": "1.18.0", "@navikt/aksel-icons": "8.10.5", "@tanstack/react-query": "5.100.10", "@terraformer/wkt": "2.2.1", diff --git a/yarn.lock b/yarn.lock index 4395008bfa..4091e7695d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2211,51 +2211,51 @@ __metadata: languageName: node linkType: hard -"@digdir/designsystemet-css@npm:1.15.0": - version: 1.15.0 - resolution: "@digdir/designsystemet-css@npm:1.15.0" +"@digdir/designsystemet-css@npm:1.18.0": + version: 1.18.0 + resolution: "@digdir/designsystemet-css@npm:1.18.0" dependencies: - "@digdir/designsystemet-types": "npm:1.15.0" - checksum: 10c0/8b6722e99d9a0217a71a6c529b5f86f0109e2705ac297e35701a5d819e0102c1929cc64a66feb5113f65348d38ec3df7910af87379cb1ba34023626922c40647 + "@digdir/designsystemet-types": "npm:1.18.0" + checksum: 10c0/49c76e0e71ff3e4df3e6a74abacabac720318f7955b8dcdfb2139c1aa8f2f27d599361954d664c9897f03c7a0677c9f949ca614e95587481c78fb5c42d5297d9 languageName: node linkType: hard -"@digdir/designsystemet-react@npm:1.15.0": - version: 1.15.0 - resolution: "@digdir/designsystemet-react@npm:1.15.0" +"@digdir/designsystemet-react@npm:1.18.0": + version: 1.18.0 + resolution: "@digdir/designsystemet-react@npm:1.18.0" dependencies: - "@digdir/designsystemet-types": "npm:1.15.0" - "@digdir/designsystemet-web": "npm:1.15.0" + "@digdir/designsystemet-types": "npm:1.18.0" + "@digdir/designsystemet-web": "npm:1.18.0" "@floating-ui/dom": "npm:^1.7.6" "@floating-ui/react": "npm:0.26.23" - "@navikt/aksel-icons": "npm:^8.10.5" - "@radix-ui/react-slot": "npm:^1.2.4" - "@tanstack/react-virtual": "npm:^3.13.24" + "@navikt/aksel-icons": "npm:^8.12.1" + "@radix-ui/react-slot": "npm:^1.2.5" + "@tanstack/react-virtual": "npm:^3.14.2" clsx: "npm:^2.1.1" peerDependencies: react: ">=18.3.1 || ^19.0.0" react-dom: ">=18.3.1 || ^19.0.0" - checksum: 10c0/45ff9088aa46c9274d2f97d1c9bf96a16bca28bafe97134541c49b855f151f868fe825feb28debb674cb3984856a5fa94a602cf378d0d9e4b0946b315034f773 + checksum: 10c0/ad6dedf8c3147cd31ab317642c655259d69fcd02dedc52ec4769f2cd5b0500b9146382ae67086f36c27b91ea696c1961f2e0c1811e3b405f86f53eb0134aebcf languageName: node linkType: hard -"@digdir/designsystemet-types@npm:1.15.0": - version: 1.15.0 - resolution: "@digdir/designsystemet-types@npm:1.15.0" - checksum: 10c0/672e73e95a60da80cbcefab8838003947849d8edd7ecc37af6e4de074592846f77e6fad92deccb19479c12e7833a2c25f9447b3be42738ecf3ed4a1d93869bc4 +"@digdir/designsystemet-types@npm:1.18.0": + version: 1.18.0 + resolution: "@digdir/designsystemet-types@npm:1.18.0" + checksum: 10c0/e381ce6a4c4b03383dc43436317c5d7baabbb403532a8af899d55677a82a21dea63c4dffc9b64ea40fc1c0300a2edaf0601eaa71526aced6d9b74784b9de33a5 languageName: node linkType: hard -"@digdir/designsystemet-web@npm:1.15.0": - version: 1.15.0 - resolution: "@digdir/designsystemet-web@npm:1.15.0" +"@digdir/designsystemet-web@npm:1.18.0": + version: 1.18.0 + resolution: "@digdir/designsystemet-web@npm:1.18.0" dependencies: "@floating-ui/dom": "npm:^1.7.6" - "@u-elements/u-combobox": "npm:^2.0.4" + "@u-elements/u-combobox": "npm:^2.0.5" "@u-elements/u-datalist": "npm:^2.0.1" "@u-elements/u-details": "npm:^1.0.0" - "@u-elements/u-tabs": "npm:^1.0.3" - checksum: 10c0/74e69f1ef410ac6f0622f696b299d42c19ab553d439920849a0a2c31a20a90d49ffb06dbff2d698002097c4b147c8a487e65dd26d55610dc499cdf59537f78ab + "@u-elements/u-tabs": "npm:^1.0.4" + checksum: 10c0/d3161acc84bc07815aeb4a6abef4dfe53548f96237f5bd4588e59d66ea4cd6f1c3dd44e8aceac7b467a2812d35203b849729e55e437508bc929ab1c710078b5e languageName: node linkType: hard @@ -3652,10 +3652,10 @@ __metadata: languageName: node linkType: hard -"@navikt/aksel-icons@npm:^8.10.5": - version: 8.11.0 - resolution: "@navikt/aksel-icons@npm:8.11.0" - checksum: 10c0/86facf0f914164d1f3e7e298a80058bdc3ab16c6a40b8e197d07a1789e752c38ced953a78a4b232446bf4b68d658a6f3f4a8bdeae4b0ccbb5ba68039c78eadb4 +"@navikt/aksel-icons@npm:^8.12.1": + version: 8.14.0 + resolution: "@navikt/aksel-icons@npm:8.14.0" + checksum: 10c0/d5179e07c34ca40c03dac08db3d234b5155baeaa60401c324abca2707bf1d6634a6fb99ab0be1d852d8a1c5db6481d2f05c1889cd61a7aec44dd1eb15c4d9c9c languageName: node linkType: hard @@ -4334,31 +4334,31 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-compose-refs@npm:1.1.2": - version: 1.1.2 - resolution: "@radix-ui/react-compose-refs@npm:1.1.2" +"@radix-ui/react-compose-refs@npm:1.1.3": + version: 1.1.3 + resolution: "@radix-ui/react-compose-refs@npm:1.1.3" peerDependencies: "@types/react": "*" react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/d36a9c589eb75d634b9b139c80f916aadaf8a68a7c1c4b8c6c6b88755af1a92f2e343457042089f04cc3f23073619d08bb65419ced1402e9d4e299576d970771 + checksum: 10c0/c4853e7bc15cda6f68a1bbd7910412cc7f298419ee363fb4e40494e16a1cfadc857b2384dbe4d98b58c1312f280ca3474f67dc14da325d29ae8b7ebcfddaf743 languageName: node linkType: hard -"@radix-ui/react-slot@npm:^1.2.4": - version: 1.2.4 - resolution: "@radix-ui/react-slot@npm:1.2.4" +"@radix-ui/react-slot@npm:^1.2.5": + version: 1.3.0 + resolution: "@radix-ui/react-slot@npm:1.3.0" dependencies: - "@radix-ui/react-compose-refs": "npm:1.1.2" + "@radix-ui/react-compose-refs": "npm:1.1.3" peerDependencies: "@types/react": "*" react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: "@types/react": optional: true - checksum: 10c0/8b719bb934f1ae5ac0e37214783085c17c2f1080217caf514c1c6cc3d9ca56c7e19d25470b26da79aa6e605ab36589edaade149b76f5fc0666f1063e2fc0a0dc + checksum: 10c0/7353520950dcbc5c331f79aeac5bc8efa5130014e8121f85b337996ec5a2cef89f1375ff879b72ba05182de93c1126b22ec328f171edd7a2888c1532d10f74b5 languageName: node linkType: hard @@ -4611,22 +4611,22 @@ __metadata: languageName: node linkType: hard -"@tanstack/react-virtual@npm:^3.13.24": - version: 3.13.26 - resolution: "@tanstack/react-virtual@npm:3.13.26" +"@tanstack/react-virtual@npm:^3.14.2": + version: 3.14.4 + resolution: "@tanstack/react-virtual@npm:3.14.4" dependencies: - "@tanstack/virtual-core": "npm:3.16.0" + "@tanstack/virtual-core": "npm:3.17.2" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - checksum: 10c0/f993dd0de6566c0f78d58a8183d9fad248c9a6ddf37e8572ea9cbb2a8635da16a368bfb7d44b8a84f6cd23fe927e96b9215927c14ef8381e2da8ed9e02f8e3be + checksum: 10c0/e9c24827715c8ac5996d3b6ad273b50e11a0e138ad8226baeee0e4a6c5c55122b95524d144b925b625eb1b5ef7e4e66bbd4164f5a68761157cd1dcf60c3561c8 languageName: node linkType: hard -"@tanstack/virtual-core@npm:3.16.0": - version: 3.16.0 - resolution: "@tanstack/virtual-core@npm:3.16.0" - checksum: 10c0/03016cf464108ce8354d44d89393442e2457e0539933ee5af56691e76c0a351e268faf4f619395c5fabd3f2e4c23e5fc963b7f359d22805f2164be2403d2803e +"@tanstack/virtual-core@npm:3.17.2": + version: 3.17.2 + resolution: "@tanstack/virtual-core@npm:3.17.2" + checksum: 10c0/f388eb86cb2f5c6ca1a93346b8889a21fadd0b8a02330a0e285cd88ddb0a7cfbd0787fe028a29c9e97404040d871b2f90159afb5a8a7eb49dafe2a81c082dbb5 languageName: node linkType: hard @@ -5488,10 +5488,10 @@ __metadata: languageName: node linkType: hard -"@u-elements/u-combobox@npm:^2.0.4": - version: 2.0.4 - resolution: "@u-elements/u-combobox@npm:2.0.4" - checksum: 10c0/e88030f2f7993e52a4d50d9f48c4240a29a2164ca24fa99ea562c6cdb8620dc7101c771649fab4d8ae2ecf4f7b8ededa3cbb1db389b48d18ae2d254bcc34a710 +"@u-elements/u-combobox@npm:^2.0.5": + version: 2.1.0 + resolution: "@u-elements/u-combobox@npm:2.1.0" + checksum: 10c0/f53a03967ec14579f89365e2f460adb81289f0f8a50b5ae5ced33fbbcadd9c22144cf700feba9af0bb77ff2d931205908bd8633d999f6139516f950ac0a8c4d7 languageName: node linkType: hard @@ -5509,10 +5509,10 @@ __metadata: languageName: node linkType: hard -"@u-elements/u-tabs@npm:^1.0.3": - version: 1.0.3 - resolution: "@u-elements/u-tabs@npm:1.0.3" - checksum: 10c0/edaaabbaaa36afe7f7e2658e3fb3d87150dfbc69b6c6975f46eee839fce6f21f03d9f4840e6935d0523c5aa1436a56c6672033029d0fa53e6f8131a536b60260 +"@u-elements/u-tabs@npm:^1.0.4": + version: 1.0.4 + resolution: "@u-elements/u-tabs@npm:1.0.4" + checksum: 10c0/1a9691843cc026454070011e089431200a4f4fbfd050d88766650bbb248004e7e8e0ceabb824b8d41bc72f7adbd147f0691a06bec6dcc9c8b901981c8f60ed71 languageName: node linkType: hard @@ -6142,8 +6142,8 @@ __metadata: "@babel/runtime": "npm:7.29.2" "@babel/runtime-corejs3": "npm:7.29.2" "@date-fns/tz": "npm:1.4.1" - "@digdir/designsystemet-css": "npm:1.15.0" - "@digdir/designsystemet-react": "npm:1.15.0" + "@digdir/designsystemet-css": "npm:1.18.0" + "@digdir/designsystemet-react": "npm:1.18.0" "@eslint/compat": "npm:2.1.0" "@eslint/js": "npm:^10.0.1" "@navikt/aksel-icons": "npm:8.10.5" From 4154680c399eed62e0bf66f5a4d935918f8d8cda Mon Sep 17 00:00:00 2001 From: Magnus Revheim Martinsen Date: Tue, 14 Jul 2026 15:46:44 +0200 Subject: [PATCH 6/8] fix cypress errors in components.ts --- .../Dropdown/DropdownComponent.test.tsx | 39 ++++++++++++++++++- src/layout/Dropdown/DropdownComponent.tsx | 4 ++ .../integration/frontend-test/components.ts | 30 +++++++------- test/e2e/integration/frontend-test/summary.ts | 6 --- test/e2e/support/custom.ts | 10 +++-- test/e2e/support/fail-on-console-log.ts | 5 +++ test/e2e/support/index.ts | 9 +++++ webpack.config.development.js | 5 +++ 8 files changed, 82 insertions(+), 26 deletions(-) diff --git a/src/layout/Dropdown/DropdownComponent.test.tsx b/src/layout/Dropdown/DropdownComponent.test.tsx index 16641f53fe..0d2cf14b51 100644 --- a/src/layout/Dropdown/DropdownComponent.test.tsx +++ b/src/layout/Dropdown/DropdownComponent.test.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { jest } from '@jest/globals'; -import { act, screen, waitFor } from '@testing-library/react'; +import { act, fireEvent, screen, waitFor } from '@testing-library/react'; import { userEvent } from '@testing-library/user-event'; import type { AxiosResponse } from 'axios'; @@ -104,6 +104,43 @@ describe('DropdownComponent', () => { ); }); + it('should commit the new value after confirming alertOnChange', async () => { + const { formDataMethods } = await render({ + component: { + alertOnChange: true, + }, + options: countries, + queries: { + fetchFormData: async () => ({ + ...getFormDataMockForRepGroup(), + myDropdown: 'norway', + }), + }, + }); + + expect(await screen.findByRole('combobox')).toHaveValue('Norway'); + + await userEvent.click(screen.getByRole('combobox')); + await userEvent.click(screen.getByRole('option', { name: /sweden/i })); + + // Mimic the alert popover stealing focus, which blurs the combobox and reverts the input display + // back to the previously-committed value before the change is confirmed. + fireEvent.blur(screen.getByRole('combobox')); + + // Alert should appear; confirm the change + const confirmButton = await screen.findByRole('button', { name: /bekreft|confirm/i }); + await userEvent.click(confirmButton); + + await waitFor(() => + expect(formDataMethods.setLeafValue).toHaveBeenCalledWith({ + reference: { field: 'myDropdown', dataType: defaultDataTypeMock }, + newValue: 'sweden', + }), + ); + + expect(screen.getByRole('combobox')).toHaveValue('Sweden'); + }); + it('should show as readonly when readOnly is true', async () => { await render({ component: { diff --git a/src/layout/Dropdown/DropdownComponent.tsx b/src/layout/Dropdown/DropdownComponent.tsx index ed80f7f1c9..9aca3d0cf5 100644 --- a/src/layout/Dropdown/DropdownComponent.tsx +++ b/src/layout/Dropdown/DropdownComponent.tsx @@ -104,6 +104,10 @@ export function DropdownComponent({ baseComponentId, overrideDisplay }: PropsFro )} optionFilter(args, selectedLabels)} data-size='sm' diff --git a/test/e2e/integration/frontend-test/components.ts b/test/e2e/integration/frontend-test/components.ts index e2aec466ce..8140e2d8ad 100644 --- a/test/e2e/integration/frontend-test/components.ts +++ b/test/e2e/integration/frontend-test/components.ts @@ -479,22 +479,17 @@ describe('UI Components', () => { cy.gotoHiddenPage('label-data-bindings'); cy.get('#form-content-colorsCheckboxes').click(); + // After selecting an option, the DS combobox renders a removable chip (a ) whose + // accessible name is "