使用Bitbucket Pipelines进行Protractor端到端测试

4
我已经编写好了所有的端到端测试并在本地机器和Codeship上成功运行。我想将我们的CI从Codeship迁移到Bitbucket管道。因此,我创建了自己的具有测试环境的Docker镜像。当我在本地工作区域运行docker容器时,测试正常工作,但当构建在Bitbucket管道中运行时,所有测试都会因超时而失败,并表示在页面上找不到angular。服务器在容器中肯定是启动的,并且测试也开始了,但问题在于打开页面。 有人对此有任何想法吗?如果需要任何代码,我将发布所需的一切。

你在测试一个Angular应用程序,还是一个常规的Web应用程序? - Adrian Oprea
就我的经验而言,在Docker中运行E2E时,Selenium Webdriver需要一些时间来启动,因此在测试运行时,您的应用程序尚未加载到浏览器中(这就是Angular错误的来源)。 尝试使用与BitBucket中相同的配置运行测试。我猜想镜像启动后测试会立即开始运行,并且不会等待镜像内部的所有内容启动完成。 - Adrian Oprea
这很有道理,但我不确定。在docker compose文件中,我首先运行几个bash脚本(导出环境变量等),然后启动我的应用程序,然后检查服务器是否已启动,只有在此之后才启动我的测试。我认为页面上传可能会有一些延迟。但正如我之前所写的那样,在我的工作区中以相同的容器运行并且测试可以正常工作。 - Игорь Редько
问题有解决吗?像怀疑的那样,是竞态条件吗? - Ain Tohvri
@ИгорьРедько,你能分享一下你的Dockerfile吗?我也想在我的Angular 2 Docker镜像上运行protractor测试。 - MarBVI
显示剩余2条评论
1个回答

0

我成功解决了我的问题。 不确定是否对其他人有用,但问题出现在我的环境设置中。 我忘记添加webpack服务的启动,该服务应生成一些所需的服务器文件和服务器源代码的压缩文件。 因此,服务器成功启动,但从浏览器请求路由失败,因为它无法找到所请求的文件。


嘿,我已经为这个问题苦苦挣扎了几天。我有一个运行Angular 4应用程序的protractor e2e测试,本地也运行良好。我甚至有一个针对我的Angular项目的Docker镜像和另一个运行我的protractor测试的Docker镜像。你能指导我如何在管道上运行我的测试吗?我不能执行“docker run”,因为它在管道中不可用,也不能执行“npm test”,因为我需要将应用程序提供在localhost:4200上,但如果我运行“npm start”,“npm test”将永远不会触发。 - MarBVI

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接