mlncn

mlncn

What is the relationship of cucumber, cucumber_gherkin, ex_cucumber, and Cabbage? (Writing BDD tests)

Elixir has potentially great support for Behavior Driven Development and writing tests in the well-known Gherkin language, but online searches lead to a plethora of abandoned projects— and three-to-four maintained ones, whose relationship to one another is unclear:

So there are four totally independent efforts despite an official Cucumber-maintained package with the most regular releases? And no one has written about their process of choosing one of these? That is the state of things for people wanting to get started with writing BDD-style tests in Gherkin syntax for their Elixir project?

Maybe we can improve on that a little in this topic…

Most Liked

trisolaran

trisolaran

I haven’t worked with Elixir professionally since March 2024 now, but in my last project I was using BDD tests with cabbage . I picked it overt ex_cucumber probably because it was the most used package (don’t recall exactly).

cucumber didn’t exist back then, but it seems worth trying.

dimitarvp

dimitarvp

Well, welcome to open source. People check another project, say to themselves “I would do it another way” and there you go, you arrive at today’s state of affairs.

More seriously, I would just try to use 2-3 of those with multiple very concrete tests that must be 100% clear beforehand (i.e. you know exactly what you want to test) and evaluate for yourself.

sanswork

sanswork

I think part of the problem is most people abandon BDD pretty quickly. So someone gets really excited about it, like @dimitarvp mentioned doesn’t like the existing implementations then starts their own then realised BDD isn’t that great and move on abandoning development in the process.

BDD is dying/dead as a process these days for the most part so its not going to get a lot of attention. If you really like it a blog post outlining your findings would be a good place to essentially solve your problem for future people.

Where Next?

Popular in Questions Top

joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 records...
New
hariharasudhan94
Lets say I have map like this fetching from my database %{"_id" => #BSON.ObjectId<58eb1a7a9ad169198c3dXXXX>, "email" => ...
New
ovidiubadita
Hey all, I discovered Elixir and I love it. I always wanted to learn a functional programming and I intended to go for Haskell, but afte...
New
dokuzbir
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New
sen
Hi All, I set a environment variables in dev.exs , like below code. when i start server, how can i set the ${enable} value? thanks. d...
New
stefanluptak
Hello everybody, usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
senggen
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] 15:22:35.803 [error] gen_event {lager_file_backend...
New

Other popular topics Top

JeremM34
Hello, how can I check the Phoenix version ? Thanks !
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
greenz1
I have a phoenix application from which a user can download multiple(5-6) files of size 1MB. I couldn’t find anything related to sending ...
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
msaraiva
Surface is an experimental library built on top of Phoenix LiveView and its new LiveComponent API that aims to provide a more declarative...
564 44139 214
New
senggen
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] 15:22:35.803 [error] gen_event {lager_file_backend...
New

We're in Beta

About us Mission Statement