我尝试将我们的cicleCI与browserstack连接在一起,并使用browserstack服务不仅在PhantomJS上,而且在真实的Firefox和Internet Explorer上运行我们的integration_test和单元测试。
我尝试配置browserstack-cli。我可以通过浏览器堆栈上的隧道从circleci运行测试,但永远不会向circlecci服务器报告。
如果你已经玩过这个堆栈,你能分享一下你的经验吗?非常感谢!
解决方案是同时使用BrowserStackLocal和browserstack-cli工具。BrowserStackLocal的64位linux版本构建了从circleCI服务器到Browserstack服务器的隧道。之后,我们可以使用browserstack-cli启动浏览器并从testem运行测试。
下载BrowserStackLocal
并插入到项目中的.browserstack
文件夹中。
- BrowserStackLocal的64位linux版本:http://www.browserstack.com/local-testing(Binnaries(
创建一个脚本
它将运行并创建browserstack-cli的设置。您必须在circleCI中设置全局变量,并且可以将您的访问详细信息秘密保存在那里。让我们将此文件称为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配置:
testem.yml
-大部分部分取决于您的项目。在我们的案例中,重要的是launchers
部分。
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,并在那里使用浏览器。。。