3

我尝试将我们的 cicleCI 与 browserstack 连接在一起,并运行我们的 integration_test 和单元测试,不仅使用 PhantomJS,而且还使用 Browserstack 服务在真正的 Firefox 和 Internet Explorer 上运行。

我尝试配置 browserstack-cli。我可以通过 Browserstack 上的隧道从 circleci 运行测试,但永远不会向 circleci 服务器报告。

如果你已经玩过这个堆栈,你能分享你的经验吗?非常感谢!

4

1 回答 1

1

解决方案是同时使用 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.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 并在那里使用浏览器......

于 2014-08-13T03:46:37.297 回答