Мы разрабатываем веб-приложение, в котором мы создаем тесты пользовательского интерфейса с помощью Testcafe 1.5. Все сайты, которые мы тестируем, являются HTTPS. Наши тесты выполняются либо локально, либо на SauceLabs (для тестирования нескольких браузеров).
Мы долгое время успешно тестировали с использованием настроек браузера:
- "chrome : headless --allow-insecure-localhost "
- " chrome --allow-insecure-localhost "
- " saucelabs:Chrome@76.0: Windows 10 "
Локальная Chrome версия равна 80. Для этого мы используем следующий код:
const selfSignedSertificate = require("openssl-self-signed-certificate");
let hostrunner = "localhost"; # We change this to ip.address() if running on Sauce
const sslOptions = ssl
? {
key: selfSignedSertificate.key,
cert: selfSignedSertificate.cert
}
: null;
createTestCafe(hostrunner, 1337, 1338, sslOptions)
Однако, если мы попытаемся использовать другие браузеры, как показано ниже, произойдет сбой. Chrome исключение - "Ваше соединение не является частным" и NET: ERR_CERT_COMMON_NAME_INVALID. Или IE исключение "Этот сайт не является безопасным" и DLG_FLAGS_INVALID_CA.
- "saucelabs:Chrome@80.0: Windows 10"
- "ie" Локальный IE является версия 11.592.18362.0.
Я пытался использовать следующий код для использования реальных сертификатов веб-сервера, но безрезультатно:
const fs = require('fs');
let hostrunner = "localhost"; # We change this to ip.address() if running on Sauce
const sslOptions = ssl
? {
key: fs.readFileSync('ws-key.pem'),
cert: fs.readFileSync('ws-cert.pem'),
allowHTTP1: true
}
: null;
createTestCafe(hostrunner, 1337, 1338, sslOptions)
При запуске с локальным IE сертификатом браузер жалуется, выдан локальному хосту. При запуске с SauceLabs на Chrome80 сертификат, на который жалуется браузер, выдается / через "Sauce Labs Tunnel Proxy".
Примечание: мы также используем gherkin-testcafe 2.3.4
Кто-нибудь может указать, что мне нужно изменить, чтобы обойти эти проблемы?