使用 bitbucket 管道进行量角器 e2e 测试

Posted

技术标签:

【中文标题】使用 bitbucket 管道进行量角器 e2e 测试【英文标题】:Protractor e2e tests with bitbucket pipelines 【发布时间】:2017-05-28 15:57:57 【问题描述】:

我已经编写了所有 e2e 测试,并且它们在我的本地机器和 Codeship 上成功运行。 我想将我们的 CI 从 codeship 转移到 Bitbucket 管道。所以我用测试环境创建了自己的 Docker 镜像。 当我在本地工作区中运行 docker conatiner 时,测试工作正常,但是当构建在 bitbucket 管道中运行时,所有测试都因超时而失败,说在页面上找不到角度。 服务器肯定已启动并在容器中运行 ant 测试也开始了,但问题在于页面打开。 有没有人对此有任何想法? 如果需要任何代码,我会发布所有需要的内容。

【问题讨论】:

您是在测试 Angular 应用程序还是常规 Web 应用程序? 这是一个角度应用程序 就我的经验而言,在 Docker 中运行 E2E 时,Selenium Webdriver 需要一些时间来启动,所以当你的测试运行时,你的应用程序还没有加载到浏览器中(这就是 Angular 错误的来源)。尝试使用您在 BitBucket 中的相同配置运行测试。我的猜测是映像启动并且测试立即开始运行,并且不要等待映像内的所有内容启动。 有道理,但我不确定。在 docker compose 文件中,我首先运行几个 bash 脚本(环境变量导出等),然后我启动我的应用程序,然后我检查服务器是否已启动,然后才启动我的测试。我认为页面上传可能会有一些延迟。就像我之前写的那样,我在工作区本地运行的同一个容器和测试工作正常。 我建议您查看protractor.conf.js,因为您可能有seleniumAddresscapabilities 错误。 【参考方案1】:

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

【讨论】:

嘿,这几天我一直在为同样的问题苦苦挣扎。我有一个运行量角器 e2e 测试的 Angular 4 应用程序,在本地也运行良好。我什至有一个用于我的 Angular 项目的 Docker 映像和另一个运行我的量角器测试的 Docker 映像。你能指导我在管道上运行我的测试吗?我不能执行“docker run”,因为它在管道中不可用,也不能运行“npm test”,因为我需要在 localhost:4200 中提供应用程序,但是如果我运行“npm start”,“npm test”将永远不会触发

以上是关于使用 bitbucket 管道进行量角器 e2e 测试的主要内容,如果未能解决你的问题,请参考以下文章

Angular 测试因 ng e2e 失败,但使用量角器 conf.js 通过

使用带有 Angular2 和 Socket.io 的量角器运行 e2e 测试

使用--spec时,量角器e2e测试未运行

如何使用“ng e2e”对节点服务器而不是 webpack-dev-server 运行量角器测试

如何在angularjs e2e量角器测试中上传文件

量角器中的迭代E2E测试