基于Karate UI的测试在本地成功运行,使用Karate-chrome(此处的步骤)启动一个带有暴露端口的容器。
现在,我尝试在CI中的Karate-chrome容器内运行测试。我已经使用KARATE_SOCAT_START=true
启动了Karate-chrome容器,然后执行java -jar(独立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映像?
3条答案
按热度按时间4xrmg8kj1#
我无法直接在
karate-chrome
上运行基于UI的测试。因此,我最终创建了一个新的docker映像(docker-openjdk8)来使用driverTarget运行测试:这基本上运行的测试与Docker-in-Docker(DIND)过程。我很高兴知道,如果有人有一个更好的解决方案。
4urapxun2#
抱歉,您的设置不清楚。但是使用
configure driverTarget = { docker: 'ptrthomas/karate-chrome' }
意味着Docker应该安装在您运行测试的机器上。我建议您先看看1.0 release,我们有一个参考测试,它使用Docker容器的方式略有不同,没有使用
driverTarget
。https://stackoverflow.com/a/66005331/143475如果您在完成此工作后,将您的解决方案作为另一个答案发布在此处,以便帮助其他人,并在需要时帮助我们改进文档,那将是非常好的。
bis0qfac3#
我知道这个问题已经很久了,但是今天我偶然发现了这个问题,我不得不为自动化配置Karate UI测试。我找到的解决方案是如下配置chrome驱动程序:
然后,空手道独立jar能够启动浏览器,所有测试都通过了。
希望这对你有帮助!