JSPM

  • Created
  • Published
  • Downloads 38
  • Score
    100M100P100Q81789F
  • License MIT

Node.js bindings for the Slack CLI for use in automated testing

Package Exports

  • @slack/cli-test
  • @slack/cli-test/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@slack/cli-test) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

@slack/cli-test

codecov

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

  1. Ensure the Slack CLI is installed on your system.
  2. Export the path to the CLI binary as a SLACK_CLI_PATH environment variable.

Quickstart

  1. Install the package
npm install @slack/cli-test
  1. 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
  2. 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:

  1. SlackCLI - an object containing a variety of methods to interact with the CLI
  1. 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.
  2. 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
    );
  });
});

Configuration

Environment Variable Required Note
SLACK_CLI_PATH yes path to Slack CLI binary
SLACK_CLI_LOG_LEVEL no default: info. Logger levels