@slack/cli-test
![codecov](https://codecov.io/gh/slackapi/node-slack-sdk/graph/badge.svg?token=OcQREPvC7r&flag=cli-test)
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.
Requirements
- Ensure the Slack CLI is installed on your system.
- Export the path to the CLI binary as a
SLACK_CLI_PATH
environment variable.
Quickstart
- 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
- Import and use
SlackCLI
to automate the CLI!
import { SlackCLI } from '@slack/cli-test';
...
const createOutput = await SlackCLI.createAppFromTemplate('slackapi/deno-hello-world');
API / Usage
This package exports the following:
SlackCLI
- an object containing a variety of methods to interact with the CLI
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 { SlackCLI, SlackTracerId } from '@slack/cli-test';
describe('Login with the CLI', () => {
it('can successfully follow the feedback survey link', async function () {
const loginChallengeResult = await SlackCLI.loginNoPrompt();
const challenge = await submitCLIAuthTicket(
loginUrlToMyWorkspace,
loginChallengeResult.authTicketSlashCommand
);
const loginChallengeExchangeResult = await SlackCLI.loginChallengeExchange(
challenge,
loginChallengeResult.authTicket
);
});
});
Configuration
Environment Variable | Required | Note |
---|
SLACK_CLI_PATH | yes | path to Slack CLI binary |
SLACK_CLI_LOG_LEVEL | no | default: info . Logger levels |