Как я могу ввести параметры в тест TestCafé? - PullRequest
2 голосов
/ 24 сентября 2019

Сценарий:

Я запускаю TestCafé, завернутый в код, с помощью API У меня есть тест, который я хочу параметризировать, тестирование с различными динамическими значениями.

Проблема

Testcafé не поддерживает отправку параметров в тест.Есть ли способ ввести значения?

Ответы [ 2 ]

3 голосов
/ 24 сентября 2019

Вы можете использовать process.env для передачи параметров в тесты TestCafe из скрипта бегуна.

//test.js
const createTestCafe = require('testcafe');

(async => {
   process.env.foo = 'bar';

   const testcafe = await createTestCafe();

   await testcafe
       .createRunner()
       .src('test.js')
       .browsers('chrome')
       .run();

   await testcafe.close();
})()
//test.js
fixture `Examples`;

test('process.env', async t => {
    console.log(process.env.foo);
});
2 голосов
/ 24 сентября 2019

Да, есть способ!Функцию clientScripts можно использовать для отправки параметров.В документации очень хорошо написано, как вводить скрипты.Мне потребовалось некоторое время, чтобы понять, как использовать его из теста, так что, надеюсь, это приведет вас на правильный путь.

  1. Создайте объект данных с вашими параметрами
  2. ДобавитьJSON для небольшого блока кода JS, представляющего функцию
  3. Вставьте блок кода вашему бегуну / приспособлению / тесту с помощью установщика .clientScripts
  4. eval код в вашем тесте и вуаля!У вас есть параметры
// Create the data object
let data = {aString: 'Yo!', aNumber: 345}

// Add it to a String value representing a JS function
const scriptContent = `
  function getParameters() {
    return ${JSON.stringify(data)};
  }`

// Invoke the test runner with the code block as content
testcafe('localhost').then(cafe => {
    cafe.createRunner()
      .src('mytest.js')
      .clientScripts({ content: scriptContent })
      .run()
      //...and so on...
})

Теперь, когда тест выполняется, функция getParameters существует внутри заголовка страницы .Этот код может быть оценен или вызван с помощью ClientFunction или t.eval:

let x = await t.eval( () => getParameters() );
console.log(x);
await t.expect(x.aString).eql('Yo!', 'Not Okey, mKay?')

Ответ с полностью рабочим примером можно найти здесь .

...