[docs] Describe how to change an URL in the `onRequest` method of the RequestHook
What is your Scenario?
There isn't information about how to change an URL of the request in the RequestHook,
What are you suggesting?
There should be informed on how to change a request URL. It needs to change hostname, host, port, protocol and path of the e.requestOptions on values that are required for a new resource. Also, We should change the request headers depending on the new resource. Option url is read-only, which means that trying to change it doesn't alter the real url.
For example:
class CustomRequestHook extends RequestHook {
onRequest (e) {
e.requestOptions.protocol = 'https:';
e.requestOptions.host = 'devexpress.github.io';
e.requestOptions.hostname = 'devexpress.github.io';
e.requestOptions.port = '';
e.requestOptions.path = '/testcafe/example/thank-you.html';
e.requestOptions.headers['host'] = 'devexpress.github.io';
}
onResponse (responseEvent) {
}
}
What alternatives have you considered?
No response
Additional context
No response
@Aleksey28 do you need help? Here an example:
import { RequestMock } from "testcafe";
const createProtocolSuccess = (bodyContent: Record<string, any>) => RequestMock()
.onRequestTo({ url: 'YOURURLGOESHERE', method: 'GET' })
.respond((req, res) => {
res.headers['access-control-allow-origin'] = '*';
res.headers['access-control-allow-headers'] =
'expiry,uid,client,access-token,token-type,content-type';
res.headers['access-control-allow-credentials'] = 'false';
res.setBody(bodyContent);
res.statusCode = 200
})
fixture("TEST")
.page(baseUrl)
.beforeEach(async (t: TestController) => {
await loginPage.login({
userName: login,
password: password,
});
await t.maximizeWindow();
await t.wait(1000);
})
test.meta({ CID: "01", type: TestType.Critical }).timeouts({
pageLoadTimeout: 5000,
})
.requestHooks(createProtocolSuccess(
createDetailedContent({
"casePermissions": {
"canRequestCVR": true,
}
})
("Assert Requests Exist", async (t: TestController) => {
await t.navigateTo("/MYCASE/");
await t.wait(3000)
await detailedView.assertion.assertStatus(true)
await detailedView.assertion.assertButtonStatus(true)
});
Hi @pgusilic-devops,
Thank you for your time. However, this is not a request for help. It's a suggestion to add information to the documentation.