Using Cucumber as a language-agnostic spec

Using Cucumber as a language-agnostic spec

How we used BDD to set a contract for implementations of the same thing in different programming languages

7b2e4bf7ecca28e530e1c421f0676c0b?s=128

Honza Javorek

October 08, 2019
Tweet

Transcript

  1. Using Cucumber as a language-agnostic spec honzajavorek.cz @honzajavorek Honza Javorek

  2. U s i n g C u c u m

    b e r U s i n g C u c u m b s i n g C u c u m b e r U s i n g C u c u m b e i n g C u c u m b e r s i n g C u c u m b e r U s i n g C u c u m b s i n g C u c u m b e r U s i n g C u c u m b e r U s i n g C u c u m b e s i n g C u c u m b e r C u c u m b e r
  3. Using Cucumber as a language-agnostic spec honzajavorek.cz @honzajavorek Honza Javorek

    "
  4. None
  5. ?

  6. OpenAPI, API Blueprint Dredd implementation ✅ ❌ TESTED CONTRACT FOR

    HTTP APIs
  7. Gherkin feature files Cucumber implementation ✅ ❌ TESTED CONTRACT FOR

    PRODUCT BEHAVIOR
  8. None
  9. None
  10. None
  11. None
  12. None
  13. ... hooks interface

  14. ... TESTED CONTRACT language-agnostic open source friendly standard CI friendly

  15. ... TESTED CONTRACT language-agnostic open source friendly standard CI friendly

    able to describe a complex, custom behavior
  16. ... TESTED CONTRACT language-agnostic open source friendly standard CI friendly

    able to describe a complex, custom behavior
  17. Gherkin feature files Cucumber hooks handler implementation ✅ ❌

  18. None
  19. Contract in Gherkin feature files ✅ ❌ ... Cucumber tests

  20. Contract in Gherkin feature files with placeholders ... ✅ ❌

    Canned Cucumber tests Cross language test suite template package
  21. None
  22. None
  23. None
  24. None
  25. None
  26. None
  27. None
  28. None
  29. None
  30. imagine we used YAML files with custom structure or JavaScript

    code to describe the test scenarios
  31. change propagation?

  32. None
  33. TESTED CONTRACT language-agnostic open source friendly standard CI friendly able

    to describe a complex, custom behavior both human & machine -readable