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,
moduleNameMapper: {
'\\.(svg|webp)$': '<rootDir>/__mocks__/file',
'react-i18next': '<rootDir>/__mocks__/react-i18next',
},
testEnvironmentOptions: {
customExportConditions: [''],
},
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({
reducerPath: 'api',
baseQuery: fetchBaseQuery({ baseUrl: getConfigValue('dry-wash.api') }),
baseQuery: fetchBaseQuery({
baseUrl: new URL(getConfigValue('dry-wash.api'), location.origin).href,
}),
tagTypes: ['Masters', 'Orders'],
endpoints: (builder) => ({
getMasters: builder.query<Master[], void>({

View File

@ -6,58 +6,58 @@ exports[`Arm Page render 1`] = `
class="css-1yeiifd"
>
<div
class="css-1fp6kaj"
class="css-13owfwq"
>
<h2
class="chakra-heading css-9q1d0h"
class="chakra-heading css-173d1bl"
>
title
Сухой мастер
</h2>
<div
class="chakra-stack css-1oen434"
class="chakra-stack css-1cggwyz"
>
<hr
aria-orientation="horizontal"
class="chakra-divider css-1upb9tn"
class="chakra-divider css-svjswr"
/>
<a
class="chakra-button css-uxt1e8"
class="chakra-button css-1kg18wp"
href="/auth/login"
>
orders
Заказы
</a>
<hr
aria-orientation="horizontal"
class="chakra-divider css-1upb9tn"
class="chakra-divider css-svjswr"
/>
<a
class="chakra-button css-uxt1e8"
class="chakra-button css-1kg18wp"
href="/auth/login"
>
master
Мастера
</a>
<hr
aria-orientation="horizontal"
class="chakra-divider css-1upb9tn"
class="chakra-divider css-svjswr"
/>
</div>
</div>
<div
class="css-sy55x5"
class="css-jiwy8d"
>
<div
class="css-hpgf8j"
class="css-1glkkdp"
>
<h2
class="chakra-heading css-r7q7qr"
class="chakra-heading css-1xer3cv"
>
title
Заказы
</h2>
<div
class="css-1me9tx"
class="css-1u3smh"
>
<button
class="chakra-button css-4xx2wk"
class="chakra-button css-ez23ye"
type="button"
>
<svg
@ -72,12 +72,12 @@ exports[`Arm Page render 1`] = `
</svg>
</button>
<p
class="chakra-text css-1bntq7d"
class="chakra-text css-52ukzg"
>
2/2/2025
09.02.2025
</p>
<button
class="chakra-button css-4xx2wk"
class="chakra-button css-ez23ye"
type="button"
>
<svg
@ -93,7 +93,7 @@ exports[`Arm Page render 1`] = `
</button>
</div>
<table
class="chakra-table css-0"
class="chakra-table css-5605sr"
>
<thead
class="css-0"
@ -102,34 +102,34 @@ exports[`Arm Page render 1`] = `
class="css-0"
>
<th
class="css-0"
class="css-1szkfps"
>
table.header.carNumber
Номер машины
</th>
<th
class="css-0"
class="css-1szkfps"
>
table.header.orderDate
Дата заказа
</th>
<th
class="css-0"
class="css-1szkfps"
>
table.header.status
Статус
</th>
<th
class="css-0"
class="css-1szkfps"
>
table.header.masters
Мастер
</th>
<th
class="css-0"
class="css-1szkfps"
>
table.header.telephone
Телефон
</th>
<th
class="css-0"
class="css-1szkfps"
>
table.header.location
Расположение
</th>
</tr>
</thead>
@ -140,11 +140,11 @@ exports[`Arm Page render 1`] = `
class="css-0"
>
<td
class="css-12rlgei"
class="css-1v9gmks"
colspan="6"
>
<div
class="chakra-spinner css-1y7joxr"
class="chakra-spinner css-1j92705"
>
<span
class="css-8b45rq"
@ -159,6 +159,10 @@ exports[`Arm Page render 1`] = `
</div>
</div>
</div>
<span
hidden=""
id="__chakra_env"
/>
</div>
`;
@ -168,58 +172,58 @@ exports[`Arm Page render 2`] = `
class="css-1yeiifd"
>
<div
class="css-1fp6kaj"
class="css-13owfwq"
>
<h2
class="chakra-heading css-9q1d0h"
class="chakra-heading css-173d1bl"
>
title
Сухой мастер
</h2>
<div
class="chakra-stack css-1oen434"
class="chakra-stack css-1cggwyz"
>
<hr
aria-orientation="horizontal"
class="chakra-divider css-1upb9tn"
class="chakra-divider css-svjswr"
/>
<a
class="chakra-button css-uxt1e8"
class="chakra-button css-1kg18wp"
href="/auth/login"
>
orders
Заказы
</a>
<hr
aria-orientation="horizontal"
class="chakra-divider css-1upb9tn"
class="chakra-divider css-svjswr"
/>
<a
class="chakra-button css-uxt1e8"
class="chakra-button css-1kg18wp"
href="/auth/login"
>
master
Мастера
</a>
<hr
aria-orientation="horizontal"
class="chakra-divider css-1upb9tn"
class="chakra-divider css-svjswr"
/>
</div>
</div>
<div
class="css-sy55x5"
class="css-jiwy8d"
>
<div
class="css-hpgf8j"
class="css-1glkkdp"
>
<h2
class="chakra-heading css-r7q7qr"
class="chakra-heading css-1xer3cv"
>
title
Заказы
</h2>
<div
class="css-1me9tx"
class="css-1u3smh"
>
<button
class="chakra-button css-4xx2wk"
class="chakra-button css-ez23ye"
type="button"
>
<svg
@ -234,12 +238,12 @@ exports[`Arm Page render 2`] = `
</svg>
</button>
<p
class="chakra-text css-1bntq7d"
class="chakra-text css-52ukzg"
>
2/2/2025
09.02.2025
</p>
<button
class="chakra-button css-4xx2wk"
class="chakra-button css-ez23ye"
type="button"
>
<svg
@ -255,7 +259,7 @@ exports[`Arm Page render 2`] = `
</button>
</div>
<table
class="chakra-table css-0"
class="chakra-table css-5605sr"
>
<thead
class="css-0"
@ -264,34 +268,34 @@ exports[`Arm Page render 2`] = `
class="css-0"
>
<th
class="css-0"
class="css-1szkfps"
>
table.header.carNumber
Номер машины
</th>
<th
class="css-0"
class="css-1szkfps"
>
table.header.orderDate
Дата заказа
</th>
<th
class="css-0"
class="css-1szkfps"
>
table.header.status
Статус
</th>
<th
class="css-0"
class="css-1szkfps"
>
table.header.masters
Мастер
</th>
<th
class="css-0"
class="css-1szkfps"
>
table.header.telephone
Телефон
</th>
<th
class="css-0"
class="css-1szkfps"
>
table.header.location
Расположение
</th>
</tr>
</thead>
@ -302,18 +306,278 @@ exports[`Arm Page render 2`] = `
class="css-0"
>
<td
class="css-12rlgei"
colspan="6"
class="css-zgoslk"
>
A123BC
</td>
<td
class="css-zgoslk"
>
24.11.2024
<br />
</td>
<td
class="css-zgoslk"
>
<div
class="chakra-spinner css-1y7joxr"
class="chakra-select__wrapper css-42b2qy"
>
<span
class="css-8b45rq"
<select
class="chakra-select css-11j19cx"
>
Loading...
</span>
<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:"
>
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>
</tbody>
@ -321,5 +585,9 @@ exports[`Arm Page render 2`] = `
</div>
</div>
</div>
<span
hidden=""
id="__chakra_env"
/>
</div>
`;

View File

@ -12,7 +12,11 @@ import { render, screen, waitFor } from '@testing-library/react';
import { http, HttpResponse } from 'msw';
import { setupServer } from 'msw/node';
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';
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', () => {
return {
getNavigationValue: () => '/auth/login',
@ -116,9 +109,15 @@ describe('Arm Page', () => {
});
const { container } = render(
<Provider store={store}>
<ChakraProvider theme={chakraTheme}>
<ErrorBoundary>
<BrowserRouter>
<Page mockUser={{ name: 'ilnaz' }} />
</BrowserRouter>,
</BrowserRouter>
</ErrorBoundary>
</ChakraProvider>
</Provider>,
);
expect(container).toMatchSnapshot();