This library is designed to automate the Slack Platform Command Line Interface (CLI). It provides a programmatic way to interact with the CLI using node.js and is used primarily for end-to-end (E22) testing.
- Ensure the Slack CLI is installed on your system.
- Export the path to the CLI binary as a
SLACK_CLI_PATH
environment variable.
- Install the package
npm install @slack/cli-test
- Set the path to the CLI executable using the environment variable
SLACK_CLI_PATH
- supply a link to a binary on the global path, like
slack-cli
- it will default to using
slack
otherwise
- supply a link to a binary on the global path, like
- Import and use
SlackCLI
to automate the CLI!
import { SlackCLI } from '@slack/cli-test';
...
const createOutput = await SlackCLI.createAppFromTemplate('slackapi/deno-hello-world');
This package exports the following:
SlackCLI
- an object containing a variety of methods to interact with the CLI
- methods are named after Slack CLI commands, e.g.
SlackCLI.deploy()
SlackCLIProcess
- a class that can be instantiated that exposes the ability to run arbitrary commands, with optional global flags as well as command-specific flags.SlackTracerId
- trace IDs to verify CLI command output
- see available exported IDs on
SlackTracerId
object - to enable the CLI to show this output, any CLI commands executed by this library are invoked with the environment variable set:
SLACK_TEST_TRACE=true
// Import available objects from the package
import { SlackCLI, SlackTracerId } from '@slack/cli-test';
describe('Login with the CLI', () => {
it('can successfully follow the feedback survey link', async function () {
// `login --no-prompt` to get challenge
const loginChallengeResult = await SlackCLI.loginNoPrompt();
// Submit auth ticket in Slack UI
const challenge = await submitCLIAuthTicket(
loginUrlToMyWorkspace,
loginChallengeResult.authTicketSlashCommand
);
// login with challenge and auth ticket
const loginChallengeExchangeResult = await SlackCLI.loginChallengeExchange(
challenge,
loginChallengeResult.authTicket
);
});
});
Environment Variable | Required | Note |
---|---|---|
SLACK_CLI_PATH |
yes | path to Slack CLI binary |
SLACK_CLI_LOG_LEVEL |
no | default: info . Logger levels |