Skip to content

Instantly share code, notes, and snippets.

@potapovDim
Last active July 31, 2020 13:44
Show Gist options
  • Save potapovDim/2d1acb698cc0db16b40ea8e912f5aec1 to your computer and use it in GitHub Desktop.
Save potapovDim/2d1acb698cc0db16b40ea8e912f5aec1 to your computer and use it in GitHub Desktop.
mock request protractor example
// implementation
function mochRequest(requiredUrl, method, data) {
//@ts-ignore
const __fetchy = window.fetch;
//@ts-ignore
window.fetch = function(...args) {
const mockedInterface = {
text: () => Promise.resolve(typeof data === 'string' ? data : JSON.stringify(data)),
json: () => Promise.resolve(typeof data !== 'string' ? data : JSON.parse(data)),
};
const urlReq = args[0];
const requestMethod = args[1] && args[1].method || 'GET';
if (requiredUrl.toLowerCase() === urlReq.toLowerCase() && requestMethod.toLowerCase() === method.toLowerCase()) {
return Promise.resolve(mockedInterface);
} else {
return __fetchy(...args);
}
};
}
// browser API
async mochRequest(mockUrl: string, method: string, data: any) {
return browser.executeScript(`
const mockUrl = arguments[0];
const mockMethod = arguments[1];
const mockData = arguments[2];
const mochReq = ${mochRequest.toString()};
return mochReq(mockUrl, mockMethod, mockData);
`, mockUrl, method, data);
}
// usage
await browser.mochRequest(`${browser.baseUrl}/login`, 'POST', false);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment