【问题标题】:TestCafe, CircleCI 2.0 & SauceLabs -- can't get this combination to workTestCafe、CircleCI 2.0 和 SauceLabs——无法让这种组合发挥作用
【发布时间】:2019-05-08 06:23:56
【问题描述】:

所以——我可以通过我的笔记本电脑执行以下操作: testcafe "saucelabs:Chrome@70.0:Windows 10" 测试/设置/users.js

这将连接到 SauceLabs,以启动测试(或多个测试,无论哪种方式都可以),以回击我们的开发服务器。 (IP 已被列入白名单,一切正常)。

当然,我也可以登录酱汁实验室,打开“实时测试”浏览器并连接到此环境/登录等。

因此,“SauceLabs =-> 我的环境”很好。

如果我尝试在 circleci 上运行构建以执行 正是这个,它会失败。

在我的角色中,我有以下代码:

const getPageHTML = ClientFunction(() => document.documentElement.outerHTML);
let value = await getPageHTML();
console.log(value);
const pageLink = ClientFunction (() => window.location.href);
value = await pageLink();
console.log(value);

这将打印出整个outerHTML只是

<html><head></head><body></body></html>

会打印出当前的url是“about:blank”

所以,我的问题.. 使用来自 CIRCLE 的 saucelabs 运行测试时,我需要将 CIRCLE 列入白名单吗?

当我们使用 saucelabs 浏览器时,我似乎无法弄清楚从我的笔记本电脑运行测试与使用 circle 运行测试之间的功能/执行差异是什么。

此时是“运行测试的 IP”(白名单 ip)circleCI,还是 saucelabs?当然,我一直假设它是酱实验室。

注意:我实际上能够进行 testcafe "example.js" 测试,并让 it 使用 circle/saucelabs 运行。因此,这实际上与将测试运行回我的环境有关。如果 circle 正在“使用”saucelab 浏览器运行测试,我很想了解更多关于“源 IP 范围”的信息。

任何建议将不胜感激!

(只是很难弄清楚如何调试/分类问题)

【问题讨论】:

    标签: testing circleci testcafe saucelabs circleci-2.0


    【解决方案1】:

    正如@Eddie 在他的回答中提到的那样,您需要使用 Sauce 的 Connect Tunnel 来连接 CircleCI。

    测试站点受代理设置保护,SauceLabs 被列入白名单。解决方案是将 CircleCI 添加到您公司的白名单中。

    SauceLab 浏览器 ===tunnel(ok)===> Testcafe 代理服务器 (CircleCI) ===firewall(失败)===> 您机器上的站点

    【讨论】:

      【解决方案2】:

      为了让 SauceLabs 练习在 CircleCI 容器中运行的应用程序,您需要使用 Sauce's Connect Tunnel,因为在 CircleCI 容器中运行的服务无法访问互联网。

      CircleCI 和 SauceLabs 合作创建了an "orb" that simplifies the setup of a tunnel。我不熟悉 TestCafe,但它应该可以解决连接问题。

      您可以在此处查看 CircleCI 中的 SauceLabs 示例(尽管使用 Maven/Java)https://github.com/eddiewebb/demo-blueskygreenbuilds/blob/master/.circleci/config.yml#L17,但基本上

        - saucelabs/with_proxy:
            name: "Chrome Tests"
            requires:
              - "Unit Test"
            tunnel_identifier: chrome
            steps:
              - maven/with_cache:
                  steps:
                    - run: ./mvnw verify -B -Dspring.profiles.active=it -Dsauce.tunnel="chrome" 
      

      【讨论】:

      • 所以,“应用程序”没有在 Circle 中运行.. 所有的 circle 都有,是 javascript 测试代码(testcafe 代码)。我要测试的实际网站是 https://.
      • @RogerStudner,Testcafe 也是一个启动自己的代理服务器的应用程序。因此,正如 Eddie 在他的回答中提到的那样,您需要使用 Sauce 的 Connect Tunnel 与 CircleCI 进行连接。
      • Artem - 我很乐意在 SO 之外与您讨论这个问题。我可以: 1)去 saucelabs 并打开一个实时会话来访问我公司的测试站点 2)从我的笔记本电脑上运行测试,使用 saucelabs 浏览器,访问我公司的测试站点。 3)从circleci,使用saucelabs浏览器运行测试,以测试面向公众的网站4)我不能,从circleci,使用saucelabs浏览器运行测试,以测试我公司的测试站点(它被列入saucelabs/上述2的白名单其他场景有效)。
      • @RogerStudner,Testcafe 代理服务器应该可以从 CircleCI 访问您的站点。您能否澄清一下在第一个声明中提到的 SauceLabs Live 会话开始时您是否使用了 Sauce 的连接隧道?如果是,很可能是被测站点的路径是本地的,无法访问。您可以尝试创建一个企业 VPN 并从 CircleCI 容器连接到它。如果否,则测试站点的路径受代理设置保护,并且 SauceLabs 被列入白名单。那么解决方案是将 CircleCI 添加到您的公司白名单中。
      • @Artem - 啊,你说了一些可能是关键的东西。我无法弄清楚 testcafe 代理服务器在控制 saucelabs 浏览器方面是如何工作的。我想我一直认为从我的服务器的角度来看,传入的 IP 地址应该是 saucelabs 而不是 circleci(因为白名单圈基本上是“所有 EC2”)。当我关闭防火墙时,这一切都有效,鉴于您的说法,这是有道理的。所以基本上 testcafe 获得了一个 saucelabs 浏览器,但是是否通过循环将该浏览器路由回我的网站?
      猜你喜欢
      • 2017-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-04
      相关资源
      最近更新 更多