cucumber 3.0.1 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +84 -4
  3. data/CONTRIBUTING.md +3 -4
  4. data/README.md +12 -12
  5. data/lib/autotest/cucumber.rb +1 -0
  6. data/lib/autotest/cucumber_mixin.rb +1 -0
  7. data/lib/autotest/cucumber_rails.rb +1 -0
  8. data/lib/autotest/cucumber_rails_rspec.rb +1 -0
  9. data/lib/autotest/cucumber_rails_rspec2.rb +1 -0
  10. data/lib/autotest/cucumber_rspec.rb +1 -0
  11. data/lib/autotest/cucumber_rspec2.rb +1 -0
  12. data/lib/autotest/discover.rb +1 -0
  13. data/lib/cucumber.rb +1 -0
  14. data/lib/cucumber/cli/configuration.rb +1 -0
  15. data/lib/cucumber/cli/main.rb +2 -2
  16. data/lib/cucumber/cli/options.rb +63 -55
  17. data/lib/cucumber/cli/profile_loader.rb +5 -7
  18. data/lib/cucumber/cli/rerun_file.rb +1 -0
  19. data/lib/cucumber/configuration.rb +8 -7
  20. data/lib/cucumber/constantize.rb +6 -5
  21. data/lib/cucumber/core_ext/string.rb +1 -0
  22. data/lib/cucumber/deprecate.rb +1 -1
  23. data/lib/cucumber/encoding.rb +2 -1
  24. data/lib/cucumber/errors.rb +2 -1
  25. data/lib/cucumber/events.rb +1 -2
  26. data/lib/cucumber/events/gherkin_source_read.rb +1 -4
  27. data/lib/cucumber/events/step_activated.rb +4 -5
  28. data/lib/cucumber/events/step_definition_registered.rb +4 -8
  29. data/lib/cucumber/events/test_case_finished.rb +0 -4
  30. data/lib/cucumber/events/test_case_started.rb +0 -4
  31. data/lib/cucumber/events/test_run_finished.rb +2 -3
  32. data/lib/cucumber/events/test_run_started.rb +2 -4
  33. data/lib/cucumber/events/test_step_finished.rb +0 -6
  34. data/lib/cucumber/events/test_step_started.rb +1 -7
  35. data/lib/cucumber/file_specs.rb +2 -1
  36. data/lib/cucumber/filters.rb +1 -0
  37. data/lib/cucumber/filters/activate_steps.rb +1 -1
  38. data/lib/cucumber/filters/apply_after_hooks.rb +1 -0
  39. data/lib/cucumber/filters/apply_after_step_hooks.rb +1 -0
  40. data/lib/cucumber/filters/apply_around_hooks.rb +1 -0
  41. data/lib/cucumber/filters/apply_before_hooks.rb +1 -0
  42. data/lib/cucumber/filters/broadcast_test_run_started_event.rb +2 -1
  43. data/lib/cucumber/filters/gated_receiver.rb +1 -2
  44. data/lib/cucumber/filters/prepare_world.rb +2 -5
  45. data/lib/cucumber/filters/quit.rb +2 -4
  46. data/lib/cucumber/filters/randomizer.rb +6 -7
  47. data/lib/cucumber/filters/retry.rb +2 -2
  48. data/lib/cucumber/filters/tag_limits.rb +2 -2
  49. data/lib/cucumber/filters/tag_limits/test_case_index.rb +1 -2
  50. data/lib/cucumber/filters/tag_limits/verifier.rb +1 -2
  51. data/lib/cucumber/formatter/ansicolor.rb +13 -12
  52. data/lib/cucumber/formatter/backtrace_filter.rb +1 -2
  53. data/lib/cucumber/formatter/console.rb +11 -12
  54. data/lib/cucumber/formatter/console_counts.rb +4 -4
  55. data/lib/cucumber/formatter/console_issues.rb +3 -3
  56. data/lib/cucumber/formatter/duration.rb +1 -0
  57. data/lib/cucumber/formatter/duration_extractor.rb +1 -1
  58. data/lib/cucumber/formatter/fail_fast.rb +9 -6
  59. data/lib/cucumber/formatter/fanout.rb +1 -3
  60. data/lib/cucumber/formatter/hook_query_visitor.rb +1 -0
  61. data/lib/cucumber/formatter/html.rb +28 -32
  62. data/lib/cucumber/formatter/html_builder.rb +3 -2
  63. data/lib/cucumber/formatter/http_io.rb +146 -0
  64. data/lib/cucumber/formatter/ignore_missing_messages.rb +1 -3
  65. data/lib/cucumber/formatter/interceptor.rb +18 -5
  66. data/lib/cucumber/formatter/io.rb +18 -11
  67. data/lib/cucumber/formatter/json.rb +11 -4
  68. data/lib/cucumber/formatter/json_pretty.rb +1 -1
  69. data/lib/cucumber/formatter/junit.rb +22 -17
  70. data/lib/cucumber/formatter/pretty.rb +4 -3
  71. data/lib/cucumber/formatter/progress.rb +3 -2
  72. data/lib/cucumber/formatter/rerun.rb +2 -1
  73. data/lib/cucumber/formatter/stepdefs.rb +1 -0
  74. data/lib/cucumber/formatter/steps.rb +2 -2
  75. data/lib/cucumber/formatter/summary.rb +1 -2
  76. data/lib/cucumber/formatter/unicode.rb +2 -2
  77. data/lib/cucumber/formatter/usage.rb +22 -19
  78. data/lib/cucumber/gherkin/data_table_parser.rb +1 -0
  79. data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +86 -85
  80. data/lib/cucumber/gherkin/formatter/escaping.rb +13 -12
  81. data/lib/cucumber/gherkin/i18n.rb +1 -0
  82. data/lib/cucumber/gherkin/steps_parser.rb +1 -0
  83. data/lib/cucumber/glue/dsl.rb +1 -0
  84. data/lib/cucumber/glue/hook.rb +1 -0
  85. data/lib/cucumber/glue/invoke_in_world.rb +3 -3
  86. data/lib/cucumber/glue/proto_world.rb +10 -9
  87. data/lib/cucumber/glue/registry_and_more.rb +13 -12
  88. data/lib/cucumber/glue/snippet.rb +1 -5
  89. data/lib/cucumber/glue/step_definition.rb +10 -10
  90. data/lib/cucumber/glue/world_factory.rb +1 -3
  91. data/lib/cucumber/hooks.rb +13 -3
  92. data/lib/cucumber/load_path.rb +1 -0
  93. data/lib/cucumber/multiline_argument.rb +3 -3
  94. data/lib/cucumber/multiline_argument/data_table.rb +16 -20
  95. data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +7 -11
  96. data/lib/cucumber/multiline_argument/doc_string.rb +1 -0
  97. data/lib/cucumber/platform.rb +2 -1
  98. data/lib/cucumber/project_initializer.rb +1 -1
  99. data/lib/cucumber/rake/task.rb +8 -5
  100. data/lib/cucumber/rspec/disable_option_parser.rb +1 -0
  101. data/lib/cucumber/rspec/doubles.rb +1 -0
  102. data/lib/cucumber/running_test_case.rb +2 -1
  103. data/lib/cucumber/runtime.rb +6 -6
  104. data/lib/cucumber/runtime/after_hooks.rb +1 -0
  105. data/lib/cucumber/runtime/before_hooks.rb +1 -0
  106. data/lib/cucumber/runtime/for_programming_languages.rb +8 -7
  107. data/lib/cucumber/runtime/step_hooks.rb +2 -0
  108. data/lib/cucumber/runtime/support_code.rb +3 -7
  109. data/lib/cucumber/runtime/user_interface.rb +2 -3
  110. data/lib/cucumber/step_argument.rb +1 -0
  111. data/lib/cucumber/step_definition_light.rb +2 -1
  112. data/lib/cucumber/step_definitions.rb +2 -1
  113. data/lib/cucumber/step_match.rb +9 -8
  114. data/lib/cucumber/step_match_search.rb +8 -9
  115. data/lib/cucumber/term/ansicolor.rb +30 -30
  116. data/lib/cucumber/unit.rb +1 -0
  117. data/lib/cucumber/version +1 -1
  118. data/lib/simplecov_setup.rb +1 -0
  119. metadata +64 -659
  120. data/.coveralls.yml +0 -1
  121. data/.cucumberproignore +0 -6
  122. data/.gitattributes +0 -32
  123. data/.github/ISSUE_TEMPLATE.md +0 -48
  124. data/.github/PULL_REQUEST_TEMPLATE.md +0 -40
  125. data/.rspec +0 -1
  126. data/.rubocop.yml +0 -13
  127. data/.rubocop_todo.yml +0 -991
  128. data/.ruby-gemset +0 -1
  129. data/.travis.yml +0 -70
  130. data/.yardopts +0 -1
  131. data/Gemfile +0 -28
  132. data/Rakefile +0 -32
  133. data/appveyor.yml +0 -27
  134. data/cucumber.gemspec +0 -52
  135. data/cucumber.yml +0 -19
  136. data/examples/i18n/README.textile +0 -3
  137. data/examples/i18n/Rakefile +0 -33
  138. data/examples/i18n/ar/Rakefile +0 -6
  139. data/examples/i18n/ar/features/addition.feature +0 -17
  140. data/examples/i18n/ar/features/step_definitions/calculator_steps.rb +0 -29
  141. data/examples/i18n/ar/lib/calculator.rb +0 -11
  142. data/examples/i18n/bg/Rakefile +0 -6
  143. data/examples/i18n/bg/features/addition.feature +0 -12
  144. data/examples/i18n/bg/features/consecutive_calculations.feature +0 -19
  145. data/examples/i18n/bg/features/division.feature +0 -17
  146. data/examples/i18n/bg/features/step_definitions/calculator_steps.rb +0 -24
  147. data/examples/i18n/bg/features/support/env.rb +0 -10
  148. data/examples/i18n/bg/features/support/world.rb +0 -8
  149. data/examples/i18n/bg/lib/calculator.rb +0 -25
  150. data/examples/i18n/ca/Rakefile +0 -6
  151. data/examples/i18n/ca/features/step_definitions/calculator_steps.rb +0 -26
  152. data/examples/i18n/ca/features/suma.feature +0 -17
  153. data/examples/i18n/ca/lib/calculadora.rb +0 -16
  154. data/examples/i18n/cs/Rakefile +0 -6
  155. data/examples/i18n/cs/features/addition.feature +0 -17
  156. data/examples/i18n/cs/features/division.feature +0 -11
  157. data/examples/i18n/cs/features/step_definitions/calculator_steps.rb +0 -29
  158. data/examples/i18n/cs/lib/calculator.rb +0 -14
  159. data/examples/i18n/da/Rakefile +0 -6
  160. data/examples/i18n/da/features/sammenlaegning.feature +0 -18
  161. data/examples/i18n/da/features/step_definitions/lommeregner_steps.rb +0 -29
  162. data/examples/i18n/da/lib/lommeregner.rb +0 -11
  163. data/examples/i18n/de/Rakefile +0 -6
  164. data/examples/i18n/de/features/addition.feature +0 -17
  165. data/examples/i18n/de/features/division.feature +0 -10
  166. data/examples/i18n/de/features/step_definitions/calculator_steps.rb +0 -29
  167. data/examples/i18n/de/lib/calculator.rb +0 -14
  168. data/examples/i18n/el/Rakefile +0 -6
  169. data/examples/i18n/el/features/addition.feature +0 -17
  170. data/examples/i18n/el/features/division.feature +0 -10
  171. data/examples/i18n/el/features/step_definitions/calculator_steps.rb +0 -29
  172. data/examples/i18n/el/lib/calculator.rb +0 -14
  173. data/examples/i18n/en-lol/Rakefile +0 -4
  174. data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +0 -16
  175. data/examples/i18n/en-lol/features/stuffing.feature +0 -8
  176. data/examples/i18n/en-lol/features/support/env.rb +0 -11
  177. data/examples/i18n/en-lol/lib/basket.rb +0 -12
  178. data/examples/i18n/en-lol/lib/belly.rb +0 -11
  179. data/examples/i18n/en/Rakefile +0 -6
  180. data/examples/i18n/en/features/addition.feature +0 -17
  181. data/examples/i18n/en/features/division.feature +0 -10
  182. data/examples/i18n/en/features/step_definitions/calculator_steps.rb +0 -29
  183. data/examples/i18n/en/lib/calculator.rb +0 -14
  184. data/examples/i18n/eo/Rakefile +0 -6
  185. data/examples/i18n/eo/features/adicio.feature +0 -17
  186. data/examples/i18n/eo/features/divido.feature +0 -10
  187. data/examples/i18n/eo/features/step_definitions/calculator_steps.rb +0 -29
  188. data/examples/i18n/eo/lib/calculator.rb +0 -14
  189. data/examples/i18n/es/Rakefile +0 -6
  190. data/examples/i18n/es/features/adicion.feature +0 -17
  191. data/examples/i18n/es/features/step_definitions/calculador_steps.rb +0 -26
  192. data/examples/i18n/es/lib/calculador.rb +0 -14
  193. data/examples/i18n/et/Rakefile +0 -6
  194. data/examples/i18n/et/features/jagamine.feature +0 -10
  195. data/examples/i18n/et/features/liitmine.feature +0 -17
  196. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +0 -29
  197. data/examples/i18n/et/lib/kalkulaator.rb +0 -14
  198. data/examples/i18n/fi/Rakefile +0 -6
  199. data/examples/i18n/fi/features/jakolasku.feature +0 -10
  200. data/examples/i18n/fi/features/step_definitions/laskin_steps.rb +0 -29
  201. data/examples/i18n/fi/features/yhteenlasku.feature +0 -17
  202. data/examples/i18n/fi/lib/laskin.rb +0 -14
  203. data/examples/i18n/fr/Rakefile +0 -8
  204. data/examples/i18n/fr/features/addition.feature +0 -18
  205. data/examples/i18n/fr/features/addition2.feature +0 -17
  206. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +0 -32
  207. data/examples/i18n/fr/features/support/env.rb +0 -10
  208. data/examples/i18n/fr/lib/calculatrice.rb +0 -10
  209. data/examples/i18n/he/Rakefile +0 -6
  210. data/examples/i18n/he/features/addition.feature +0 -17
  211. data/examples/i18n/he/features/division.feature +0 -10
  212. data/examples/i18n/he/features/step_definitions/calculator_steps.rb +0 -29
  213. data/examples/i18n/he/lib/calculator.rb +0 -15
  214. data/examples/i18n/hi/Rakefile +0 -6
  215. data/examples/i18n/hi/features/addition.feature +0 -16
  216. data/examples/i18n/hi/features/division.feature +0 -10
  217. data/examples/i18n/hi/features/step_definitions/calculator_steps.rb +0 -29
  218. data/examples/i18n/hi/lib/calculator.rb +0 -15
  219. data/examples/i18n/ht/Rakefile +0 -6
  220. data/examples/i18n/ht/features/adisyon.feature +0 -17
  221. data/examples/i18n/ht/features/divizyon.feature +0 -10
  222. data/examples/i18n/ht/features/step_definitions/kalkilatris_steps.rb +0 -29
  223. data/examples/i18n/ht/lib/kalkilatris.rb +0 -14
  224. data/examples/i18n/hu/Rakefile +0 -6
  225. data/examples/i18n/hu/features/osszeadas.feature +0 -17
  226. data/examples/i18n/hu/features/osztas.feature +0 -10
  227. data/examples/i18n/hu/features/step_definitions/calculator_steps.rb +0 -30
  228. data/examples/i18n/hu/lib/calculator.rb +0 -14
  229. data/examples/i18n/id/Rakefile +0 -6
  230. data/examples/i18n/id/features/addition.feature +0 -17
  231. data/examples/i18n/id/features/division.feature +0 -10
  232. data/examples/i18n/id/features/step_definitions/calculator_steps.rb +0 -29
  233. data/examples/i18n/id/lib/calculator.rb +0 -14
  234. data/examples/i18n/it/Rakefile +0 -6
  235. data/examples/i18n/it/features/somma.feature +0 -11
  236. data/examples/i18n/it/features/step_definitions/calcolatrice_steps.rb +0 -29
  237. data/examples/i18n/it/lib/calcolatrice.rb +0 -11
  238. data/examples/i18n/ja/Rakefile +0 -6
  239. data/examples/i18n/ja/features/addition.feature +0 -17
  240. data/examples/i18n/ja/features/division.feature +0 -10
  241. data/examples/i18n/ja/features/step_definitions/calculator_steps.rb +0 -19
  242. data/examples/i18n/ja/features/support/env.rb +0 -10
  243. data/examples/i18n/ja/lib/calculator.rb +0 -14
  244. data/examples/i18n/ko/Rakefile +0 -6
  245. data/examples/i18n/ko/features/addition.feature +0 -17
  246. data/examples/i18n/ko/features/division.feature +0 -11
  247. data/examples/i18n/ko/features/step_definitions/calculator_steps.rb +0 -29
  248. data/examples/i18n/ko/lib/calculator.rb +0 -14
  249. data/examples/i18n/lt/Rakefile +0 -6
  250. data/examples/i18n/lt/features/addition.feature +0 -17
  251. data/examples/i18n/lt/features/division.feature +0 -10
  252. data/examples/i18n/lt/features/step_definitions/calculator_steps.rb +0 -29
  253. data/examples/i18n/lt/lib/calculator.rb +0 -14
  254. data/examples/i18n/lv/Rakefile +0 -6
  255. data/examples/i18n/lv/features/addition.feature +0 -17
  256. data/examples/i18n/lv/features/division.feature +0 -10
  257. data/examples/i18n/lv/features/step_definitions/calculator_steps.rb +0 -29
  258. data/examples/i18n/lv/lib/calculator.rb +0 -14
  259. data/examples/i18n/no/Rakefile +0 -6
  260. data/examples/i18n/no/features/step_definitions/kalkulator_steps.rb +0 -17
  261. data/examples/i18n/no/features/summering.feature +0 -19
  262. data/examples/i18n/no/features/support/env.rb +0 -11
  263. data/examples/i18n/no/lib/kalkulator.rb +0 -11
  264. data/examples/i18n/pl/Rakefile +0 -6
  265. data/examples/i18n/pl/features/addition.feature +0 -17
  266. data/examples/i18n/pl/features/division.feature +0 -10
  267. data/examples/i18n/pl/features/step_definitions/calculator_steps.rb +0 -29
  268. data/examples/i18n/pl/features/support/env.rb +0 -10
  269. data/examples/i18n/pl/lib/calculator.rb +0 -14
  270. data/examples/i18n/pt/Rakefile +0 -6
  271. data/examples/i18n/pt/features/adicao.feature +0 -11
  272. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +0 -20
  273. data/examples/i18n/pt/features/support/env.rb +0 -10
  274. data/examples/i18n/pt/lib/calculadora.rb +0 -10
  275. data/examples/i18n/ro/Rakefile +0 -6
  276. data/examples/i18n/ro/features/adunare.feature +0 -12
  277. data/examples/i18n/ro/features/step_definitions/calculator_steps.rb +0 -26
  278. data/examples/i18n/ro/lib/calculator.rb +0 -11
  279. data/examples/i18n/ru/Rakefile +0 -6
  280. data/examples/i18n/ru/features/addition.feature +0 -11
  281. data/examples/i18n/ru/features/consecutive_calculations.feature +0 -17
  282. data/examples/i18n/ru/features/division.feature +0 -16
  283. data/examples/i18n/ru/features/step_definitions/calculator_steps.rb +0 -19
  284. data/examples/i18n/ru/features/support/env.rb +0 -10
  285. data/examples/i18n/ru/features/support/world.rb +0 -8
  286. data/examples/i18n/ru/lib/calculator.rb +0 -25
  287. data/examples/i18n/sk/Rakefile +0 -6
  288. data/examples/i18n/sk/features/addition.feature +0 -17
  289. data/examples/i18n/sk/features/division.feature +0 -10
  290. data/examples/i18n/sk/features/step_definitions/calculator_steps.rb +0 -29
  291. data/examples/i18n/sk/lib/calculator.rb +0 -14
  292. data/examples/i18n/sr-Cyrl/Rakefile +0 -6
  293. data/examples/i18n/sr-Cyrl/features/sabiranje.feature +0 -18
  294. data/examples/i18n/sr-Cyrl/features/step_definitions/calculator_steps.rb +0 -20
  295. data/examples/i18n/sr-Cyrl/features/support/env.rb +0 -10
  296. data/examples/i18n/sr-Cyrl/lib/calculator.rb +0 -12
  297. data/examples/i18n/sr-Latn/Rakefile +0 -6
  298. data/examples/i18n/sr-Latn/features/sabiranje.feature +0 -18
  299. data/examples/i18n/sr-Latn/features/step_definitions/calculator_steps.rb +0 -29
  300. data/examples/i18n/sr-Latn/lib/calculator.rb +0 -12
  301. data/examples/i18n/sv/Rakefile +0 -6
  302. data/examples/i18n/sv/features/step_definitions/kalkulator_steps.rb +0 -29
  303. data/examples/i18n/sv/features/summering.feature +0 -18
  304. data/examples/i18n/sv/lib/kalkulator.rb +0 -11
  305. data/examples/i18n/tr/Rakefile +0 -6
  306. data/examples/i18n/tr/features/bolme.feature +0 -10
  307. data/examples/i18n/tr/features/step_definitions/hesap_makinesi_adimlari.rb +0 -29
  308. data/examples/i18n/tr/features/toplama.feature +0 -18
  309. data/examples/i18n/tr/lib/hesap_makinesi.rb +0 -15
  310. data/examples/i18n/uk/Rakefile +0 -6
  311. data/examples/i18n/uk/features/addition.feature +0 -11
  312. data/examples/i18n/uk/features/consecutive_calculations.feature +0 -17
  313. data/examples/i18n/uk/features/division.feature +0 -16
  314. data/examples/i18n/uk/features/step_definitions/calculator_steps.rb +0 -19
  315. data/examples/i18n/uk/features/support/env.rb +0 -10
  316. data/examples/i18n/uk/features/support/world.rb +0 -8
  317. data/examples/i18n/uk/lib/calculator.rb +0 -25
  318. data/examples/i18n/uz/Rakefile +0 -6
  319. data/examples/i18n/uz/features/addition.feature +0 -10
  320. data/examples/i18n/uz/features/consecutive_calculations.feature +0 -17
  321. data/examples/i18n/uz/features/division.feature +0 -17
  322. data/examples/i18n/uz/features/step_definitions/calculator_steps.rb +0 -19
  323. data/examples/i18n/uz/features/support/env.rb +0 -10
  324. data/examples/i18n/uz/features/support/world.rb +0 -8
  325. data/examples/i18n/uz/lib/calculator.rb +0 -25
  326. data/examples/i18n/zh-CN/Rakefile +0 -4
  327. data/examples/i18n/zh-CN/features/addition.feature +0 -18
  328. data/examples/i18n/zh-CN/features/step_definitions/calculator_steps.rb +0 -31
  329. data/examples/i18n/zh-CN/lib/calculator.rb +0 -10
  330. data/examples/i18n/zh-TW/Rakefile +0 -4
  331. data/examples/i18n/zh-TW/features/addition.feature +0 -17
  332. data/examples/i18n/zh-TW/features/division.feature +0 -11
  333. data/examples/i18n/zh-TW/features/step_definitions/calculator_steps.rb +0 -29
  334. data/examples/i18n/zh-TW/lib/calculator.rb +0 -14
  335. data/examples/rspec_doubles/Rakefile +0 -4
  336. data/examples/rspec_doubles/features/mocking.feature +0 -9
  337. data/examples/rspec_doubles/features/step_definitions/calvin_steps.rb +0 -19
  338. data/examples/rspec_doubles/features/support/env.rb +0 -12
  339. data/examples/sinatra/README.textile +0 -13
  340. data/examples/sinatra/Rakefile +0 -6
  341. data/examples/sinatra/app.rb +0 -14
  342. data/examples/sinatra/features/add.feature +0 -11
  343. data/examples/sinatra/features/step_definitions/add_steps.rb +0 -15
  344. data/examples/sinatra/features/support/env.rb +0 -15
  345. data/examples/sinatra/views/add.erb +0 -7
  346. data/examples/sinatra/views/layout.erb +0 -8
  347. data/examples/tcl/README.textile +0 -11
  348. data/examples/tcl/Rakefile +0 -6
  349. data/examples/tcl/features/fibonnacci.feature +0 -17
  350. data/examples/tcl/features/step_definitions/fib_steps.rb +0 -7
  351. data/examples/tcl/features/support/env.rb +0 -7
  352. data/examples/tcl/src/fib.tcl +0 -3
  353. data/examples/test_unit/Gemfile +0 -4
  354. data/examples/test_unit/Rakefile +0 -6
  355. data/examples/test_unit/features/step_definitions/test_unit_steps.rb +0 -20
  356. data/examples/test_unit/features/test_unit.feature +0 -9
  357. data/examples/watir/README.textile +0 -16
  358. data/examples/watir/Rakefile +0 -12
  359. data/examples/watir/cucumber.yml +0 -1
  360. data/examples/watir/features/search.feature +0 -12
  361. data/examples/watir/features/step_definitions/search_steps.rb +0 -27
  362. data/examples/watir/features/support/env.rb +0 -39
  363. data/examples/watir/features/support/screenshots.rb +0 -47
  364. data/features/docs/api/list_step_defs_as_json.feature +0 -64
  365. data/features/docs/api/listen_for_events.feature +0 -59
  366. data/features/docs/api/run_cli_main_with_existing_runtime.feature +0 -27
  367. data/features/docs/cli/backtraces.feature +0 -36
  368. data/features/docs/cli/dry_run.feature +0 -73
  369. data/features/docs/cli/exclude_files.feature +0 -18
  370. data/features/docs/cli/execute_with_tag_filter.feature +0 -119
  371. data/features/docs/cli/fail_fast.feature +0 -48
  372. data/features/docs/cli/finding_steps.feature +0 -28
  373. data/features/docs/cli/help.feature +0 -8
  374. data/features/docs/cli/i18n.feature +0 -42
  375. data/features/docs/cli/randomize.feature +0 -140
  376. data/features/docs/cli/require.feature +0 -27
  377. data/features/docs/cli/retry_failing_tests.feature +0 -92
  378. data/features/docs/cli/run_scenarios_matching_name.feature +0 -105
  379. data/features/docs/cli/run_specific_scenarios.feature +0 -77
  380. data/features/docs/cli/showing_differences.feature +0 -43
  381. data/features/docs/cli/specifying_multiple_formatters.feature +0 -68
  382. data/features/docs/cli/strict_mode.feature +0 -70
  383. data/features/docs/defining_steps/ambiguous_steps.feature +0 -89
  384. data/features/docs/defining_steps/nested_steps.feature +0 -181
  385. data/features/docs/defining_steps/nested_steps_i18n.feature +0 -37
  386. data/features/docs/defining_steps/nested_steps_with_second_arg.feature +0 -56
  387. data/features/docs/defining_steps/one_line_step_definitions.feature +0 -65
  388. data/features/docs/defining_steps/printing_messages.feature +0 -147
  389. data/features/docs/defining_steps/skip_scenario.feature +0 -31
  390. data/features/docs/defining_steps/snippets.feature +0 -56
  391. data/features/docs/defining_steps/table_diffing.feature +0 -50
  392. data/features/docs/events/gherkin_source_read_event.feature +0 -43
  393. data/features/docs/events/step_activated_event.feature +0 -36
  394. data/features/docs/events/step_definition_registered_event.feature +0 -29
  395. data/features/docs/events/test_case_finished_event.feature +0 -35
  396. data/features/docs/events/test_case_started_event.feature +0 -54
  397. data/features/docs/events/test_run_finished_event.feature +0 -40
  398. data/features/docs/events/test_run_started_event.feature +0 -41
  399. data/features/docs/events/test_step_finished_event.feature +0 -47
  400. data/features/docs/events/test_step_started_event.feature +0 -43
  401. data/features/docs/exception_in_after_hook.feature +0 -127
  402. data/features/docs/exception_in_after_step_hook.feature +0 -104
  403. data/features/docs/exception_in_around_hook.feature +0 -80
  404. data/features/docs/exception_in_before_hook.feature +0 -98
  405. data/features/docs/extending_cucumber/custom_filter.feature +0 -29
  406. data/features/docs/extending_cucumber/custom_formatter.feature +0 -94
  407. data/features/docs/formatters/api_methods.feature +0 -37
  408. data/features/docs/formatters/html_formatter.feature +0 -91
  409. data/features/docs/formatters/json_formatter.feature +0 -767
  410. data/features/docs/formatters/junit_formatter.feature +0 -455
  411. data/features/docs/formatters/pretty_formatter.feature +0 -74
  412. data/features/docs/formatters/progress_formatter.feature +0 -32
  413. data/features/docs/formatters/rerun_formatter.feature +0 -190
  414. data/features/docs/formatters/summary_formatter.feature +0 -35
  415. data/features/docs/formatters/usage_formatter.feature +0 -101
  416. data/features/docs/getting_started.feature +0 -28
  417. data/features/docs/gherkin/background.feature +0 -548
  418. data/features/docs/gherkin/doc_strings.feature +0 -76
  419. data/features/docs/gherkin/expand_option_for_outlines.feature +0 -47
  420. data/features/docs/gherkin/language_from_header.feature +0 -32
  421. data/features/docs/gherkin/outlines.feature +0 -158
  422. data/features/docs/gherkin/unicode_table.feature +0 -33
  423. data/features/docs/gherkin/using_descriptions.feature +0 -83
  424. data/features/docs/gherkin/using_star_notation.feature +0 -37
  425. data/features/docs/iso-8859-1.feature +0 -6
  426. data/features/docs/post_configuration_hook.feature +0 -33
  427. data/features/docs/profiles.feature +0 -120
  428. data/features/docs/rake_task.feature +0 -146
  429. data/features/docs/raketask.feature +0 -46
  430. data/features/docs/work_in_progress.feature +0 -157
  431. data/features/docs/writing_support_code/after_hooks.feature +0 -102
  432. data/features/docs/writing_support_code/after_step_hooks.feature +0 -55
  433. data/features/docs/writing_support_code/around_hooks.feature +0 -266
  434. data/features/docs/writing_support_code/before_hook.feature +0 -66
  435. data/features/docs/writing_support_code/hook_order.feature +0 -63
  436. data/features/docs/writing_support_code/load_path.feature +0 -17
  437. data/features/docs/writing_support_code/parameter_types.feature +0 -69
  438. data/features/docs/writing_support_code/state.feature +0 -32
  439. data/features/docs/writing_support_code/tagged_hooks.feature +0 -95
  440. data/features/docs/writing_support_code/world.feature +0 -129
  441. data/features/lib/step_definitions/aruba_steps.rb +0 -21
  442. data/features/lib/step_definitions/cli_steps.rb +0 -4
  443. data/features/lib/step_definitions/cucumber_steps.rb +0 -75
  444. data/features/lib/step_definitions/iso-8859-1_steps.rb +0 -16
  445. data/features/lib/step_definitions/json_steps.rb +0 -8
  446. data/features/lib/step_definitions/junit_steps.rb +0 -14
  447. data/features/lib/step_definitions/language_steps.rb +0 -9
  448. data/features/lib/step_definitions/profile_steps.rb +0 -16
  449. data/features/lib/step_definitions/retry_steps.rb +0 -55
  450. data/features/lib/step_definitions/ruby_steps.rb +0 -4
  451. data/features/lib/support/env.rb +0 -22
  452. data/features/lib/support/fake_wire_server.rb +0 -94
  453. data/features/lib/support/feature_factory.rb +0 -68
  454. data/features/lib/support/normalise_output.rb +0 -52
  455. data/features/lib/support/parameter_types.rb +0 -5
  456. data/gem_tasks/contributors.rake +0 -19
  457. data/gem_tasks/cov.rake +0 -6
  458. data/gem_tasks/downloads.rb +0 -8
  459. data/gem_tasks/environment.rake +0 -4
  460. data/gem_tasks/examples.rake +0 -12
  461. data/gem_tasks/fix_cr_lf.rake +0 -22
  462. data/gem_tasks/flog.rake +0 -5
  463. data/gem_tasks/rspec.rake +0 -7
  464. data/gem_tasks/sass.rake +0 -5
  465. data/gem_tasks/stats +0 -16
  466. data/gem_tasks/versions.txt +0 -74
  467. data/scripts/invite-collaborator +0 -40
  468. data/scripts/update-changelog +0 -86
  469. data/spec/cucumber/cli/configuration_spec.rb +0 -446
  470. data/spec/cucumber/cli/main_spec.rb +0 -84
  471. data/spec/cucumber/cli/options_spec.rb +0 -445
  472. data/spec/cucumber/cli/profile_loader_spec.rb +0 -66
  473. data/spec/cucumber/cli/rerun_spec.rb +0 -86
  474. data/spec/cucumber/configuration_spec.rb +0 -148
  475. data/spec/cucumber/constantize_spec.rb +0 -20
  476. data/spec/cucumber/events_spec.rb +0 -9
  477. data/spec/cucumber/file_specs_spec.rb +0 -61
  478. data/spec/cucumber/filters/activate_steps_spec.rb +0 -152
  479. data/spec/cucumber/filters/gated_receiver_spec.rb +0 -48
  480. data/spec/cucumber/filters/retry_spec.rb +0 -98
  481. data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +0 -39
  482. data/spec/cucumber/filters/tag_limits/verifier_spec.rb +0 -58
  483. data/spec/cucumber/filters/tag_limits_spec.rb +0 -60
  484. data/spec/cucumber/formatter/ansicolor_spec.rb +0 -33
  485. data/spec/cucumber/formatter/backtrace_filter_spec.rb +0 -32
  486. data/spec/cucumber/formatter/console_counts_spec.rb +0 -14
  487. data/spec/cucumber/formatter/duration_spec.rb +0 -23
  488. data/spec/cucumber/formatter/fail_fast_spec.rb +0 -88
  489. data/spec/cucumber/formatter/html_spec.rb +0 -543
  490. data/spec/cucumber/formatter/interceptor_spec.rb +0 -137
  491. data/spec/cucumber/formatter/json_spec.rb +0 -815
  492. data/spec/cucumber/formatter/junit_spec.rb +0 -251
  493. data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +0 -2175
  494. data/spec/cucumber/formatter/pretty_spec.rb +0 -907
  495. data/spec/cucumber/formatter/progress_spec.rb +0 -170
  496. data/spec/cucumber/formatter/rerun_spec.rb +0 -97
  497. data/spec/cucumber/formatter/spec_helper.rb +0 -84
  498. data/spec/cucumber/glue/proto_world_spec.rb +0 -63
  499. data/spec/cucumber/glue/registry_and_more_spec.rb +0 -213
  500. data/spec/cucumber/glue/snippet_spec.rb +0 -174
  501. data/spec/cucumber/glue/step_definition_spec.rb +0 -207
  502. data/spec/cucumber/hooks_spec.rb +0 -31
  503. data/spec/cucumber/multiline_argument/data_table_spec.rb +0 -653
  504. data/spec/cucumber/project_initializer_spec.rb +0 -88
  505. data/spec/cucumber/rake/forked_spec.rb +0 -58
  506. data/spec/cucumber/rake/task_spec.rb +0 -86
  507. data/spec/cucumber/running_test_case_spec.rb +0 -140
  508. data/spec/cucumber/runtime/for_programming_languages_spec.rb +0 -8
  509. data/spec/cucumber/runtime/support_code_spec.rb +0 -17
  510. data/spec/cucumber/runtime_spec.rb +0 -21
  511. data/spec/cucumber/sell_cucumbers.feature +0 -19
  512. data/spec/cucumber/step_argument_spec.rb +0 -19
  513. data/spec/cucumber/step_match_search_spec.rb +0 -113
  514. data/spec/cucumber/step_match_spec.rb +0 -86
  515. data/spec/cucumber/world/pending_spec.rb +0 -48
  516. data/spec/spec_helper.rb +0 -30
  517. data/spec/support/standard_step_actions.rb +0 -19
@@ -1,543 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
- require 'cucumber/formatter/spec_helper'
4
- require 'cucumber/formatter/html'
5
- require 'nokogiri'
6
- require 'cucumber/glue/registry_and_more'
7
- require 'rspec/mocks'
8
-
9
- module Cucumber
10
- module Formatter
11
- describe Html do
12
- extend SpecHelperDsl
13
- include SpecHelper
14
-
15
- RSpec::Matchers.define :have_css_node do |css, regexp|
16
- match do |doc|
17
- nodes = doc.css(css)
18
- nodes.detect{ |node| node.text =~ regexp }
19
- end
20
- end
21
-
22
- before(:each) do
23
- @out = StringIO.new
24
- @formatter = Html.new(runtime, @out, {})
25
- end
26
-
27
- it 'does not raise an error when visiting a blank feature name' do
28
- expect(-> {
29
- @formatter.feature_name('Feature', '')
30
- }).not_to raise_error
31
- end
32
-
33
- describe 'when writing the report to a file' do
34
- before(:each) do
35
- allow(@out).to receive(:respond_to?).with(:path).and_return(true)
36
- expect(@out).to receive(:path).and_return('out/file.html')
37
- run_defined_feature
38
- @doc = Nokogiri.HTML(@out.string)
39
- end
40
-
41
- describe 'with a step that embeds a snapshot' do
42
- define_steps do
43
- Given(/snap/) {
44
- RSpec::Mocks.allow_message(File, :file?) { true }
45
- embed('out/snapshot.jpeg', 'image/jpeg')
46
- }
47
- end
48
-
49
- define_feature(<<-FEATURE)
50
- Feature:
51
- Scenario:
52
- Given snap
53
- FEATURE
54
-
55
- it 'converts the snapshot path to a relative path' do
56
- expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq 'snapshot.jpeg'
57
- end
58
- end
59
- end
60
-
61
- describe 'given a single feature' do
62
- before(:each) do
63
- run_defined_feature
64
- @doc = Nokogiri.HTML(@out.string)
65
- end
66
-
67
- describe 'basic feature' do
68
- define_feature <<-FEATURE
69
- Feature: Bananas
70
- In order to find my inner monkey
71
- As a human
72
- I must eat bananas
73
- FEATURE
74
-
75
- it 'should output a main container div' do
76
- expect(@out.string).to match(/\<div class="cucumber"\>/)
77
- end
78
- end
79
-
80
- describe 'with a comment' do
81
- define_feature <<-FEATURE
82
- # Healthy
83
- Feature: Foo
84
- Scenario:
85
- Given passing
86
- FEATURE
87
-
88
- it { expect(@out.string).to match(/^\<!DOCTYPE/) }
89
- it { expect(@out.string).to match(/\<\/html\>$/) }
90
-
91
- it 'nests the comment within the feature' do
92
- expect(@doc).to have_css_node('.feature .comment', /Healthy/)
93
- end
94
-
95
- it 'properly closes the comment' do
96
- expect(@out.string).to match(%r{<pre class="comment"># Healthy<br/></pre>})
97
- end
98
- end
99
-
100
- describe 'with a comment at scenario level' do
101
- define_feature <<-FEATURE
102
- Feature: Foo
103
- # Healthy Scenario
104
- Scenario:
105
- Given passing
106
- FEATURE
107
-
108
- it { expect(@doc).to have_css_node('.scenario .comment', /Healthy Scenario/) }
109
- end
110
-
111
- describe 'with a tag' do
112
- define_feature <<-FEATURE
113
- @foo
114
- Feature: can't have standalone tag :)
115
- Scenario:
116
- Given passing
117
- FEATURE
118
-
119
- it { expect(@doc).to have_css_node('.feature .tag', /foo/) }
120
- end
121
-
122
- describe 'with a narrative' do
123
- define_feature <<-FEATURE
124
- Feature: Bananas
125
- In order to find my inner monkey
126
- As a human
127
- I must eat bananas
128
-
129
- Scenario:
130
- Given passing
131
- FEATURE
132
-
133
- it { expect(@doc).to have_css_node('.feature h2', /Bananas/) }
134
- it { expect(@doc).to have_css_node('.feature .narrative', /must eat bananas/) }
135
- end
136
-
137
- describe 'with a background' do
138
- define_feature <<-FEATURE
139
- Feature: Bananas
140
-
141
- Background:
142
- Given there are bananas
143
-
144
- Scenario:
145
- When the monkey eats a banana
146
- FEATURE
147
-
148
- it { expect(@doc).to have_css_node('.feature .background', /there are bananas/) }
149
- end
150
-
151
- describe 'with a scenario' do
152
- define_feature <<-FEATURE
153
- Feature: Banana party
154
-
155
- Scenario: Monkey eats banana
156
- Given there are bananas
157
- FEATURE
158
-
159
- it { expect(@doc).to have_css_node('.feature h3', /Monkey eats banana/) }
160
- it { expect(@doc).to have_css_node('.feature .scenario .step', /there are bananas/) }
161
- end
162
-
163
- describe 'with a scenario outline' do
164
- define_feature <<-FEATURE
165
- Feature: Fud Pyramid
166
-
167
- Scenario Outline: Monkey eats a balanced diet
168
- Given there are <Things>
169
-
170
- Examples: Fruit
171
- | Things |
172
- | apples |
173
- | bananas |
174
- Examples: Vegetables
175
- | Things |
176
- | broccoli |
177
- | carrots |
178
- FEATURE
179
-
180
- it { expect(@doc).to have_css_node('.feature .scenario.outline h4', /Fruit/) }
181
- it { expect(@doc).to have_css_node('.feature .scenario.outline h4', /Vegetables/) }
182
- it { expect(@doc.css('.feature .scenario.outline h4').length).to eq 2}
183
- it { expect(@doc).to have_css_node('.feature .scenario.outline table', //) }
184
- it { expect(@doc).to have_css_node('.feature .scenario.outline table td', /carrots/) }
185
- end
186
-
187
- describe 'with a step with a py string' do
188
- define_feature <<-FEATURE
189
- Feature: Traveling circus
190
-
191
- Scenario: Monkey goes to town
192
- Given there is a monkey called:
193
- """
194
- foo
195
- """
196
- FEATURE
197
-
198
- it { expect(@doc).to have_css_node('.feature .scenario .val', /foo/) }
199
- end
200
-
201
- describe 'with a multiline step arg' do
202
- define_steps do
203
- Given(/there are monkeys:/) { |table| }
204
- end
205
- define_feature <<-FEATURE
206
- Feature: Traveling circus
207
-
208
- Scenario: Monkey goes to town
209
- Given there are monkeys:
210
- | name |
211
- | foo |
212
- | bar |
213
- FEATURE
214
-
215
- it { expect(@doc).to have_css_node('.feature .scenario table td', /foo/) }
216
- it { expect(@out.string.include?('makeYellow(\'scenario_1\')')).to be false }
217
- end
218
-
219
- describe 'with a table in the background and the scenario' do
220
- define_feature <<-FEATURE
221
- Feature: accountant monkey
222
-
223
- Background:
224
- Given table:
225
- | a | b |
226
- | c | d |
227
- Scenario:
228
- Given another table:
229
- | e | f |
230
- | g | h |
231
- FEATURE
232
-
233
- it { expect(@doc.css('td').length).to eq 8 }
234
- end
235
-
236
- describe 'with a py string in the background and the scenario' do
237
- define_feature <<-FEATURE
238
- Feature: py strings
239
-
240
- Background:
241
- Given stuff:
242
- """
243
- foo
244
- """
245
- Scenario:
246
- Given more stuff:
247
- """
248
- bar
249
- """
250
- FEATURE
251
-
252
- it { expect(@doc.css('.feature .background pre.val').length).to eq 1 }
253
- it { expect(@doc.css('.feature .scenario pre.val').length).to eq 1 }
254
- end
255
-
256
- describe 'with a step that fails in the scenario' do
257
- define_steps do
258
- Given(/boo/) { raise StandardError, 'eek'.freeze }
259
- end
260
-
261
- define_feature(<<-FEATURE)
262
- Feature: Animal Cruelty
263
-
264
- Scenario: Monkey gets a fright
265
- Given boo
266
- FEATURE
267
-
268
- it { expect(@doc).to have_css_node('.feature .scenario .step.failed .message', /eek/) }
269
- it { expect(@doc).to have_css_node('.feature .scenario .step.failed .message', /StandardError/) }
270
- it 'has the backtrace embeded in the output once and only once' do
271
- html_str = @doc.to_s
272
- expect(html_str).not_to match(%r{<pre\b.*html_spec.rb:.*html_spec.rb:.*</pre>}m)
273
- expect(html_str).to match(%r{<pre\b.*html_spec.rb:.*</pre>}m)
274
- end
275
- end
276
-
277
- describe 'with a step that fails in the background' do
278
- define_steps do
279
- Given(/boo/) { raise 'eek' }
280
- end
281
-
282
- define_feature(<<-FEATURE)
283
- Feature: shouting
284
- Background:
285
- Given boo
286
- Scenario:
287
- Given yay
288
- FEATURE
289
-
290
- it { expect(@doc).to have_css_node('.feature .background .step.failed', /eek/) }
291
- it { expect(@out.string).not_to include('makeRed(\'scenario_0\')') }
292
- it { expect(@out.string).to include('makeRed(\'background_0\')') }
293
- it { expect(@doc).not_to have_css_node('.feature .scenario .step.failed', //) }
294
- it { expect(@doc).to have_css_node('.feature .scenario .step.undefined', /yay/) }
295
- it { expect(@doc).to have_css_node('.feature .background .backtrace', //) }
296
- it { expect(@doc).not_to have_css_node('.feature .scenario .backtrace', //) }
297
- end
298
-
299
- context 'with a before hook that fails' do
300
- describe 'in a scenario' do
301
- define_steps do
302
- Before { raise 'eek' }
303
- Given(/yay/) {}
304
- end
305
-
306
- define_feature(<<-FEATURE)
307
- Feature: shouting
308
- Scenario:
309
- Given yay
310
- FEATURE
311
-
312
- it { expect(@out.string).to include('makeRed(\'scenario_1\')') }
313
- it { expect(@doc).not_to have_css_node('.feature .scenario .step.failed', //) }
314
- it { expect(@doc).to have_css_node('.feature .scenario .step.skipped', /yay/) }
315
- end
316
-
317
- describe 'in a scenario outline' do
318
- define_steps do
319
- Before { raise 'eek' }
320
- Given(/yay/) {}
321
- end
322
-
323
- define_feature(<<-FEATURE)
324
- Feature: shouting
325
- Scenario Outline:
326
- Given <step>
327
- Examples:
328
- | step |
329
- | yay |
330
- FEATURE
331
-
332
- it { expect(@out.string).to include('makeRed(\'scenario_1\')') }
333
- it { expect(@doc).not_to have_css_node('.feature .scenario .step.failed', //) }
334
- it { expect(@doc).to have_css_node('.feature .scenario .step.skipped', /yay/) }
335
- end
336
-
337
- end
338
-
339
- describe 'with a step that embeds a snapshot' do
340
- define_steps do
341
- Given(/snap/) {
342
- RSpec::Mocks.allow_message(File, :file?) { true }
343
- embed('snapshot.jpeg', 'image/jpeg')
344
- }
345
- end
346
-
347
- define_feature(<<-FEATURE)
348
- Feature:
349
- Scenario:
350
- Given snap
351
- FEATURE
352
-
353
- it { expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq 'snapshot.jpeg' }
354
- end
355
-
356
- describe 'with a step that embeds a text' do
357
- define_steps do
358
- Given(/log/) { embed('log.txt', 'text/plain', 'foo') }
359
- end
360
-
361
- define_feature(<<-FEATURE)
362
- Feature:
363
- Scenario:
364
- Given log
365
- FEATURE
366
-
367
- it { expect(@doc.at('a#text_0')['href'].to_s).to eq 'log.txt' }
368
- end
369
-
370
- describe 'with a step that embeds a snapshot content manually' do
371
- define_steps do
372
- Given(/snap/) { embed('data:image/png;base64,YWJj', 'image/png') }
373
- end
374
-
375
- define_feature(<<-FEATURE)
376
- Feature:
377
- Scenario:
378
- Given snap
379
- FEATURE
380
-
381
- it { expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq 'data:image/png;base64,YWJj' }
382
- end
383
-
384
- describe 'with a step that embeds a snapshot content' do
385
- define_steps do
386
- Given(/snap/) { embed('YWJj', 'image/png;base64') }
387
- end
388
-
389
- define_feature(<<-FEATURE)
390
- Feature:
391
- Scenario:
392
- Given snap
393
- FEATURE
394
-
395
- it { expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq 'data:image/png;base64,YWJj' }
396
- end
397
-
398
- describe 'with an undefined Given step then an undefined And step' do
399
- define_feature(<<-FEATURE)
400
- Feature:
401
- Scenario:
402
- Given some undefined step
403
- And another undefined step
404
- FEATURE
405
-
406
- it { expect(@doc.css('pre').map { |pre| /^(Given|And)/.match(pre.text)[1] }).to eq %w(Given Given) }
407
- end
408
-
409
- describe 'with an undefined When step then an undefined And step' do
410
- define_feature(<<-FEATURE)
411
- Feature:
412
- Scenario:
413
- Given some undefined step
414
- When a different undefined step
415
- And another undefined step
416
- FEATURE
417
-
418
- it { expect(@doc.css('pre').map { |pre| /^(Given|When|And)/.match(pre.text)[1] }).to eq %w(Given When When) }
419
- end
420
-
421
- describe 'with an passing Then step and an undefined And step' do
422
- define_feature <<-FEATURE
423
- Feature:
424
- Scenario:
425
- Given this step passes
426
- Then this step passes
427
- And this step is undefined
428
- FEATURE
429
-
430
- define_steps do
431
- Given(/^this step passes$/) {}
432
- end
433
-
434
- it { expect(@doc.css('pre').map { |pre| /^(Given|Then)/.match(pre.text)[1] }).to eq ['Then'] }
435
- end
436
-
437
- describe 'with a output from hooks' do
438
- describe 'in a scenario' do
439
- define_feature <<-FEATURE
440
- Feature:
441
- Scenario:
442
- Given this step passes
443
- FEATURE
444
-
445
- define_steps do
446
- Before do
447
- puts 'Before hook'
448
- end
449
- AfterStep do
450
- puts 'AfterStep hook'
451
- end
452
- After do
453
- puts 'After hook'
454
- end
455
- Given(/^this step passes$/) {}
456
- end
457
-
458
- it 'should have ccs nodes ".step.message" for all the hooks' do
459
- expect(@doc.css('.step.message').length).to eq 3
460
- expect(@doc.css('.step.message')[0].text).to eq 'Before hook'
461
- expect(@doc.css('.step.message')[1].text).to eq 'AfterStep hook'
462
- expect(@doc.css('.step.message')[2].text).to eq 'After hook'
463
- end
464
- end
465
-
466
- describe 'in a scenario outline' do
467
- define_feature <<-FEATURE
468
- Feature:
469
- Scenario Outline:
470
- Given this step <status>
471
- Examples:
472
- | status |
473
- | passes |
474
- FEATURE
475
-
476
- define_steps do
477
- Before do
478
- puts 'Before hook'
479
- end
480
- AfterStep do
481
- puts 'AfterStep hook'
482
- end
483
- After do
484
- puts 'After hook'
485
- end
486
- Given(/^this step passes$/) {}
487
- end
488
-
489
- it { expect(@doc).to have_css_node('.message', /Before hook, AfterStep hook, After hook/) }
490
- end
491
- end
492
- end
493
- context 'in --expand mode' do
494
- let(:options) { { expand: true } }
495
- before(:each) do
496
- @out = StringIO.new
497
- @formatter = Html.new(runtime, @out, {:expand => true})
498
- run_defined_feature
499
- @doc = Nokogiri.HTML(@out.string)
500
- end
501
- describe 'with undefined * steps in a Scenario Outline' do
502
- define_feature <<-FEATURE
503
- Feature:
504
- Scenario Outline:
505
- * this step is <status>
506
- Then this step passes
507
- Examples:
508
- | status |
509
- | undefined |
510
- | undefined |
511
- FEATURE
512
-
513
- define_steps do
514
- Given(/^this step passes$/) {}
515
- end
516
-
517
- it { expect(@doc.css('pre').map { |pre| /^(Given|Then|When)/.match(pre.text)[1] }).to eq %w(Given Given) }
518
- end
519
-
520
- describe 'with a scenario outline and a before hook that fails' do
521
- define_steps do
522
- Before { raise 'eek' }
523
- Given(/yay/) {}
524
- end
525
-
526
- define_feature(<<-FEATURE)
527
- Feature: shouting
528
- Scenario Outline:
529
- Given <step>
530
- Examples:
531
- | step |
532
- | yay |
533
- FEATURE
534
-
535
- it { expect(@out.string).to include('makeRed(\'scenario_1\')') }
536
- it { expect(@out.string).to include('makeRed(\'scenario_1_1\')') }
537
- it { expect(@doc).not_to have_css_node('.feature .scenario .step.failed', //) }
538
- it { expect(@doc).to have_css_node('.feature .scenario .step.skipped', /yay/) }
539
- end
540
- end
541
- end
542
- end
543
- end