我尝试将我们的 cicleCI 与 browserstack 连接在一起,并使用 Browserstack 服务运行我们的 integration_test 和单元测试,不仅使用 PhantomJS,还在真正的 Firefox 和 Internet Explorer 上运行。
我尝试配置 browserstack-cli。我可以通过 Browserstack 上的隧道从 circleci 运行测试,但永远不会向 circleci 服务器报告。
如果您已经玩过这个堆栈,能否请您分享您的经验?非常感谢!
最佳答案
解决方案是结合使用 BrowserStackLocal 和 browserstack-cli 工具。 BrowserStackLocal 的 64 位 linux 版本建立了从 circleCI 服务器到 Browserstack 服务器的隧道。之后我们可以使用 browserstack-cli 启动浏览器并从 testem 运行测试。
下载BrowserStackLocal
并插入项目中的 .browserstack
文件夹。
- BrowserStackLocal 的 64 位 Linux 版本:http://www.browserstack.com/local-testing (二进制文件)
创建脚本,
它将运行并为 browserstack-cli 创 build 置。你必须在 circleCI 中设置全局变量,你可以在那里 secret 保存你的访问细节。我们将此文件命名为 runthis.sh
并保存在 .browserstack
文件夹中。该脚本还将运行您的 BrowserStackLocal 二进制文件,因此隧道将存在。
#!/bin/bash
echo "{\"username\":\"`echo $BS_USER`\", \"password\":\"`echo $BS_PASSWORD`\", \"privateKey\": \"`echo $BS_KEY`\", \"apiKey\":\"`echo $BS_KEY`\"}" >> ~/.browserstack/browserstack.json
./.browserstack/BrowserStackLocal $BS_KEY &
CircleCI 配置
(circle.yml
) 文件主要取决于您的项目。我们必须复制主文件夹中的 .browserstack
文件夹,安装 bower、browserstack-cli 和 testem。
一个例子:
machine:
timezone:
Pacific/Auckland
node:
version: v0.10.28
dependencies:
pre:
- mv ./.browserstack ~/
- sh ~/.browserstack/runthis.sh
post:
- bower install
- npm install browserstack-cli -g
- npm install testem -g
test:
override:
- PATH=$PATH:bin grunt integration_tests_cli; testem ci
- PATH=$PATH:bin grunt tests_cli; testem ci
Testem config:
testem.yml
- Most of the part is depend of your project. Important in our case is launchers
section.
framework: "qunit"
test_page: "tmp/index.html"
src_files:
- "tmp/assets/application.js"
- "tmp/tests.js"
- "tmp/integration_tests.js"
launchers:
bs_chrome:
command: browserstack launch chrome --attach
protocol: browser
timeout: 300
launch_in_ci:
- "PhantomJS"
- "bs_chrome"
launch_in_dev:
- "Chrome"
- "Firefox"
- "PhantomJS"
parallel: 2
因此,如果您在 github 上更新您的项目,circleci 将启动您的测试并连接到 browserstack 并在那里使用浏览器...
关于Ember.js - CircleCI - BrowserStack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25073949/