UNPKG

e2ed

Version:

E2E testing framework over Playwright

54 lines (53 loc) 2.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mockWebSocketRoute = void 0; const fullMocks_1 = require("../../context/fullMocks"); const webSocketMockState_1 = require("../../context/webSocketMockState"); const useContext_1 = require("../../useContext"); const asserts_1 = require("../../utils/asserts"); const fn_1 = require("../../utils/fn"); const log_1 = require("../../utils/log"); const mockWebSocketRoute_1 = require("../../utils/mockWebSocketRoute"); const object_1 = require("../../utils/object"); /** * Mock WebSocket for some API route. * Applicable only for routes with the `getParamsFromUrlOrThrow` method. * The mock is applied to a WebSocket that matches the route by url * (by methods `getParamsFromUrlOrThrow` and `isMatchUrl`). */ const mockWebSocketRoute = async (Route, webSocketMockFunction, { skipLogs = false } = {}) => { (0, fn_1.setCustomInspectOnFunction)(webSocketMockFunction); const webSocketMockState = (0, webSocketMockState_1.getWebSocketMockState)(); if (!webSocketMockState.isMocksEnabled) { return; } const fullMocksState = (0, fullMocks_1.getFullMocksState)(); if (fullMocksState?.appliedMocks !== undefined) { (0, object_1.setReadonlyProperty)(webSocketMockState, 'isMocksEnabled', false); } let { optionsByRoute } = webSocketMockState; if (optionsByRoute === undefined) { optionsByRoute = new Map(); (0, object_1.setReadonlyProperty)(webSocketMockState, 'optionsByRoute', optionsByRoute); const requestsFilter = (0, mockWebSocketRoute_1.getRequestsFilter)(webSocketMockState); (0, object_1.setReadonlyProperty)(webSocketMockState, 'requestsFilter', requestsFilter); } if (optionsByRoute.size === 0) { const { requestsFilter } = webSocketMockState; (0, asserts_1.assertValueIsDefined)(requestsFilter, 'requestsFilter is defined', { routeName: Route.name, webSocketMockState, }); const page = (0, useContext_1.getPlaywrightPage)(); const setResponse = (0, mockWebSocketRoute_1.getSetResponse)(webSocketMockState); await page.routeWebSocket(requestsFilter, setResponse); } optionsByRoute.set(Route, { skipLogs, webSocketMockFunction: webSocketMockFunction, }); if (skipLogs !== true) { (0, log_1.log)(`Mock WebSocket for route "${Route.name}"`, { webSocketMockFunction }, 5 /* LogEventType.InternalAction */); } }; exports.mockWebSocketRoute = mockWebSocketRoute;