const Helper = require("@codeceptjs/helper"); const path = require("path"); class PlaywrightHelper extends Helper { // before/after hooks /** * @protected */ _before() { const { page } = this.helpers.Playwright; // clear all routes between tests page._routes = []; } // add custom methods here // If you need to access other helpers // use: this.helpers['helperName'] async mockEndpoint(endpoint, scenario) { const { page } = this.helpers.Playwright; const rootDir = "tests/mocking/mock-data/"; endpoint.url.forEach(async (url, index) => { await page.route(new RegExp(url), (route) => { if (scenario !== "") { route.fulfill({ path: path.resolve(rootDir, endpoint.baseDir, `${scenario}.json`), headers: { "content-type": "application/json", "access-control-allow-origin": "*", }, }); } else { route.fulfill(); } }); }); } async checkRequest(url, form, baseDir, scenario) { const { page } = this.helpers.Playwright; const rootDir = "tests/mocking/mock-data/"; await page.route(new RegExp(url), (route) => { for (let key in form) { assert(route.request().postData().includes(form[key])); } return route.fulfill({ path: path.resolve(rootDir, baseDir, `${scenario}.json`), headers: { "content-type": "application/json", "access-control-allow-origin": "*", }, }); }); } } module.exports = PlaywrightHelper;