diff --git a/.gitignore b/.gitignore index b285c7663..a761a320f 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,9 @@ packages/*/mvn/resources/ .scala-build/ .nx/ + +# Vitest artifacts (reports, attachments, failure screenshots) +.vitest/ # pack files mutation-*.tgz diff --git a/packages/elements/package.json b/packages/elements/package.json index 3328cd09d..21e2364cf 100644 --- a/packages/elements/package.json +++ b/packages/elements/package.json @@ -54,7 +54,7 @@ "@tailwindcss/forms": "0.5.11", "@tailwindcss/vite": "4.3.3", "@types/prismjs": "1.26.6", - "@vitest/browser-playwright": "4.1.11", + "@vitest/browser-playwright": "5.0.0", "anser": "2.3.5", "cross-env": "10.1.0", "eslint": "catalog:", @@ -73,6 +73,6 @@ "rxjs": "7.8.2", "tailwindcss": "4.3.3", "vite": "8.2.2", - "vitest": "4.1.11" + "vitest": "5.0.0" } } diff --git a/packages/elements/test/unit/components/app.component.spec.ts b/packages/elements/test/unit/components/app.component.spec.ts index 8490c2992..0fb1127f2 100644 --- a/packages/elements/test/unit/components/app.component.spec.ts +++ b/packages/elements/test/unit/components/app.component.spec.ts @@ -329,15 +329,16 @@ describe(MutationTestReportAppComponent.name, () => { // noop } - eventSourceConstructorStub = vi.spyOn(window, 'EventSource').mockImplementation( - class MockEventSource extends EventSource { - // @ts-expect-error - we are mocking the constructor - // eslint-disable-next-line @typescript-eslint/no-unused-vars - constructor(url: string | URL) { - return eventSource; - } - }, - ); + // Capture the real constructor before spying, otherwise the mock would extend itself + const OriginalEventSource = window.EventSource; + class MockEventSource extends OriginalEventSource { + // @ts-expect-error - we are mocking the constructor + // eslint-disable-next-line @typescript-eslint/no-unused-vars + constructor(url: string | URL) { + return eventSource; + } + } + eventSourceConstructorStub = vi.spyOn(window, 'EventSource').mockImplementation(MockEventSource); sut = new CustomElementFixture('mutation-test-report-app', { autoConnect: false }); }); diff --git a/packages/elements/test/unit/components/drawer-test.component.spec.ts b/packages/elements/test/unit/components/drawer-test.component.spec.ts index 99a8cbabe..ea4fdcbc6 100644 --- a/packages/elements/test/unit/components/drawer-test.component.spec.ts +++ b/packages/elements/test/unit/components/drawer-test.component.spec.ts @@ -48,7 +48,7 @@ describe(MutationTestReportDrawerTestComponent.name, () => { it('should render the header correctly', async () => { sut.element.test = test; await sut.whenStable(); - expect(sut.$('[slot="header"]')).toHaveTextContent('🌧 foo should bar [NotCovering]'); + expect(sut.$('[slot="header"]')).toHaveTextContent('🌧 foo should bar [NotCovering] (2:1)'); }); it('should render closed by default', () => { @@ -131,9 +131,9 @@ describe(MutationTestReportDrawerTestComponent.name, () => { await sut.whenStable(); const listItems = sut.$$('[slot="detail"] ul li'); expect(listItems).lengthOf(3); - expect(listItems[0]).toHaveTextContent('🎯 const a = false'); - expect(listItems[1]).toHaveTextContent('🎯 const b = true'); - expect(listItems[2]).toHaveTextContent('☂️ if(1 <= 5)'); + expect(listItems[0]).toHaveTextContent('🎯 const a = false (foo.js:1:1)'); + expect(listItems[1]).toHaveTextContent('🎯 const b = true (foo.js:1:1)'); + expect(listItems[2]).toHaveTextContent('☂️ if(1 <= 5) (foo.js:1:1)'); }); function detailText() { diff --git a/packages/elements/test/unit/components/file-picker.component.spec.ts b/packages/elements/test/unit/components/file-picker.component.spec.ts index f7cc5390c..176f6ab05 100644 --- a/packages/elements/test/unit/components/file-picker.component.spec.ts +++ b/packages/elements/test/unit/components/file-picker.component.spec.ts @@ -113,7 +113,7 @@ describe(MutationTestReportFilePickerComponent.name, () => { await sut.whenStable(); // Assert - expect(getActiveItem()).toHaveTextContent('append.js'); + expect(getActiveItem()).toHaveTextContent('• append.js'); expect(sut.$$('#files li')).toHaveLength(3); expect(sut.$('#files')).not.toHaveTextContent('No files found'); }); @@ -129,7 +129,7 @@ describe(MutationTestReportFilePickerComponent.name, () => { await sut.whenStable(); // Assert - expect(getActiveItem()).toHaveTextContent('index.ts'); + expect(getActiveItem()).toHaveTextContent('• index.ts'); }); it('should redirect to mutant when pressing enter', async () => { @@ -155,7 +155,7 @@ describe(MutationTestReportFilePickerComponent.name, () => { await sut.whenStable(); // Assert - expect(getActiveItem()).toHaveTextContent('index.html'); + expect(getActiveItem()).toHaveTextContent('• index.html'); }); it('should show when no files are found', async () => { @@ -180,7 +180,7 @@ describe(MutationTestReportFilePickerComponent.name, () => { await sut.whenStable(); // Assert - expect(getActiveItem()).toHaveTextContent('index.html'); + expect(getActiveItem()).toHaveTextContent('• index.html'); }); it('should move to the first item when pressing down on the last item', async () => { @@ -191,7 +191,7 @@ describe(MutationTestReportFilePickerComponent.name, () => { await sut.whenStable(); // Assert - expect(getActiveItem()).toHaveTextContent('append.js'); + expect(getActiveItem()).toHaveTextContent('• append.js'); }); it('should move active item to the previous item when pressing up', async () => { @@ -203,7 +203,7 @@ describe(MutationTestReportFilePickerComponent.name, () => { await sut.whenStable(); // Assert - expect(getActiveItem()).toHaveTextContent('index.html'); + expect(getActiveItem()).toHaveTextContent('• index.html'); }); it('should move to the last item when pressing up on the first item', async () => { @@ -215,7 +215,7 @@ describe(MutationTestReportFilePickerComponent.name, () => { await sut.whenStable(); // Assert - expect(getActiveItem()).toHaveTextContent('index.ts'); + expect(getActiveItem()).toHaveTextContent('• index.ts'); }); }); }); diff --git a/packages/elements/test/unit/components/totals.component.spec.ts b/packages/elements/test/unit/components/totals.component.spec.ts index db0965574..ec19cd87f 100644 --- a/packages/elements/test/unit/components/totals.component.spec.ts +++ b/packages/elements/test/unit/components/totals.component.spec.ts @@ -125,7 +125,7 @@ describe(MutationTestReportTestMetricsTable.name, () => { const table = sut.$('table'); expect(table).ok; expect(table.querySelector('[role=progressbar]')!.getAttribute('aria-valuenow')).contains(mutationScore); - expect(table.querySelector('.text-red-700')!).toHaveTextContent(mutationScore.toString()); + expect(table.querySelector('.text-red-700')!).toHaveTextContent(mutationScore.toFixed(2)); }); it('should show no progress bar when score is NaN', async () => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2a85c13b3..08c11da5d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -201,7 +201,7 @@ importers: version: 10.0.0(@stryker-mutator/core@10.0.0(@types/node@24.13.3))(@typescript/typescript6@6.0.2) '@stryker-mutator/vitest-runner': specifier: 'catalog:' - version: 10.0.0(@stryker-mutator/core@10.0.0(@types/node@24.13.3))(vitest@4.1.11) + version: 10.0.0(@stryker-mutator/core@10.0.0(@types/node@24.13.3))(vitest@5.0.0) '@tailwindcss/forms': specifier: 0.5.11 version: 0.5.11(tailwindcss@4.3.3) @@ -212,8 +212,8 @@ importers: specifier: 1.26.6 version: 1.26.6 '@vitest/browser-playwright': - specifier: 4.1.11 - version: 4.1.11(playwright@1.62.1)(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(vitest@4.1.11) + specifier: 5.0.0 + version: 5.0.0(playwright@1.62.1)(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(vitest@5.0.0) anser: specifier: 2.3.5 version: 2.3.5 @@ -269,8 +269,8 @@ importers: specifier: 8.2.2 version: 8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0) vitest: - specifier: 4.1.11 - version: 4.1.11(@types/node@24.13.3)(@vitest/browser-playwright@4.1.11)(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)) + specifier: 5.0.0 + version: 5.0.0(@types/node@24.13.3)(@vitest/browser-playwright@5.0.0)(@vitest/ui@5.0.0)(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)) packages/eslint-config-mte: dependencies: @@ -561,8 +561,8 @@ packages: resolution: {integrity: sha512-eY+Yn3dCqTGmyiq2QRU66lA5FL8lqqqvecHt0fF3uHONIa7ToYsaCiWV8lOKqAs0Rb2SjixiKFROngnulPtt2g==, tarball: https://registry.npmjs.org/@babel/types/-/types-8.0.4.tgz} engines: {node: ^22.18.0 || >=24.11.0} - '@blazediff/core@1.9.1': - resolution: {integrity: sha512-ehg3jIkYKulZh+8om/O25vkvSsXXwC+skXmyA87FFx6A/45eqOkZsBltMw/TVteb0mloiGT8oGRTcjRAz66zaA==, tarball: https://registry.npmjs.org/@blazediff/core/-/core-1.9.1.tgz} + '@blazediff/core@1.10.0': + resolution: {integrity: sha512-AOQff0zgR7cGsZL+4E7hVkmujoPUpm0J9xzWGWZj5wCjd3gmxESXAPfKyuzs93VdpQNFhHlBhfOjrcZ+XTERtQ==, tarball: https://registry.npmjs.org/@blazediff/core/-/core-1.10.0.tgz} '@cacheable/memory@2.2.0': resolution: {integrity: sha512-CTLKqLItRCEixEAewD3/j9DB3/o96gpTPD4eJ1v+DGOlxZRZncRQkGYqqnAGCscYd6RNeXfGeiuCphsPtqyIfQ==, tarball: https://registry.npmjs.org/@cacheable/memory/-/memory-2.2.0.tgz} @@ -1383,9 +1383,6 @@ packages: '@sinonjs/samsam@10.0.2': resolution: {integrity: sha512-8lVwD1Df1BmzoaOLhMcGGcz/Jyr5QY2KSB75/YK1QgKzoabTeLdIVyhXNZK9ojfSKSdirbXqdbsXXqP9/Ve8+A==, tarball: https://registry.npmjs.org/@sinonjs/samsam/-/samsam-10.0.2.tgz} - '@standard-schema/spec@1.1.0': - resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==, tarball: https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz} - '@stryker-mutator/api@10.0.0': resolution: {integrity: sha512-ZtAJ0ZT3MVRCWJTBE2h90XB/6E+4lifHYtcTyNG6nU2nLekPgTo4gD5esjX6Okxo1b/JB4jJzyxYB54fwKAoJw==, tarball: https://registry.npmjs.org/@stryker-mutator/api/-/api-10.0.0.tgz} engines: {node: '>=22.0.0'} @@ -1890,22 +1887,19 @@ packages: cpu: [x64] os: [win32] - '@vitest/browser-playwright@4.1.11': - resolution: {integrity: sha512-riLBxPqwnJ0lWs2DN2WeUfYeKLoAjbP2Xx8cLQdSddzMi20sksIa6K2mPz79DyMZKKVKH2ksOC2yJvtNcZg8cg==, tarball: https://registry.npmjs.org/@vitest/browser-playwright/-/browser-playwright-4.1.11.tgz} + '@vitest/browser-playwright@5.0.0': + resolution: {integrity: sha512-N+gED9y4/8pypaHjz/x0ah3CjoBr+N0hWWT+Gq4VXtMzyB+rUIdHni0ulzpD1j4H77iWy5Jg8PRMlVn6kjxo6g==, tarball: https://registry.npmjs.org/@vitest/browser-playwright/-/browser-playwright-5.0.0.tgz} peerDependencies: playwright: '*' - vitest: 4.1.11 + vitest: 5.0.0 - '@vitest/browser@4.1.11': - resolution: {integrity: sha512-bwMovvAeuTFOK5kIFevw4VEf+1gVEICv4SYK4k3knJOxl6b1zEWud8mYKD73e1B0odAn174h1MofURy2TPWf3w==, tarball: https://registry.npmjs.org/@vitest/browser/-/browser-4.1.11.tgz} + '@vitest/browser@5.0.0': + resolution: {integrity: sha512-JC9FG5xIRxPHXJPcdCaluIJcEoeM0IwGQ3xneuJk09LXKHRNs40BqWDWymQikbb20yOpYvzpKzmYgPRuSzKmvg==, tarball: https://registry.npmjs.org/@vitest/browser/-/browser-5.0.0.tgz} peerDependencies: - vitest: 4.1.11 - - '@vitest/expect@4.1.11': - resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==, tarball: https://registry.npmjs.org/@vitest/expect/-/expect-4.1.11.tgz} + vitest: 5.0.0 - '@vitest/mocker@4.1.11': - resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==, tarball: https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.11.tgz} + '@vitest/mocker@5.0.0': + resolution: {integrity: sha512-66PGTMIiVJP3t4a5yxU9qPtf7MdTBs8jmToMvy+HVflB3Yy13WJZTtPePdvU+wjRV02SKK5doLbSA6o9pwOmiA==, tarball: https://registry.npmjs.org/@vitest/mocker/-/mocker-5.0.0.tgz} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1915,20 +1909,19 @@ packages: vite: optional: true - '@vitest/pretty-format@4.1.11': - resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==, tarball: https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.11.tgz} + '@vitest/pretty-format@5.0.0': + resolution: {integrity: sha512-PVRNuB3wpReb4SQEs4zTKM4KWFhQ5pw3spE8naoDJNB5T5aWRzGKHwXcLUllr0WeOTXpB6bSr3CJLo5+7XQSSQ==, tarball: https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-5.0.0.tgz} - '@vitest/runner@4.1.11': - resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==, tarball: https://registry.npmjs.org/@vitest/runner/-/runner-4.1.11.tgz} + '@vitest/spy@5.0.0': + resolution: {integrity: sha512-uy+luWBAPw9XfthoHi5AkfHUnuPYEESjl0p/r+meoBnU8bxg5GDQ3Ey8MjcJ6sqahkL4PFyrvfMJJBw7LbU06g==, tarball: https://registry.npmjs.org/@vitest/spy/-/spy-5.0.0.tgz} - '@vitest/snapshot@4.1.11': - resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==, tarball: https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.11.tgz} - - '@vitest/spy@4.1.11': - resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==, tarball: https://registry.npmjs.org/@vitest/spy/-/spy-4.1.11.tgz} + '@vitest/ui@5.0.0': + resolution: {integrity: sha512-h2FIFwggCY2GxUd2UdQoYNVQkOIqEQLPhNREcl3FUiRsdzQep7NWwYbSmhGEA9nFLPDq5pXzRMcBZQU8Py83sg==, tarball: https://registry.npmjs.org/@vitest/ui/-/ui-5.0.0.tgz} + peerDependencies: + vitest: 5.0.0 - '@vitest/utils@4.1.11': - resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==, tarball: https://registry.npmjs.org/@vitest/utils/-/utils-4.1.11.tgz} + '@vitest/utils@5.0.0': + resolution: {integrity: sha512-dO++xL3vDfvhTAVimfkuQUA3k+JClIF1i1vAkPqpcGAthRmeWnXmHB7YPViPvgCwviX8u7Y5W1u2N//AaQr3fw==, tarball: https://registry.npmjs.org/@vitest/utils/-/utils-5.0.0.tgz} '@yarnpkg/lockfile@1.1.0': resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==, tarball: https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz} @@ -2571,6 +2564,9 @@ packages: picomatch: optional: true + fflate@0.8.3: + resolution: {integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==, tarball: https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz} + figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==, tarball: https://registry.npmjs.org/figures/-/figures-3.2.0.tgz} engines: {node: '>=8'} @@ -3243,6 +3239,9 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==, tarball: https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz} + magic-string@1.2.3: + resolution: {integrity: sha512-Bpb0W2TbLKOZ7vJnOUnVRGq3WL2p+ISV29M6hYPL1AFCpyKZpdr5ytiXoTSSxRVhg8YW7f65+6gbG8WG6PCa/g==, tarball: https://registry.npmjs.org/magic-string/-/magic-string-1.2.3.tgz} + make-fetch-happen@15.0.2: resolution: {integrity: sha512-sI1NY4lWlXBAfjmCtVWIIpBypbBdhHtcjnwnv+gtCnsaOffyFil3aidszGC8hgzJe+fT1qix05sWxmD/Bmf/oQ==, tarball: https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.2.tgz} engines: {node: ^20.17.0 || >=22.9.0} @@ -4034,11 +4033,12 @@ packages: resolution: {integrity: sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==, tarball: https://registry.npmjs.org/tar/-/tar-7.5.22.tgz} engines: {node: '>=18'} - tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==, tarball: https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz} + tinybench@6.1.4: + resolution: {integrity: sha512-9APumHG7r4yOk4X4WlkmE71aZcv1gvin1czO3OQ1U9iJcFA5Ja/ygyb0vPOVHTthFozUYs8CLoLUlM8grb2lTQ==, tarball: https://registry.npmjs.org/tinybench/-/tinybench-6.1.4.tgz} + engines: {node: '>=20.0.0'} - tinyexec@1.3.1: - resolution: {integrity: sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==, tarball: https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.1.tgz} + tinyexec@1.3.0: + resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==, tarball: https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.0.tgz} engines: {node: '>=18'} tinyglobby@0.2.12: @@ -4222,23 +4222,23 @@ packages: yaml: optional: true - vitest@4.1.11: - resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==, tarball: https://registry.npmjs.org/vitest/-/vitest-4.1.11.tgz} - engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + vitest@5.0.0: + resolution: {integrity: sha512-gpsMNoRhMjMktVxPtstOH4/PJuPyovVaMDr4oDilXaGH1EcqM2OE96SoHT2VIQ6fTGtTjqmHDrEu2X9RQiXf8Q==, tarball: https://registry.npmjs.org/vitest/-/vitest-5.0.0.tgz} + engines: {node: ^22.12.0 || ^24.0.0 || >=26.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 - '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.11 - '@vitest/browser-preview': 4.1.11 - '@vitest/browser-webdriverio': 4.1.11 - '@vitest/coverage-istanbul': 4.1.11 - '@vitest/coverage-v8': 4.1.11 - '@vitest/ui': 4.1.11 + '@types/node': ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 5.0.0 + '@vitest/browser-preview': 5.0.0 + '@vitest/browser-webdriverio': ^5.0.0-beta.5 || >=5.0.0 + '@vitest/coverage-istanbul': 5.0.0 + '@vitest/coverage-v8': 5.0.0 + '@vitest/ui': 5.0.0 happy-dom: '*' jsdom: '*' - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + vite: ^6.4.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true @@ -4630,7 +4630,7 @@ snapshots: '@babel/helper-string-parser': 8.0.0 '@babel/helper-validator-identifier': 8.0.4 - '@blazediff/core@1.9.1': {} + '@blazediff/core@1.10.0': {} '@cacheable/memory@2.2.0': dependencies: @@ -5442,8 +5442,6 @@ snapshots: '@sinonjs/commons': 3.0.1 type-detect: 4.1.0 - '@standard-schema/spec@1.1.0': {} - '@stryker-mutator/api@10.0.0': dependencies: mutation-testing-metrics: 3.8.4 @@ -5517,14 +5515,14 @@ snapshots: '@stryker-mutator/util@10.0.0': {} - '@stryker-mutator/vitest-runner@10.0.0(@stryker-mutator/core@10.0.0(@types/node@24.13.3))(vitest@4.1.11)': + '@stryker-mutator/vitest-runner@10.0.0(@stryker-mutator/core@10.0.0(@types/node@24.13.3))(vitest@5.0.0)': dependencies: '@stryker-mutator/api': 10.0.0 '@stryker-mutator/core': 10.0.0(@types/node@24.13.3) '@stryker-mutator/util': 10.0.0 semver: 7.8.5 tslib: 2.8.1 - vitest: 4.1.11(@types/node@24.13.3)(@vitest/browser-playwright@4.1.11)(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)) + vitest: 5.0.0(@types/node@24.13.3)(@vitest/browser-playwright@5.0.0)(@vitest/ui@5.0.0)(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)) '@tailwindcss/forms@0.5.11(tailwindcss@4.3.3)': dependencies: @@ -5881,29 +5879,30 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.12.2': optional: true - '@vitest/browser-playwright@4.1.11(playwright@1.62.1)(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(vitest@4.1.11)': + '@vitest/browser-playwright@5.0.0(playwright@1.62.1)(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(vitest@5.0.0)': dependencies: - '@vitest/browser': 4.1.11(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(vitest@4.1.11) - '@vitest/mocker': 4.1.11(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)) + '@vitest/browser': 5.0.0(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(vitest@5.0.0) + '@vitest/mocker': 5.0.0(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)) playwright: 1.62.1 tinyrainbow: 3.1.1 - vitest: 4.1.11(@types/node@24.13.3)(@vitest/browser-playwright@4.1.11)(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)) + vitest: 5.0.0(@types/node@24.13.3)(@vitest/browser-playwright@5.0.0)(@vitest/ui@5.0.0)(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser@4.1.11(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(vitest@4.1.11)': + '@vitest/browser@5.0.0(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(vitest@5.0.0)': dependencies: - '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.11(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)) - '@vitest/utils': 4.1.11 - magic-string: 0.30.21 + '@blazediff/core': 1.10.0 + '@vitest/mocker': 5.0.0(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)) + '@vitest/ui': 5.0.0(vitest@5.0.0) + '@vitest/utils': 5.0.0 + magic-string: 1.2.3 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.1 - vitest: 4.1.11(@types/node@24.13.3)(@vitest/browser-playwright@4.1.11)(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)) + vitest: 5.0.0(@types/node@24.13.3)(@vitest/browser-playwright@5.0.0)(@vitest/ui@5.0.0)(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)) ws: 8.21.3 transitivePeerDependencies: - bufferutil @@ -5911,44 +5910,34 @@ snapshots: - utf-8-validate - vite - '@vitest/expect@4.1.11': - dependencies: - '@standard-schema/spec': 1.1.0 - '@types/chai': 5.2.3 - '@vitest/spy': 4.1.11 - '@vitest/utils': 4.1.11 - chai: 6.2.2 - tinyrainbow: 3.1.1 - - '@vitest/mocker@4.1.11(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))': + '@vitest/mocker@5.0.0(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))': dependencies: - '@vitest/spy': 4.1.11 + '@jridgewell/trace-mapping': 0.3.31 + '@vitest/spy': 5.0.0 estree-walker: 3.0.3 - magic-string: 0.30.21 + magic-string: 1.2.3 optionalDependencies: vite: 8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0) - '@vitest/pretty-format@4.1.11': + '@vitest/pretty-format@5.0.0': dependencies: tinyrainbow: 3.1.1 - '@vitest/runner@4.1.11': - dependencies: - '@vitest/utils': 4.1.11 - pathe: 2.0.3 + '@vitest/spy@5.0.0': {} - '@vitest/snapshot@4.1.11': + '@vitest/ui@5.0.0(vitest@5.0.0)': dependencies: - '@vitest/pretty-format': 4.1.11 - '@vitest/utils': 4.1.11 - magic-string: 0.30.21 + '@vitest/utils': 5.0.0 + fflate: 0.8.3 + flatted: 3.4.4 pathe: 2.0.3 + sirv: 3.0.2 + tinyrainbow: 3.1.1 + vitest: 5.0.0(@types/node@24.13.3)(@vitest/browser-playwright@5.0.0)(@vitest/ui@5.0.0)(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)) - '@vitest/spy@4.1.11': {} - - '@vitest/utils@4.1.11': + '@vitest/utils@5.0.0': dependencies: - '@vitest/pretty-format': 4.1.11 + '@vitest/pretty-format': 5.0.0 convert-source-map: 2.0.0 tinyrainbow: 3.1.1 @@ -6614,6 +6603,8 @@ snapshots: optionalDependencies: picomatch: 4.0.7 + fflate@0.8.3: {} + figures@3.2.0: dependencies: escape-string-regexp: 1.0.5 @@ -7267,6 +7258,10 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.6.0 + magic-string@1.2.3: + dependencies: + '@jridgewell/sourcemap-codec': 1.6.0 + make-fetch-happen@15.0.2(supports-color@8.1.1): dependencies: '@npmcli/agent': 4.0.2(supports-color@8.1.1) @@ -8197,9 +8192,9 @@ snapshots: minizlib: 3.1.0 yallist: 5.0.0 - tinybench@2.9.0: {} + tinybench@6.1.4: {} - tinyexec@1.3.1: {} + tinyexec@1.3.0: {} tinyglobby@0.2.12: dependencies: @@ -8373,31 +8368,26 @@ snapshots: jiti: 2.7.0 yaml: 2.9.0 - vitest@4.1.11(@types/node@24.13.3)(@vitest/browser-playwright@4.1.11)(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)): + vitest@5.0.0(@types/node@24.13.3)(@vitest/browser-playwright@5.0.0)(@vitest/ui@5.0.0)(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)): dependencies: - '@vitest/expect': 4.1.11 - '@vitest/mocker': 4.1.11(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.11 - '@vitest/runner': 4.1.11 - '@vitest/snapshot': 4.1.11 - '@vitest/spy': 4.1.11 - '@vitest/utils': 4.1.11 + '@types/chai': 5.2.3 + '@vitest/mocker': 5.0.0(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0)) + chai: 6.2.2 es-module-lexer: 2.3.2 expect-type: 1.4.0 - magic-string: 0.30.21 + magic-string: 1.2.3 obug: 2.1.4 - pathe: 2.0.3 picomatch: 4.0.7 std-env: 4.2.0 - tinybench: 2.9.0 - tinyexec: 1.3.1 + tinybench: 6.1.4 + tinyexec: 1.3.0 tinyglobby: 0.2.17 - tinyrainbow: 3.1.1 vite: 8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.13.3 - '@vitest/browser-playwright': 4.1.11(playwright@1.62.1)(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(vitest@4.1.11) + '@vitest/browser-playwright': 5.0.0(playwright@1.62.1)(vite@8.2.2(@types/node@24.13.3)(jiti@2.7.0)(yaml@2.9.0))(vitest@5.0.0) + '@vitest/ui': 5.0.0(vitest@5.0.0) transitivePeerDependencies: - msw