TestCafe: импортировать тесты из другого файла в текущий прибор - PullRequest
2 голосов
/ 28 марта 2019

У меня есть файл tests.js, который содержит некоторые test(...) определения.Я хочу повторно использовать эти тесты для нескольких приборов, желательно без внесения каких-либо изменений в исходный код.

Поэтому я написал main.js, который определяет прибор и импортирует tests.js, тем самым "собирая" набор тестов.,(В случае, если это работает, я мог бы написать разные файлы драйверов с разными приборами, импортируя одинаковые tests.js изнутри каждого.)

Однако при попытке выполнить * 1011 я получаю ошибку test is not defined*:

C:\Windows\Temp\dummy>testcafe chrome main.js --debug-on-fail
ERROR Cannot prepare tests due to an error.

ReferenceError: test is not defined
    at Object.<anonymous> (C:\Windows\Temp\dummy\tests.js:1:1)
    at Object.<anonymous> (C:\Windows\Temp\dummy\main.js:7:1)

Type "testcafe -h" for help.

Минимальная выборка:

// tests.js

test('wait', async t => {
    await t.wait(1);
});


// main.js

fixture `here goes the name`
    .page("http://localhost:3000")
    .beforeEach(async t => {
        // do stuff
    });

import "./tests";

/*
trick testcafe to scan the file;
based on https://github.com/DevExpress/testcafe/issues/2889#issuecomment-423859785

test();
*/

Я уже пробовал:

  • удаление хака комментария блока (test();) - который дает ERROR No tests to run. Either the test files contain no tests or the filter function is too restrictive.
  • перемещение tests.js импорта в верх - по-прежнему дает test is not defined
  • импорта testcafe изнутри main.js и tests.js - та же ошибка

Есть ли способ сделать функцию test "видимой" для других файлов, импортированных файлом точки входа testcafe?Или мне действительно нужно изменить файл tests.js, чтобы это работало?Может быть, добавив определения тестов в метод и вызвав его из main.js - как в исходном примере кода этой проблемы ?

Ответы [ 2 ]

3 голосов
/ 28 марта 2019

TestCafe не позволяет вызывать функции fixture и test вне области тестирования.Вы можете заключить свои тесты из файла tests.js в функцию и вызвать эту функцию в файле main.js:

// tests.js
export default function () {
   test('Test 1', () => {});
   test('Test 2', () => {});
   test('Test 3', () => {});
}
// main.js
import defineTests from './tests';

defineTests();
3 голосов
/ 28 марта 2019

Попробуйте добавить параметр --disable-test-syntax-validation в командной строке TestCafe

(работает только в последней версии TestCafe).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...