Как запустить один и тот же тест несколько раз с помощью jest

Я использую шутку для запуска своего набора тестов (с серверной частью как Node.js & express). Ниже мой код:

const puppeteer = require ('puppeteer');

test('testing login function', async () => {
    const browser = await puppeteer.launch ({  
        headless: true,
        args: ['--no-sandbox']
  });

    const page = await browser.newPage();

    await page.type('#username', 'admin');
    await page.type('#password', 'password');

    await page.click('login-button');

    await page.waitFor('.card');

    expect(texthead).toEqual('Welcome to webpage');

    await browser.close();
});

Я пытаюсь запустить этот тест несколько раз одновременно, есть ли способ использовать его в шутку или, может быть, с помощью других инструментов.

Можете ли вы обернуть тестовый код в цикл?

mc. 13.09.2018 19:15

Да, я пробовал цикл, но он будет работать последовательно. Я хочу запустить несколько тестов одновременно.

Arghajeet Bhattacharya 13.09.2018 21:08
8
2
8 098
3

Ответы 3

Если вы не хотите, чтобы тесты выполнялись последовательно, вы можете использовать Promise.all. Вот краткий пример того, как вы можете реорганизовать свой код.

const runTheTest = async () => { 
  const browser = await puppeteer.launch ({
    headless: true, args: ['--no-sandbox'] 
  });
  .......
  return browser.close();
}

test('testing login function', async () => { 
  const testRuns = []
  for (let index = 0; index < NUMBER_OF_RUNS; index++) {
    testRuns.push(runTheTest())
  }
  return Promise.all(testRuns);
})

Если вы ищете что-то, что будет по существу стресс-тестом для одного теста (ища нестабильность теста, как я), вы можете использовать следующий однострочный файл в своем терминале, который, конечно же, использует bash и Jest вместе.

for i in {1..100}; do npx jest <test_file> --silent || (echo 'Failed after $i attempts' && break); done

Эта конкретная команда требует, чтобы у вас был установлен npx, и она использует опцию --silent, но вы можете изменить ее по своему усмотрению.

Полезным флагом в jest в этом случае будет -o (вместо <test_file>). Запускайте только модифицированные / новые тесты, чтобы в ваших тестах был "Flakiness CI".

Moshisho 24.10.2019 14:30

npx устанавливал пакеты снова и снова, и я хотел узнать, улучшило ли мое изменение скорость тестирования. Это не здорово, но я поместил команду в package.json

"jest": "jest <file_path> --silent"

а затем позаимствовал сценарий у Брэди как

for i in {1..100}; do yarn jest || (echo 'Failed after $i attempts' && break); done

Я завернул его в таймер, но в этом нет необходимости.

Другие вопросы по теме