Создавайте динамические тесты для TestCafe асинхронно - PullRequest
0 голосов
/ 20 декабря 2018

Я создаю тесты в 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

1 Ответ

0 голосов
/ 20 декабря 2018

Хорошая инициатива!

Чтобы пойти дальше в своем подходе, метод createTests должен сгенерировать код TestCafe хотя бы в одном файле JavaScript или TypeScript.Затем вы должны запустить RunCase TestCafe из этих файлов.

Так что теперь, чтобы пойти дальше в своем подходе, вы должны написать генератор исходного кода TestCafe.

Возможно, репозиторий hdorgeval/testcafe-starter на GitHub мог бы стать альтернативой, пока Cucumber официально не будет поддерживатьсяКоманда TestCafe.

...