TestCafe, HTTPS и мультибраузерное тестирование - PullRequest
1 голос
/ 19 февраля 2020

Мы разрабатываем веб-приложение, в котором мы создаем тесты пользовательского интерфейса с помощью 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

Кто-нибудь может указать, что мне нужно изменить, чтобы обойти эти проблемы?

1 Ответ

0 голосов
/ 24 февраля 2020

На основе TestCafe Test HTTPS и HTTP / 2 сайтов topi c вам необходимо явно установить флаг для каждого браузера, чтобы они не ограничивали использование самозаверяющего сертификата .

Например, в Firefox вы можете переключать опцию network.websocket.allowInsecureFromHTTPS ( Существует ли эквивалентный флаг allow-insecure-localhost Google Chrome в Firefox? ). Для IE вы можете указать аналогичный аргумент, если он доступен ( IE10, веб-сокет allowInsecureFromHttps ).

Что касается тестирования куска соуса, при запуске вы должны передать соответствующие аргументы браузера. тесты. Однако обратите внимание, что поставщик браузера saucelabs не поддерживает передачу аргументов псевдонимам браузера (https://github.com/DevExpress/testcafe-browser-provider-saucelabs/issues/48).

...