fix: e2e tests
All checks were successful
it-academy/dry-wash-pl/pipeline/head This commit looks good

This commit is contained in:
RustamRu 2025-02-09 11:02:27 +03:00
parent 8d447c9461
commit 7736592830
6 changed files with 370 additions and 90 deletions

View File

@ -0,0 +1,9 @@
import localeRu from '../locales/ru.json';
module.exports = {
useTranslation: (_, { keyPrefix }) => {
return {
t: (key: string) => localeRu[`${keyPrefix}.${key}`],
};
}
};

View File

@ -9,9 +9,11 @@ module.exports = {
clearMocks: true, clearMocks: true,
moduleNameMapper: { moduleNameMapper: {
'\\.(svg|webp)$': '<rootDir>/__mocks__/file', '\\.(svg|webp)$': '<rootDir>/__mocks__/file',
'react-i18next': '<rootDir>/__mocks__/react-i18next',
}, },
testEnvironmentOptions: { testEnvironmentOptions: {
customExportConditions: [''], customExportConditions: [''],
}, },
testEnvironment: 'jest-fixed-jsdom', testEnvironment: 'jest-fixed-jsdom',
testPathIgnorePatterns: ['/node_modules/', '<rootDir>/e2e'],
}; };

View File

@ -16,7 +16,9 @@ type UpdateOrderProps = Required<Pick<OrderArm, 'id'>> &
export const api = createApi({ export const api = createApi({
reducerPath: 'api', reducerPath: 'api',
baseQuery: fetchBaseQuery({ baseUrl: getConfigValue('dry-wash.api') }), baseQuery: fetchBaseQuery({
baseUrl: new URL(getConfigValue('dry-wash.api'), location.origin).href,
}),
tagTypes: ['Masters', 'Orders'], tagTypes: ['Masters', 'Orders'],
endpoints: (builder) => ({ endpoints: (builder) => ({
getMasters: builder.query<Master[], void>({ getMasters: builder.query<Master[], void>({

View File

@ -6,58 +6,58 @@ exports[`Arm Page render 1`] = `
class="css-1yeiifd" class="css-1yeiifd"
> >
<div <div
class="css-1fp6kaj" class="css-13owfwq"
> >
<h2 <h2
class="chakra-heading css-9q1d0h" class="chakra-heading css-173d1bl"
> >
title Сухой мастер
</h2> </h2>
<div <div
class="chakra-stack css-1oen434" class="chakra-stack css-1cggwyz"
> >
<hr <hr
aria-orientation="horizontal" aria-orientation="horizontal"
class="chakra-divider css-1upb9tn" class="chakra-divider css-svjswr"
/> />
<a <a
class="chakra-button css-uxt1e8" class="chakra-button css-1kg18wp"
href="/auth/login" href="/auth/login"
> >
orders Заказы
</a> </a>
<hr <hr
aria-orientation="horizontal" aria-orientation="horizontal"
class="chakra-divider css-1upb9tn" class="chakra-divider css-svjswr"
/> />
<a <a
class="chakra-button css-uxt1e8" class="chakra-button css-1kg18wp"
href="/auth/login" href="/auth/login"
> >
master Мастера
</a> </a>
<hr <hr
aria-orientation="horizontal" aria-orientation="horizontal"
class="chakra-divider css-1upb9tn" class="chakra-divider css-svjswr"
/> />
</div> </div>
</div> </div>
<div <div
class="css-sy55x5" class="css-jiwy8d"
> >
<div <div
class="css-hpgf8j" class="css-1glkkdp"
> >
<h2 <h2
class="chakra-heading css-r7q7qr" class="chakra-heading css-1xer3cv"
> >
title Заказы
</h2> </h2>
<div <div
class="css-1me9tx" class="css-1u3smh"
> >
<button <button
class="chakra-button css-4xx2wk" class="chakra-button css-ez23ye"
type="button" type="button"
> >
<svg <svg
@ -72,12 +72,12 @@ exports[`Arm Page render 1`] = `
</svg> </svg>
</button> </button>
<p <p
class="chakra-text css-1bntq7d" class="chakra-text css-52ukzg"
> >
2/2/2025 09.02.2025
</p> </p>
<button <button
class="chakra-button css-4xx2wk" class="chakra-button css-ez23ye"
type="button" type="button"
> >
<svg <svg
@ -93,7 +93,7 @@ exports[`Arm Page render 1`] = `
</button> </button>
</div> </div>
<table <table
class="chakra-table css-0" class="chakra-table css-5605sr"
> >
<thead <thead
class="css-0" class="css-0"
@ -102,34 +102,34 @@ exports[`Arm Page render 1`] = `
class="css-0" class="css-0"
> >
<th <th
class="css-0" class="css-1szkfps"
> >
table.header.carNumber Номер машины
</th> </th>
<th <th
class="css-0" class="css-1szkfps"
> >
table.header.orderDate Дата заказа
</th> </th>
<th <th
class="css-0" class="css-1szkfps"
> >
table.header.status Статус
</th> </th>
<th <th
class="css-0" class="css-1szkfps"
> >
table.header.masters Мастер
</th> </th>
<th <th
class="css-0" class="css-1szkfps"
> >
table.header.telephone Телефон
</th> </th>
<th <th
class="css-0" class="css-1szkfps"
> >
table.header.location Расположение
</th> </th>
</tr> </tr>
</thead> </thead>
@ -140,11 +140,11 @@ exports[`Arm Page render 1`] = `
class="css-0" class="css-0"
> >
<td <td
class="css-12rlgei" class="css-1v9gmks"
colspan="6" colspan="6"
> >
<div <div
class="chakra-spinner css-1y7joxr" class="chakra-spinner css-1j92705"
> >
<span <span
class="css-8b45rq" class="css-8b45rq"
@ -159,6 +159,10 @@ exports[`Arm Page render 1`] = `
</div> </div>
</div> </div>
</div> </div>
<span
hidden=""
id="__chakra_env"
/>
</div> </div>
`; `;
@ -168,58 +172,58 @@ exports[`Arm Page render 2`] = `
class="css-1yeiifd" class="css-1yeiifd"
> >
<div <div
class="css-1fp6kaj" class="css-13owfwq"
> >
<h2 <h2
class="chakra-heading css-9q1d0h" class="chakra-heading css-173d1bl"
> >
title Сухой мастер
</h2> </h2>
<div <div
class="chakra-stack css-1oen434" class="chakra-stack css-1cggwyz"
> >
<hr <hr
aria-orientation="horizontal" aria-orientation="horizontal"
class="chakra-divider css-1upb9tn" class="chakra-divider css-svjswr"
/> />
<a <a
class="chakra-button css-uxt1e8" class="chakra-button css-1kg18wp"
href="/auth/login" href="/auth/login"
> >
orders Заказы
</a> </a>
<hr <hr
aria-orientation="horizontal" aria-orientation="horizontal"
class="chakra-divider css-1upb9tn" class="chakra-divider css-svjswr"
/> />
<a <a
class="chakra-button css-uxt1e8" class="chakra-button css-1kg18wp"
href="/auth/login" href="/auth/login"
> >
master Мастера
</a> </a>
<hr <hr
aria-orientation="horizontal" aria-orientation="horizontal"
class="chakra-divider css-1upb9tn" class="chakra-divider css-svjswr"
/> />
</div> </div>
</div> </div>
<div <div
class="css-sy55x5" class="css-jiwy8d"
> >
<div <div
class="css-hpgf8j" class="css-1glkkdp"
> >
<h2 <h2
class="chakra-heading css-r7q7qr" class="chakra-heading css-1xer3cv"
> >
title Заказы
</h2> </h2>
<div <div
class="css-1me9tx" class="css-1u3smh"
> >
<button <button
class="chakra-button css-4xx2wk" class="chakra-button css-ez23ye"
type="button" type="button"
> >
<svg <svg
@ -234,12 +238,12 @@ exports[`Arm Page render 2`] = `
</svg> </svg>
</button> </button>
<p <p
class="chakra-text css-1bntq7d" class="chakra-text css-52ukzg"
> >
2/2/2025 09.02.2025
</p> </p>
<button <button
class="chakra-button css-4xx2wk" class="chakra-button css-ez23ye"
type="button" type="button"
> >
<svg <svg
@ -255,7 +259,7 @@ exports[`Arm Page render 2`] = `
</button> </button>
</div> </div>
<table <table
class="chakra-table css-0" class="chakra-table css-5605sr"
> >
<thead <thead
class="css-0" class="css-0"
@ -264,34 +268,34 @@ exports[`Arm Page render 2`] = `
class="css-0" class="css-0"
> >
<th <th
class="css-0" class="css-1szkfps"
> >
table.header.carNumber Номер машины
</th> </th>
<th <th
class="css-0" class="css-1szkfps"
> >
table.header.orderDate Дата заказа
</th> </th>
<th <th
class="css-0" class="css-1szkfps"
> >
table.header.status Статус
</th> </th>
<th <th
class="css-0" class="css-1szkfps"
> >
table.header.masters Мастер
</th> </th>
<th <th
class="css-0" class="css-1szkfps"
> >
table.header.telephone Телефон
</th> </th>
<th <th
class="css-0" class="css-1szkfps"
> >
table.header.location Расположение
</th> </th>
</tr> </tr>
</thead> </thead>
@ -302,24 +306,288 @@ exports[`Arm Page render 2`] = `
class="css-0" class="css-0"
> >
<td <td
class="css-12rlgei" class="css-zgoslk"
colspan="6" >
A123BC
</td>
<td
class="css-zgoslk"
>
24.11.2024
<br />
</td>
<td
class="css-zgoslk"
> >
<div <div
class="chakra-spinner css-1y7joxr" class="chakra-select__wrapper css-42b2qy"
> >
<span <select
class="css-8b45rq" class="chakra-select css-11j19cx"
> >
Loading... <option
</span> value=""
>
Выберите статус
</option>
<option
value="pending"
>
В ожидании
</option>
<option
value="progress"
>
Выполняется
</option>
<option
value="working"
>
В работе
</option>
<option
value="canceled"
>
Отменено
</option>
<option
value="complete"
>
Завершено
</option>
</select>
<div
class="chakra-select__icon-wrapper css-iohxn1"
>
<svg
aria-hidden="true"
class="chakra-select__icon"
focusable="false"
role="presentation"
style="width: 1em; height: 1em; color: currentColor;"
viewBox="0 0 24 24"
>
<path
d="M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"
fill="currentColor"
/>
</svg>
</div>
</div> </div>
</td> </td>
<td
class="css-zgoslk"
>
<div
class="chakra-select__wrapper css-42b2qy"
>
<select
class="chakra-select css-161pkch"
>
<option
value=""
>
Выберите мастера
</option>
<option
value="Иван Иванов"
>
Иван Иванов
</option>
<option
value="Олег Макаров"
>
Олег Макаров
</option>
<option
value="Иван Галкин"
>
Иван Галкин
</option>
</select>
<div
class="chakra-select__icon-wrapper css-iohxn1"
>
<svg
aria-hidden="true"
class="chakra-select__icon"
focusable="false"
role="presentation"
style="width: 1em; height: 1em; color: currentColor;"
viewBox="0 0 24 24"
>
<path
d="M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"
fill="currentColor"
/>
</svg>
</div>
</div>
</td>
<td
class="css-zgoslk"
>
<a
class="chakra-link css-spn4bz"
href="tel:"
>
79001234563
</a>
</td>
<td
class="css-zgoslk"
>
Казань, ул. Баумана, 1
</td>
</tr>
<tr
class="css-0"
>
<td
class="css-zgoslk"
>
A245BC
</td>
<td
class="css-zgoslk"
>
24.11.2024
<br />
</td>
<td
class="css-zgoslk"
>
<div
class="chakra-select__wrapper css-42b2qy"
>
<select
class="chakra-select css-lvra4l"
>
<option
value=""
>
Выберите статус
</option>
<option
value="pending"
>
В ожидании
</option>
<option
value="progress"
>
Выполняется
</option>
<option
value="working"
>
В работе
</option>
<option
value="canceled"
>
Отменено
</option>
<option
value="complete"
>
Завершено
</option>
</select>
<div
class="chakra-select__icon-wrapper css-iohxn1"
>
<svg
aria-hidden="true"
class="chakra-select__icon"
focusable="false"
role="presentation"
style="width: 1em; height: 1em; color: currentColor;"
viewBox="0 0 24 24"
>
<path
d="M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"
fill="currentColor"
/>
</svg>
</div>
</div>
</td>
<td
class="css-zgoslk"
>
<div
class="chakra-select__wrapper css-42b2qy"
>
<select
class="chakra-select css-161pkch"
>
<option
value=""
>
Выберите мастера
</option>
<option
value="Иван Иванов"
>
Иван Иванов
</option>
<option
value="Олег Макаров"
>
Олег Макаров
</option>
<option
value="Иван Галкин"
>
Иван Галкин
</option>
</select>
<div
class="chakra-select__icon-wrapper css-iohxn1"
>
<svg
aria-hidden="true"
class="chakra-select__icon"
focusable="false"
role="presentation"
style="width: 1em; height: 1em; color: currentColor;"
viewBox="0 0 24 24"
>
<path
d="M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"
fill="currentColor"
/>
</svg>
</div>
</div>
</td>
<td
class="css-zgoslk"
>
<a
class="chakra-link css-spn4bz"
href="tel:"
>
79001234567
</a>
</td>
<td
class="css-zgoslk"
>
Казань, ул. Баумана, 43
</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>
</div> </div>
<span
hidden=""
id="__chakra_env"
/>
</div> </div>
`; `;

View File

@ -12,7 +12,11 @@ import { render, screen, waitFor } from '@testing-library/react';
import { http, HttpResponse } from 'msw'; import { http, HttpResponse } from 'msw';
import { setupServer } from 'msw/node'; import { setupServer } from 'msw/node';
import { BrowserRouter } from 'react-router-dom'; import { BrowserRouter } from 'react-router-dom';
import { ChakraProvider, theme as chakraTheme } from '@chakra-ui/react';
import { Provider } from 'react-redux';
import ErrorBoundary from '../../components/ErrorBoundary';
import { store } from '../../__data__/store';
import Page from '../arm'; import Page from '../arm';
const server = setupServer( const server = setupServer(
@ -87,17 +91,6 @@ const server = setupServer(
}), }),
); );
jest.mock('react-i18next', () => {
return {
useTranslation: () => {
return {
t: (key: never) => `${key}`,
i18n: {},
};
},
};
});
jest.mock('@brojs/cli', () => { jest.mock('@brojs/cli', () => {
return { return {
getNavigationValue: () => '/auth/login', getNavigationValue: () => '/auth/login',
@ -116,9 +109,15 @@ describe('Arm Page', () => {
}); });
const { container } = render( const { container } = render(
<BrowserRouter> <Provider store={store}>
<Page mockUser={{ name: 'ilnaz' }} /> <ChakraProvider theme={chakraTheme}>
</BrowserRouter>, <ErrorBoundary>
<BrowserRouter>
<Page mockUser={{ name: 'ilnaz' }} />
</BrowserRouter>
</ErrorBoundary>
</ChakraProvider>
</Provider>,
); );
expect(container).toMatchSnapshot(); expect(container).toMatchSnapshot();