如何告诉TestCafe在navigateTo方法之后等待?

时间:2017-07-03 09:25:03

标签: node.js reactjs e2e-testing testcafe

我在TestCafe中进行了以下测试:

import { Selector } from 'testcafe';

const TEST_URL = process.env.TEST_URL;

fixture('/').page(`${TEST_URL}/`);

test(`users should be able to view the '/' page`, async (t) => {
    await t
        .navigateTo(TEST_URL)
        .expect(Selector('H1').withText('All Users').exists).ok()
});

此测试失败:

/
 ✖ users should be able to view the '/' page

   1) AssertionError: expected false to be truthy

      Browser: Chrome 59.0.3071 / Mac OS X 10.12.5

          5 |fixture('/').page(`${TEST_URL}/`);
          6 |
          7 |test(`users should be able to view the '/' page`, async (t) => {
          8 |    await t
          9 |        .navigateTo(TEST_URL)
       > 10 |        .expect(Selector('H1').withText('All Users').exists).ok()
         11 |});
         12 |

问题是该页面没有完全加载,并且没有h1标记(由React组件呈现)但我不知道如何告诉TestCafe等待页面加载。

我试过了:

import { Selector } from 'testcafe';

const TEST_URL = process.env.TEST_URL;

fixture('/').page(`${TEST_URL}/`);

test(`users should be able to view the '/' page`, async (t) => {
    await t.expect(Selector('H1').withText('All Users').exists).ok()
});

哪个有效,但我需要一些测试来使用navigateTo所以我想知道要改变什么,以便使用navigateTo的测试版本也可以。

我试图为每一行设置等待:

import { Selector } from 'testcafe';

const TEST_URL = process.env.TEST_URL;

fixture('/').page(`${TEST_URL}/`);

test(`users should be able to view the '/' page`, async (t) => {
    await t.navigateTo(TEST_URL)
    await t.expect(Selector('H1').withText('All Users').exists).ok()
});

但错误相同。

1 个答案:

答案 0 :(得分:3)

问题出在TEST_URL变量中。如果它包含裸IP地址(例如,'xxx.xx.x.xxx'),navigateTo会将浏览器重定向到'http://xxx.xx.x.xxx/xxx.xx.x.xxx',因为navigateTo操作会将此字符串视为相对路径。

要解决此问题,请在TEST_URL字符串中包含协议,例如'http://xxx.xx.x.xxx'