开始使用Protractor,Travis和SauceLabs

Gre*_*reg 7 travis-ci angularjs gruntjs saucelabs protractor

我正在尝试在Travis CI中启动并运行我的开源项目测试.我让他们使用Selenium服务器在本地工作.

似乎是一个相对简单的过程,但我缺乏完成任务的一些基本知识.

我有我的.travis.yml文件:

language: node_js
node_js:
  - "0.10"

env:
  global:
    - SAUCE_USERNAME=[my-username]
    - SAUCE_ACCESS_KEY=[my-key]

addons:
  sauce_connect: true

before_install:
  - npm install -g grunt-cli
Run Code Online (Sandbox Code Playgroud)

我的量角器配置:

exports.config = {
    sauceUser: process.env.SAUCE_USERNAME,
    sauceKey: process.env.SAUCE_ACCESS_KEY,

    capabilities: {
      'browserName': 'chrome',
      'tunnel-identifier': process.env.TRAVIS_JOB_NUMBER,
      'build': process.env.TRAVIS_BUILD_NUMBER,
      'name': 'ngValidation Protractor Tests'
    },

    specs: ['demo/app/features/home/specs/*.spec.js'],

    jasmineNodeOpts: {
  showColors: true,
      defaultTimeoutInterval: 30000
    },

    baseUrl: 'http://localhost:' + (process.env.HTTP_PORT || '8000')
};
Run Code Online (Sandbox Code Playgroud)

和Gruntfile

protractor: {
    saucelabs: {
        options: {
            configFile: "saucelabs.spec.conf.js",
            args: {
                sauceUser: process.env.SAUCE_USERNAME,
                sauceKey: process.env.SAUCE_ACCESS_KEY
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

...问题

我认为一切都设置正确,但必须缺少一些东西,因为当我推送到Github并且Travis CI构建开始时,我开始在Travis构建日志中收到此错误:

Could not proxy http://localhost:8000....
Run Code Online (Sandbox Code Playgroud)

我错过了让这两个人互相交谈并运行我的测试?

Travis构建日志以获取完整信息:https://travis-ci.org/GrumpyWizards/ngValidation/builds/23264543


编辑:根据接受的答案:

我没有运行服务器来提供我的文件!我最终安装了https://www.npmjs.org/package/grunt-contrib-connect并设置了我的Grunt文件,如下所示:

connect: {
  server: {
    options: {
      hostname: 'localhost',
      port: 9001
    }
  }
}
...
grunt.registerTask('travis', ['connect:test', 'protractor:saucelabs']);
Run Code Online (Sandbox Code Playgroud)

然后我改变了我的量角器配置文件,如下所示:

baseUrl: 'http://localhost:9001/'
Run Code Online (Sandbox Code Playgroud)

嘿presto我现在可以在我的机器或Travis上运行本地服务器,它现在提供我的文件,SauceLabs可以访问的文件......

Mic*_*zyn 5

根据您提供的日志,我可以看到Selenium正在尝试连接到localhost:8000您的应用程序所在的位置.然而,我没有看到特拉维斯首先运行服务器.

根据Sauce Labs Travis集成指南:

确保在测试开始之前让Travis启动您的webapp.您的应用程序需要提供页面才能使用我们的浏览器进行测试.

您可以通过附加在后台运行命令&:

before_script:
  - ./my_server &
  - sleep 2 # give it some time to start
Run Code Online (Sandbox Code Playgroud)