Я создаю тесты в TestCafe.Цель состоит в том, чтобы тесты были написаны на корнишоне.Я посмотрел на некоторые репозитории GitHub, которые объединяют Cucumber и TestCafe, но я пытаюсь использовать другой угол.
Я хотел бы использовать парсер Gherkin и пропустить Cucumber.Вместо этого я создам собственную реализацию для запуска тестовых шагов.Но в настоящее время я застрял, пытаясь заставить TestCafe запустить тесты.
Если я прав, проблема в том, что TestCafe запускает мой тестовый файл, а затем нигде не видит ни фиксаторов, ни тестов.Это правильно, потому что синтаксический анализатор Gherkin использует потоковый API (он использует отдельный процесс Go для анализа файлов объектов) для доставки данных, что означает, что в моем текущем коде Promise все еще ожидает, когда TestCafe завершает работу.Или если я уберу, что обратный вызов end
еще не произошел.
Правильно ли выполнен мой анализ?Если да, как я могу получить все данные из потока и создать свои тесты так, чтобы TestCafe запустил его?
gherkin_executor.js
var Gherkin = require('gherkin');
console.log('start')
const getParsedGherkin = new Promise((resolve, reject) => {
let stream = Gherkin.fromPaths(['file.feature'])
let data = []
stream.on('data', (chunk) => {
if(chunk.hasOwnProperty('source')){
data.push({source: chunk.source, name: null, pickles: []})
}
else if (chunk.hasOwnProperty('gherkinDocument')){
data[data.length-1].name = chunk.gherkinDocument.feature.name
}
else {
data[data.length-1].pickles.push(chunk.pickle)
}
})
stream.on('end', () => {
resolve(data)
})
})
let data = getParsedGherkin.then((data) => {return data})
console.log(data)
function createTests(data){
for(let feature of data){
fixture(feature.name)
for(let testcase of feature.pickles){
test(testcase.name, async t => {
console.log('test')
})
}
}
}
file.feature
Feature: A test feature
Scenario: A test case
Given some data
When doing some action
Then there is some result