diff --git a/packages/pn-commons/package.json b/packages/pn-commons/package.json
index fc091ce8ee..75b4fcdf67 100644
--- a/packages/pn-commons/package.json
+++ b/packages/pn-commons/package.json
@@ -28,7 +28,6 @@
"build": "tsc -p tsconfig.prod.json",
"test": "tsc --noEmit && vitest --run",
"test:fast": "vitest --run",
- "test:a11y": "vitest --run --config ./vite.config.a11y.ts",
"test:all": "vitest --run --config ./vite.config.all.ts",
"test:coverage": "tsc --noEmit && vitest run --coverage",
"lint": "eslint . -c .eslintrc.js --ext .ts,.tsx --fix",
@@ -62,6 +61,7 @@
"@testing-library/user-event": "^14.5.1",
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
"@types/css-mediaquery": "^0.1.1",
+ "@types/jest": "^29.5.12",
"@typescript-eslint/eslint-plugin": "^6.7.3",
"@typescript-eslint/parser": "^6.7.3",
"@vitejs/plugin-react": "^4.2.1",
diff --git a/packages/pn-commons/src/components/Notifications/__test__/NewNotificationBadge.a11y.test.tsx b/packages/pn-commons/src/components/Notifications/__test__/NewNotificationBadge.a11y.test.tsx
deleted file mode 100644
index 961ea63e66..0000000000
--- a/packages/pn-commons/src/components/Notifications/__test__/NewNotificationBadge.a11y.test.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import { axe } from 'jest-axe';
-
-import { NotificationStatus } from '@pagopa-pn/pn-commons';
-
-import { render } from '../../../test-utils';
-import NewNotificationBadge from '../NewNotificationBadge';
-
-describe('NewNotificationBadge component - accessibility tests', () => {
- it('is accessible', async () => {
- const notificationStatus = NotificationStatus.ACCEPTED;
- const { container } = render();
- const results = await axe(container);
- expect(results).toHaveNoViolations();
- });
-});
diff --git a/packages/pn-commons/src/components/SideMenu/__test__/SideMenu.a11y.test.tsx b/packages/pn-commons/src/components/SideMenu/__test__/SideMenu.a11y.test.tsx
deleted file mode 100644
index 0c8c93f5d2..0000000000
--- a/packages/pn-commons/src/components/SideMenu/__test__/SideMenu.a11y.test.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import { axe, toHaveNoViolations } from 'jest-axe';
-
-import { sideMenuItems } from '../../../__mocks__/SideMenu.mock';
-import { render } from '../../../test-utils';
-import SideMenu from '../SideMenu';
-
-expect.extend(toHaveNoViolations);
-
-describe('SideMenu - accessibility tests', () => {
- it('sidemenu accesibility', async () => {
- const { container } = render();
- const results = await axe(container);
- expect(results).toHaveNoViolations();
- });
-});
diff --git a/packages/pn-commons/vite.config.a11y.ts b/packages/pn-commons/vite.config.a11y.ts
deleted file mode 100644
index 74413cc01d..0000000000
--- a/packages/pn-commons/vite.config.a11y.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-///
-import { defineConfig } from 'vite';
-
-import react from '@vitejs/plugin-react';
-
-// https://vitejs.dev/config/
-export default defineConfig(() => {
- return {
- plugins: [react()],
- test: {
- globals: true,
- setupFiles: './src/setupTests.ts',
- environment: 'jsdom',
- include: ['**/*.a11y.test.ts', '**/*.a11y.test.tsx'],
- reporters: ['default'],
- }
- };
-});
diff --git a/packages/pn-commons/vite.config.mts b/packages/pn-commons/vite.config.mts
index 5177cb9fba..ad5ae7ed7a 100644
--- a/packages/pn-commons/vite.config.mts
+++ b/packages/pn-commons/vite.config.mts
@@ -12,13 +12,12 @@ const vitestConfig = defineVitestConfig({
globals: true,
setupFiles: './src/setupTests.ts',
environment: 'jsdom',
- exclude: [...configDefaults.exclude, '**/*.a11y.test.ts', '**/*.a11y.test.tsx'],
+ exclude: configDefaults.exclude,
reporters: ['vitest-sonar-reporter', 'default'],
outputFile: 'test-report.xml',
coverage: {
provider: 'v8',
reporter: ['lcov'],
- exclude: ['**/*.a11y.test.ts', '**/*.a11y.test.tsx'],
reportOnFailure: true,
},
},
diff --git a/packages/pn-pa-webapp/package.json b/packages/pn-pa-webapp/package.json
index 7fa3bd11b4..2cf749df57 100644
--- a/packages/pn-pa-webapp/package.json
+++ b/packages/pn-pa-webapp/package.json
@@ -41,7 +41,6 @@
"preview": "vite preview",
"test": "tsc && vitest --run",
"test:fast": "vitest --run",
- "test:a11y": "vitest --run --config ./vite.config.a11y.ts",
"test:all": "vitest --run --config ./vite.config.all.ts",
"test:coverage": "tsc && vitest run --coverage",
"lint": "eslint . -c .eslintrc.js --ext .ts,.tsx --fix",
@@ -69,7 +68,7 @@
"@testing-library/react": "^14.0.0",
"@testing-library/user-event": "^14.5.1",
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
- "@types/jest-axe": "^3.5.3",
+ "@types/jest": "^29.5.12",
"@types/mixpanel-browser": "^2.38.0",
"@typescript-eslint/eslint-plugin": "^6.7.3",
"@typescript-eslint/parser": "^6.7.3",
@@ -84,7 +83,6 @@
"eslint-plugin-react": "^7.27.1",
"eslint-plugin-react-hooks": "^4.3.0",
"eslint-plugin-sonarjs": "^0.10.0",
- "jest-axe": "^6.0.0",
"jsdom": "^24.0.0",
"prettier": "^2.4.1",
"sonarqube-scanner": "^3.3.0",
diff --git a/packages/pn-pa-webapp/src/__test__/App.a11y.test.tsx b/packages/pn-pa-webapp/src/__test__/App.a11y.test.tsx
deleted file mode 100644
index cfcd821b1b..0000000000
--- a/packages/pn-pa-webapp/src/__test__/App.a11y.test.tsx
+++ /dev/null
@@ -1,120 +0,0 @@
-import MockAdapter from 'axios-mock-adapter';
-import { vi } from 'vitest';
-
-import { ThemeProvider } from '@emotion/react';
-import { theme } from '@pagopa/mui-italia';
-
-import App from '../App';
-import { currentStatusDTO } from '../__mocks__/AppStatus.mock';
-import { userResponse } from '../__mocks__/Auth.mock';
-import { apiClient } from '../api/apiClients';
-import { GET_CONSENTS } from '../api/consents/consents.routes';
-import { ConsentType } from '../models/consents';
-import { RenderResult, act, axe, render } from './test-utils';
-
-// mock imports
-vi.mock('react-i18next', () => ({
- // this mock makes sure any components using the translation hook can use it without a warning being shown
- Trans: (props: { i18nKey: string }) => props.i18nKey,
- useTranslation: () => ({
- t: (str: string) => str,
- i18n: { language: 'it' },
- }),
-}));
-
-vi.mock('../pages/Dashboard.page', () => () =>
Generic Page
);
-
-const unmockedFetch = global.fetch;
-
-const Component = () => (
-
-
-
-);
-
-const reduxInitialState = {
- userState: {
- user: userResponse,
- fetchedTos: false,
- fetchedPrivacy: false,
- tosConsent: {
- accepted: false,
- isFirstAccept: false,
- currentVersion: 'mocked-version-1',
- },
- privacyConsent: {
- accepted: false,
- isFirstAccept: false,
- currentVersion: 'mocked-version-1',
- },
- },
-};
-
-describe('App - accessbility tests', () => {
- let mock: MockAdapter;
-
- beforeAll(() => {
- mock = new MockAdapter(apiClient);
- // FooterPreLogin (mui-italia) component calls an api to fetch selfcare products list.
- // this causes an error, so we mock to avoid it
- global.fetch = () =>
- Promise.resolve({
- json: () => Promise.resolve([]),
- }) as Promise;
- });
-
- afterEach(() => {
- mock.reset();
- });
-
- afterAll(() => {
- mock.restore();
- global.fetch = unmockedFetch;
- });
-
- it('Test if automatic accessibility tests passes - user not logged in', async () => {
- const { container } = render();
- const result = await axe(container);
- expect(result).toHaveNoViolations();
- });
-
- it('Test if automatic accessibility tests passes - user logged in', async () => {
- mock.onGet(GET_CONSENTS(ConsentType.DATAPRIVACY)).reply(200, {
- recipientId: userResponse.uid,
- consentType: ConsentType.DATAPRIVACY,
- accepted: true,
- });
- mock.onGet(GET_CONSENTS(ConsentType.TOS)).reply(200, {
- recipientId: userResponse.uid,
- consentType: ConsentType.TOS,
- accepted: true,
- });
- mock.onGet('downtime/v1/status').reply(200, currentStatusDTO);
- let result: RenderResult | undefined;
- await act(async () => {
- result = render(, { preloadedState: reduxInitialState });
- });
- if (result) {
- const results = await axe(result.container);
- expect(results).toHaveNoViolations();
- }
- }, 15000);
-
- it('Test if automatic accessibility tests passes - errors on API call', async () => {
- mock.onGet(GET_CONSENTS(ConsentType.DATAPRIVACY)).reply(200, {
- recipientId: userResponse.uid,
- consentType: ConsentType.DATAPRIVACY,
- accepted: true,
- });
- mock.onGet(GET_CONSENTS(ConsentType.TOS)).reply(500);
- mock.onGet('downtime/v1/status').reply(200, currentStatusDTO);
- let result: RenderResult | undefined;
- await act(async () => {
- result = render(, { preloadedState: reduxInitialState });
- });
- if (result) {
- const results = await axe(result.container);
- expect(results).toHaveNoViolations();
- }
- }, 15000);
-});
diff --git a/packages/pn-pa-webapp/src/__test__/test-utils.tsx b/packages/pn-pa-webapp/src/__test__/test-utils.tsx
index 9fc43503ec..c461c4b367 100644
--- a/packages/pn-pa-webapp/src/__test__/test-utils.tsx
+++ b/packages/pn-pa-webapp/src/__test__/test-utils.tsx
@@ -1,4 +1,3 @@
-import { configureAxe, toHaveNoViolations } from 'jest-axe';
import { ReactElement, ReactNode } from 'react';
import { Provider } from 'react-redux';
import { BrowserRouter } from 'react-router-dom';
@@ -37,12 +36,6 @@ const customRender = (
});
};
-const axe = configureAxe({
- rules: {
- region: { enabled: false },
- },
-});
-
// utility functions
/**
* Generate a random string with specified length
@@ -57,10 +50,7 @@ function randomString(length: number) {
return result;
}
-expect.extend(toHaveNoViolations);
-
export * from '@testing-library/react';
export { customRender as render, testStore };
-export { axe };
// utility functions
export { randomString };
diff --git a/packages/pn-pa-webapp/src/components/Notifications/__test__/DesktopNotifications.a11y.test.tsx b/packages/pn-pa-webapp/src/components/Notifications/__test__/DesktopNotifications.a11y.test.tsx
deleted file mode 100644
index d470e7c628..0000000000
--- a/packages/pn-pa-webapp/src/components/Notifications/__test__/DesktopNotifications.a11y.test.tsx
+++ /dev/null
@@ -1,81 +0,0 @@
-import { vi } from 'vitest';
-
-import { formatToTimezoneString, tenYearsAgo, today } from '@pagopa-pn/pn-commons';
-
-import { notificationsToFe } from '../../../__mocks__/Notifications.mock';
-import { RenderResult, act, axe, render } from '../../../__test__/test-utils';
-import DesktopNotifications from '../DesktopNotifications';
-
-vi.mock('react-i18next', () => ({
- // this mock makes sure any components using the translate hook can use it without a warning being shown
- useTranslation: () => ({
- t: (str: string) => str,
- i18n: { language: 'it' },
- }),
-}));
-
-describe('DesktopNotifications Component - accessibility tests', () => {
- it('does not have basic accessibility issues', async () => {
- let result: RenderResult | undefined;
- await act(async () => {
- result = render(
- {}}
- onApiKeys={() => {}}
- />
- );
- });
- if (result) {
- const res = await axe(result.container);
- expect(res).toHaveNoViolations();
- } else {
- fail('render() returned undefined!');
- }
- }, 15000);
-
- it('does not have basic accessibility issues (empty notifications)', async () => {
- let result: RenderResult | undefined;
- await act(async () => {
- result = render(
- {}} onApiKeys={() => {}} />
- );
- });
- if (result) {
- const res = await axe(result.container);
- expect(res).toHaveNoViolations();
- } else {
- fail('render() returned undefined!');
- }
- }, 15000);
-
- it('does not have basic accessibility issues (empty notifications after filter)', async () => {
- let result: RenderResult | undefined;
- await act(async () => {
- result = render(
- {}} onApiKeys={() => {}} />,
- {
- preloadedState: {
- dashboardState: {
- filters: {
- startDate: formatToTimezoneString(tenYearsAgo),
- endDate: formatToTimezoneString(today),
- iunMatch: 'ABCD-EFGH-ILMN-123456-A-1',
- },
- },
- },
- }
- );
- });
- // the rerendering must be done to take the useRef updates
- result!.rerender(
- {}} onApiKeys={() => {}} />
- );
- if (result) {
- const res = await axe(result.container);
- expect(res).toHaveNoViolations();
- } else {
- fail('render() returned undefined!');
- }
- }, 15000);
-});
diff --git a/packages/pn-pa-webapp/src/components/Notifications/__test__/FilterNotifications.a11y.test.tsx b/packages/pn-pa-webapp/src/components/Notifications/__test__/FilterNotifications.a11y.test.tsx
deleted file mode 100644
index 5f2e4e40a4..0000000000
--- a/packages/pn-pa-webapp/src/components/Notifications/__test__/FilterNotifications.a11y.test.tsx
+++ /dev/null
@@ -1,63 +0,0 @@
-import { vi } from 'vitest';
-
-import { createMatchMedia } from '@pagopa-pn/pn-commons/src/test-utils';
-
-import {
- RenderResult,
- act,
- axe,
- fireEvent,
- render,
- screen,
- waitFor,
-} from '../../../__test__/test-utils';
-import FilterNotifications from '../FilterNotifications';
-
-vi.mock('react-i18next', () => ({
- // this mock makes sure any components using the translate hook can use it without a warning being shown
- useTranslation: () => ({
- t: (str: string) => str,
- i18n: { language: 'it' },
- }),
-}));
-
-describe('Filter Notifications Table Component - accessibility tests', () => {
- const original = window.matchMedia;
-
- afterAll(() => {
- window.matchMedia = original;
- });
-
- it('does not have basic accessibility issues - desktop', async () => {
- let result: RenderResult | undefined;
-
- await act(async () => {
- result = render();
- });
-
- if (result) {
- const results = await axe(result.container);
- expect(results).toHaveNoViolations();
- }
- }, 15000);
-
- it('does not have basic accessibility issues - mobile', async () => {
- window.matchMedia = createMatchMedia(800);
- let result: RenderResult | undefined;
-
- await act(async () => {
- result = render();
- });
-
- const button = result!.getByTestId('dialogToggleButton');
- fireEvent.click(button);
-
- const dialogForm = await waitFor(() => screen.getByTestId('filter-form'));
- expect(dialogForm).toBeInTheDocument();
-
- if (dialogForm) {
- const results = await axe(dialogForm);
- expect(results).toHaveNoViolations();
- }
- }, 15000);
-});
diff --git a/packages/pn-pa-webapp/src/components/Notifications/__test__/MobileNotifications.a11y.test.tsx b/packages/pn-pa-webapp/src/components/Notifications/__test__/MobileNotifications.a11y.test.tsx
deleted file mode 100644
index 488c0a76f5..0000000000
--- a/packages/pn-pa-webapp/src/components/Notifications/__test__/MobileNotifications.a11y.test.tsx
+++ /dev/null
@@ -1,81 +0,0 @@
-import { vi } from 'vitest';
-
-import { formatToTimezoneString, tenYearsAgo, today } from '@pagopa-pn/pn-commons';
-
-import { notificationsToFe } from '../../../__mocks__/Notifications.mock';
-import { RenderResult, act, axe, render } from '../../../__test__/test-utils';
-import MobileNotifications from '../MobileNotifications';
-
-vi.mock('react-i18next', () => ({
- // this mock makes sure any components using the translate hook can use it without a warning being shown
- useTranslation: () => ({
- t: (str: string) => str,
- i18n: { language: 'it' },
- }),
-}));
-
-describe('MobileNotifications Component - accessibility tests', () => {
- it('does not have basic accessibility issues', async () => {
- let result: RenderResult | undefined;
- await act(async () => {
- result = render(
- {}}
- onApiKeys={() => {}}
- />
- );
- });
- if (result) {
- const res = await axe(result.container);
- expect(res).toHaveNoViolations();
- } else {
- fail('render() returned undefined!');
- }
- }, 15000);
-
- it('does not have basic accessibility issues (empty notifications)', async () => {
- let result: RenderResult | undefined;
- await act(async () => {
- result = render(
- {}} onApiKeys={() => {}} />
- );
- });
- if (result) {
- const res = await axe(result.container);
- expect(res).toHaveNoViolations();
- } else {
- fail('render() returned undefined!');
- }
- }, 15000);
-
- it('does not have basic accessibility issues (empty notifications after filter)', async () => {
- let result: RenderResult | undefined;
- await act(async () => {
- result = render(
- {}} onApiKeys={() => {}} />,
- {
- preloadedState: {
- dashboardState: {
- filters: {
- startDate: formatToTimezoneString(tenYearsAgo),
- endDate: formatToTimezoneString(today),
- iunMatch: 'ABCD-EFGH-ILMN-123456-A-1',
- },
- },
- },
- }
- );
- });
- // the rerendering must be done to take the useRef updates
- result!.rerender(
- {}} onApiKeys={() => {}} />
- );
- if (result) {
- const res = await axe(result.container);
- expect(res).toHaveNoViolations();
- } else {
- fail('render() returned undefined!');
- }
- }, 15000);
-});
diff --git a/packages/pn-pa-webapp/src/pages/__test__/ApiKeys.page.a11y.test.tsx b/packages/pn-pa-webapp/src/pages/__test__/ApiKeys.page.a11y.test.tsx
deleted file mode 100644
index 7977dbb79f..0000000000
--- a/packages/pn-pa-webapp/src/pages/__test__/ApiKeys.page.a11y.test.tsx
+++ /dev/null
@@ -1,84 +0,0 @@
-import MockAdapter from 'axios-mock-adapter';
-import { vi } from 'vitest';
-
-import { AppResponseMessage, ResponseEventDispatcher } from '@pagopa-pn/pn-commons';
-
-import { mockApiKeysDTO, mockGroups } from '../../__mocks__/ApiKeys.mock';
-import { RenderResult, act, axe, render } from '../../__test__/test-utils';
-import { apiClient } from '../../api/apiClients';
-import { APIKEY_LIST } from '../../api/apiKeys/apiKeys.routes';
-import { GET_USER_GROUPS } from '../../api/notifications/notifications.routes';
-import ApiKeys from '../ApiKeys.page';
-
-vi.mock('react-i18next', () => ({
- // this mock makes sure any components using the translate hook can use it without a warning being shown
- useTranslation: () => ({
- t: (str: string) => str,
- }),
-}));
-
-const reduxInitialState = {
- apiKeysState: {
- loading: false,
- apiKeys: { items: [], total: 0 },
- pagination: {
- size: 10,
- page: 0,
- nextPagesKey: [],
- },
- },
-};
-
-describe('ApiKeys Page - accessibility tests', () => {
- let mock: MockAdapter;
- let result: RenderResult | undefined;
-
- beforeAll(() => {
- mock = new MockAdapter(apiClient);
- });
-
- afterEach(() => {
- result = undefined;
- mock.reset();
- });
-
- afterAll(() => {
- mock.restore();
- });
-
- it('empty list', async () => {
- mock.onGet(APIKEY_LIST({ limit: 10 })).reply(200, []);
- mock.onGet(GET_USER_GROUPS()).reply(200, mockGroups);
- await act(async () => {
- result = render(, { preloadedState: reduxInitialState });
- });
- const results = await axe(result!.container);
- expect(results).toHaveNoViolations();
- }, 15000);
-
- it('no empty list', async () => {
- mock.onGet(APIKEY_LIST({ limit: 10 })).reply(200, mockApiKeysDTO);
- mock.onGet(GET_USER_GROUPS()).reply(200, mockGroups);
- await act(async () => {
- result = render(, { preloadedState: reduxInitialState });
- });
- const results = await axe(result!.container);
- expect(results).toHaveNoViolations();
- }, 15000);
-
- it('api return error', async () => {
- mock.onGet(APIKEY_LIST({ limit: 10 })).reply(500);
- mock.onGet(GET_USER_GROUPS()).reply(200, mockGroups);
- await act(async () => {
- result = render(
- <>
-
-
-
- >
- );
- });
- const results = await axe(result!.container);
- expect(results).toHaveNoViolations();
- }, 15000);
-});
diff --git a/packages/pn-pa-webapp/src/pages/__test__/Dashboard.page.a11y.test.tsx b/packages/pn-pa-webapp/src/pages/__test__/Dashboard.page.a11y.test.tsx
deleted file mode 100644
index 5063625dda..0000000000
--- a/packages/pn-pa-webapp/src/pages/__test__/Dashboard.page.a11y.test.tsx
+++ /dev/null
@@ -1,107 +0,0 @@
-import MockAdapter from 'axios-mock-adapter';
-import { vi } from 'vitest';
-
-import {
- AppResponseMessage,
- ResponseEventDispatcher,
- formatToTimezoneString,
- tenYearsAgo,
- today,
-} from '@pagopa-pn/pn-commons';
-
-import { emptyNotificationsFromBe, notificationsDTO } from '../../__mocks__/Notifications.mock';
-import { RenderResult, act, axe, render } from '../../__test__/test-utils';
-import { apiClient } from '../../api/apiClients';
-import { NOTIFICATIONS_LIST } from '../../api/notifications/notifications.routes';
-import Dashboard from '../Dashboard.page';
-
-vi.mock('react-i18next', () => ({
- // this mock makes sure any components using the translate hook can use it without a warning being shown
- useTranslation: () => ({
- t: (str: string) => str,
- i18n: { language: 'it' },
- }),
-}));
-
-describe('Dashboard Page - accessibility tests', () => {
- let mock: MockAdapter;
- let result: RenderResult | undefined;
-
- beforeAll(() => {
- mock = new MockAdapter(apiClient);
- });
-
- afterEach(() => {
- mock.reset();
- });
-
- afterAll(() => {
- mock.restore();
- });
-
- it('does not have basic accessibility issues rendering the page - no notifications', async () => {
- mock
- .onGet(
- NOTIFICATIONS_LIST({
- startDate: formatToTimezoneString(tenYearsAgo),
- endDate: formatToTimezoneString(today),
- size: 10,
- })
- )
- .reply(200, emptyNotificationsFromBe);
-
- await act(async () => {
- result = render();
- });
- if (result) {
- const results = await axe(result.container);
- expect(results).toHaveNoViolations();
- }
- }, 15000);
-
- it('does not have basic accessibility issues rendering the page', async () => {
- mock
- .onGet(
- NOTIFICATIONS_LIST({
- startDate: formatToTimezoneString(tenYearsAgo),
- endDate: formatToTimezoneString(today),
- size: 10,
- })
- )
- .reply(200, notificationsDTO);
-
- await act(async () => {
- result = render();
- });
- if (result) {
- const results = await axe(result.container);
- expect(results).toHaveNoViolations();
- }
- }, 15000);
-
- it('does not have basic accessibility issues rendering the page - errors on api', async () => {
- mock
- .onGet(
- NOTIFICATIONS_LIST({
- startDate: formatToTimezoneString(tenYearsAgo),
- endDate: formatToTimezoneString(today),
- size: 10,
- })
- )
- .reply(500);
-
- await act(async () => {
- result = render(
- <>
-
-
-
- >
- );
- });
- if (result) {
- const results = await axe(result.container);
- expect(results).toHaveNoViolations();
- }
- }, 15000);
-});
diff --git a/packages/pn-pa-webapp/src/pages/__test__/NotificationDetail.page.a11y.test.tsx b/packages/pn-pa-webapp/src/pages/__test__/NotificationDetail.page.a11y.test.tsx
deleted file mode 100644
index 76ebb00486..0000000000
--- a/packages/pn-pa-webapp/src/pages/__test__/NotificationDetail.page.a11y.test.tsx
+++ /dev/null
@@ -1,88 +0,0 @@
-import MockAdapter from 'axios-mock-adapter';
-import { vi } from 'vitest';
-
-import {
- AppResponseMessage,
- DOWNTIME_HISTORY,
- ResponseEventDispatcher,
-} from '@pagopa-pn/pn-commons';
-
-import { downtimesDTO } from '../../__mocks__/AppStatus.mock';
-import {
- notificationDTO,
- notificationDTOMultiRecipient,
-} from '../../__mocks__/NotificationDetail.mock';
-import { RenderResult, act, axe, render } from '../../__test__/test-utils';
-import { apiClient } from '../../api/apiClients';
-import { NOTIFICATION_DETAIL } from '../../api/notifications/notifications.routes';
-import NotificationDetail from '../NotificationDetail.page';
-
-vi.mock('react-i18next', () => ({
- // this mock makes sure any components using the translate hook can use it without a warning being shown
- useTranslation: () => ({
- t: (str: string) => str,
- }),
-}));
-
-describe('NotificationDetail Page - accessibility tests', () => {
- let mock: MockAdapter;
- let result: RenderResult | undefined;
-
- beforeAll(() => {
- mock = new MockAdapter(apiClient);
- });
-
- afterEach(() => {
- result = undefined;
- mock.reset();
- });
-
- afterAll(() => {
- mock.restore();
- });
-
- it('one recipient - does not have basic accessibility issues rendering the page', async () => {
- mock.onGet(NOTIFICATION_DETAIL(notificationDTO.iun)).reply(200, notificationDTO);
- // we use regexp to not set the query parameters
- mock.onGet(new RegExp(DOWNTIME_HISTORY({ startDate: '' }))).reply(200, downtimesDTO);
- await act(async () => {
- result = render();
- });
- if (result) {
- const results = await axe(result.container);
- expect(results).toHaveNoViolations();
- }
- }, 15000);
-
- it('one recipient - does not have basic accessibility issues rendering the page when API call returns error', async () => {
- mock.onGet(NOTIFICATION_DETAIL(notificationDTO.iun)).reply(500);
- // we use regexp to not set the query parameters
- mock.onGet(new RegExp(DOWNTIME_HISTORY({ startDate: '' }))).reply(200, downtimesDTO);
- await act(async () => {
- result = render(
- <>
-
-
-
- >
- );
- });
- if (result) {
- const results = await axe(result.container);
- expect(results).toHaveNoViolations();
- }
- }, 15000);
-
- it('multi recipient - does not have basic accessibility issues rendering the page', async () => {
- mock.onGet(NOTIFICATION_DETAIL(notificationDTOMultiRecipient.iun)).reply(200, notificationDTO);
- // we use regexp to not set the query parameters
- mock.onGet(new RegExp(DOWNTIME_HISTORY({ startDate: '' }))).reply(200, downtimesDTO);
- await act(async () => {
- result = render();
- });
- if (result) {
- const results = await axe(result.container);
- expect(results).toHaveNoViolations();
- }
- }, 15000);
-});
diff --git a/packages/pn-pa-webapp/vite.config.a11y.ts b/packages/pn-pa-webapp/vite.config.a11y.ts
deleted file mode 100644
index 74413cc01d..0000000000
--- a/packages/pn-pa-webapp/vite.config.a11y.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-///
-import { defineConfig } from 'vite';
-
-import react from '@vitejs/plugin-react';
-
-// https://vitejs.dev/config/
-export default defineConfig(() => {
- return {
- plugins: [react()],
- test: {
- globals: true,
- setupFiles: './src/setupTests.ts',
- environment: 'jsdom',
- include: ['**/*.a11y.test.ts', '**/*.a11y.test.tsx'],
- reporters: ['default'],
- }
- };
-});
diff --git a/packages/pn-pa-webapp/vite.config.mts b/packages/pn-pa-webapp/vite.config.mts
index 8d7a5f4a71..c2bdc7754b 100644
--- a/packages/pn-pa-webapp/vite.config.mts
+++ b/packages/pn-pa-webapp/vite.config.mts
@@ -9,13 +9,13 @@ const vitestConfig = defineVitestConfig({
globals: true,
setupFiles: './src/setupTests.ts',
environment: 'jsdom',
- exclude: [...configDefaults.exclude, '**/*.a11y.test.ts', '**/*.a11y.test.tsx'],
+ exclude: configDefaults.exclude,
reporters: ['vitest-sonar-reporter', 'default'],
outputFile: 'test-report.xml',
coverage: {
provider: 'v8',
reporter: ['lcov'],
- exclude: ['**/*.a11y.test.ts', '**/*.a11y.test.tsx', 'src/models/**'],
+ exclude: ['src/models/**'],
reportOnFailure: true,
},
},
diff --git a/packages/pn-personafisica-webapp/vite.config.a11y.ts b/packages/pn-personafisica-webapp/vite.config.a11y.ts
index 74413cc01d..9866859847 100644
--- a/packages/pn-personafisica-webapp/vite.config.a11y.ts
+++ b/packages/pn-personafisica-webapp/vite.config.a11y.ts
@@ -13,6 +13,6 @@ export default defineConfig(() => {
environment: 'jsdom',
include: ['**/*.a11y.test.ts', '**/*.a11y.test.tsx'],
reporters: ['default'],
- }
+ },
};
});
diff --git a/packages/pn-personagiuridica-webapp/vite.config.a11y.ts b/packages/pn-personagiuridica-webapp/vite.config.a11y.ts
index 74413cc01d..9866859847 100644
--- a/packages/pn-personagiuridica-webapp/vite.config.a11y.ts
+++ b/packages/pn-personagiuridica-webapp/vite.config.a11y.ts
@@ -13,6 +13,6 @@ export default defineConfig(() => {
environment: 'jsdom',
include: ['**/*.a11y.test.ts', '**/*.a11y.test.tsx'],
reporters: ['default'],
- }
+ },
};
});
diff --git a/yarn.lock b/yarn.lock
index 44539bfe50..fd7b39843d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -22,6 +22,14 @@
dependencies:
"@babel/highlight" "^7.16.7"
+"@babel/code-frame@^7.12.13":
+ version "7.24.2"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae"
+ integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==
+ dependencies:
+ "@babel/highlight" "^7.24.2"
+ picocolors "^1.0.0"
+
"@babel/code-frame@^7.22.13":
version "7.22.13"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e"
@@ -536,6 +544,16 @@
chalk "^2.4.2"
js-tokens "^4.0.0"
+"@babel/highlight@^7.24.2":
+ version "7.24.2"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26"
+ integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.22.20"
+ chalk "^2.4.2"
+ js-tokens "^4.0.0"
+ picocolors "^1.0.0"
+
"@babel/parser@^7.1.0":
version "7.17.3"
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz"
@@ -1822,6 +1840,13 @@
resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz"
integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
+"@jest/expect-utils@^29.7.0":
+ version "29.7.0"
+ resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6"
+ integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==
+ dependencies:
+ jest-get-type "^29.6.3"
+
"@jest/schemas@^29.4.3", "@jest/schemas@^29.6.3":
version "29.6.3"
resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03"
@@ -1829,6 +1854,18 @@
dependencies:
"@sinclair/typebox" "^0.27.8"
+"@jest/types@^29.6.3":
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59"
+ integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==
+ dependencies:
+ "@jest/schemas" "^29.6.3"
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ "@types/istanbul-reports" "^3.0.0"
+ "@types/node" "*"
+ "@types/yargs" "^17.0.8"
+ chalk "^4.0.0"
+
"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2":
version "0.3.2"
resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9"
@@ -2815,26 +2852,37 @@
"@types/react" "*"
hoist-non-react-statics "^3.3.0"
+"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0":
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7"
+ integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==
+
"@types/istanbul-lib-coverage@^2.0.1":
version "2.0.4"
resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz"
integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==
-"@types/jest-axe@^3.5.3":
- version "3.5.7"
- resolved "https://registry.yarnpkg.com/@types/jest-axe/-/jest-axe-3.5.7.tgz#12abeb00936a71e71760ee00c574f63e68d5d873"
- integrity sha512-eFIaZbh4t7Odys8dSQBJLMbM3cubzaJLl+g5yZwBMF6nqOpXQCvwPQPDHk0tfVepeDodcLy87bopvHb5bWrNAQ==
+"@types/istanbul-lib-report@*":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf"
+ integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==
dependencies:
- "@types/jest" "*"
- axe-core "^3.5.5"
+ "@types/istanbul-lib-coverage" "*"
-"@types/jest@*":
- version "27.4.0"
- resolved "https://registry.npmjs.org/@types/jest/-/jest-27.4.0.tgz"
- integrity sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ==
+"@types/istanbul-reports@^3.0.0":
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54"
+ integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==
+ dependencies:
+ "@types/istanbul-lib-report" "*"
+
+"@types/jest@^29.5.12":
+ version "29.5.12"
+ resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544"
+ integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==
dependencies:
- jest-diff "^27.0.0"
- pretty-format "^27.0.0"
+ expect "^29.0.0"
+ pretty-format "^29.0.0"
"@types/json-schema@^7.0.12":
version "7.0.13"
@@ -2846,6 +2894,11 @@
resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz"
integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
+"@types/json5@^0.0.29":
+ version "0.0.29"
+ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
+ integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
+
"@types/lodash@^4.14.172":
version "4.14.178"
resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.178.tgz"
@@ -2871,6 +2924,13 @@
resolved "https://registry.npmjs.org/@types/mixpanel-browser/-/mixpanel-browser-2.38.0.tgz"
integrity sha512-TR8rvsILnqXA7oiiGOxuMGXwvDeCoQDonXJB5UR+TYvEAFpiK8ReFj5LhZT+Xhm3NpI9aPoju30jB2ssorSUww==
+"@types/node@*":
+ version "20.12.7"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.7.tgz#04080362fa3dd6c5822061aa3124f5c152cff384"
+ integrity sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==
+ dependencies:
+ undici-types "~5.26.4"
+
"@types/node@^17.0.8":
version "17.0.45"
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190"
@@ -2952,11 +3012,28 @@
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04"
integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==
+"@types/stack-utils@^2.0.0":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8"
+ integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==
+
"@types/use-sync-external-store@^0.0.3":
version "0.0.3"
resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43"
integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==
+"@types/yargs-parser@*":
+ version "21.0.3"
+ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15"
+ integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==
+
+"@types/yargs@^17.0.8":
+ version "17.0.32"
+ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229"
+ integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==
+ dependencies:
+ "@types/yargs-parser" "*"
+
"@typescript-eslint/eslint-plugin@^6.7.3":
version "6.7.5"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.5.tgz#f4024b9f63593d0c2b5bd6e4ca027e6f30934d4f"
@@ -3478,14 +3555,9 @@ available-typed-arrays@^1.0.5:
axe-core@4.4.1:
version "4.4.1"
- resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz"
+ resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413"
integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==
-axe-core@^3.5.5:
- version "3.5.6"
- resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.5.6.tgz#e762a90d7f6dbd244ceacb4e72760ff8aad521b5"
- integrity sha512-LEUDjgmdJoA3LqklSTwKYqkjcZ4HKc4ddIYGSAiSkr46NTjzg2L9RNB+lekO9P7Dlpa87+hBtzc2Fzn/+GUWMQ==
-
axios-mock-adapter@^1.22.0:
version "1.22.0"
resolved "https://registry.yarnpkg.com/axios-mock-adapter/-/axios-mock-adapter-1.22.0.tgz#0f3e6be0fc9b55baab06f2d49c0b71157e7c053d"
@@ -3821,7 +3893,7 @@ ci-info@^2.0.0:
resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz"
integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
-ci-info@^3.6.1:
+ci-info@^3.2.0, ci-info@^3.6.1:
version "3.9.0"
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4"
integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
@@ -4380,7 +4452,7 @@ detect-indent@^5.0.0:
diff-sequences@^27.5.1:
version "27.5.1"
- resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz"
+ resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327"
integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==
diff-sequences@^29.6.3:
@@ -4630,6 +4702,11 @@ escape-string-regexp@^1.0.5:
resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+escape-string-regexp@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
+ integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
+
escape-string-regexp@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
@@ -4911,6 +4988,17 @@ execa@^8.0.1:
signal-exit "^4.1.0"
strip-final-newline "^3.0.0"
+expect@^29.0.0:
+ version "29.7.0"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc"
+ integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==
+ dependencies:
+ "@jest/expect-utils" "^29.7.0"
+ jest-get-type "^29.6.3"
+ jest-matcher-utils "^29.7.0"
+ jest-message-util "^29.7.0"
+ jest-util "^29.7.0"
+
external-editor@^3.0.3:
version "3.1.0"
resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz"
@@ -5428,6 +5516,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz"
integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
+graceful-fs@^4.2.9:
+ version "4.2.11"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
+ integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
+
graphemer@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
@@ -6179,18 +6272,18 @@ javascript-natural-sort@0.7.1:
integrity sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==
jest-axe@^6.0.0:
- version "6.0.0"
- resolved "https://registry.npmjs.org/jest-axe/-/jest-axe-6.0.0.tgz"
- integrity sha512-gAh/2zoWii4Rbhe6IUIo5TTiseGJDCitFnDFwBNpIuaOciyQgVZue6jtd4W7oMoKHewKoRSuIol7t/MuGx+mqg==
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/jest-axe/-/jest-axe-6.0.1.tgz#54a8b7dc09afd6190b21f38b51b8bddc2d923834"
+ integrity sha512-+KcRAdZeKXBbtHTmMkokRq5/hXHaVFpX+WS2o3uvhkmF3szdr4+TYAz+QuOTeM0B1d4YPoNmQWhGzSzxHJNZrA==
dependencies:
axe-core "4.4.1"
chalk "4.1.0"
jest-matcher-utils "27.0.2"
lodash.merge "4.6.2"
-jest-diff@^27.0.0, jest-diff@^27.0.2:
+jest-diff@^27.0.2:
version "27.5.1"
- resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def"
integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==
dependencies:
chalk "^4.0.0"
@@ -6198,14 +6291,29 @@ jest-diff@^27.0.0, jest-diff@^27.0.2:
jest-get-type "^27.5.1"
pretty-format "^27.5.1"
+jest-diff@^29.7.0:
+ version "29.7.0"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a"
+ integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==
+ dependencies:
+ chalk "^4.0.0"
+ diff-sequences "^29.6.3"
+ jest-get-type "^29.6.3"
+ pretty-format "^29.7.0"
+
jest-get-type@^27.0.1, jest-get-type@^27.5.1:
version "27.5.1"
- resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1"
integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==
+jest-get-type@^29.6.3:
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1"
+ integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==
+
jest-matcher-utils@27.0.2:
version "27.0.2"
- resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.0.2.tgz"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.0.2.tgz#f14c060605a95a466cdc759acc546c6f4cbfc4f0"
integrity sha512-Qczi5xnTNjkhcIB0Yy75Txt+Ez51xdhOxsukN7awzq2auZQGPHcQrJ623PZj0ECDEMOk2soxWx05EXdXGd1CbA==
dependencies:
chalk "^4.0.0"
@@ -6213,6 +6321,31 @@ jest-matcher-utils@27.0.2:
jest-get-type "^27.0.1"
pretty-format "^27.0.2"
+jest-matcher-utils@^29.7.0:
+ version "29.7.0"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12"
+ integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==
+ dependencies:
+ chalk "^4.0.0"
+ jest-diff "^29.7.0"
+ jest-get-type "^29.6.3"
+ pretty-format "^29.7.0"
+
+jest-message-util@^29.7.0:
+ version "29.7.0"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3"
+ integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==
+ dependencies:
+ "@babel/code-frame" "^7.12.13"
+ "@jest/types" "^29.6.3"
+ "@types/stack-utils" "^2.0.0"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.9"
+ micromatch "^4.0.4"
+ pretty-format "^29.7.0"
+ slash "^3.0.0"
+ stack-utils "^2.0.3"
+
jest-sonar-reporter@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/jest-sonar-reporter/-/jest-sonar-reporter-2.0.0.tgz#faa54a7d2af7198767ee246a82b78c576789cf08"
@@ -6220,6 +6353,18 @@ jest-sonar-reporter@^2.0.0:
dependencies:
xml "^1.0.1"
+jest-util@^29.7.0:
+ version "29.7.0"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc"
+ integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==
+ dependencies:
+ "@jest/types" "^29.6.3"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ ci-info "^3.2.0"
+ graceful-fs "^4.2.9"
+ picomatch "^2.2.3"
+
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
@@ -6317,6 +6462,13 @@ json-stringify-safe@^5.0.1:
resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
+json5@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
+ integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
+ dependencies:
+ minimist "^1.2.0"
+
json5@^2.2.2, json5@^2.2.3:
version "2.2.3"
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
@@ -6555,7 +6707,7 @@ lodash.ismatch@^4.4.0:
lodash.merge@4.6.2:
version "4.6.2"
- resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz"
+ resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21:
@@ -7858,7 +8010,7 @@ pretty-format@29.4.3:
ansi-styles "^5.0.0"
react-is "^18.0.0"
-pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1:
+pretty-format@^27.0.2, pretty-format@^27.5.1:
version "27.5.1"
resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz"
integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==
@@ -7867,7 +8019,7 @@ pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1:
ansi-styles "^5.0.0"
react-is "^17.0.1"
-pretty-format@^29.7.0:
+pretty-format@^29.0.0, pretty-format@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812"
integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==
@@ -8730,6 +8882,13 @@ ssri@^10.0.0, ssri@^10.0.1:
dependencies:
minipass "^7.0.3"
+stack-utils@^2.0.3:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f"
+ integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==
+ dependencies:
+ escape-string-regexp "^2.0.0"
+
stackback@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b"
@@ -9113,7 +9272,17 @@ ts-api-utils@^1.0.1:
resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331"
integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==
-tsconfig-paths@^3.12.0, tsconfig-paths@^4.1.2:
+tsconfig-paths@^3.12.0:
+ version "3.15.0"
+ resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4"
+ integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==
+ dependencies:
+ "@types/json5" "^0.0.29"
+ json5 "^1.0.2"
+ minimist "^1.2.6"
+ strip-bom "^3.0.0"
+
+tsconfig-paths@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.1.2.tgz#4819f861eef82e6da52fb4af1e8c930a39ed979a"
integrity sha512-uhxiMgnXQp1IR622dUXI+9Ehnws7i/y6xvpZB9IbUVOPy0muvdvgXeZOn88UcGPiT98Vp3rJPTa8bFoalZ3Qhw==
@@ -9235,6 +9404,11 @@ unbox-primitive@^1.0.1:
has-symbols "^1.0.2"
which-boxed-primitive "^1.0.2"
+undici-types@~5.26.4:
+ version "5.26.5"
+ resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
+ integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
+
unicode-canonical-property-names-ecmascript@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz"