Integrate Karate DSL Cucumber Reports into your Slack channel

Markhughes
4 min readSep 15, 2023

--

Streamline your test feedback loop by pushing your test results directly into Slack.

Karate DSL and Slack integration

In today’s fast-paced development environment, real-time feedback is the key to swift action. And what better way to get instant feedback than integrating your automation test results directly into Slack! Using Karate DSL with Cucumber, I’ve created a seamless method to get your test reports right where your team communicates most: Slack channels. Here’s how you can do it too.

Why Integrate with Slack?

Before we dive into the “how”, let’s first understand the “why”.

  1. Real-time Feedback: Immediately know the status of your test runs.
  2. Increased Visibility: Make your QA process transparent for everyone on the team.
  3. Prompt Action: With test results at your fingertips, bugs, and issues can be addressed on the fly.

Setting Up the Integration

Now Let’s break down the “how”, step-by-step:

Step 1

First, you will need to create a Slack App and give it the necessary permissions. In the ‘OAuth and Permissions’ page give your app the below scopes.

Required OAuth scopes

Step 2

Create a Slack channel to send your Karate reports to. Then install your new Slack App into the channel.

Install the app into your Slack channel

Step 3

Clone the project repository here and follow the steps in the README.md file to set up your project.

Step 4

Once you have your Slack App created and your project configured, you can run the npm run karate:slack command to trigger a test run and send the reports to your Slack channel.

Understanding the Code

The project uses the quickstart Karate Maven archetype to create a skeleton project. We then added the Cucumber Reporting plugin to produce reports like below.

Cucumber Reports

We then added the npm commands to the package.json file to run the Karate tests and trigger the Slack message. The run:karate:dev command simply runs the Karate tests. Note how we pass in the dev environment variable, you could create another command e.g. run:karate:staging to run the tests on a different environment.

The sendSlackReport command uses node to run the javascript file which triggers the Slack message.

Finally, the karate:slack command is used to run the above 2 commands in sequence.

Package.json

The next file to look at is TestParallel.java, this Java file runs the Karate tests in parallel, creates the cucumber reports, and compresses the cucumber-html-reports folder into a zip file.

TestParallel.java

Finally, the sendSlackReport.js script parses the reporting data from the karate-summary-json.txt file to build the Slack message. The script then sends the message to the Slack Channel and attaches the cucumber-reports.zip file as a threaded message. The end result looks like this.

Slack Block message (Cucumber Reports in thread)

Wrapping Up

Integrating Karate DSL Cucumber reports into Slack is more than just about convenience. It’s about streamlining processes, enhancing team communication, and ensuring that quality assurance becomes a real-time, collaborative effort.

Before you go, ask yourself: Will someone benefit from this integration? If the answer is yes, why wait? Dive in and enhance your QA process.

LEFTOVERS

  • Fully automate the process using CI/CD pipelines for even faster feedback loops.
  • Consider setting up different Slack channels for different environments (e.g., staging, production) for better categorization.

--

--