diff --git a/.gitignore b/.gitignore index 668d0b1..44a92d0 100644 --- a/.gitignore +++ b/.gitignore @@ -29,4 +29,10 @@ storybook-static *.sw? playwright-report -test-results \ No newline at end of file +test-results + +# Playwright +/playwright-report/ +/blob-report/ +/playwright/.cache/ +/playwright/.auth/ diff --git a/README.md b/README.md index cd4e53a..8848263 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,6 @@ # Стартер на JavaScript для проекта Stellar Burger -## Процедура создания коммита с проверками - -При создании коммита автоматически запускаются проверка линтерами `stylelint`, `eslint` и форматирование `prettier`. - -Если линтер обнаружит ошибки: - -- Коммит создан не будет -- Необходимо исправить все выявленные проблемы -- Добавить исправленные файлы в индекс: `git add .` -- Повторить коммит - -**Рекомендация:** -Для предотвращения ошибок на этапе коммита предварительно выполните: -`npm run lint`. Это позволит выявить и исправить проблемы до создания коммита. - -Есть также команды для запуска проверок по отдельности: - -- `npm run eslint` - запускает проверку линтера и исправляет проблемы, которые можно исправить автоматически, -- `npm run stylelint` - запускает проверку литера для файлов стилей и исправляет проблемы, которые можно исправить автоматически, -- `npm run prettier` - исправляет ошибки форматирования кода. - -Можно добавить автозапуск этих команд при сохранении файла в вашей IDE. - -Для создания коммита рекомендуется запускать команду `npm run commit`. Она позволяет обеспечить соответствие описаний коммитов [общепринятым соглашениям](https://www.conventionalcommits.org/en/v1.0.0/). +**Ссылка на деплой проекта:** [https://stellar-rastoki.ru](https://stellar-rastoki.ru) В проекте настроены алиасы, которые можно использовать при импорте модулей: diff --git a/e2e/constructor.spec.ts b/e2e/constructor.spec.ts new file mode 100644 index 0000000..3e3dff8 --- /dev/null +++ b/e2e/constructor.spec.ts @@ -0,0 +1,62 @@ +import { test, expect } from '@playwright/test'; + +const API_URL = '*://new-stellarburgers.education-services.ru/api'; + +test.describe('Страница Конструктор', () => { + test.beforeEach(async ({ page, context }) => { + await page.routeFromHAR('e2e/har/api.har', { + url: `${API_URL}/**`, + update: false, + }); + + await context.addCookies([ + { + name: 'accessToken', + value: 'mock-access-token', + domain: 'localhost', + path: '/', + }, + ]); + + await page.addInitScript(() => { + window.localStorage.setItem('refreshToken', 'mock-refresh-token'); + }); + + await page.goto('/'); + }); + + test('Полный путь пользователя -> сборка бургера, просмотр ингредиента и оформление заказа', async ({ page }) => { + const modal = page.locator('#modals > div').first(); + const constructorSection = page.locator('section[class*="burger_constructor"]'); + + const bunIngredient = page.getByText('Краторная булка N-200i').first(); + const sauceIngredient = page.getByText('Соус с шипами Антарианского плоскоходца').first(); + + const bunTarget = page.getByText('Пожалуйста, перенесите сюда булку').first(); + const sauceTarget = page.getByText('Здесь расположите начинки и соусы').first(); + + await bunIngredient.click(); + + await expect(modal).toBeVisible(); + await expect(modal.getByText('Детали ингредиента')).toBeVisible(); + await expect(modal.getByText('Краторная булка N-200i')).toBeVisible(); + await expect(modal.getByText('420')).toBeVisible(); + + await modal.locator('button').first().click(); + await expect(modal).not.toBeVisible(); + + await bunIngredient.dragTo(bunTarget); + await sauceIngredient.dragTo(sauceTarget); + + await expect(constructorSection.getByText('Краторная булка N-200i (верх)')).toBeVisible(); + await expect(constructorSection.getByText('Соус с шипами Антарианского плоскоходца')).toBeVisible(); + + await page.getByRole('button', { name: /оформить заказ/i }).click(); + + await expect(modal).toBeVisible(); + await expect(modal.getByText('Детали заказа')).toBeVisible(); + + await modal.locator('button').first().click(); + await expect(modal).not.toBeVisible(); + }); +}); diff --git a/e2e/har/079eb3bb914f845e67d235ab21e1c1b0d8a240b9.json b/e2e/har/079eb3bb914f845e67d235ab21e1c1b0d8a240b9.json new file mode 100644 index 0000000..01b5380 --- /dev/null +++ b/e2e/har/079eb3bb914f845e67d235ab21e1c1b0d8a240b9.json @@ -0,0 +1 @@ +{"success":false,"message":"Token is invalid"} \ No newline at end of file diff --git a/e2e/har/4705780f21157dc52d4ab08b6cc4ed90ed9e6da4.dat b/e2e/har/4705780f21157dc52d4ab08b6cc4ed90ed9e6da4.dat new file mode 100644 index 0000000..10b09e2 --- /dev/null +++ b/e2e/har/4705780f21157dc52d4ab08b6cc4ed90ed9e6da4.dat @@ -0,0 +1,31 @@ +import { createApi, fetchBaseQuery } from "/node_modules/.vite/deps/@reduxjs_toolkit_query_react.js?v=59810ea1"; +import Cookies from "/node_modules/.vite/deps/js-cookie.js?v=dd4b359e"; +import API_URL from "/src/utils/constants.ts"; +export const ingredientsApi = createApi({ + reducerPath: "ingredientsApi", + baseQuery: fetchBaseQuery({ + baseUrl: API_URL, + prepareHeaders: (headers) => { + const token = Cookies.get("accessToken"); + if (token) { + headers.set("authorization", token); + } + return headers; + } + }), + endpoints: (builder) => ({ + getIngredients: builder.query({ + query: () => "/ingredients" + }), + createOrder: builder.mutation({ + query: (orderData) => ({ + url: "/orders", + method: "POST", + body: orderData + }) + }) + }) +}); +export const { useGetIngredientsQuery, useCreateOrderMutation } = ingredientsApi; + +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZ3JlZGllbnRzQXBpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUFwaSwgZmV0Y2hCYXNlUXVlcnkgfSBmcm9tICdAcmVkdXhqcy90b29sa2l0L3F1ZXJ5L3JlYWN0JztcclxuaW1wb3J0IENvb2tpZXMgZnJvbSAnanMtY29va2llJztcclxuXHJcbmltcG9ydCBBUElfVVJMIGZyb20gJy4uLy4uL3V0aWxzL2NvbnN0YW50cyc7XHJcblxyXG5pbXBvcnQgdHlwZSB7IFRJbmdyZWRpZW50IH0gZnJvbSAnQC91dGlscy9iYXNlVHlwZXMnO1xyXG5cclxudHlwZSBUSW5ncmVkaWVudHNSZXNwb25zZSA9IHtcclxuICBzdWNjZXNzOiBib29sZWFuO1xyXG4gIGRhdGE6IFRJbmdyZWRpZW50W107XHJcbn07XHJcblxyXG50eXBlIFRPcmRlclJlc3BvbnNlID0ge1xyXG4gIHN1Y2Nlc3M6IGJvb2xlYW47XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIG9yZGVyOiB7XHJcbiAgICBudW1iZXI6IG51bWJlcjtcclxuICB9O1xyXG59O1xyXG5cclxudHlwZSBUT3JkZXJEYXRhID0ge1xyXG4gIGluZ3JlZGllbnRzOiBzdHJpbmdbXTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpbmdyZWRpZW50c0FwaSA9IGNyZWF0ZUFwaSh7XHJcbiAgcmVkdWNlclBhdGg6ICdpbmdyZWRpZW50c0FwaScsXHJcbiAgYmFzZVF1ZXJ5OiBmZXRjaEJhc2VRdWVyeSh7XHJcbiAgICBiYXNlVXJsOiBBUElfVVJMLFxyXG4gICAgcHJlcGFyZUhlYWRlcnM6IChoZWFkZXJzKSA9PiB7XHJcbiAgICAgIGNvbnN0IHRva2VuID0gQ29va2llcy5nZXQoJ2FjY2Vzc1Rva2VuJyk7XHJcbiAgICAgIGlmICh0b2tlbikge1xyXG4gICAgICAgIGhlYWRlcnMuc2V0KCdhdXRob3JpemF0aW9uJywgdG9rZW4pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBoZWFkZXJzO1xyXG4gICAgfSxcclxuICB9KSxcclxuICBlbmRwb2ludHM6IChidWlsZGVyKSA9PiAoe1xyXG4gICAgZ2V0SW5ncmVkaWVudHM6IGJ1aWxkZXIucXVlcnk8VEluZ3JlZGllbnRzUmVzcG9uc2UsIHZvaWQ+KHtcclxuICAgICAgcXVlcnk6ICgpID0+ICcvaW5ncmVkaWVudHMnLFxyXG4gICAgfSksXHJcbiAgICBjcmVhdGVPcmRlcjogYnVpbGRlci5tdXRhdGlvbjxUT3JkZXJSZXNwb25zZSwgVE9yZGVyRGF0YT4oe1xyXG4gICAgICBxdWVyeTogKG9yZGVyRGF0YSkgPT4gKHtcclxuICAgICAgICB1cmw6ICcvb3JkZXJzJyxcclxuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgICBib2R5OiBvcmRlckRhdGEsXHJcbiAgICAgIH0pLFxyXG4gICAgfSksXHJcbiAgfSksXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHsgdXNlR2V0SW5ncmVkaWVudHNRdWVyeSwgdXNlQ3JlYXRlT3JkZXJNdXRhdGlvbiB9ID0gaW5ncmVkaWVudHNBcGk7XHJcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxXQUFXLHNCQUFzQjtBQUMxQyxPQUFPLGFBQWE7QUFFcEIsT0FBTyxhQUFhO0FBcUJiLGFBQU0saUJBQWlCLFVBQVU7QUFBQSxFQUN0QyxhQUFhO0FBQUEsRUFDYixXQUFXLGVBQWU7QUFBQSxJQUN4QixTQUFTO0FBQUEsSUFDVCxnQkFBZ0IsQ0FBQyxZQUFZO0FBQzNCLFlBQU0sUUFBUSxRQUFRLElBQUksYUFBYTtBQUN2QyxVQUFJLE9BQU87QUFDVCxnQkFBUSxJQUFJLGlCQUFpQixLQUFLO0FBQUEsTUFDcEM7QUFDQSxhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0YsQ0FBQztBQUFBLEVBQ0QsV0FBVyxDQUFDLGFBQWE7QUFBQSxJQUN2QixnQkFBZ0IsUUFBUSxNQUFrQztBQUFBLE1BQ3hELE9BQU8sTUFBTTtBQUFBLElBQ2YsQ0FBQztBQUFBLElBQ0QsYUFBYSxRQUFRLFNBQXFDO0FBQUEsTUFDeEQsT0FBTyxDQUFDLGVBQWU7QUFBQSxRQUNyQixLQUFLO0FBQUEsUUFDTCxRQUFRO0FBQUEsUUFDUixNQUFNO0FBQUEsTUFDUjtBQUFBLElBQ0YsQ0FBQztBQUFBLEVBQ0g7QUFDRixDQUFDO0FBRU0sYUFBTSxFQUFFLHdCQUF3Qix1QkFBdUIsSUFBSTsiLCJuYW1lcyI6W119 \ No newline at end of file diff --git a/e2e/har/6f267e4b3d7a28444b948ab5a105c283be73028a.json b/e2e/har/6f267e4b3d7a28444b948ab5a105c283be73028a.json new file mode 100644 index 0000000..d3a0764 --- /dev/null +++ b/e2e/har/6f267e4b3d7a28444b948ab5a105c283be73028a.json @@ -0,0 +1 @@ +{"success":true,"user":{"email":"krivonra@mail.ru","name":"krivonraf"}} \ No newline at end of file diff --git a/e2e/har/7545f46258aa112371af3da7d4a1a9d0348419d7.dat b/e2e/har/7545f46258aa112371af3da7d4a1a9d0348419d7.dat new file mode 100644 index 0000000..77c5c4f --- /dev/null +++ b/e2e/har/7545f46258aa112371af3da7d4a1a9d0348419d7.dat @@ -0,0 +1,95 @@ +import { createApi, fetchBaseQuery } from "/node_modules/.vite/deps/@reduxjs_toolkit_query_react.js?v=59810ea1"; +import Cookies from "/node_modules/.vite/deps/js-cookie.js?v=dd4b359e"; +import API_URL from "/src/utils/constants.ts"; +import { setTokens } from "/src/utils/token.ts"; +export const ordersApi = createApi({ + reducerPath: "ordersApi", + baseQuery: fetchBaseQuery({ baseUrl: API_URL }), + endpoints: (builder) => ({ + getFeed: builder.query({ + queryFn: () => ({ data: { success: false, orders: [], total: 0, totalToday: 0 } }), + async onCacheEntryAdded(_arg, { updateCachedData, cacheDataLoaded, cacheEntryRemoved }) { + const ws = new WebSocket( + "wss://new-stellarburgers.education-services.ru/orders/all" + ); + try { + await cacheDataLoaded; + ws.addEventListener("message", (event) => { + const data = JSON.parse(event.data); + if (data.success) { + updateCachedData((draft) => { + draft.success = data.success; + draft.orders = data.orders; + draft.total = data.total; + draft.totalToday = data.totalToday; + }); + } + }); + } catch (err) { + console.error(err); + } + await cacheEntryRemoved; + ws.close(); + } + }), + getProfileOrders: builder.query({ + queryFn: () => ({ data: { success: false, orders: [], total: 0, totalToday: 0 } }), + async onCacheEntryAdded(_arg, { updateCachedData, cacheDataLoaded, cacheEntryRemoved }) { + const token = Cookies.get("accessToken")?.replace("Bearer ", ""); + let ws = new WebSocket( + `wss://new-stellarburgers.education-services.ru/orders?token=${token}` + ); + try { + await cacheDataLoaded; + const handleMessage = async (event) => { + const data = JSON.parse(event.data); + if (data.message === "Invalid or missing token") { + ws.close(); + const refreshToken = localStorage.getItem("refreshToken"); + if (refreshToken) { + try { + const res = await fetch(`${API_URL}/auth/token`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ token: refreshToken }) + }); + const refreshData = await res.json(); + if (refreshData.success) { + setTokens(refreshData.accessToken, refreshData.refreshToken); + const newToken = refreshData.accessToken.replace("Bearer ", ""); + ws = new WebSocket( + `wss://new-stellarburgers.education-services.ru/orders?token=${newToken}` + ); + ws.addEventListener("message", handleMessage); + } + } catch (err) { + console.error(err); + } + } + return; + } + if (data.success) { + updateCachedData((draft) => { + draft.success = data.success; + draft.orders = data.orders; + draft.total = data.total; + draft.totalToday = data.totalToday; + }); + } + }; + ws.addEventListener("message", handleMessage); + } catch (err) { + console.error(err); + } + await cacheEntryRemoved; + ws.close(); + } + }), + getOrderById: builder.query({ + query: (orderId) => `/orders/${orderId}` + }) + }) +}); +export const { useGetFeedQuery, useGetProfileOrdersQuery, useGetOrderByIdQuery } = ordersApi; + +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyc0FwaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVBcGksIGZldGNoQmFzZVF1ZXJ5IH0gZnJvbSAnQHJlZHV4anMvdG9vbGtpdC9xdWVyeS9yZWFjdCc7XG5pbXBvcnQgQ29va2llcyBmcm9tICdqcy1jb29raWUnO1xuXG5pbXBvcnQgQVBJX1VSTCBmcm9tICdAL3V0aWxzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBzZXRUb2tlbnMgfSBmcm9tICdAL3V0aWxzL3Rva2VuJztcblxuaW1wb3J0IHR5cGUgeyBUV1NSZXNwb25zZSwgVE9yZGVyIH0gZnJvbSAnQC91dGlscy9iYXNlVHlwZXMnO1xuXG50eXBlIFRTaW5nbGVPcmRlclJlc3BvbnNlID0ge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBvcmRlcnM6IFRPcmRlcltdO1xufTtcblxuZXhwb3J0IGNvbnN0IG9yZGVyc0FwaSA9IGNyZWF0ZUFwaSh7XG4gIHJlZHVjZXJQYXRoOiAnb3JkZXJzQXBpJyxcbiAgYmFzZVF1ZXJ5OiBmZXRjaEJhc2VRdWVyeSh7IGJhc2VVcmw6IEFQSV9VUkwgfSksXG4gIGVuZHBvaW50czogKGJ1aWxkZXIpID0+ICh7XG4gICAgZ2V0RmVlZDogYnVpbGRlci5xdWVyeTxUV1NSZXNwb25zZSwgdm9pZD4oe1xuICAgICAgcXVlcnlGbjogKCkgPT4gKHsgZGF0YTogeyBzdWNjZXNzOiBmYWxzZSwgb3JkZXJzOiBbXSwgdG90YWw6IDAsIHRvdGFsVG9kYXk6IDAgfSB9KSxcbiAgICAgIGFzeW5jIG9uQ2FjaGVFbnRyeUFkZGVkKFxuICAgICAgICBfYXJnLFxuICAgICAgICB7IHVwZGF0ZUNhY2hlZERhdGEsIGNhY2hlRGF0YUxvYWRlZCwgY2FjaGVFbnRyeVJlbW92ZWQgfVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHdzID0gbmV3IFdlYlNvY2tldChcbiAgICAgICAgICAnd3NzOi8vbmV3LXN0ZWxsYXJidXJnZXJzLmVkdWNhdGlvbi1zZXJ2aWNlcy5ydS9vcmRlcnMvYWxsJ1xuICAgICAgICApO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgY2FjaGVEYXRhTG9hZGVkO1xuICAgICAgICAgIHdzLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpO1xuICAgICAgICAgICAgaWYgKGRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICB1cGRhdGVDYWNoZWREYXRhKChkcmFmdCkgPT4ge1xuICAgICAgICAgICAgICAgIGRyYWZ0LnN1Y2Nlc3MgPSBkYXRhLnN1Y2Nlc3M7XG4gICAgICAgICAgICAgICAgZHJhZnQub3JkZXJzID0gZGF0YS5vcmRlcnM7XG4gICAgICAgICAgICAgICAgZHJhZnQudG90YWwgPSBkYXRhLnRvdGFsO1xuICAgICAgICAgICAgICAgIGRyYWZ0LnRvdGFsVG9kYXkgPSBkYXRhLnRvdGFsVG9kYXk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBjYWNoZUVudHJ5UmVtb3ZlZDtcbiAgICAgICAgd3MuY2xvc2UoKTtcbiAgICAgIH0sXG4gICAgfSksXG4gICAgZ2V0UHJvZmlsZU9yZGVyczogYnVpbGRlci5xdWVyeTxUV1NSZXNwb25zZSwgdm9pZD4oe1xuICAgICAgcXVlcnlGbjogKCkgPT4gKHsgZGF0YTogeyBzdWNjZXNzOiBmYWxzZSwgb3JkZXJzOiBbXSwgdG90YWw6IDAsIHRvdGFsVG9kYXk6IDAgfSB9KSxcbiAgICAgIGFzeW5jIG9uQ2FjaGVFbnRyeUFkZGVkKFxuICAgICAgICBfYXJnLFxuICAgICAgICB7IHVwZGF0ZUNhY2hlZERhdGEsIGNhY2hlRGF0YUxvYWRlZCwgY2FjaGVFbnRyeVJlbW92ZWQgfVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gQ29va2llcy5nZXQoJ2FjY2Vzc1Rva2VuJyk/LnJlcGxhY2UoJ0JlYXJlciAnLCAnJyk7XG4gICAgICAgIGxldCB3cyA9IG5ldyBXZWJTb2NrZXQoXG4gICAgICAgICAgYHdzczovL25ldy1zdGVsbGFyYnVyZ2Vycy5lZHVjYXRpb24tc2VydmljZXMucnUvb3JkZXJzP3Rva2VuPSR7dG9rZW59YFxuICAgICAgICApO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgY2FjaGVEYXRhTG9hZGVkO1xuXG4gICAgICAgICAgY29uc3QgaGFuZGxlTWVzc2FnZSA9IGFzeW5jIChldmVudDogTWVzc2FnZUV2ZW50KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShldmVudC5kYXRhKTtcblxuICAgICAgICAgICAgaWYgKGRhdGEubWVzc2FnZSA9PT0gJ0ludmFsaWQgb3IgbWlzc2luZyB0b2tlbicpIHtcbiAgICAgICAgICAgICAgd3MuY2xvc2UoKTtcbiAgICAgICAgICAgICAgY29uc3QgcmVmcmVzaFRva2VuID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3JlZnJlc2hUb2tlbicpO1xuICAgICAgICAgICAgICBpZiAocmVmcmVzaFRva2VuKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke0FQSV9VUkx9L2F1dGgvdG9rZW5gLCB7XG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICAgICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyB0b2tlbjogcmVmcmVzaFRva2VuIH0pLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBjb25zdCByZWZyZXNoRGF0YSA9IGF3YWl0IHJlcy5qc29uKCk7XG4gICAgICAgICAgICAgICAgICBpZiAocmVmcmVzaERhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBzZXRUb2tlbnMocmVmcmVzaERhdGEuYWNjZXNzVG9rZW4sIHJlZnJlc2hEYXRhLnJlZnJlc2hUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1Rva2VuID0gcmVmcmVzaERhdGEuYWNjZXNzVG9rZW4ucmVwbGFjZSgnQmVhcmVyICcsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgd3MgPSBuZXcgV2ViU29ja2V0KFxuICAgICAgICAgICAgICAgICAgICAgIGB3c3M6Ly9uZXctc3RlbGxhcmJ1cmdlcnMuZWR1Y2F0aW9uLXNlcnZpY2VzLnJ1L29yZGVycz90b2tlbj0ke25ld1Rva2VufWBcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgd3MuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGhhbmRsZU1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChkYXRhLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgdXBkYXRlQ2FjaGVkRGF0YSgoZHJhZnQpID0+IHtcbiAgICAgICAgICAgICAgICBkcmFmdC5zdWNjZXNzID0gZGF0YS5zdWNjZXNzO1xuICAgICAgICAgICAgICAgIGRyYWZ0Lm9yZGVycyA9IGRhdGEub3JkZXJzO1xuICAgICAgICAgICAgICAgIGRyYWZ0LnRvdGFsID0gZGF0YS50b3RhbDtcbiAgICAgICAgICAgICAgICBkcmFmdC50b3RhbFRvZGF5ID0gZGF0YS50b3RhbFRvZGF5O1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgd3MuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGhhbmRsZU1lc3NhZ2UpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBjYWNoZUVudHJ5UmVtb3ZlZDtcbiAgICAgICAgd3MuY2xvc2UoKTtcbiAgICAgIH0sXG4gICAgfSksXG4gICAgZ2V0T3JkZXJCeUlkOiBidWlsZGVyLnF1ZXJ5PFRTaW5nbGVPcmRlclJlc3BvbnNlLCBzdHJpbmc+KHtcbiAgICAgIHF1ZXJ5OiAob3JkZXJJZCkgPT4gYC9vcmRlcnMvJHtvcmRlcklkfWAsXG4gICAgfSksXG4gIH0pLFxufSk7XG5cbmV4cG9ydCBjb25zdCB7IHVzZUdldEZlZWRRdWVyeSwgdXNlR2V0UHJvZmlsZU9yZGVyc1F1ZXJ5LCB1c2VHZXRPcmRlckJ5SWRRdWVyeSB9ID1cbiAgb3JkZXJzQXBpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLFdBQVcsc0JBQXNCO0FBQzFDLE9BQU8sYUFBYTtBQUVwQixPQUFPLGFBQWE7QUFDcEIsU0FBUyxpQkFBaUI7QUFTbkIsYUFBTSxZQUFZLFVBQVU7QUFBQSxFQUNqQyxhQUFhO0FBQUEsRUFDYixXQUFXLGVBQWUsRUFBRSxTQUFTLFFBQVEsQ0FBQztBQUFBLEVBQzlDLFdBQVcsQ0FBQyxhQUFhO0FBQUEsSUFDdkIsU0FBUyxRQUFRLE1BQXlCO0FBQUEsTUFDeEMsU0FBUyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsT0FBTyxRQUFRLENBQUMsR0FBRyxPQUFPLEdBQUcsWUFBWSxFQUFFLEVBQUU7QUFBQSxNQUNoRixNQUFNLGtCQUNKLE1BQ0EsRUFBRSxrQkFBa0IsaUJBQWlCLGtCQUFrQixHQUN2RDtBQUNBLGNBQU0sS0FBSyxJQUFJO0FBQUEsVUFDYjtBQUFBLFFBQ0Y7QUFFQSxZQUFJO0FBQ0YsZ0JBQU07QUFDTixhQUFHLGlCQUFpQixXQUFXLENBQUMsVUFBVTtBQUN4QyxrQkFBTSxPQUFPLEtBQUssTUFBTSxNQUFNLElBQUk7QUFDbEMsZ0JBQUksS0FBSyxTQUFTO0FBQ2hCLCtCQUFpQixDQUFDLFVBQVU7QUFDMUIsc0JBQU0sVUFBVSxLQUFLO0FBQ3JCLHNCQUFNLFNBQVMsS0FBSztBQUNwQixzQkFBTSxRQUFRLEtBQUs7QUFDbkIsc0JBQU0sYUFBYSxLQUFLO0FBQUEsY0FDMUIsQ0FBQztBQUFBLFlBQ0g7QUFBQSxVQUNGLENBQUM7QUFBQSxRQUNILFNBQVMsS0FBSztBQUNaLGtCQUFRLE1BQU0sR0FBRztBQUFBLFFBQ25CO0FBRUEsY0FBTTtBQUNOLFdBQUcsTUFBTTtBQUFBLE1BQ1g7QUFBQSxJQUNGLENBQUM7QUFBQSxJQUNELGtCQUFrQixRQUFRLE1BQXlCO0FBQUEsTUFDakQsU0FBUyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsT0FBTyxRQUFRLENBQUMsR0FBRyxPQUFPLEdBQUcsWUFBWSxFQUFFLEVBQUU7QUFBQSxNQUNoRixNQUFNLGtCQUNKLE1BQ0EsRUFBRSxrQkFBa0IsaUJBQWlCLGtCQUFrQixHQUN2RDtBQUNBLGNBQU0sUUFBUSxRQUFRLElBQUksYUFBYSxHQUFHLFFBQVEsV0FBVyxFQUFFO0FBQy9ELFlBQUksS0FBSyxJQUFJO0FBQUEsVUFDWCwrREFBK0QsS0FBSztBQUFBLFFBQ3RFO0FBRUEsWUFBSTtBQUNGLGdCQUFNO0FBRU4sZ0JBQU0sZ0JBQWdCLE9BQU8sVUFBdUM7QUFDbEUsa0JBQU0sT0FBTyxLQUFLLE1BQU0sTUFBTSxJQUFJO0FBRWxDLGdCQUFJLEtBQUssWUFBWSw0QkFBNEI7QUFDL0MsaUJBQUcsTUFBTTtBQUNULG9CQUFNLGVBQWUsYUFBYSxRQUFRLGNBQWM7QUFDeEQsa0JBQUksY0FBYztBQUNoQixvQkFBSTtBQUNGLHdCQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsT0FBTyxlQUFlO0FBQUEsb0JBQy9DLFFBQVE7QUFBQSxvQkFDUixTQUFTLEVBQUUsZ0JBQWdCLG1CQUFtQjtBQUFBLG9CQUM5QyxNQUFNLEtBQUssVUFBVSxFQUFFLE9BQU8sYUFBYSxDQUFDO0FBQUEsa0JBQzlDLENBQUM7QUFDRCx3QkFBTSxjQUFjLE1BQU0sSUFBSSxLQUFLO0FBQ25DLHNCQUFJLFlBQVksU0FBUztBQUN2Qiw4QkFBVSxZQUFZLGFBQWEsWUFBWSxZQUFZO0FBQzNELDBCQUFNLFdBQVcsWUFBWSxZQUFZLFFBQVEsV0FBVyxFQUFFO0FBQzlELHlCQUFLLElBQUk7QUFBQSxzQkFDUCwrREFBK0QsUUFBUTtBQUFBLG9CQUN6RTtBQUNBLHVCQUFHLGlCQUFpQixXQUFXLGFBQWE7QUFBQSxrQkFDOUM7QUFBQSxnQkFDRixTQUFTLEtBQUs7QUFDWiwwQkFBUSxNQUFNLEdBQUc7QUFBQSxnQkFDbkI7QUFBQSxjQUNGO0FBQ0E7QUFBQSxZQUNGO0FBRUEsZ0JBQUksS0FBSyxTQUFTO0FBQ2hCLCtCQUFpQixDQUFDLFVBQVU7QUFDMUIsc0JBQU0sVUFBVSxLQUFLO0FBQ3JCLHNCQUFNLFNBQVMsS0FBSztBQUNwQixzQkFBTSxRQUFRLEtBQUs7QUFDbkIsc0JBQU0sYUFBYSxLQUFLO0FBQUEsY0FDMUIsQ0FBQztBQUFBLFlBQ0g7QUFBQSxVQUNGO0FBRUEsYUFBRyxpQkFBaUIsV0FBVyxhQUFhO0FBQUEsUUFDOUMsU0FBUyxLQUFLO0FBQ1osa0JBQVEsTUFBTSxHQUFHO0FBQUEsUUFDbkI7QUFFQSxjQUFNO0FBQ04sV0FBRyxNQUFNO0FBQUEsTUFDWDtBQUFBLElBQ0YsQ0FBQztBQUFBLElBQ0QsY0FBYyxRQUFRLE1BQW9DO0FBQUEsTUFDeEQsT0FBTyxDQUFDLFlBQVksV0FBVyxPQUFPO0FBQUEsSUFDeEMsQ0FBQztBQUFBLEVBQ0g7QUFDRixDQUFDO0FBRU0sYUFBTSxFQUFFLGlCQUFpQiwwQkFBMEIscUJBQXFCLElBQzdFOyIsIm5hbWVzIjpbXX0= \ No newline at end of file diff --git a/e2e/har/9b741f24b8be06b345533dad402af3d8fc270767.json b/e2e/har/9b741f24b8be06b345533dad402af3d8fc270767.json new file mode 100644 index 0000000..dfb6f29 --- /dev/null +++ b/e2e/har/9b741f24b8be06b345533dad402af3d8fc270767.json @@ -0,0 +1 @@ +{"ingredients":["692889f16bf770001bfeb4cc","692889f16bf770001bfeb4d5","692889f16bf770001bfeb4cc"]} \ No newline at end of file diff --git a/e2e/har/api.har b/e2e/har/api.har new file mode 100644 index 0000000..7ee7c16 --- /dev/null +++ b/e2e/har/api.har @@ -0,0 +1 @@ +{"log":{"version":"1.2","creator":{"name":"Playwright","version":"1.60.0"},"browser":{"name":"chromium","version":"148.0.7778.96"},"entries":[{"startedDateTime":"2026-05-29T19:46:08.369Z","time":3126.206,"request":{"method":"GET","url":"https://new-stellarburgers.education-services.ru/api/auth/user","httpVersion":"HTTP/2.0","cookies":[],"headers":[{"name":":authority","value":"new-stellarburgers.education-services.ru"},{"name":":method","value":"GET"},{"name":":path","value":"/api/auth/user"},{"name":":scheme","value":"https"},{"name":"accept","value":"application/json"},{"name":"accept-encoding","value":"gzip, deflate, br, zstd"},{"name":"accept-language","value":"en-US"},{"name":"authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY5ZGYyZGUzNDFjZmY1MDAxYjZlMWY2ZSIsImlhdCI6MTc4MDA4Mzc0MiwiZXhwIjoxNzgwMDg0OTQyfQ.2QzbqMzTKhV35HQO1XOMC5gvGNx7At_-HujTisZMkv4"},{"name":"origin","value":"http://localhost:5173"},{"name":"priority","value":"u=1, i"},{"name":"referer","value":"http://localhost:5173/"},{"name":"sec-ch-ua","value":"\"Chromium\";v=\"148\", \"HeadlessChrome\";v=\"148\", \"Not/A)Brand\";v=\"99\""},{"name":"sec-ch-ua-mobile","value":"?0"},{"name":"sec-ch-ua-platform","value":"\"Windows\""},{"name":"sec-fetch-dest","value":"empty"},{"name":"sec-fetch-mode","value":"cors"},{"name":"sec-fetch-site","value":"cross-site"},{"name":"user-agent","value":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36"}],"queryString":[],"headersSize":-1,"bodySize":-1},"response":{"status":200,"statusText":"","httpVersion":"HTTP/2.0","cookies":[],"headers":[{"name":"access-control-allow-origin","value":"*"},{"name":"content-length","value":"71"},{"name":"content-type","value":"application/json; charset=utf-8"},{"name":"date","value":"Fri, 29 May 2026 19:46:11 GMT"},{"name":"etag","value":"W/\"47-byZ+Sz16KERLlIq1oQXCg75zAoo\""},{"name":"server","value":"nginx"},{"name":"x-powered-by","value":"Express"}],"content":{"size":-1,"mimeType":"application/json; charset=utf-8","_file":"6f267e4b3d7a28444b948ab5a105c283be73028a.json"},"headersSize":-1,"bodySize":-1,"redirectURL":""},"cache":{},"timings":{"send":-1,"wait":-1,"receive":3126.206}},{"startedDateTime":"2026-05-29T19:46:11.637Z","time":71.534,"request":{"method":"GET","url":"https://new-stellarburgers.education-services.ru/api/ingredients","httpVersion":"HTTP/2.0","cookies":[],"headers":[{"name":":authority","value":"new-stellarburgers.education-services.ru"},{"name":":method","value":"GET"},{"name":":path","value":"/api/ingredients"},{"name":":scheme","value":"https"},{"name":"accept","value":"application/json"},{"name":"accept-encoding","value":"gzip, deflate, br, zstd"},{"name":"accept-language","value":"en-US"},{"name":"authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY5ZGYyZGUzNDFjZmY1MDAxYjZlMWY2ZSIsImlhdCI6MTc4MDA4Mzc0MiwiZXhwIjoxNzgwMDg0OTQyfQ.2QzbqMzTKhV35HQO1XOMC5gvGNx7At_-HujTisZMkv4"},{"name":"origin","value":"http://localhost:5173"},{"name":"priority","value":"u=1, i"},{"name":"referer","value":"http://localhost:5173/"},{"name":"sec-ch-ua","value":"\"Chromium\";v=\"148\", \"HeadlessChrome\";v=\"148\", \"Not/A)Brand\";v=\"99\""},{"name":"sec-ch-ua-mobile","value":"?0"},{"name":"sec-ch-ua-platform","value":"\"Windows\""},{"name":"sec-fetch-dest","value":"empty"},{"name":"sec-fetch-mode","value":"cors"},{"name":"sec-fetch-site","value":"cross-site"},{"name":"user-agent","value":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36"}],"queryString":[],"headersSize":-1,"bodySize":-1},"response":{"status":200,"statusText":"","httpVersion":"HTTP/2.0","cookies":[],"headers":[{"name":"access-control-allow-origin","value":"*"},{"name":"content-length","value":"5957"},{"name":"content-type","value":"application/json; charset=utf-8"},{"name":"date","value":"Fri, 29 May 2026 19:46:11 GMT"},{"name":"etag","value":"W/\"1745-5nrifxtkq8odwCitEQApl+f9xO4\""},{"name":"server","value":"nginx"},{"name":"x-powered-by","value":"Express"}],"content":{"size":-1,"mimeType":"application/json; charset=utf-8","_file":"e67ae27f1b64abca1dc028ad11002997e7fdc4ee.json"},"headersSize":-1,"bodySize":-1,"redirectURL":""},"cache":{},"timings":{"send":-1,"wait":-1,"receive":71.534}},{"startedDateTime":"2026-05-29T19:46:14.598Z","time":73.485,"request":{"method":"POST","url":"https://new-stellarburgers.education-services.ru/api/orders","httpVersion":"HTTP/2.0","cookies":[],"headers":[{"name":":authority","value":"new-stellarburgers.education-services.ru"},{"name":":method","value":"POST"},{"name":":path","value":"/api/orders"},{"name":":scheme","value":"https"},{"name":"accept","value":"application/json"},{"name":"accept-encoding","value":"gzip, deflate, br, zstd"},{"name":"accept-language","value":"en-US"},{"name":"authorization","value":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY5ZGYyZGUzNDFjZmY1MDAxYjZlMWY2ZSIsImlhdCI6MTc4MDA4Mzc0MiwiZXhwIjoxNzgwMDg0OTQyfQ.2QzbqMzTKhV35HQO1XOMC5gvGNx7At_-HujTisZMkv4"},{"name":"content-length","value":"98"},{"name":"content-type","value":"application/json"},{"name":"origin","value":"http://localhost:5173"},{"name":"priority","value":"u=1, i"},{"name":"referer","value":"http://localhost:5173/"},{"name":"sec-ch-ua","value":"\"Chromium\";v=\"148\", \"HeadlessChrome\";v=\"148\", \"Not/A)Brand\";v=\"99\""},{"name":"sec-ch-ua-mobile","value":"?0"},{"name":"sec-ch-ua-platform","value":"\"Windows\""},{"name":"sec-fetch-dest","value":"empty"},{"name":"sec-fetch-mode","value":"cors"},{"name":"sec-fetch-site","value":"cross-site"},{"name":"user-agent","value":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36"}],"queryString":[],"headersSize":-1,"bodySize":-1,"postData":{"mimeType":"application/json","text":"","params":[],"_file":"9b741f24b8be06b345533dad402af3d8fc270767.json"}},"response":{"status":200,"statusText":"","httpVersion":"HTTP/2.0","cookies":[],"headers":[{"name":"access-control-allow-origin","value":"*"},{"name":"content-length","value":"1633"},{"name":"content-type","value":"application/json; charset=utf-8"},{"name":"date","value":"Fri, 29 May 2026 19:46:14 GMT"},{"name":"etag","value":"W/\"661-4Ut1/28SW2CIpjq5P/VVVV3AgVk\""},{"name":"server","value":"nginx"},{"name":"x-powered-by","value":"Express"}],"content":{"size":-1,"mimeType":"application/json; charset=utf-8","_file":"e14b75ff6f125b6088a63ab93ff555555dc08159.json"},"headersSize":-1,"bodySize":-1,"redirectURL":""},"cache":{},"timings":{"send":-1,"wait":-1,"receive":73.485}}]}} \ No newline at end of file diff --git a/e2e/har/ccebe289f094212944c18a7ad617604f8e58b8a7.json b/e2e/har/ccebe289f094212944c18a7ad617604f8e58b8a7.json new file mode 100644 index 0000000..9ad0474 --- /dev/null +++ b/e2e/har/ccebe289f094212944c18a7ad617604f8e58b8a7.json @@ -0,0 +1 @@ +{"token":"mock-refresh-token"} \ No newline at end of file diff --git a/e2e/har/e14b75ff6f125b6088a63ab93ff555555dc08159.json b/e2e/har/e14b75ff6f125b6088a63ab93ff555555dc08159.json new file mode 100644 index 0000000..efb0414 --- /dev/null +++ b/e2e/har/e14b75ff6f125b6088a63ab93ff555555dc08159.json @@ -0,0 +1 @@ +{"success":true,"name":"Краторный антарианский бургер","order":{"ingredients":[{"_id":"692889f16bf770001bfeb4cc","name":"Краторная булка N-200i","type":"bun","proteins":80,"fat":24,"carbohydrates":53,"calories":420,"price":1255,"image":"https://code.s3.yandex.net/react/code/bun-02.png","image_mobile":"https://code.s3.yandex.net/react/code/bun-02-mobile.png","image_large":"https://code.s3.yandex.net/react/code/bun-02-large.png","__v":0},{"_id":"692889f16bf770001bfeb4d5","name":"Соус с шипами Антарианского плоскоходца","type":"sauce","proteins":101,"fat":99,"carbohydrates":100,"calories":100,"price":88,"image":"https://code.s3.yandex.net/react/code/sauce-01.png","image_mobile":"https://code.s3.yandex.net/react/code/sauce-01-mobile.png","image_large":"https://code.s3.yandex.net/react/code/sauce-01-large.png","__v":0},{"_id":"692889f16bf770001bfeb4cc","name":"Краторная булка N-200i","type":"bun","proteins":80,"fat":24,"carbohydrates":53,"calories":420,"price":1255,"image":"https://code.s3.yandex.net/react/code/bun-02.png","image_mobile":"https://code.s3.yandex.net/react/code/bun-02-mobile.png","image_large":"https://code.s3.yandex.net/react/code/bun-02-large.png","__v":0}],"_id":"6a19ed0641cff5001b6e336b","owner":{"name":"krivonraf","email":"krivonra@mail.ru","createdAt":"2026-04-15T06:19:15.591Z","updatedAt":"2026-05-22T04:22:03.182Z"},"status":"done","name":"Краторный антарианский бургер","createdAt":"2026-05-29T19:46:14.680Z","updatedAt":"2026-05-29T19:46:14.713Z","number":1143,"price":2598}} \ No newline at end of file diff --git a/e2e/har/e67ae27f1b64abca1dc028ad11002997e7fdc4ee.json b/e2e/har/e67ae27f1b64abca1dc028ad11002997e7fdc4ee.json new file mode 100644 index 0000000..df372db --- /dev/null +++ b/e2e/har/e67ae27f1b64abca1dc028ad11002997e7fdc4ee.json @@ -0,0 +1 @@ +{"success":true,"data":[{"_id":"692889f16bf770001bfeb4cc","name":"Краторная булка N-200i","type":"bun","proteins":80,"fat":24,"carbohydrates":53,"calories":420,"price":1255,"image":"https://code.s3.yandex.net/react/code/bun-02.png","image_mobile":"https://code.s3.yandex.net/react/code/bun-02-mobile.png","image_large":"https://code.s3.yandex.net/react/code/bun-02-large.png","__v":0},{"_id":"692889f16bf770001bfeb4d6","name":"Хрустящие минеральные кольца","type":"main","proteins":808,"fat":689,"carbohydrates":609,"calories":986,"price":300,"image":"https://code.s3.yandex.net/react/code/mineral_rings.png","image_mobile":"https://code.s3.yandex.net/react/code/mineral_rings-mobile.png","image_large":"https://code.s3.yandex.net/react/code/mineral_rings-large.png","__v":0},{"_id":"692889f16bf770001bfeb4d7","name":"Плоды Фалленианского дерева","type":"main","proteins":20,"fat":5,"carbohydrates":55,"calories":77,"price":874,"image":"https://code.s3.yandex.net/react/code/sp_1.png","image_mobile":"https://code.s3.yandex.net/react/code/sp_1-mobile.png","image_large":"https://code.s3.yandex.net/react/code/sp_1-large.png","__v":0},{"_id":"692889f16bf770001bfeb4d8","name":"Кристаллы марсианских альфа-сахаридов","type":"main","proteins":234,"fat":432,"carbohydrates":111,"calories":189,"price":762,"image":"https://code.s3.yandex.net/react/code/core.png","image_mobile":"https://code.s3.yandex.net/react/code/core-mobile.png","image_large":"https://code.s3.yandex.net/react/code/core-large.png","__v":0},{"_id":"692889f16bf770001bfeb4d9","name":"Мини-салат Экзо-Плантаго","type":"main","proteins":1,"fat":2,"carbohydrates":3,"calories":6,"price":4400,"image":"https://code.s3.yandex.net/react/code/salad.png","image_mobile":"https://code.s3.yandex.net/react/code/salad-mobile.png","image_large":"https://code.s3.yandex.net/react/code/salad-large.png","__v":0},{"_id":"692889f16bf770001bfeb4da","name":"Сыр с астероидной плесенью","type":"main","proteins":84,"fat":48,"carbohydrates":420,"calories":3377,"price":4142,"image":"https://code.s3.yandex.net/react/code/cheese.png","image_mobile":"https://code.s3.yandex.net/react/code/cheese-mobile.png","image_large":"https://code.s3.yandex.net/react/code/cheese-large.png","__v":0},{"_id":"692889f16bf770001bfeb4cd","name":"Флюоресцентная булка R2-D3","type":"bun","proteins":44,"fat":26,"carbohydrates":85,"calories":643,"price":988,"image":"https://code.s3.yandex.net/react/code/bun-01.png","image_mobile":"https://code.s3.yandex.net/react/code/bun-01-mobile.png","image_large":"https://code.s3.yandex.net/react/code/bun-01-large.png","__v":0},{"_id":"692889f16bf770001bfeb4ce","name":"Филе Люминесцентного тетраодонтимформа","type":"main","proteins":44,"fat":26,"carbohydrates":85,"calories":643,"price":988,"image":"https://code.s3.yandex.net/react/code/meat-03.png","image_mobile":"https://code.s3.yandex.net/react/code/meat-03-mobile.png","image_large":"https://code.s3.yandex.net/react/code/meat-03-large.png","__v":0},{"_id":"692889f16bf770001bfeb4cf","name":"Мясо бессмертных моллюсков Protostomia","type":"main","proteins":433,"fat":244,"carbohydrates":33,"calories":420,"price":1337,"image":"https://code.s3.yandex.net/react/code/meat-02.png","image_mobile":"https://code.s3.yandex.net/react/code/meat-02-mobile.png","image_large":"https://code.s3.yandex.net/react/code/meat-02-large.png","__v":0},{"_id":"692889f16bf770001bfeb4d0","name":"Говяжий метеорит (отбивная)","type":"main","proteins":800,"fat":800,"carbohydrates":300,"calories":2674,"price":3000,"image":"https://code.s3.yandex.net/react/code/meat-04.png","image_mobile":"https://code.s3.yandex.net/react/code/meat-04-mobile.png","image_large":"https://code.s3.yandex.net/react/code/meat-04-large.png","__v":0},{"_id":"692889f16bf770001bfeb4d1","name":"Биокотлета из марсианской Магнолии","type":"main","proteins":420,"fat":142,"carbohydrates":242,"calories":4242,"price":424,"image":"https://code.s3.yandex.net/react/code/meat-01.png","image_mobile":"https://code.s3.yandex.net/react/code/meat-01-mobile.png","image_large":"https://code.s3.yandex.net/react/code/meat-01-large.png","__v":0},{"_id":"692889f16bf770001bfeb4d2","name":"Соус Spicy-X","type":"sauce","proteins":30,"fat":20,"carbohydrates":40,"calories":30,"price":90,"image":"https://code.s3.yandex.net/react/code/sauce-02.png","image_mobile":"https://code.s3.yandex.net/react/code/sauce-02-mobile.png","image_large":"https://code.s3.yandex.net/react/code/sauce-02-large.png","__v":0},{"_id":"692889f16bf770001bfeb4d3","name":"Соус фирменный Space Sauce","type":"sauce","proteins":50,"fat":22,"carbohydrates":11,"calories":14,"price":80,"image":"https://code.s3.yandex.net/react/code/sauce-04.png","image_mobile":"https://code.s3.yandex.net/react/code/sauce-04-mobile.png","image_large":"https://code.s3.yandex.net/react/code/sauce-04-large.png","__v":0},{"_id":"692889f16bf770001bfeb4d4","name":"Соус традиционный галактический","type":"sauce","proteins":42,"fat":24,"carbohydrates":42,"calories":99,"price":15,"image":"https://code.s3.yandex.net/react/code/sauce-03.png","image_mobile":"https://code.s3.yandex.net/react/code/sauce-03-mobile.png","image_large":"https://code.s3.yandex.net/react/code/sauce-03-large.png","__v":0},{"_id":"692889f16bf770001bfeb4d5","name":"Соус с шипами Антарианского плоскоходца","type":"sauce","proteins":101,"fat":99,"carbohydrates":100,"calories":100,"price":88,"image":"https://code.s3.yandex.net/react/code/sauce-01.png","image_mobile":"https://code.s3.yandex.net/react/code/sauce-01-mobile.png","image_large":"https://code.s3.yandex.net/react/code/sauce-01-large.png","__v":0}]} \ No newline at end of file diff --git a/e2e/har/f2a8d7aae5af49dccb0893b92f03b9ce952d3245.dat b/e2e/har/f2a8d7aae5af49dccb0893b92f03b9ce952d3245.dat new file mode 100644 index 0000000..3a66504 --- /dev/null +++ b/e2e/har/f2a8d7aae5af49dccb0893b92f03b9ce952d3245.dat @@ -0,0 +1,125 @@ +import { + createApi, + fetchBaseQuery +} from "/node_modules/.vite/deps/@reduxjs_toolkit_query_react.js?v=59810ea1"; +import Cookies from "/node_modules/.vite/deps/js-cookie.js?v=dd4b359e"; +import API_URL from "/src/utils/constants.ts"; +import { setTokens, dropTokens } from "/src/utils/token.ts"; +const baseQuery = fetchBaseQuery({ + baseUrl: API_URL, + prepareHeaders: (headers) => { + const token = Cookies.get("accessToken"); + if (token) { + headers.set("authorization", token); + } + return headers; + } +}); +const baseQueryWithRefresh = async (args, api, extraOptions) => { + let result = await baseQuery(args, api, extraOptions); + if (result.error && (result.error.status === 401 || result.error.status === 403)) { + const refreshResult = await baseQuery( + { + url: "auth/token", + method: "POST", + body: { token: localStorage.getItem("refreshToken") } + }, + api, + extraOptions + ); + if (refreshResult.data) { + const data = refreshResult.data; + setTokens(data.accessToken, data.refreshToken); + result = await baseQuery(args, api, extraOptions); + } else { + dropTokens(); + } + } + return result; +}; +export const authApi = createApi({ + reducerPath: "authApi", + baseQuery: baseQueryWithRefresh, + endpoints: (builder) => ({ + getUser: builder.query({ + query: () => "auth/user" + }), + updateUser: builder.mutation({ + query: (data) => ({ + url: "auth/user", + method: "PATCH", + body: data + }) + }), + register: builder.mutation({ + query: (data) => ({ + url: "auth/register", + method: "POST", + body: data + }), + async onQueryStarted(_arg, { queryFulfilled }) { + try { + const { data } = await queryFulfilled; + setTokens(data.accessToken, data.refreshToken); + } catch (err) { + console.error("api error:", err); + } + } + }), + login: builder.mutation({ + query: (data) => ({ + url: "auth/login", + method: "POST", + body: data + }), + async onQueryStarted(_arg, { queryFulfilled }) { + try { + const { data } = await queryFulfilled; + setTokens(data.accessToken, data.refreshToken); + } catch (err) { + console.error("api error:", err); + } + } + }), + logout: builder.mutation({ + query: () => ({ + url: "auth/logout", + method: "POST", + body: { token: localStorage.getItem("refreshToken") } + }), + async onQueryStarted(_arg, { queryFulfilled }) { + try { + await queryFulfilled; + dropTokens(); + } catch (err) { + console.error("api error:", err); + } + } + }), + forgotPassword: builder.mutation({ + query: (email) => ({ + url: "password-reset", + method: "POST", + body: { email } + }) + }), + resetPassword: builder.mutation({ + query: (data) => ({ + url: "password-reset/reset", + method: "POST", + body: data + }) + }) + }) +}); +export const { + useGetUserQuery, + useRegisterMutation, + useLoginMutation, + useUpdateUserMutation, + useLogoutMutation, + useForgotPasswordMutation, + useResetPasswordMutation +} = authApi; + +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGhBcGkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY3JlYXRlQXBpLFxuICBmZXRjaEJhc2VRdWVyeSxcbiAgdHlwZSBCYXNlUXVlcnlGbixcbiAgdHlwZSBGZXRjaEFyZ3MsXG4gIHR5cGUgRmV0Y2hCYXNlUXVlcnlFcnJvcixcbn0gZnJvbSAnQHJlZHV4anMvdG9vbGtpdC9xdWVyeS9yZWFjdCc7XG5pbXBvcnQgQ29va2llcyBmcm9tICdqcy1jb29raWUnO1xuXG5pbXBvcnQgQVBJX1VSTCBmcm9tICdAL3V0aWxzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBzZXRUb2tlbnMsIGRyb3BUb2tlbnMgfSBmcm9tICdAL3V0aWxzL3Rva2VuJztcblxuaW1wb3J0IHR5cGUgeyBUVXNlciB9IGZyb20gJ0AvdXRpbHMvYmFzZVR5cGVzJztcblxuLy8gLS0tINCY0J3QotCV0KDQpNCV0JnQodCrINCe0KLQktCV0KLQntCSINCh0JXQoNCS0JXQoNCQXG50eXBlIFRBdXRoUmVzcG9uc2UgPSB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIHVzZXI6IFRVc2VyO1xuICBhY2Nlc3NUb2tlbjogc3RyaW5nO1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbn07XG5cbnR5cGUgVFVzZXJSZXNwb25zZSA9IHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgdXNlcjogVFVzZXI7XG59O1xuXG50eXBlIFRNZXNzYWdlUmVzcG9uc2UgPSB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIG1lc3NhZ2U6IHN0cmluZztcbn07XG5cbi8vIC0t0JHQkNCX0J7QktCr0Jkg0JfQkNCf0KDQntChIC0tLVxuY29uc3QgYmFzZVF1ZXJ5ID0gZmV0Y2hCYXNlUXVlcnkoe1xuICBiYXNlVXJsOiBBUElfVVJMLFxuICBwcmVwYXJlSGVhZGVyczogKGhlYWRlcnMpID0+IHtcbiAgICBjb25zdCB0b2tlbiA9IENvb2tpZXMuZ2V0KCdhY2Nlc3NUb2tlbicpO1xuICAgIGlmICh0b2tlbikge1xuICAgICAgaGVhZGVycy5zZXQoJ2F1dGhvcml6YXRpb24nLCB0b2tlbik7XG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJzO1xuICB9LFxufSk7XG5cbi8vIC0tLSDQotCY0J/QmNCX0JDQptCY0K8g0J7QkdCV0KDQotCa0JggUkVGUkVTSC0tLVxuY29uc3QgYmFzZVF1ZXJ5V2l0aFJlZnJlc2g6IEJhc2VRdWVyeUZuPFxuICBzdHJpbmcgfCBGZXRjaEFyZ3MsXG4gIHVua25vd24sXG4gIEZldGNoQmFzZVF1ZXJ5RXJyb3Jcbj4gPSBhc3luYyAoYXJncywgYXBpLCBleHRyYU9wdGlvbnMpID0+IHtcbiAgbGV0IHJlc3VsdCA9IGF3YWl0IGJhc2VRdWVyeShhcmdzLCBhcGksIGV4dHJhT3B0aW9ucyk7XG5cbiAgaWYgKHJlc3VsdC5lcnJvciAmJiAocmVzdWx0LmVycm9yLnN0YXR1cyA9PT0gNDAxIHx8IHJlc3VsdC5lcnJvci5zdGF0dXMgPT09IDQwMykpIHtcbiAgICBjb25zdCByZWZyZXNoUmVzdWx0ID0gYXdhaXQgYmFzZVF1ZXJ5KFxuICAgICAge1xuICAgICAgICB1cmw6ICdhdXRoL3Rva2VuJyxcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJvZHk6IHsgdG9rZW46IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyZWZyZXNoVG9rZW4nKSB9LFxuICAgICAgfSxcbiAgICAgIGFwaSxcbiAgICAgIGV4dHJhT3B0aW9uc1xuICAgICk7XG5cbiAgICBpZiAocmVmcmVzaFJlc3VsdC5kYXRhKSB7XG4gICAgICBjb25zdCBkYXRhID0gcmVmcmVzaFJlc3VsdC5kYXRhIGFzIFRBdXRoUmVzcG9uc2U7XG4gICAgICBzZXRUb2tlbnMoZGF0YS5hY2Nlc3NUb2tlbiwgZGF0YS5yZWZyZXNoVG9rZW4pO1xuICAgICAgcmVzdWx0ID0gYXdhaXQgYmFzZVF1ZXJ5KGFyZ3MsIGFwaSwgZXh0cmFPcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZHJvcFRva2VucygpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyAtLS3QntCf0JjQodCQ0J3QmNCVIEFQSS0tLVxuZXhwb3J0IGNvbnN0IGF1dGhBcGkgPSBjcmVhdGVBcGkoe1xuICByZWR1Y2VyUGF0aDogJ2F1dGhBcGknLFxuICBiYXNlUXVlcnk6IGJhc2VRdWVyeVdpdGhSZWZyZXNoLFxuICBlbmRwb2ludHM6IChidWlsZGVyKSA9PiAoe1xuICAgIGdldFVzZXI6IGJ1aWxkZXIucXVlcnk8VFVzZXJSZXNwb25zZSwgdm9pZD4oe1xuICAgICAgcXVlcnk6ICgpID0+ICdhdXRoL3VzZXInLFxuICAgIH0pLFxuXG4gICAgdXBkYXRlVXNlcjogYnVpbGRlci5tdXRhdGlvbjxUVXNlclJlc3BvbnNlLCBQYXJ0aWFsPFRVc2VyPiAmIHsgcGFzc3dvcmQ/OiBzdHJpbmcgfT4oe1xuICAgICAgcXVlcnk6IChkYXRhKSA9PiAoe1xuICAgICAgICB1cmw6ICdhdXRoL3VzZXInLFxuICAgICAgICBtZXRob2Q6ICdQQVRDSCcsXG4gICAgICAgIGJvZHk6IGRhdGEsXG4gICAgICB9KSxcbiAgICB9KSxcblxuICAgIHJlZ2lzdGVyOiBidWlsZGVyLm11dGF0aW9uPFRBdXRoUmVzcG9uc2UsIFRVc2VyICYgeyBwYXNzd29yZDogc3RyaW5nIH0+KHtcbiAgICAgIHF1ZXJ5OiAoZGF0YSkgPT4gKHtcbiAgICAgICAgdXJsOiAnYXV0aC9yZWdpc3RlcicsXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBib2R5OiBkYXRhLFxuICAgICAgfSksXG4gICAgICBhc3luYyBvblF1ZXJ5U3RhcnRlZChfYXJnLCB7IHF1ZXJ5RnVsZmlsbGVkIH0pIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHF1ZXJ5RnVsZmlsbGVkO1xuICAgICAgICAgIHNldFRva2VucyhkYXRhLmFjY2Vzc1Rva2VuLCBkYXRhLnJlZnJlc2hUb2tlbik7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2FwaSBlcnJvcjonLCBlcnIpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pLFxuXG4gICAgbG9naW46IGJ1aWxkZXIubXV0YXRpb248VEF1dGhSZXNwb25zZSwgT21pdDxUVXNlciwgJ25hbWUnPiAmIHsgcGFzc3dvcmQ6IHN0cmluZyB9Pih7XG4gICAgICBxdWVyeTogKGRhdGEpID0+ICh7XG4gICAgICAgIHVybDogJ2F1dGgvbG9naW4nLFxuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogZGF0YSxcbiAgICAgIH0pLFxuICAgICAgYXN5bmMgb25RdWVyeVN0YXJ0ZWQoX2FyZywgeyBxdWVyeUZ1bGZpbGxlZCB9KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBxdWVyeUZ1bGZpbGxlZDtcbiAgICAgICAgICBzZXRUb2tlbnMoZGF0YS5hY2Nlc3NUb2tlbiwgZGF0YS5yZWZyZXNoVG9rZW4pO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdhcGkgZXJyb3I6JywgZXJyKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KSxcblxuICAgIGxvZ291dDogYnVpbGRlci5tdXRhdGlvbjxUTWVzc2FnZVJlc3BvbnNlLCB2b2lkPih7XG4gICAgICBxdWVyeTogKCkgPT4gKHtcbiAgICAgICAgdXJsOiAnYXV0aC9sb2dvdXQnLFxuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogeyB0b2tlbjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3JlZnJlc2hUb2tlbicpIH0sXG4gICAgICB9KSxcbiAgICAgIGFzeW5jIG9uUXVlcnlTdGFydGVkKF9hcmcsIHsgcXVlcnlGdWxmaWxsZWQgfSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHF1ZXJ5RnVsZmlsbGVkO1xuICAgICAgICAgIGRyb3BUb2tlbnMoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignYXBpIGVycm9yOicsIGVycik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSksXG5cbiAgICBmb3Jnb3RQYXNzd29yZDogYnVpbGRlci5tdXRhdGlvbjxUTWVzc2FnZVJlc3BvbnNlLCBzdHJpbmc+KHtcbiAgICAgIHF1ZXJ5OiAoZW1haWwpID0+ICh7XG4gICAgICAgIHVybDogJ3Bhc3N3b3JkLXJlc2V0JyxcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJvZHk6IHsgZW1haWwgfSxcbiAgICAgIH0pLFxuICAgIH0pLFxuXG4gICAgcmVzZXRQYXNzd29yZDogYnVpbGRlci5tdXRhdGlvbjxcbiAgICAgIFRNZXNzYWdlUmVzcG9uc2UsXG4gICAgICBSZWNvcmQ8J3Bhc3N3b3JkJyB8ICd0b2tlbicsIHN0cmluZz5cbiAgICA+KHtcbiAgICAgIHF1ZXJ5OiAoZGF0YSkgPT4gKHtcbiAgICAgICAgdXJsOiAncGFzc3dvcmQtcmVzZXQvcmVzZXQnLFxuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogZGF0YSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICB9KSxcbn0pO1xuXG5leHBvcnQgY29uc3Qge1xuICB1c2VHZXRVc2VyUXVlcnksXG4gIHVzZVJlZ2lzdGVyTXV0YXRpb24sXG4gIHVzZUxvZ2luTXV0YXRpb24sXG4gIHVzZVVwZGF0ZVVzZXJNdXRhdGlvbixcbiAgdXNlTG9nb3V0TXV0YXRpb24sXG4gIHVzZUZvcmdvdFBhc3N3b3JkTXV0YXRpb24sXG4gIHVzZVJlc2V0UGFzc3dvcmRNdXRhdGlvbixcbn0gPSBhdXRoQXBpO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FJSztBQUNQLE9BQU8sYUFBYTtBQUVwQixPQUFPLGFBQWE7QUFDcEIsU0FBUyxXQUFXLGtCQUFrQjtBQXVCdEMsTUFBTSxZQUFZLGVBQWU7QUFBQSxFQUMvQixTQUFT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 \ No newline at end of file diff --git a/e2e/har/f6776441826967cb34b0c37bf7436e87430babf5.json b/e2e/har/f6776441826967cb34b0c37bf7436e87430babf5.json new file mode 100644 index 0000000..7bdb0d9 --- /dev/null +++ b/e2e/har/f6776441826967cb34b0c37bf7436e87430babf5.json @@ -0,0 +1 @@ +{"success":false,"message":"You should be authorised"} \ No newline at end of file diff --git a/index.html b/index.html index b921cda..2ee7853 100644 --- a/index.html +++ b/index.html @@ -4,11 +4,11 @@ -