连接量角器端到端测试与节点重放



我一直在搞乱节点重放(https://github.com/assaf/node-replay),看看是否有一种方法,我可以把它与我的量角器测试挂钩,让我的测试运行记录的数据(所以他们运行得更快,而不是那么该死的慢)。

我按照github页面上的指示安装了node-replay。然后在我的测试文件中,我包括一些节点重放代码,如下所示

describe('E2E: Checking Initial Content', function(){
'use strict';
var ptor;
var Replay = require('replay');
Replay.localhost('127.0.0.1:9000/');
// keep track of the protractor instance
beforeEach(function(){
    browser.get('http://127.0.0.1:9000/');
    ptor = protractor.getInstance();
});

和我的配置文件看起来像这样:

exports.config = {
  seleniumAddress: 'http://0.0.0.0:4444/wd/hub',
  // Capabilities to be passed to the webdriver instance.
  capabilities: {
    'browserName': 'chrome'
  },
  // Spec patterns are relatie to the current working directly when
  // protractor is called.
  specs: ['test/e2e/**/*.spec.js'],
  // Options to be passed to Jasmine-node.
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 300000
  }
};

然后我试着用咕哝来摩擦我的测试,说

REPLAY=record grunt protractor

但是我失败了很多次。在我添加节点重播之前,Grunt量度器运行所有测试都很好,没有失败,所以也许我的逻辑在如何将这两者连接在一起是有缺陷的。有什么建议吗?

 1) E2E: Sample test 1
Message:
UnknownError: 
Stacktrace:
  UnknownError: 
   at <anonymous>

问题是对127.0.0.1:9000的http请求是由浏览器完成的,而不是在你的NodeJS Protractor代码中,所以重放在这个基础设施场景中不起作用。

关于没有后端的Protractor测试的讨论正在进行中,有些人依赖于用Protractor的addMockModule模拟后端客户端,就像他们已经为Karma单元测试所做的那样。

我个人不同意嘲弄e2e,因为端到端的全部意义是测试整个真实的应用程序。

HTTP重放可能不是一个坏主意,让事情更快。

理想情况下,我希望找到一个像这样工作的工具:

  1. 第一次运行代理捕获http服务器,以便以后重放:

    capture 127.0.0.1:9000—into-port 3333

  2. 针对baseUrl = '127.0.0.1:3333';运行端到端测试。所有的请求/响应将被缓存/保存。

  3. 从现在开始提供缓存内容:

  4. 再次运行您的端到端测试,仍然在baseUrl por 3333上。这次它应该运行得更快,因为它提供的是缓存内容。

找不到,如果你有更好的运气告诉我!

最新更新