angularjs - Protractor 、Travis 和 SauceLabs 入门

标签 angularjs gruntjs protractor travis-ci saucelabs

我正在尝试在 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

我的 Protractor 配置:
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')
};

和 Gruntfile
protractor: {
    saucelabs: {
        options: {
            configFile: "saucelabs.spec.conf.js",
            args: {
                sauceUser: process.env.SAUCE_USERNAME,
                sauceKey: process.env.SAUCE_ACCESS_KEY
            }
        }
    }
}

...问题

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

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

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

编辑:基于接受的答案:

我没有运行服务器来提供我的文件!我最终安装了 https://www.npmjs.org/package/grunt-contrib-connect并设置我的 咕噜文件 像这样:
connect: {
  server: {
    options: {
      hostname: 'localhost',
      port: 9001
    }
  }
}
...
grunt.registerTask('travis', ['connect:test', 'protractor:saucelabs']);

然后我像这样更改了我的 Protractor 配置文件:
baseUrl: 'http://localhost:9001/'

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

最佳答案

根据您提供的日志,我可以看到 Selenium 正在尝试连接到 localhost:8000您的应用程序应该在哪里。但是我没有看到 travis 首先在那里运行服务器。

根据Sauce Labs Travis integration guide :

Make sure you make Travis start your webapp before the tests start. Your application needs to be serving pages to be able to test it using our browsers.



您可以通过附加 & 在后台运行命令给他们:
before_script:
  - ./my_server &
  - sleep 2 # give it some time to start

关于angularjs - Protractor 、Travis 和 SauceLabs 入门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23150585/

相关文章:

javascript - 为什么 Angular 根范围变量仅在两次单击事件按钮后才更新?

javascript - Angular 拖放列表 : Inputs with draggable property causing unintended behavior in IE

javascript - 访问 jade 模板中的数据(制作静态 html)

gruntjs - 如何使用 grunt.js 复制没有完整路径的文件?

java - 在 Windows 8.1 上运行 'webdriver-manager start' 时出错

angularjs - 使用 ng-metadata 完成嵌入

javascript - 如何使用正则表达式 javascript 替换具有特定单词的整行?

javascript - 遵循页面对象样式指南时找不到元素

javascript - Protractor :有错误但测试通过

javascript - 使用 Angular ng-repeat 验证表单有效性