Утверждение перенаправления URL-адреса, когда второй URL-адрес не может быть разрешен в TestCafe - PullRequest
1 голос
/ 26 мая 2020

Я хочу заявить, что следующий URL разрешен. Это URL-адрес, созданный SendGrid и изменяющий тот, который вы ищете в браузере. Проблема в том, что для доступа ко второму нужен доступ к нашему VPN. По соображениям безопасности я не хочу запускать тест за нашим VPN, но я хотел бы подтвердить, что перенаправление из SendGrid прошло успешно (я точно знаю, как будет выглядеть разрешенный URL).

http://link.novemberfirst.com/ls/click?upn=xv2uBCiA-2BCPo8h2-2F2dXgSrKknBTgupgeogOdcsRpYXuG4cjYbJP1rkCCJ1zjXTj38aokCt-2BgUcrLMVeDJ0JrFznoH-2B4JC2bxKIUkkwWGvQPWZcW89yPA45cRI4YcN4kxIWOMamgXF7h0x-2BEumL4yC4cDPD6ib2Q-2FupSBTSJJvOohq9d3QApg3ktPsAr3s71dx8_f_jH2AkQSF6IE8lczSdagr9wUDFh2rSjc-2FDARefysokTdqaEnXNbSWSyYzYz4pIdy3KyzKI2WI84SAhUWA6Ysrwbu-2FEyv-2FLVj28UDJ96u9m0SfvfLMgVTTOypSpnfzJhz8HBp-2BErWzxw-2BHQBTWKJQCCsahFPt7FAp2yflzLocMroRH-2Blyqk-2Be61Q84U19yBAQ11beRliiLdNHnzJwd88-2FGbgPTIQoQi0xlVBQxVt08NyA-3D

Проблемы возникают при использовании ClientFunction(() => document.location.href), вы получите только URL-адрес, который был успешно разрешен, и, поскольку я не подключен к VPN, последний URL-адрес не будет отображаться и не может быть подтвержден.

Is есть ли способ создать утверждение после выполнения перенаправления, даже если я не могу разрешить второй URL-адрес?

await t.navigateTo(URL);

const getLocation = ClientFunction(() => document.location.href);

await t.expect(getLocation()).contains('expected-url');

В этом случае ожидаемый URL-адрес будет: https://app-uat.novemberfirst.cloud.ec/#/public/reset-password/208100002/61849181@abc.com/F1PMDcC05gYhlqh82UDnl183/dan

1 Ответ

1 голос
/ 02 июня 2020

Нашел решение этой проблемы.

В основном, когда вы делаете HTTP-запрос, вам нужно отключить любое перенаправление, чтобы получить URL-адрес.

private async resolveRedirectLink(url) {
    let redirectedURL;
    try{
        let response = await fetch(url, {redirect: 'manual'});
        let link = await response.text();
        let matches = link.match(/"(.*?)"/);
        redirectedURL = matches[1];
    }
    catch(error){
        redirectedURL = url;
        console.warn('Error redirecting URL: ' + error.message );
    }
    return redirectedURL;
}

Это фрагмент, используемый в моем коде.

...