在黄瓜/ testCafe中实现requestHooks

时间:2019-05-08 12:33:48

标签: automated-tests e2e-testing cucumberjs web-testing testcafe

当我想将requestHooks(例如)添加到测试和固定装置中时,我基本上不知道在哪里做。

我正在使用此仓库https://github.com/rquellh/testcafe-cucumber

3 个答案:

答案 0 :(得分:3)

我找到了解决方案。但是,它并不稳定:有时会引发错误:'[object DOMException]:\ n没有可用的堆栈跟踪'。也许有人知道为什么? 代码(在testCafe文档中创建了模拟和记录器对象之后):

When('I log in as free user', async () => {
    await testController.addRequestHooks(mock)
    await testController.addRequestHooks(logger)
    await testController.wait(2000)
    await testController
        .click(selector)
        .typeText(selector,string, {replace : true})
        .typeText(selector,string, {replace: true})
        .click(selector);
});

更新:现在它可以与wait()函数一起使用,但是也许对此有一些更优雅的答案?

答案 1 :(得分:2)

strstrstrchrNULLtestController步骤中可用。 因此,您可以使用测试控制器标准方法:addRequestHooksremoveRequestHooks

我已经从https://github.com/rquellh/testcafe-cucumber存储库修改了该示例,以演示Given的用法。

When

答案 2 :(得分:0)

我的解决方案(gherkin-testcafe:^ 2.2.0):

定义:

Feature: Check server names

Scenario Outline: Fetch pages
    Given there is the <url>
    When I check the response status
    Then the http <prameter> equals the <value>

    Examples:
        | url                    | prameter | value |
        | https://www.seznam.cz  | server   | nginx |
        | https://www.google.com | server   | gws   |

执行:

const {Given, When, Then} = require('cucumber');
const {RequestLogger} = require('testcafe');

let logger;
Given(/there is the (.+)/, async (t, [url]) => {
    logger = RequestLogger(url, {
        logResponseHeaders: true,
    });
    await t.addRequestHooks(logger);
    await t.navigateTo(url);
});

When(/I check the response status/, async t => {
    await t.expect(logger.contains(record => record.response.statusCode === 200)).ok();
});

Then(/the http (.+) equals the (.+)/, async (t, [name, value]) => {
    await t.expect(logger.contains(record => record.response.headers.server === value)).ok();
});