【问题标题】:Angular/ Protractor E2E Test fails when run in Azure DevOps Pipeline. Passes locally在 Azure DevOps Pipeline 中运行时,Angular/Protractor E2E 测试失败。在当地通过
【发布时间】:2021-01-08 11:35:37
【问题描述】:

我正在尝试在我的 Angular 应用程序上运行 e2e 测试。当我运行 ng e2e 时,我的测试在本地通过,但不在我的管道中。我将分享我的 protractor.conf、管道任务以及我从下面失败的任务中获得的输出。

更多背景知识:

  • 我正在尝试从原本为空的 Angular 应用程序运行 e2e 代码。这 测试我试图运行简单地通过导航到我的登录到 AD 网站,输入用户名/密码,然后检查 用户被重定向到我的网站。
  • 我正在从一个版本中运行它 添加包含 e2e 测试的 repo 的管道 神器。
  • 我正在使用 xpaths 在页面上查找元素
  • 我省略了我的 jasmine 代码,因为我认为它不相关,因为测试在本地通过。但是,如果我在这一点上有错误,请告诉我,我会发布它。

protractor.conf.js

const { SpecReporter } = require('jasmine-spec-reporter');

process.env.CHROME_BIN = process.env.CHROME_BIN || require("puppeteer").executablePath();

exports.config = {
  allScriptsTimeout: 11000,
  specs: [
    './src/**/*.e2e-spec.ts'
  ],
  capabilities: {
    chromeOptions: {
      args: ["--headless", "--disable-gpu", "--window-size=1200,900"],
      binary: process.env.CHROME_BIN
    },
    'browserName': 'chrome'
  },
  directConnect: true,
  baseUrl: 'http://localhost:4200/',
  framework: 'jasmine',
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 120000,
    print: function() {}
  },
  onPrepare() {
    require('ts-node').register({
      project: require('path').join(__dirname, './tsconfig.e2e.json')
    });
    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
  }
};

管道任务:

失败的任务输出:

请帮助我让这些测试在 azure 中通过

谢谢!

编辑:我有那个“更新 Webdriver”任务,因为我读到我应该在某个地方做,它实际上不会改变结果,无论它是否存在

【问题讨论】:

  • 你能分享你的测试文件吗?
  • 请检查chromedriver.exe(在您的日志中,您安装了chromedriver 2.46)是否与chrome兼容。如果您没有指定环境 CHROME_BIN ,则使用包 puppeteer 提供的 chrome,从该包中找到 chrome 二进制文件并检查其版本。

标签: javascript angular selenium protractor azure-devops


【解决方案1】:

您是否尝试过增加您的 allScriptsTimeout

在浏览器上运行的每个脚本的超时时间(以毫秒为单位)。这应该比您的应用程序在任务之间稳定所需的最长时间长。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 2021-06-09
    • 1970-01-01
    • 2018-01-31
    • 2020-02-06
    相关资源
    最近更新 更多