Ssl TestCafe、HTTPS和多浏览器测试

Ssl TestCafe、HTTPS和多浏览器测试,ssl,testing,https,testcafe,saucelabs,Ssl,Testing,Https,Testcafe,Saucelabs,我们正在开发一个web应用程序,我们正在使用Testcafe 1.5创建UI测试。我们正在测试的所有站点都是HTTPS。我们的测试要么在本地运行,要么在SauceLabs上运行(用于多浏览器测试) 我们已经使用浏览器设置成功测试了很长时间: “chrome:无头--允许不安全的本地主机” “chrome--允许不安全的本地主机” “saucelabs:Chrome@76.0:Windows 10“ 本地Chrome版本是80。为此,我们使用以下代码: const selfSignedS

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

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

  • “chrome:无头--允许不安全的本地主机”
  • “chrome--允许不安全的本地主机”
  • “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异常-“您的连接不是私有的”和网络:ERR\u CERT\u COMMON\u NAME\u无效。或IE异常“此站点不安全”和DLG\u标志\u无效\u CA

  • “saucelabs:Chrome@80.0:Windows 10“
  • “即” 本地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上运行时,浏览器抱怨的证书是由本地主机颁发的。在Chrome80上针对SauceLabs运行时,浏览器抱怨的证书由“Sauce Labs隧道代理”颁发

注意:我们也在使用小黄瓜testcafe 2.3.4

有人能指出我需要做哪些更改来解决这些问题吗?

根据主题,您需要为每个浏览器明确设置一个标志,以便它们不会限制自签名证书的使用

例如,在Firefox中,您可以切换
network.websocket.allowInsecureFromHTTPS
选项()。对于IE,您可以指定一个类似的参数,如果它可用()


至于saucelab测试,您可能希望在运行测试时传递相应的浏览器参数。但是,请注意,saucelabs浏览器提供程序不支持将参数传递给浏览器别名()。

谢谢@alexskorkin。我很快就会尝试你的建议。我已经对testcafe浏览器提供商saucelabs的问题发表了评论,试图提高它的知名度。我已经解决了这个问题,您的解决方案为我指明了正确的方向,并且在“再次感谢”的评论部分完全解决了这个问题!!