Dialogflow on Rails - Agent import/export & regression testing

Arnaud Lachaume
Arnaud LachaumeLink to author's LinkedIn profile
June 8, 2021
icon timer

Proper regression/e2e testing with Dialogflow in Ruby on Rails.

Table of Content

For those that are not familiar with Dialogflow, it’s a platform that makes it easy to design a conversational user interface that can be easily integrated with a variety of applications (e.g. chatbots 😉). Click here for more on Dialogflow.

So you’ve decided to integrate Dialogflow with your Ruby on Rails application. You’ve created a Dialogflow agent, your code is in place, and you’re ready to deploy your application. Before you do, it’s worth considering how active development will be managed.

Ongoing development requires allowing developers to make changes to the agent. Even small changes to the agent could potentially lead to some unexpected behavior which may initially go unnoticed, especially with more complex conversational flows. To mitigate the risk of errors or application downtime, let’s look at how integration/regression testing can be put in place for the agent itself.

Agent Upload/Download

The following rake task examples can be adapted and used to upload & download the agent as a zip file. We’ll need this to write the regression tests and it also makes it easy to record the state of the agent or reset the agent to a previous state during development.

The rake tasks above make use of the following utility class to assist with zip file manipulation. 

Regression Testing

Now that the agent push/pull rake tasks are in place, they can be used to write regression tests.

Here is an example of how they can be set up:

The example above assumes the existence of a directory of JSON files containing testing scenarios. Here is a basic example of how one of these files might look if we wanted to test the behavior of Dialogflow’s prebuilt smalltalk agent, and an example of a more complex scenario with parameter expectations:


Dialogflow makes it easy to add powerful conversational capabilities to your application. But, with something as complex as natural language processing, integration/regression testing can help you save time, avoid frustration, and make your Dialogflow integration as robust as possible. 

I hope the suggestions and examples in this article help you to simplify your development as much as they’ve helped me.

Sign-up and accelerate your engineering organization today !

About us

Keypup's SaaS solution allows engineering teams and all software development stakeholders to gain a better understanding of their engineering efforts by combining real-time insights from their development and project management platforms. The solution integrates multiple data sources into a unified database along with a user-friendly dashboard and insights builder interface. Keypup users can customize tried-and-true templates or create their own reports, insights and dashboards to get a full picture of their development operations at a glance, tailored to their specific needs.


Code snippets hosted with ❤ by GitHub.

Banner imagine designed by Designed by zaie / Freepik