带 Headless Chrome 的 Protractor 无法在 AWS CodeBuild 上运行,但可以在本地运行

Pat*_*ers 5 protractor e2e-testing aws-codebuild angular google-chrome-headless

我有一个网页,在进入角度网页之前需要 Google 身份验证,并且我已经构建了一些非常基本的端到端测试,这些测试在带有 Chrome Headless 的 Linux 中就像一个魅力:

  1. 查找用户名字段
  2. 输入正确的电子邮件地址,然后单击下一步
  3. 输入密码登录
  4. 一旦它通过谷歌认证,它就会验证页面的标题是“费用”

这是我在终端中得到的最后一条消息:在 46 秒内成功执行了 3 个规范中的 3 个。

但是,在AWS CodeBuild 中,我们还使用 Linux (Ubuntu) 容器,但每次都失败。
这是第一个错误: ... Jasmine 开始

  1. 查找用户名字段
  2. 输入正确的测试电子邮件地址

0 h1 标签识别费用应用 E2E 费用的初始测试套件索引页面应该可以正常工作

  • [31 米?应该与测试用户正确登录·[39m
  • [31m- ·[39m·[31mFailed: 未找到使用定位器的元素: By(css selector, *[id="identifierId"])
  • [39m at elementArrayFinder.getWebElements.then (/codebuild/output/src609592849/src/node_modules/protractor/built/element.js:814:27)

这是 protractor.conf.js 中的设置信息:

capabilities: {
'browserName': 'chrome',
chromeOptions: {
    args: ["--headless", "--disable-dev-shm-usage", "--no-sandbox", "--disable-gpu", "--window-size=1280x960"]
    }
},
directConnect: true,  // Test scripts communicate directly with Chrome Driver, so they start up and run faster
Run Code Online (Sandbox Code Playgroud)

从 package.json,我使用:"e2e": "ng e2e --port 4200",

从 buildspec-test.yml,我有以下 post_build 命令: - npm run e2e

为什么 Chrome Headless 可以在http://localhost:4200上找到我的网页,而我的本地 Linux 问题却没有问题,但是当它们都运行 Ubuntu Linux 时,却无法在 AWS CodeBuild 中找到它?本地版本:Ubuntu 18.04.1 LTS AWS CodeBuild 版本:Ubuntu Ubuntu 14.04.5 LTS(可信赖)

请让我知道,并提前致谢!

真挚地,

私服

Pat*_*ers 1

是的,我确实有这个答案。一位朋友兼同事(谢谢 Bill T.)能够使用 Ubuntu 18.04LTS 创建一个 Docker 容器,并让我在 AWS CodeBuild 中运行它,它可以正常工作。这证明了这个问题:您无法在较旧的Ubuntu 14.04.5 LTS 上使用无头Chrome 。从 Ubuntu 18.04 LTS 之前的版本开始。