TestCafe,HTTPS和多浏览器测试

问题描述 投票:1回答:1

我们正在开发一个Web应用程序,该应用程序将使用Testcafe 1.5创建UI测试。我们正在测试的所有站点都是HTTPS。我们的测试可以在本地运行,也可以在SauceLabs上运行(用于多浏览器测试)。

我们已经使用浏览器设置成功测试了很长时间:

  • “ chrome:headless --allow-insecure-localhost”
  • “ chrome --allow-insecure-localhost”
  • “ saucelabs:[email protected]: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:[email protected]:Windows 10”
  • “ ie”本地IE版本为11.592.18362.0。

我尝试使用以下代码来使用实际的Web服务器证书,但无济于事:

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运行时,浏览器抱怨的证书是由localhost颁发的。在Chrome80上针对SauceLabs运行时,浏览器抱怨的证书由“ Sauce Labs隧道代理”颁发。

注意:我们也使用gherkin-testcafe 2.3.4

任何人都可以指出我需要更改以解决这些问题吗?

ssl testing https testcafe saucelabs
1个回答
0
投票

基于TestCafe Test HTTPS and HTTP/2 Websites主题,您需要为每个浏览器显式设置一个标志,以便它们不限制使用自签名证书。

例如,在Firefox中,您可以切换network.websocket.allowInsecureFromHTTPS选项(Is there a equivalent of allow-insecure-localhost flag of Google Chrome in Firefox?)。对于IE,可以指定类似的参数(如果可用)(IE10 websocket allowInsecureFromHttps)。

关于saucelab测试,您需要在运行测试时传递相应的浏览器参数。但是,请注意,ucelabs浏览器提供程序不支持将参数传递给浏览器别名(https://github.com/DevExpress/testcafe-browser-provider-saucelabs/issues/48)。

© www.soinside.com 2019 - 2024. All rights reserved.