:warning: Warning: Conversational Actions will be deprecated on June 13, 2023. For more information, see Conversational Actions Sunset.
This library allows developers to write automated testing for their actions in Node.js.
:warning: This library supports Dialogflow and the legacy Actions SDK. We now recommend using Actions Builder or the new Actions SDK to develop, test, and deploy Conversational Actions. For testing Conversational Actions built using Actions Builder see the @assistant/conversation-testing library.
Examples can be found in the /examples
directory for two sample apps.
The Assistant SDK is used to give developers programmatic access to the Assistant and returns debug information about their actions that are in a test state.
Note: This library is currently in an alpha, experimental state. APIs may break between releases. Feedback and bugs can be provided by filing an issue in this repository.
credentials.json
filenode generate-credentials.js /path/to/credentials.json
Saved user credentials in "test-credentials.json"
test.js
'use strict';
const { ActionsOnGoogleAva } = require('actions-on-google-testing');
const { expect } = require('chai');
// Library will try to obtain credentials from environment variables in case
// credentials file is not specified
const action = new ActionsOnGoogleAva(require('./test/test-credentials.json'));
// Start out with giving a name to this test
action.startTest('Facts about Google - direct cat path', action => {
// Return a promise that starts a conversation with your test app
return action.start()
.then(({ textToSpeech }) => {
// Get a response back from your fulfillment.
// To continue the conversation, you can send
// a new text query. This starts the next
// turn of the conversation.
return action.send('cats');
})
.then(({ ssml }) => {
// The entire set of responses are listed below.
// You can use Chai to verify responses.
expect(ssml[0]).to.have.string("Alright, here's a cat fact.")
})
});
yarn
package.json
to add this test file to your test script."scripts": {
"test": "./node_modules/.bin/ava -c 1 -s ./test.js"
},
yarn test
. You should see your test be executed.NOTE You can also alternatively set the following environment variables - ACTIONS_TESTING_CLIENT_ID
,ACTIONS_TESTING_CLIENT_SECRET
, ACTIONS_TESTING_REFRESH_TOKEN
- to authenticate your Actions project with the Assistant SDK.
This library provides the following features to control your conversation:
action.start()
- Start your conversation with your action using "my test app".action.startWith()
- Start your conversation with your action using the specified action name.action.send()
- Send some phrase to your action.action.cancel()
- End your conversation. This library says "cancel".action.locale
- Set a locale for your conversation.action.location
- Set an array of a latitude and a longitude.These responses will come from your fulfillment, and will consist of whatever objects that you return.
res
.micOpen - Boolean
.textToSpeech - String[]
.displayText - String[]
.ssml - String[]
.cards - Card[]
.title - String
.subtitle - String
.text - String
.imageUrl - String
.imageAltText - String
.buttons - Button[]
.title - String
.url - String
.carousel - Array for Browse Carousel or Selection Carousel
.title - String
.description - String,
.imageUrl - String,
.imageAltText - String,
.url - String
.list
.title - String
.items - Item[]
.title - String
.description - String
.imageUrl - String
.imageAltText - String
.mediaResponse
.type - String
.name - String
.description - String
.sourceUrl - String
.icon - String
.suggestions - String[]
.linkOutSuggestion
.url - String
.name - String
.table
.headers - String[]
.rows - Row[]
.cells - String[]
.divider - Boolean
See LICENSE