2017-02-02 22 views
1

Когда один из моих тестов Jest не удается, я хочу сохранить снимок экрана, но только когда он не работает.Проверьте, не завершился ли тест после каждого события

Вот пример моего тестового кода в качестве примера: !passed часть в afterEach не работает.

describe('Page',() => { 
    it('should contain Text in the header', async() => { 
    // Arrange 
    const page = new Page(driver); 

    // Act 
    await page.open(); 

    // Assert 
    expect(await page.getHeaderText()).toBe('Something'); 
    }); 

    afterEach(async() => { 
    if (!passed) takeScreenshot(); 
    await driver.quit(); 
    }); 
}); 

С жасмином Я хотел бы сделать что-то вроде:

var passed = jasmine.getEnv().currentSpec.results().passed(); 

Но я не могу найти что-то подобное для Jest. Может быть, есть еще одно решение, такое как снятие скриншотов на каждом неудачном ожидании? Я попытался попробовать/поймать вокруг ожидаемого, но тогда тест всегда проходит ...

Как я могу проверить с помощью Jest, если мой тест не прошел в afterEach?

ответ

1

Кажется, что объект жасмина может использоваться в тестах Jest, но currentSpec был удален в версии 2.x.

Я нашел альтернативу с использованием пользовательских отчетов жасмина. Просто убедитесь, что вы также переместите driver.quit() репортеру, поскольку вам может понадобиться драйвер после теста.

Вот простой пример для обработки репортера провала попытки испытаний в конце теста:

const reporter = { 
    specDone: async (result) => { 
    if (result.status === 'failed') { 
     takeScreenshot(result.description); 
    } 
    await driver.quit(); 
    }, 
}; 

jasmine.getEnv().addReporter(reporter); 

describe('Page',() => { 
    it('should contain Text in the header', async() => { 
    // Arrange 
    const page = new Page(driver); 

    // Act 
    await page.open(); 

    // Assert 
    expect(await page.getHeaderText()).toBe('Something'); 
    }); 
});