playwright-request-mocker
Version:
Automatically generate and use network request mocks inside Playwright.
71 lines (70 loc) • 2.33 kB
JavaScript
var __defProp = Object.defineProperty;
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
var __export = (target, all) => {
__markAsModule(target);
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __async = (__this, __arguments, generator) => {
return new Promise((resolve, reject) => {
var fulfilled = (value) => {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
};
var rejected = (value) => {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
};
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
step((generator = generator.apply(__this, __arguments)).next());
});
};
__export(exports, {
endpointOfUrl: () => endpointOfUrl,
mockRequests: () => mockRequests,
mockRouteResponse: () => mockRouteResponse,
setHttpLogs: () => setHttpLogs
});
const mockRequests = (data, page) => __async(void 0, null, function* () {
yield Promise.all(data.map((request) => __async(void 0, null, function* () {
yield mockRouteResponse(page, `**${request.url}`, request.response);
})));
});
const mockRouteResponse = (_0, _1, _2, ..._3) => __async(void 0, [_0, _1, _2, ..._3], function* (page, url, mock, status = 200, headers = { "access-control-allow-origin": "*" }) {
yield page.route(url, (route) => route.fulfill({
headers,
status,
body: JSON.stringify(mock)
}));
});
const endpointOfUrl = (route) => {
const routeFrag = route.replace("https://", "");
return routeFrag.substring(routeFrag.indexOf("/"));
};
const setHttpLogs = (page) => {
page.on("request", (request) => {
if (request.resourceType() === "xhr") {
console.log(">>", endpointOfUrl(request.url()));
console.dir(request.postData(), { depth: null });
}
});
page.on("response", (response) => __async(void 0, null, function* () {
if (response.request().resourceType() === "xhr") {
console.log("<<", endpointOfUrl(response.url()));
console.dir(yield response.json(), { depth: null });
}
}));
};
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
endpointOfUrl,
mockRequests,
mockRouteResponse,
setHttpLogs
});