Bobcat for everyone

22 August 2016
Bruno Manczak
Frink_Cognifide_2016_HeaderImages_0117

The Bobcat Awesomeness Manifesto - automation made easier


bobcat-logobobcat-matrix

Bobcat is awesome. It really is. Ok, we know that simply saying something is awesome is never enough. When making  such outrageous claims one has to be able to confidently justify them, and the audience (that’s you) needs to agree. That’s why we created this Bobcat Awesomeness Manifesto [BAM] . Hopefully by the time you have read this, we will have established Bobcat’s awesomeness once and for all.

What is Bobcat?

Bobcat is a test automation framework developed by Cognifide Engineers. It embodies years of experience gathered during the development of multiple Web projects. Test automation is at the core of our understanding of how to deliver high quality products while maintaining rapid development.


If you want to enable continuous integration practices you need test automation.  And if you need test automation, you need Bobcat. Over the years we have created multiple frameworks, with each version being better than the last. But none of them fully suited our needs. We needed one common tool that would be easy to apply to all our projects and that would be usable both by developers and not-so-technical testers.


This is why we decided to gather knowledge and skills beyond regular QA team and invited developers to a new project (I know, crazy talk, right?). The result: Bobcat, an easy, scalable and stable test automation framework.

What does Bobcat look like?

Like they say, beauty is in the eye of the beholder. From the perspective of a client it’s a set of test cases which are passed with release notes stating what kind of regression tests have been executed in a nice and understandable way.


feature-file-example

Example Scenario for Search mechanism


From the perspective of Quality Assurance Engineer it’s a set of Jenkins jobs that launch a set of automated regression tests each night.


jenkins-jobs-example

Example Jenkins jobs with multiple tests.


From the perspective of a technical tester or a developer Bobcat is a framework based on Selenium WebDriver with Java bindings. It creates a layer above Selenium which allows even a less technical tester to efficiently automate tests.


Thanks to the usage of Guice we can create a flat project structure in which all elements can work independently. We also integrated Bobcat with Cucumber which allows us to write executable specifications in using Gherkin syntax. This way we can accurately communicate with Business Analysts and plan the tests for a particular functionality during the creation of the specification.


step-implementation-example

Example step implementation

Why should I use Bobcat?

This all sounds good, but you might ask: “Why do I need an additional layer of code above Selenium? After all, I can integrate frameworks like Selenium Cucumber or Guice by myself?” Sure you can. The advantage of Bobcat is that it’s a mature tool, that’s already had 20 versions released and has already been used in dozens of major projects within Cognifide.


During the creation of Bobcat we focused on three main properties: Maintainability, stability and scalability.


Maintainability - as with every good Java framework, Bobcat is adaptable to change. Reusable elements of this framework ensure that less time is spent on re-engineering simple tests. It also provides a set of libraries which significantly facilitate writing tests: For example we included libraries with sets of helpers or CQ/AEM authoring support. Part of maintainability is achieved by the enforcement of Page Object Design Pattern - a standard that is well used across the industry.


Stability - tests results are stable and reliable every time the tests are executed. To achieve this we have provided an Archetype for easy project setup and we have provided a set of good practices to follow to make the tests as stable as possible. Bobcat can be integrated with any CI tool (e.g. Jenkins) and thus can easily fit into the development lifecycle.


Scalability - time execution can be managed to achieve the desired parameters. Tests can be easily run in parallel, with 1 or multiple workers on the CI tool.  It can even be run in the cloud on services such as AWS, Browserstack, SauceLabs or CrossBrowserTesting.


We are so proud of it we thought it was wrong to keep all of this goodness to ourselves and thus so we made it OpenSource. So now you too can have it too! You are free to implement it whenever you like. You can use it, modify it and extend it to make it fully suit your needs.


I want to find out more

So, like we said, awesome, right? Do you want to know more? You can find more details on our GitHub wiki. We especially recommend you read the good practices section where you can find detailed guides on how to keep your tests tidy and stable. The entire code is available on GitHub where you can also contribute.


If you have any additional questions, or want to send us flowers, you can reach out to our support team at bobcat@cognifide.com