Hello, in my tests I use route.fetch() to get the body of a response and check some conditions. All the tests using fetch() fail because of the errore in the title. I googled the error and it seems to be a certificate error but when using the platform there are no issues with certificate as the browsers do not complain. Here's a sample test:
test('should return ZARAGOZA with spain for /getStatesForRegions', async ({request, page}) => {
test.slow();
const promise = new Promise(async resolve => {
await page.route('**/getStatesForRegions', async (route) => {
const response = await route.fetch();
const json:[] = await response.json();
await route.continue();
resolve(json);
});
});
await page.locator('#select-country').selectOption(['Spain']);
await page.locator('#select-region').selectOption(['ARAGON']);
const body:any = await promise;
expect(body).toContain('ZARAGOZA');
expect(hasDuplicates(body)).toBeFalsy();
});
This thread is trying to answer question "How can I resolve the 'route.fetch() unable to verify first certificate' error in my tests?"
Hi, if all you need to do is intercept a response, then page.waitForResponse is a much better choice than page.route. https://playwright.dev/docs/api/class-page#page-wait-for-response
page.route is more for manipulating responses, for example to mock APIs. It is overkill to use it for mere interception.
If you do want to stick to page.route, then I don't know how to solve the certificate problem. Maybe ignoreHTTPSErrors will work: https://playwright.dev/docs/next/api/class-testoptions#test-options-ignore-https-errors
Rayrun is a community for QA engineers. I am constantly looking for new ways to add value to people learning Playwright and other browser automation frameworks. If you have feedback, email [email protected].