Cucumber-js: реализовать --retry

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

было бы хорошо, если бы была функция, которая повторяет набор тестов X раз и проходит тест, если этот тест проходит на любом из запусков

help wanted

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

Что касается личного несогласия с этой функцией (этот аргумент может быть столь же бесплодным, как табуляция против пробелов в мире разработки), если Cucumber как спецификация инструмента реализует это, мы также должны поддержать это в JS-версии этого инструмента.

Это также и в реальном мире с широкими наборами тестов и сложными приложениями, которые невозможно защитить на 100% от взлома, и поэтому становится невероятно дорогим. Конечно, вы можете пройти инженерный путь, чтобы улучшить его, но я сомневаюсь, что есть много компаний, которые могут позволить себе роскошь ресурсов, чтобы поддержать такие усилия с какой-либо приличной рентабельностью инвестиций.

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

Буду признателен, если мы пересмотрим решение закрыть эту проблему, и, как было сказано ранее, я более чем счастлив поработать над этим с некоторыми рекомендациями.

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

@ericyliu Он идет в

@charlierudolph или кто-нибудь еще, если бы у вас были какие-либо указатели, я был бы счастлив взять это и попробовать.

Мой предполагаемый подход заключается в том, что в конце выполнения сценария мы можем определить, сбой он или нет, и повторно запустить его (сохраняя некоторое состояние для счетчика повторных попыток). Где я могу зацепиться за это?

Кроме того, я ожидал, что в конце всего процесса у меня будет возможность получить доступ к списку всех сценариев, количеству повторных попыток и их окончательному статусу, так что это может быть а) зарегистрировано и б) выгружено на диск при желании. .

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

👏👏👏

@charlierudolph иногда невозможно разобраться с тестами на мерцание. Например, в нашей среде у нас есть 23 различных сервиса, с которыми работает наше приложение, и, поскольку мы не владеем этими сервисами, любая из них может быть недоступна в любой момент времени. флаг --retry позволяет нам повторно запустить тест, чтобы временное отключение службы (когда они перезапускали службу) не привело к сбою нашего набора тестов.

Что касается личного несогласия с этой функцией (этот аргумент может быть столь же бесплодным, как табуляция против пробелов в мире разработки), если Cucumber как спецификация инструмента реализует это, мы также должны поддержать это в JS-версии этого инструмента.

Это также и в реальном мире с широкими наборами тестов и сложными приложениями, которые невозможно защитить на 100% от взлома, и поэтому становится невероятно дорогим. Конечно, вы можете пройти инженерный путь, чтобы улучшить его, но я сомневаюсь, что есть много компаний, которые могут позволить себе роскошь ресурсов, чтобы поддержать такие усилия с какой-либо приличной рентабельностью инвестиций.

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

Буду признателен, если мы пересмотрим решение закрыть эту проблему, и, как было сказано ранее, я более чем счастлив поработать над этим с некоторыми рекомендациями.

Чтобы добавить к этому cucumber-js already имеет функциональность rerun которая в основном представляет собой всего лишь повторную попытку, но менее эффективна, поскольку ее нужно запускать как отдельный процесс (это дает мне правильное понимание). Повторная попытка - гораздо более приятное решение.

cc @charlierudolph

Это также и в реальном мире с широкими наборами тестов и сложными приложениями, которые невозможно защитить на 100% от взлома, и поэтому становится невероятно дорогим.

Я абсолютно ненавижу нестандартные тесты. В моих текущих проектах я пытаюсь отказаться от выполнения любых нестандартных тестов на CI и сохранить их для ручного запуска, где, если что-то не удается из-за нестабильности, вы можете повторно запустить его или проверить вручную. Это зависит от того, как вы обнаружите источник нестабильности и ограничите количество тестов, которые должны с ним справиться.

Чтобы добавить к этому, у cucumber-js уже есть функция повторного запуска, которая в основном представляет собой просто повторную попытку, но менее эффективна, поскольку ее нужно запускать как отдельный процесс (это дает мне правильное понимание). Повторная попытка - гораздо более приятное решение

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

Я на 100% согласен с нестабильными тестами, которых следует избегать. При этом нестабильность теста часто не находится под контролем команды. Вот моя ситуация;

Я использую Cucumber, Nightwatch, Selenium и Browserstack для выполнения сквозных тестов в веб-приложении. Часто сценарий терпит неудачу из-за присущей Selenium, Browserstack или браузера, в котором я тестирую, нестабильности. Этим печально известны взаимодействия, включающие движения мыши. Мне редко удается пройти через все мои сценарии без того, чтобы хотя бы одна из них была нестабильной.

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

Я думаю, нам следует пересмотреть это. Теперь он есть у Огурца-Руби.

Согласовано. Вот код реализации Ruby. Может быть полезно для реализации JS. https://github.com/cucumber/cucumber-ruby/pull/920/files

Всем привет, доступна ли в Cucumber-JS функция «повтора»? Я согласен с тем, что нестабильные тесты следует исправлять, но опыт показывает, что это не всегда возможно при работе с большими проектами с множеством внешних зависимостей.
В конце концов, если такой нестабильный тестовый пример не может быть покрыт автоматизацией из-за отсутствия логики повторных попыток, то его все равно придется протестировать вручную.
Я считаю, что использование логики повтора должно быть оставлено на усмотрение пользователя Cucumber.
Мне известно о функции «повторного запуска», но ее использование добавляет дополнительную сложность, так как тесты должны запускаться отдельно, а не запускать Cucumber runner прозрачно для вас.

Привет, @charlierudolph и @aslakhellesoy. Есть ли прогресс с этой функцией?

Насколько мне известно, над этим никто не работает. Если кто-то предоставит запрос на перенос, я бы подумал о его добавлении.

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

Это было бы прекрасно! Пожалуйста, попробуйте заставить его вести себя так же, как в Cucumber-Ruby. Если он отличается от этого, мы не можем объединить его, поскольку консолидация / согласованность - это то, к чему мы стремимся.

Привет, @aslakhellesoy , я реализовал базовую функциональность повтора как параметр CLI --retry. Я тестировал его при работе с нашим проектом, и он работает хорошо. Мне понадобятся разрешения, чтобы подтолкнуть мою рабочую ветку и открыть PR для обсуждения реализации. Дай мне знать, спасибо.

@hurrikam Отличная работа .. 👏👏👏
Я тоже с нетерпением жду возможности воспользоваться этим. Я использую nightwatch-cucumber, и они ждут, чтобы это было исправлено в cucumber js. Ссылка № https://github.com/mucsi96/nightwatch-cucumber/issues/213

@charlierudolph, не могли бы вы помочь с этим? В настоящий момент я не могу отправить свой PR.

@hurrikam, вы можете создать форк и https://help.github.com/articles/fork-a-repo/

@charlierudolph см. PR-1114
Как упоминалось в названии, это минималистичная реализация (действительно, очень мало изменений кода), чтобы функция работала без нарушения существующих средств форматирования и отчетов.

Я провел несколько старых разговоров в репозитории Cucumber Ruby о том, следует ли сообщать о каждом запуске нестабильного теста, возможно, вводя статус «нестабильного» результата для предыдущих запусков. Не уверен, что это было сделано, и снова, отступление будет заключаться в том, чтобы занести все попытки одного и того же тестового примера в журналы.

Давай обсудим это.

@hurrikam, моя команда взяла вилку PR, чтобы мы могли получить эту функциональность. Пока он работает очень хорошо. Я надеюсь, что вы сможете объединить его в ближайшее время, поскольку флаг вам очень поможет!

@ Ник-Лукас. Это круто. У тебя есть это?

@thomaswmanion да, мы активно используем эту функцию. У нас есть бэкэнд, который иногда может немного забуксовать при промывании очередей заданий, так что это был спасательный круг.

Для тех, кто хочет использовать PR, вы можете указать свой package.json на моей вилке (или разделить ее на меня):

  "dependencies": {
    "cucumber": "https://github.com/Nick-Lucas/cucumber-js.git#feature/issue-727-retry",
  },

Cucumber предварительно собран, поэтому его можно просто установить в node_modules. Само собой разумеется, что нет никакой гарантии или поддержки, поскольку эта функция еще даже не пре-альфа.

РЕДАКТИРОВАТЬ:

Я покинул свою компанию и передал вилку на их github: https://github.com/wonderbill/cucumber-js.git#feature/issue -727-retry

Отлично!!!! Спасибо @ Nick-Lucas - цените понимание того, что окружение систем может быть нестабильным по своей природе!

Это нужно объединить с Мастером, это не закрыто.

@thomaswmanion да, мы активно используем эту функцию. У нас есть бэкэнд, который иногда может немного забуксовать при промывании очередей заданий, так что это был спасательный круг.

Для тех, кто хочет использовать PR, вы можете указать свой package.json на моей вилке (или разделить ее на меня):

  "dependencies": {
    "cucumber": "https://github.com/Nick-Lucas/cucumber-js.git#feature/issue-727-retry",
  },

Cucumber предварительно собран, поэтому его можно просто установить в node_modules. Само собой разумеется, что _ определенно нет никаких гарантий или поддержки, поскольку эта функция еще даже не является предварительной альфа-версией.

РЕДАКТИРОВАТЬ:

Я покинул свою компанию и передал вилку на их github: https://github.com/wonderbill/cucumber-js.git#feature/issue -727-retry

Как я могу запустить функцию повтора при запуске тестов?

@ricardgarcia просто используйте --retry см. https://github.com/owncloud/phoenix/pull/1207/files
Мы используем ветку из моего PR здесь https://github.com/cucumber/cucumber-js/pull/1205, пока она не будет объединена, надеюсь, однажды

Привет @ person-it, большое спасибо за ответ. Должен ли он работать, если я использую webdriverIO для запуска тестов на cucumber-js?
Я пробовал команду "--retry 1", но повторных попыток не было.

@ricardgarcia Как описано в https://github.com/cucumber/cucumber-js/pull/1205 , для использования этой функции вы можете использовать

"cucumber": "cucumber/cucumber-js#issue-727-retry"

поскольку изменения еще не объединены в основное репо по огурцам.

Да @ jain-neeeraj Я использовал эту версию в package.json, и она не сработала, но, как я уже упоминал, я запускаю тесты с использованием огурца на webdriverIO, поэтому следующий фреймворк «wdio-cucumber-framework». Должно как-то работать? Как мне запустить тесты, чтобы повторить попытку, если я использую фреймворк cucumber-js?

@ricardgarcia позволяет сотрудничать с gitter https://gitter.im/cucumber/cucumber-js , я смогу помочь вам в решении этой проблемы.

@charlierudolph есть ли шанс, что это может быть объединено с мастером?

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