运行 在使用之前的每个灯具之前设置

Run setup before each fixture using before

我想 运行 在每个 fixture 之前使用 testcafe 的 before 函数

一个 fixture 或一组 testController 方法

fixture我想运行在每个fixture之前提取到一个单独的函数

// testSetup.ts
export async function initialiseTestEnv(t: testController) {

    console.log("Initialise working env");
    
    const docNameInput =  Selector('input#documentName');
    const createBtn =  Selector('button.ui.primary.button');

    await t
        .useRole(roles.adminUser)
        .maximizeWindow()
        .navigateTo(testConfig.standardListPage)
        .typeText(docNameInput, testConfig.repoName)
        .click(createBtn);

我想 运行 在每个固定装置之前这样做:

// tests.ts
// Tests that rely on env init
fixture `Tests that rely on init event`

    .before(async t => {
        
            await initialiseTestEnv(t)
    })
    .requestHooks(logger)
    .beforeEach(async t => {
        cookies.setCookies;
        await t
            .useRole(roles.adminUser)
        })

    test('Test that relies on test env init', async t => {...}

问题是之前没有我可以解析到 init 函数的测试控制器。有没有另一种方法可以 运行 在每个固定装置之前 运行 这个初始化事件(我不想 运行 在每次测试之前,就在固定装置之前)

你可以这样做:

let alreadyRun = false;
fixture `Tests that rely on init event`
    .beforeEach(async t => {
        if (!alreadyRun) {
            await initialiseTestEnv(t);
            alreadyRun = true;
        }
    })

我认为这个问题已发布在 TestCafe GitHub 页面的某处,因此在未来的版本中可能会提供更好的解决方案。但是您可以使用变量和 beforeEach 挂钩轻松实现它。