selenium - 未为自定义 protractor.conf 文件创建 Webdriver 实例

标签 selenium selenium-webdriver protractor travis-ci

我想将我的E2E套件集成到Travis中,所以我关注了this文章。正如文章中提到的,我创建了 Travis 构建的自定义 protractor.ci.conf.js 文件。我已将此文件放入我的 e2e 文件夹中(路径:e2e/protractor.ci.conf.js)。

我的自定义 e2e/protractor.ci.conf.js 和 Angular 生成的 protractor.conf.js 文件中的唯一区别是 args< 中的值 属性显示如下。

e2e/protractor.ci.conf.js

chromeOptions: {
      args: [
        '--headless',
        'window-size=1920,1080'
      ]
    }

Protractor .conf.js

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

exports.config = {
  allScriptsTimeout: 11000,
  specs: [
   './e2e/**/*.e2e-spec.ts'
  ],
  capabilities: {
    shardTestFiles: true,
    maxInstances: 2,
    'browserName': 'chrome',
    chromeOptions: {
      args: ['--start-maximized']
    }
  },
  directConnect: true,
  baseUrl: 'localhost:4000/',
  framework: 'jasmine',
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 300000,
    print: function () {
    }
  },
  useAllAngular2AppRoots: true,
  onPrepare: function () {
    jasmine.getEnv().addReporter(new SpecReporter());
    require('ts-node').register({
      project: 'e2e/tsconfig.json'
    });
  }
};

在我的 package.json 文件中,有 2 个脚本,一个用于本地运行测试,另一个用于Travis运行测试。

Package.json(与protractor.conf.js位于同一级别)

 "scripts": {
    ...
    "test": "ng test --watch=false",
    "pree2e": "webdriver-manager update",
    "e2e": "concurrently --kill-others \"ng e2e --port=4000\" \"npm run _server:run\"",
    "e2e:ci": "concurrently --kill-others \"ng e2e --port=4000 --protractor-config=e2e/protractor.ci.conf.js\" \"npm run _server:run\"",
    "_server:run": "tsc -p ./server && concurrently \"tsc -w -p ./server\" \"nodemon dist/server/index.js\" ",
    ...
  },

.travis.yml

branches:
 only:
  - staging
  - prod
  - functional-testing
 script:
   ...
  - if [[ $TRAVIS_COMMIT_MESSAGE == *"[skip e2e]"* ]]; then echo "skipping E2E test"; else npm run e2e:ci; fi
  ...
before_deploy:
  - sed -i '/dist/d' .gitignore
  - git add . && git commit -m "latest build"
  - cd $TRAVIS_BUILD_DIR/dist

问题

当简单地运行npm run e2e时,每个测试都工作正常。但是当我使用 npm run e2e:ci 命令脚本时,脚本会挂起并且没有 WebDriver 实例运行。

I/launcher — Running 0 instances of WebDriver

即将到来,而不是 1 或 2 个实例。

最佳答案

那是因为自从你创建了一个新的配置文件并显然放置在该文件夹中 /e2e 而不是默认的根文件夹。

您的案例中的测试文件的路径也应该更新。

因此 './e2e/**/*.e2e-spec.ts' 将更改为 './**/*.e2e-spec.ts'

由于当前测试无法找到指定的任何文件,因此它不会运行任何实例。

关于selenium - 未为自定义 protractor.conf 文件创建 Webdriver 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55702352/

相关文章:

java - 当自动化测试因 Unresolved 错误而失败时,最佳实践是什么?

ruby + selenium-webdriver actionbuilder

javascript - 如何使用selenium webdriver点击链接

linux - Linux(64 位)org.openqa.selenium.NoSuchElementException 上的 phantomjs 异常错误

java - 如何强制 AutoClosable 警告传播到 Java 类的调用者?

javascript - Protractor 单击包裹的 p-dropdown - 选择值 - 元素在点 (x, y) 处不可单击其他元素将收到单击

angular - 如何在我的 Jasmine /Protractor 测试中执行 typescript 样式继承?

javascript - 如何在中继器中定位并单击 ng-click 按钮

c# - 是否可以从 Protractor 测试中调用 C# 代码?

java - 无法在 Java 中设置 Firefox 配置文件、代理设置和身份验证