为什么Protractor(在Angular(v.4)项目中)没有找到任何测试规范?

时间:2017-10-02 16:17:25

标签: angular jasmine protractor angular-e2e

我在Angular(v.4)项目中工作并使用Protractor I遇到了这个问题

从终端:

  

I / launcher - 运行WebDriver的1个实例

     

我/托管 - 在http://localhost:4444/wd/hub使用selenium服务器   开始未找到规格在0.003秒内完成

     

I / launcher - WebDriver的0个实例仍在运行   [17:06:38]我/发射器 - 铬#01通过

它会运行快速关闭的浏览器,并且它不会运行(查找)任何规范。

protractor.conf.js:

require('ts-node/register');
var helpers = require('./helpers');

exports.config = {
  baseUrl: 'http://localhost:3000/',

  // use `npm run e2e`
  specs: [
    helpers.root('test/e2e/**/**.e2e.ts'),
    helpers.root('test/e2e/**/*.e2e.ts')
  ],
  exclude: [],

  framework: 'jasmine2',

  allScriptsTimeout: 110000,

  jasmineNodeOpts: {
    showTiming: true,
    showColors: true,
    isVerbose: false,
    includeStackTrace: false,
    defaultTimeoutInterval: 400000
  },

  directConnect: true,

  capabilities: {
    browserName: 'chrome',
    chromeOptions: {
      args: ["--headless", "--disable-gpu", "--window-size=800x600"]
    }
  },

  onPrepare: function () {
    browser.ignoreSynchronization = true;
  },

  /**
   * Angular 2 configuration
   *
   * useAllAngular2AppRoots: tells Protractor to wait for any angular2 apps on the page instead of just the one matching
   * `rootEl`
   */
  useAllAngular2AppRoots: true
};

文件夹结构

-/App
|--/config
   |--protractor.conf.js
   |--helpers.js 
   |--(all webpack files)
   |--(other stuff)
|--/node_modules
|--/src
|--/test
   |--/e2e
      |-mytest.e2e.ts
   |--/features
   |--/mockBackend
   |--/pages
      |-mypage.page.ts
   |--config.js

的package.json

"cucumber": "^2",
"cucumber-html-reporter": "^3.0.4",
"cucumber-snippets-tsflow": "^1.0.2",
"cucumber-tsflow": "^2.2.0",
"protractor": "^5.1.2",
"protractor-cucumber-framework": "^3",
"protractor-snapshot": "^1.2.0",

2 个答案:

答案 0 :(得分:0)

任何路径都从存储protractor.conf.js的位置开始(因此您从config-folder开始)。鉴于提供的文件夹结构,我将从正常路径开始:

// use `npm run e2e`
specs: [
    //one level up, then below test/e2e/ all files ending with '.e2e.ts'
   // '../test/e2e/**/**.e2e.ts', //if *.ts is a file, no need for double ** 
    '../test/e2e/**/*.e2e.ts'  
],
exclude: [],

如果**.e2e.ts表示文件夹而不是文件,则路径应该结束/**e2e.ts/*.js(或者您为测试文件本身选择的任何文件结尾)。

您的helpers.js - 文件也应该为var helpers = require('./helpers.js');

而且我无法看到this.root背后的内容我无法为helpers.root()

提供一些东西

您是否还想使用TestSuite,或者您可能希望构建一个辅助函数,您可以从base-directory而不是conf.js的relative-path开始。看看这些链接:

Test Suites vs specs

baseDir instead of relative path

希望我能提供帮助。

答案 1 :(得分:0)

我刚认识到您可能会执行npm run e2e作为启动命令,表示您正在使用angular-cli或类似的运行量角器。因此,run-command可能存在问题,而不是路径定义中的问题。据我所知,有一些变化/问题,量角器开始了,即here

我建议尝试这些:

  1. 将您的规格部分放在capabilities: { ... } - 部分内,因为这是offered by protractor。也许其中一个angular-cli-configuration期望那里而不是一个单独的部分
  2. 使用Cliptor.js之类的配置辅助工具创建新的配置文件,然后比较与文件的差异。
  3. 通过执行命令protractor protractor.conf.jsfrom the official protractor site)而非npm run e2e直接启动Protractor,以验证/伪造问题是否在angular-cli内或protractor