ssl - TestCafe、HTTPS 和多浏览器测试

标签 ssl testing https testcafe saucelabs

我们正在开发一个 Web 应用程序,我们正在使用 Testcafe 1.5 创建 UI 测试。我们正在测试的所有网站都是 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 异常 - “您的连接不是私有(private)的”和 NET:ERR_CERT_COMMON_NAME_INVALID。或 IE 异常“此站点不安全”和 DLG_FLAGS_INVALID_CA。
  • “saucelabs:Chrome@80.0: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 Tunnel Proxy”颁发/由“Sauce Labs Tunnel Proxy”颁发。

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

    谁能指出我需要改变什么来解决这些问题?

    最佳答案

    基于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 测试,您可能希望在运行测试时传递相应的浏览器参数。但是,请注意, saucelabs 浏览器提供程序不支持将参数传递给浏览器别名 ( https://github.com/DevExpress/testcafe-browser-provider-saucelabs/issues/48 )。

    关于ssl - TestCafe、HTTPS 和多浏览器测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60305193/

    相关文章:

    web-services - 使用Grails Cxf客户端插件设置disableCNCheck

    ssl - Ocaml如何获取https url

    java - Webview HTTPS 握手失败

    ssl - jboss-as-maven-plugin 通过 https 部署

    testing - 大型项目的持续集成最佳实践

    scala - 在 scala 中模拟会生成 java.lang.NoSuchMethodException

    testing - 如何发送wei/eth到合约地址? (使用松露javascript测试)

    apache - 如何使用带有(免费和终身有效)证书的 https 访问本地主机? - 类(class)

    java - IIS 托管 WCF 服务以提供客户端证书

    apache - Debian 8 - SSL 证书不工作