我尝试将cicleCI与browserstack连接在一起,不仅使用PhantomJS,而且还使用Browserstack服务在真正的Firefox和Internet Explorer上运行Integration_test和单元测试。
我试着配置browserstack-cli。我可以通过Browserstack上的隧道从circleci中运行测试,但是永远不会报告回Circleci服务器。
如果您已经使用过此堆栈,能否请您分享经验?非常感谢你!
最佳答案
解决方案是同时使用BrowserStackLocal和browserstack-cli工具。 BrowserStackLocal的64位Linux版本构建了从circleCI服务器到Browserstack服务器的隧道。之后,我们可以使用browserstack-cli启动浏览器并从testem运行测试。
下载BrowserStackLocal
并插入项目中的.browserstack
文件夹中。
创建一个脚本,
它将运行并为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 - Ember.js-CircleCI-BrowserStack,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25073949/