DocSpace-client/packages/login/tests/helpers/playwright.helper.js

60 lines
1.5 KiB
JavaScript

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;