无法使用Testcafe拦截页面中的传出AJAX请求

时间:2019-01-25 04:45:11

标签: javascript request automated-tests e2e-testing testcafe

我正在尝试将TestCafe用于客户端javascript库,并且无法通过计数机制捕获测试页负载上的任何传出AJAX请求。

我的尝试涉及使用该库中的RequestLogger对象,涉及使用正则表达式/\.org/设置第一个参数,以捕获使用.org后缀的所有传出切片请求。我相信这是有道理的,因为所有传出的请求都发送到openstreetmap.org,目的是获取png地图图块。

我的测试核心如下:

import { RequestLogger } from "testcafe";

fixture`Hello World - Leaflet`.page`http://localhost:8080`;

const logger = RequestLogger(/org/, {
  logRequestHeaders: true,
  logResponseHeaders: true
});

test("Test if there's an outgoing network request...", async t => {
  // Do something...
  await t
    .wait(5000)
    .expect(logger.count(() => true))
    .gt(0, "Must detect more than zero outgoing requests to openstreetmap");
});

是否缺少某些内容以捕获正确的AJAX请求传出计数?

如果有帮助,我制作了一个包含此问题的存储库,以人们无需配置即可尝试解决的方式进行设置:

1 个答案:

答案 0 :(得分:4)

感谢您的详细说明。

您需要attach loggertest / fixture中。您还可以在测试运行期间使用t.addRequestHookst.removeRequestHooks方法来附加和分离挂钩。

在测试代码中,我将logger钩子附加到test

import { RequestLogger } from "testcafe";

fixture`Hello World - Leaflet`.page`http://localhost:8080`;

const logger = RequestLogger(/org/);

test
    .requestHooks(logger)
    ("Test if there's an outgoing network request...", async t => {
        await t
            .wait(5000)
            .expect(logger.count(() => true))
            .gt(0, "Must detect more than zero outgoing requests to openstreetmap");
    });