TestCafe RequestLogger - 如何在测试框架中为每个请求实现

TestCafe RequestLogger - How to implement for every request in the test framework

我们正试图追踪我们公司中导致浏览器断开连接一般错误的网络问题。我想使用 RequestLogger 时间戳来帮助我们突出显示此间歇性问题的发生时间以及当时的任何其他 request/response 信息。

在请求记录器文档中,.requestHooks(logger) 在每个测试用例级别启动。然后 console.log(logRecord.X.X) 用于记录该特定时间的记录。

但是如何在不在每一行上使用 console.log(logRecord.X.X) 的情况下在整个测试框架中进行连续记录?

是否有可能通过我的测试运行器功能让 RequestLogger 连续 运行?

if(nodeConfig.util.getEnv('NODE_ENV') == "jenkins-ci")
        {
            // @ts-ignore
            // createTestCafe("localhost", port1, port2).then(tc => {
            createTestCafe().then(tc => {
                this.testcafe = tc;
                this.runner = this.testcafe.createRunner();

                return this.runner
                    .src(testPath)
                    .filter(filterSettings)
                    .browsers(environment.browserToLaunch)
                    .concurrency(environment.concurrencyAmount)
                    .reporter(reporterSettings)
                    .run(runSettingsCi);
            })
            .then(failedCount => {
                console.log('Location ' + testPath + ' tests failed: ' + failedCount);
                this.testcafe.close();
                process.exit(0);
            })
            .catch((err) => {
                console.log('Location ' + testPath + ' General Error');
                console.log(err);
                this.testcafe.close();
                process.exit(1);
            });
        }

TestCafe 不允许将请求挂钩附加到测试运行器 class。同时,您可以将它附加到每个灯具上。 RequestLogger 将收集有关所有请求的信息。

例如:

import { Selector, RequestLogger } from 'testcafe';

const logger = RequestLogger();

fixture `Log all requests`
    .page`devexpress.github.io/testcafe`
    .requestHooks(logger)
    .afterEach(() => console.log(logger.requests));

test('Test 1', async t => {
    await t
        .click(Selector('span').withText('Docs'))
        .click(Selector('a').withText('Using TestCafe'))
        .click(Selector('a').withText('Test API'));
});

test('Test 2', async t => {
    await t
        .click(Selector('span').withText('Docs'))
        .click(Selector('a').withText('Continuous Integration'))
        .click(Selector('a').withText('How It Works'));
});