【问题标题】:Run tests with Karate-Chrome (Connection refused exception)使用 Karate-Chrome 运行测试(连接被拒绝异常)
【发布时间】:2021-02-24 13:02:13
【问题描述】:

基于空手道 UI 的测试使用 karate-chrome(步骤 here)在本地成功运行,它会启动一个带有暴露端口的容器。

现在,我正在尝试在 CI 中的 karate-chrome 容器中内运行测试。我已经使用KARATE_SOCAT_START=true 启动了 karate-chrome 容器,然后执行了 java -jar (standalone jar) 命令来运行测试。非基于 UI 的测试通过,但 UI 测试抛出以下异常:

ERROR com.intuit.karate - http request failed: 
15:26:09 DOCKER: org.apache.http.conn.HttpHostConnectException: Connect to localhost:9222 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused (Connection refused)

请注意,尚未配置带有 docker 的 driverTarget。只有以下驱动的配置:

  * configure driver = { type: 'chrome', start: false, showDriverLog: true, port:9222 ,pollAttempts: 5}

是否有可能让它以这种方式工作,还是应该设置自定义 docker 映像?

【问题讨论】:

    标签: docker ui-automation karate


    【解决方案1】:

    我无法直接在 karate-chrome 上运行基于 UI 的测试。因此,我最终创建了一个新的 docker 镜像 (docker-openjdk8) 来使用 driverTarget 运行测试:

    * configure driverTarget = { docker: 'ptrthomas/karate-chrome', showDriverLog: true}
    

    这基本上使用 Docker-in-Docker (DIND) 进程运行测试。很高兴知道其他人是否有更好的解决方案。

    【讨论】:

    • 如果你分享这个容器的来源来帮助别人会很好
    【解决方案2】:

    抱歉,您的设置不清楚。但是使用configure driverTarget = { docker: 'ptrthomas/karate-chrome' } 意味着Docker 应该安装在你运行测试的机器上。

    我建议您开始查看1.0 release,我们有一个参考测试,它使用Docker 容器略有不同,没有使用driverTarget。您可以在这里找到详细信息:https://stackoverflow.com/a/66005331/143475

    如果在您完成这项工作后,您将您的解决方案作为另一个答案发布在此处,这样可以帮助其他人,并在需要时帮助我们改进文档。

    【讨论】:

    • 看起来我不需要 driverTarger,因为我已经在 karate-chrome 容器内运行测试。我已更新问题以使其更清楚。
    • @UIC 对不起,我无法理解。所以我放弃了。希望这里的其他人可以帮助您。 docker 正在为许多其他人工作,请参见此处:stackoverflow.com/q/64457892/143475
    猜你喜欢
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 2016-11-07
    • 2021-06-24
    • 2016-06-24
    • 1970-01-01
    相关资源
    最近更新 更多