Angular 2 cli 在 bitbucket 管道上运行测试

标签 angular angular-cli bitbucket-pipelines

我正在尝试使用以下配置在 bitbucket 平台上运行测试:

image: node:6.8.0

pipelines:
  default:
    - step:
        script:
          - echo 'deb http://dl.google.com/linux/chrome/deb/ stable main' > /etc/apt/sources.list.d/chrome.list
          - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
          - set -x && apt-get update && apt-get install -y xvfb google-chrome-stable
          - ln -sf /usr/bin/xvfb-chrome /usr/bin/google-chrome
          - npm --version
          - npm install
          - npm test

这就是输出:

> ng test

Could not start watchman; falling back to NodeWatcher for file system events.
Visit http://ember-cli.com/user-guide/#watchman for more info.
13 10 2016 15:26:57.937:WARN [karma]: No captured browser, open http://localhost:9876/

WARNING in ./~/@angular/core/src/linker/system_js_ng_module_factory_loader.js
45:15 Critical dependency: the request of a dependency is an expression

WARNING in ./~/@angular/core/src/linker/system_js_ng_module_factory_loader.js
57:15 Critical dependency: the request of a dependency is an expression
13 10 2016 15:26:57.945:INFO [karma]: Karma v1.2.0 server started at http://localhost:9876/
13 10 2016 15:26:57.946:INFO [launcher]: Launching browser Chrome with unlimited concurrency
13 10 2016 15:26:58.033:INFO [launcher]: Starting browser Chrome
13 10 2016 15:26:58.421:ERROR [launcher]: Cannot start Chrome

13 10 2016 15:26:58.532:INFO [launcher]: Trying to start Chrome again (1/2).
13 10 2016 15:26:58.813:ERROR [launcher]: Cannot start Chrome

13 10 2016 15:26:58.814:INFO [launcher]: Trying to start Chrome again (2/2).
13 10 2016 15:26:59.049:ERROR [launcher]: Cannot start Chrome

13 10 2016 15:26:59.050:ERROR [launcher]: Chrome failed 2 times (cannot start). Giving up.

问题是 karma 无法启动 chrome 浏览器。我认为这个问题发生在任何 docker 环境中。 如何在 bitbucket 管道中运行测试?

最佳答案

尝试将您的测试切换到 PhantomJS。

安装 PhantomJS Runner https://github.com/karma-runner/karma-phantomjs-launcher

$ npm install --save-dev karma-phantomjs-launcher

编辑你的 karma.conf.js 以使用 PhantomJS

// /karma.conf.js
module.exports = function (config) {
  config.set({
    // ...
    plugins: [
      // ...
      require('karma-phantomjs-launcher'),
      // ...  
    ],
    // ...  
    // browsers: ['Chrome'],
    browsers: ['PhantomJS'],
    phantomjsLauncher: {
      // Have phantomjs exit if a ResourceError is encountered 
      // (useful if karma exits without killing phantom)
      exitOnResourceError: true // Could require proxy if tests access images without /base path
    },
    //...
  });
};

这现在应该在 PhantomJS 而不是 Chrome 中运行你的测试。

默认测试脚本也运行 watch 所以你可能想修改你的 package.json 测试脚本为 "test": "ng test --watch=false"。如果您想让 watch 运行以进行本地开发,只需使用 ng test 而不是 npm test 启动即可。

关于Angular 2 cli 在 bitbucket 管道上运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40028638/

相关文章:

css - Angular : CSS of one component is conflicting with another Component.

javascript - 如何以及何时使用 "ng build"生成的 lib 文件夹的 esm5 和 esm2015 目录?

angular - 在生产构建中排除 Assets

javascript - D3 Angular-cli : d3. getElementsByTagName 不是函数

docker - Bitbucket Pipeline 如何设置 ssh 代理以部署在远程服务器上

continuous-integration - Bitbucket/我看不到管道中的 Artifact

javascript - Angular 5 - Ionic 3 无法通过键获取对象

angular - 如何在单击 anchor 标记时以 Angular 2 获取特定父元素的类?

javascript - HTML 音频标 checkout 现错误 - Chrome 上的音频渲染

amazon-web-services - Serverless.com 与 Bitbucket Pipelines