Как запустить тест Jest-Puppeteer в нескольких файлах

Я использую jest-puppeteer для запуска своих веб-тестов. Если я запускаю свои тесты, все они определены в одном файле, все работает отлично.

describe('user', () => {

    jest.setTimeout(12000);

    beforeEach(async () => {
        await page.setViewport({width: 1200, height: 2000});
        await page.goTo('http://localhost:3000');
    });

    it('test 1', async () => {
        //my test steps
    });

    it('test 2', async () => {
        //my test steps
    });

});

Однако если я запускаю каждый тест в отдельном файле, я получаю сообщение об ошибке.

UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'addExpectationResult' of undefined

ФАЙЛ 1

describe('user', () => {

    jest.setTimeout(12000);

    beforeEach(async () => {
        await page.setViewport({width: 1200, height: 2000});
        await page.goTo('http://localhost:3000');
    });

    it('test 1', async () => {
        //my test steps
    });

});

ФАЙЛ 2

describe('user', () => {

    jest.setTimeout(12000);

    beforeEach(async () => {
        await page.setViewport({width: 1200, height: 2000});
        await page.goTo('http://localhost:3000');
    });

    it('test 2', async () => {
        //my test steps
    });

});

Интересно, что если я добавлю console.log ('some statement') в качестве первого шага в test2, все снова заработает. Вот почему я думаю, что это проблема времени. Я запускаю свои тесты последовательно, т.е. jest --runInBand

Кто-нибудь может помочь?


person Stefan    schedule 20.07.2018    source источник


Ответы (1)


Как вы говорите, я согласен с тем, что проблема заключается в последовательной асинхронности, как описано в этом отчете об ошибке github в ответ Патрика Халса:

FWIW Я также столкнулся с этим и был приведен к этой проблеме. Произошло только в CI, когда истекло время асинхронного теста, но основное действие продолжалось до завершения набора тестов (и я предполагаю, что обратный вызов попытался добавить результат ожидания). Однако я никогда не мог добиться того, чтобы это произошло на местном уровне.

так что, вероятно, ваша ошибка находится внутри "// моих шагов теста", где вы манипулируете чем-то в обоих тестах, которыми вы можете / должны манипулировать перед запуском асинхронного процесса.

person Legion    schedule 31.07.2018