Cucumber-js: Пожалуйста, добавьте поддержку TypeScript

Созданный на 13 мая 2015  ·  33Комментарии  ·  Источник: cucumber/cucumber-js

Я создал библиотеку с машинописным текстом, и мои тесты тоже написаны на машинописном тексте. Я действительно хотел бы попробовать cucumber.js и создать файлы определения шагов с помощью машинописного текста. Итак, вы поддерживаете coffeescript и js, .ts тоже было бы неплохо.

С Уважением

Крис

Самый полезный комментарий

@jbpros с момента обновления readme, и это заметно проявляется в результатах для "cucumber typescript" , отрывок:

Транспилеры

-Определения шагов и файлы поддержки могут быть написаны на других языках с возможностью преобразования в javascript.
-Это делается с помощью параметра командной строки --compiler <file_extension>:<module_name> . Для CoffeeScript 1.10.0,
-это делается с помощью --compiler coffee:coffee-script/register .
Определения шагов и файлы поддержки могут быть написаны на других языках, которые могут быть преобразованы в javascript. Это делается с помощью параметра командной строки --compiler <file_extension>:<module_name> .

CoffeeScript

Установите пакет NPM для кофейного скрипта и вызовите Cucumber с помощью --compiler coffee:coffee-script/register .

Машинопись

Установите пакет NPM для машинописного узла и вызовите Cucumber с помощью --compiler ts:typescript-node/register .

Как обычно, все ваши определения шагов и файлы поддержки должны экспортировать функцию, которая будет запускаться Cucumber. Вот как это делается в TS:

declare var module: any;
module.exports = function () {
 this.Given(/.*/, function () {
   // ...
 })
}

PogoScript

Установите пакет pogo NPM и вызовите Cucumber с помощью --compiler pogo:pogo .

Все 33 Комментарий

Почему бы вам не отправить запрос на перенос @ Chris2011

Я буду только клиентом этого проекта, когда я выполняю каждый запрос на перенос каждого материала, который я использую, и чего-то не хватает, чем я могу создать его самостоятельно. Это всего лишь запрос функции. Если у кого-то есть время и он хотел бы этим заняться, почему бы и нет. У меня нет, потому что у меня нет времени, у меня такая же обычная работа и другие проекты, и я не хочу участвовать в каждом проекте, который я использую. Может быть, извинитесь за резкие слова, но для меня очевидно, что невозможно участвовать в каждом проекте, который я использую. Я должен понимать источник и так далее.

Я понимаю @ Chris2011. Может быть, однажды кто-то решит потратить время на реализацию этого, потому что он хочет вам помочь или просто ради развлечения.

Более реалистичный сценарий состоит в том, что этот запрос функции остается открытым до тех пор, пока кому-то он не понадобится, чтобы он был готов потратить время и усилия на его реализацию и отправку PR.

Может быть. Спасибо за ваше мнение. На мой взгляд, было логично просить об этой функции, потому что TS будет более популярным в течение 1-2 лет. И когда вы или кто-то другой решили реализовать coffeescript, почему бы и не машинописный текст?

Большое спасибо. Посмотрим, что будет ...

В общем, как и в случае с форматерами, я бы хотел, чтобы поддержка языков и диалектов была сторонними плагинами, а не частью ядра (включая текущие CoffeeScript и PogoScript).

TS +1

+1

Нравится, пожалуйста, сделайте это когда-нибудь !!!

: +1:

Никакое количество +1 или: +1: этого не сделает. Кто-то должен отправить запрос на перенос.

: +1: @aslakhellesoy место на

: 8ball: @samccone

@jbpros @aslakhellesoy единственное, что нужно сделать для поддержки сторонних языков, - это реализовать способ изменения:

SupportCodePathExpander.SUPPORT_CODE_FILES_IN_DIR_REGEXP = /\.(js|coffee|pogo)$/;

И тогда любой желающий может зарегистрировать любой транспилятор в support/env.js например
может быть, это регулярное выражение следует вообще удалить?

Я счастлив на это смотреть. Я могу найти файл функций coffeeScript, но не могу найти, где реализованы определения шагов, пожалуйста, не мог бы кто-нибудь дать мне несколько указателей относительно того, что нужно сделать?

@SeanFarrow Я уже сделал это локально. Вам просто нужно изменить /lib/cucumber//cli/argument_parser/support_code_path_expander.js:12 а затем добавить любой транспилятор с помощью хука require.

Собираетесь отправить пиарщика?

От: Олег Кашников [mailto: [email protected]]
Отправлено: 16 августа 2015 19:15
Кому: cucumber / cucumber-js [email protected]
Копия: Шон Фэрроу Шон. [email protected]
Тема: Re: [cucumber-js] Пожалуйста, добавьте поддержку TypeScript (# 335)

@SeanFa rrowhttps: //github.com/SeanFarrow Я уже сделал это локально. Вам просто нужно изменить /lib/cucumber//cli/argument_parser/support_code_path_expander.js:12, а затем добавить любой транспилятор с помощью хука require

-
Ответьте на это письмо напрямую или просмотрите его на Gi tHubhttps: //github.com/cucumber/cucumber-js/issues/335#issuecomment -131598410.

@mkusher - это еще не все. Для полноты, фрагменты определений шагов также должны быть доступны на дополнительном языке (что в настоящее время не выполняется для PogoScript), см. Флаг CLI --coffee .

Я бы очень хотел, чтобы это было сделано через систему плагинов / транспиляторов и удалило все диалекты из ядра (включая coffeescript).

Я не понимаю, зачем вообще нужна языковая поддержка? Не могли бы вы просто перенести определения шагов в JavaScript как часть процесса сборки?

398 должен упростить поддержку любого транспиллера.

Да, # 398 исправит это.

@henrify единственное, что «нужно» добавить в Cucumber, - это поддержка фрагмента определения шага для других языков. В настоящее время они по умолчанию находятся в ванильном JS и могут быть выведены в CS с флагом --coffee CLI.

Мы могли бы просто полностью отказаться от фрагментов, не относящихся к JS (включая CS?). Мысли?

398 был объединен и будет доступен в следующем выпуске. Поддержка TypeScript задокументирована в README .

@jbpros с момента обновления readme, и это заметно проявляется в результатах для "cucumber typescript" , отрывок:

Транспилеры

-Определения шагов и файлы поддержки могут быть написаны на других языках с возможностью преобразования в javascript.
-Это делается с помощью параметра командной строки --compiler <file_extension>:<module_name> . Для CoffeeScript 1.10.0,
-это делается с помощью --compiler coffee:coffee-script/register .
Определения шагов и файлы поддержки могут быть написаны на других языках, которые могут быть преобразованы в javascript. Это делается с помощью параметра командной строки --compiler <file_extension>:<module_name> .

CoffeeScript

Установите пакет NPM для кофейного скрипта и вызовите Cucumber с помощью --compiler coffee:coffee-script/register .

Машинопись

Установите пакет NPM для машинописного узла и вызовите Cucumber с помощью --compiler ts:typescript-node/register .

Как обычно, все ваши определения шагов и файлы поддержки должны экспортировать функцию, которая будет запускаться Cucumber. Вот как это делается в TS:

declare var module: any;
module.exports = function () {
 this.Given(/.*/, function () {
   // ...
 })
}

PogoScript

Установите пакет pogo NPM и вызовите Cucumber с помощью --compiler pogo:pogo .

Действительно ли нужно использовать машинный узел? Можно ли использовать официальный поддерживаемый tsc вместо машинописного узла? Я не знаю различий, но tsc официально поддерживается Microsoft.

@ Chris2011 ts-node - это просто перехватчик регистра для node.js, который будет запускать компиляцию через tsc

Хорошо, спасибо.

@JoshuaKGoldberg, где выдержка? Мои поиски не нашли его.

Образец, который поможет вам в cucumberjs с использованием машинописного текста:
https://github.com/AbraaoAlves/cucumber-protractor-typescript-boilerplate

Спасибо @AbraaoAlves за образец.
К сожалению, это работает только с cucumberjs 1. Слой protractor-cucumber-framework несовместим с cucumber2 rcs.

как прикрепить скриншот в огурцовом отчете. Я использую машинописный язык. Пожалуйста, помогите мне.

Пожалуйста, подтвердите, не возникнут ли проблемы с совместимостью огурец + транспортир + Typescript ... поскольку мы планируем использовать эту комбинацию для наших реализаций ..

@Rajazpandi
Сделайте что-нибудь подобное в After

driver.takeScreenshot().then(data => {
        attach(new Buffer(data, 'base64'), 'image/png');
      }).catch(error => {
        info(error);
        throw error;
      });

Этот поток был автоматически заблокирован, поскольку после его закрытия в последнее время не было никаких действий. Пожалуйста, откройте новую проблему для связанных ошибок.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги