Testcafe Testcase failing with ReferenceError: testcafe_1 is not defined

Testcafe Testcase failing with ReferenceError: testcafe_1 is not defined

我正在开发一个 Testcafe 测试用例实现,它应该检查是否可以通过单击允许用户同意来自第三方的所有或某些跟踪活动的通常同意层来表示同意,在这种情况下特定网站。

简而言之:测试用例应该检查是否可以连续两次给予这种同意。它也应该通过检查在给予同意之前和之后是否有任何 Cookie 来检查这一点;这就是我想出以下实现的方式:

test
    .disablePageCaching
    .timeouts({
        pageLoadTimeout:    1000,
        pageRequestTimeout: 1000
    })
    ('should check if it is possible to give Consent two subsequent times', async t => {

        const getAnyCookie = ClientFunction(() => {
            let getCookies = ClientFunction(() => document.cookie.split(";"))

            if (getCookies) {
                return true
            }
            else {
                return false
            }
        })
        await t.wait(3000);

        adobeAnalyticsLogger.clear();
        await t.navigateTo('http://www.anywebsite.com')
        await getAnyCookie;
        await t.expect(getAnyCookie()).ok()
        await consentLayer.clickAcceptButton();
        await t.eval(() => location.reload(true))
        await getAnyCookie;
        await t.expect(getAnyCookie()).ok()
        await consentLayer.clickAcceptButton();
    });

失败并显示以下错误消息:

 ✖ should check if it is possible to give Consent two subsequent times

   1) An error occurred in ClientFunction code:
      
      ReferenceError: testcafe_1 is not defined

此错误消息对我来说毫无意义,因为代码中某处没有定义名为 testcafe_1 的 Cookie。这是从哪里得来的?这是最好的方法还是有人对如何测试这个用例有更好的想法?任何提示或帮助将不胜感激,提前致谢。

您的代码有一些问题:

  • ClientFunction 不能嵌套
  • 您没有将 'getAnyCookie' 作为函数调用
  • 重复调用 'getAnyCookie' 表达式

固定代码如下所示:

('should check if it is possible to give Consent two subsequent times', async t => {

const getAnyCookie = ClientFunction(() => {
return document.cookie.split(";");
});

await t.wait(3000);

adobeAnalyticsLogger.clear();
await t.navigateTo('http://www.anywebsite.com')
await t.expect(getAnyCookie()).ok()
await consentLayer.clickAcceptButton();
await t.eval(() => location.reload(true))
await t.expect(getAnyCookie()).ok()
await consentLayer.clickAcceptButton();
});