使用Intern通过Grunt和Phantomjs测试浏览器代码

时间:2013-06-27 14:16:52

标签: phantomjs intern

我一直在玩Intern并让我的测试在浏览器中运行。为了更好地与我当前的工作流程集成,我正试图通过gntnt与phantomjs运行我的测试。但是我的所有尝试都失败了。我一直在看这个问题作为参考Intern WebDriver and PhantomJS,但无法弄清楚使其运作的所有步骤。

首先:是否可以通过grunt和phantomjs运行测试?

一点信息:

  • 我不想/无法连接到Sauce Labs或Selenium测试环境。
  • 我想测试浏览器代码,同时将jQuery作为一个shimmed依赖
  • 我安装了Grunt 0.4.1和phantomjs 1.9.1
  • 我没有测试任何ajax请求(因为链接的问题有问题)
  • 我对Selenium和Sauce Lab都不熟悉

如果可以通过grunt和phanomjs进行测试,我将如何进行测试?

我想我必须启动GhostDriver

phantomjs --webdriver=8910

但是,Intern配置中有哪些重要的信息才能使其发挥作用?

define({
  proxyPort: 9000,
  proxyUrl: 'http://localhost:9000/',
  environments: [
    {
      browserName: 'phantom',
      version: '1.9.0',
      platform: 'Linux'
    }
  ],
  webdriver: {
    host: 'localhost',
    port: 8910
  },
  maxConcurrency: 3,
  useSauceConnect: false,
  // ...
});

环境browserName如何映射到phantomjs?我尝试过使用不同版本和平台(运行Mac 10.7)的browserNames'phantom'和'phanomjs'

实习生的我的Gruntfile部分如下:

intern: {
    phantom: {
        options: {
            config: 'tests/intern',
            reporters: ['webdriver']
        }
    }
}

在没有任何包含浏览器代码输出的测试套件的情况下运行此设置 “ReferenceError: document is not defined

中的“node_modules/intern/lib/reporters/webdriver.js:41:19

添加浏览器测试会在“ReferenceError: window is not defined

中显示“src/vendor/jquery/jquery-1.9.1.js:9597:5

通过节点运行会产生相同的“window is not defined”错误。

node node_modules/intern/client.js config=tests/intern

我在做错了什么/在这里失踪了?

1 个答案:

答案 0 :(得分:2)

Gruntfile配置存在两个问题:

  1. Grunt任务的默认运行类型是“client”,这意味着它默认运行 Node.js客户端,而不是测试运行器。您需要在Gruntfile选项中设置runType: 'runner'以针对指定的环境运行测试。
  2. webdriver reporter仅用于浏览器客户端,并在需要时由测试运行器自动指定。您通常不应该直接使用它。您在Gruntfile中指定的报告者应该是您希望测试运行者使用的那个; console默认值通常是合适的。
  3. 这两个组合意味着您已配置Intern以尝试使用仅在浏览器中与Node.js客户端内的测试运行器一起工作的报告器,因此出错。一旦纠正,其余的配置应该可以正常运行在PhantomJS上,假设它已经在端口8910的localhost上运行。