-
Notifications
You must be signed in to change notification settings - Fork 4
Announcing cucu!
Cucu is a game changer for e2e-tests, but then again I'm one of the co-founders and publishers (fair warning). Still, cucu has been the best thing I've experienced for e2e-tests. These are end-to-end tests that need a whole system running and act like a real user. I'm excited to share it with you!
The core challenge with most e2e-test solutions is scale. They work great for small teams with a few dozen tests, but break down as your test suite grows. I've watched frameworks shine during initial adoption, only to become nightmares once they exceed 100-150 tests or require multiple people for maintenance. I've experienced a few of these lackluster frameworks and had my share of someone yet again bringing up a "better" framework only to realize that we can't use it for technical reasons (usually auth) or that reporting is a nightmare for daily triage.
First, I want to thank the makers of the Behave python library. We built cucu on this backbone because Behave enforces a crucial principle: the separation between test intention and implementation. People (or coders) are notoriously lazy (i.e. optimizers) and need this enforcement for our own good and the future maintainability and refactorability of tests.
Secondly, cucu offers batteries-included web testing. It spins up a selenium container for you (optional) and comes with a multitude of website UI steps with fuzzy matching. This sounds like a mouthful, which it is, but it means that you start not from a blank slate where it is easy to spin your wheels but from a battle tested and opinated system that you can easily start with.
Thirdly cucu is designed to be used by you, your CI, and assumes that you'd want to extend it to your custom needs. You're not locked into cucu's project timeline or patches or even need to fork the repo just to make it usable for your needs. You have full control over steps, you can customize a lot without touching a single line of cucu code.
E2e-tests inherently have a scaling problem. Our legacy Selenium WebDriver framework started showing cracks at 150 tests, with issues stemming from poor readability and copy-pasta code (what I call the copy-paste-modify behavior). The breaking point came at 200 tests, with over 100 daily failures and mounting technical debt.
Enter cucu. We not only migrated our existing 200 tests but expanded to 600+ while maintaining only a dozen daily failures. This dramatic improvement wasn't just about numbers - it came from cucu's enforced separation of test intention from implementation. Another big win is our optimized triaging system. We include specific test metadata within individual test reports. For example, each report includes a customized NewRelic link with the exact time-range and query specific to that test. We also have a link back to the exact git commit hash and repo link of each feature file that was run, also added via customization to the reporting. There's more, but these are some of the super-powers that cucu brings.
Make your e2e-tests scale without sacrificing quality. The key is cucu's enforced separation of intent and implementation, which ensures your tests remain understandable and debuggable as your suite grows. This means even new team members can effectively troubleshoot failures, leading to faster resolution of product issues. You also need a framework that communicates effectively with product teams. Cucu's results can be easily summarized at higher abstraction layers, giving everyone clear visibility into your software's health.
There may be other frameworks out there, lots that can have a separation of concerns (intent vs implementation) but few that enforce it and fewer built to be consumed with extensibility as a first-class citizen.
So check out cucu, it's open-source and BSD-3-Clause-Clear licensed
Easy BDD web testing for local and CI, batteries included, extensible, and with descriptive reports.