﻿---
title: Set up Scout in your plugin or package
description: This page shows the minimum setup to add Scout tests to a plugin/package. For choosing the right import (@kbn/scout vs solution packages), see Scout packages...
url: https://www.elastic.co/elastic/docs-builder/docs/3028/extend/kibana/scout/setup-plugin
products:
  - Kibana
---

# Set up Scout in your plugin or package
This page shows the **minimum setup** to add Scout tests to a plugin/package. For choosing the right import (`@kbn/scout` vs solution packages), see [Scout packages](/elastic/docs-builder/docs/3028/extend/kibana/scout#scout-packages).

## Guided setup with the Scout CLI

<stepper>
  <step title="Generate a working scaffold">
    Generate a working scaffold (folders, configs, and sample tests) by following the guided setup:
    ```bash
    node scripts/scout.js generate
    ```
    This command will also automatically enable your plugin or package's Scout tests in the CI by updating the `.buildkite/scout_ci_config.yml` file.
  </step>

  <step title="Write and run tests">
    Tweak the new Playwright config(s) and [write UI tests](https://www.elastic.co/elastic/docs-builder/docs/3028/extend/kibana/scout/write-ui-tests) or [API tests](https://www.elastic.co/elastic/docs-builder/docs/3028/extend/kibana/scout/write-api-tests).
  </step>
</stepper>


## Manual setup

<stepper>
  <step title="Create the folder layout">
    Create `test/scout`:
    ```text
    your-plugin/
    └── test/
        └── scout/
            ├── ui/     
            ├── api/    
            └── common/ 
    ```
  </step>

  <step title="Create Playwright config(s)">
    Create a config under `test/scout/ui` and/or `test/scout/api`.
    <tab-set>
      <tab-item title="Standard config (sequential test runs)">
        Create `playwright.config.ts`:
        ```ts
        import { createPlaywrightConfig } from '@kbn/scout';

        export default createPlaywrightConfig({
          testDir: './tests',
        });
        ```

        <important>
          Use the conventional name `playwright.config.ts` so Scout tooling can discover the config.
        </important>
        Then create the `tests/` directory next to the config.If many files share one-time setup (archives/ingest/settings), add a [global setup hook](https://www.elastic.co/elastic/docs-builder/docs/3028/extend/kibana/scout/global-setup-hook).
      </tab-item>

      <tab-item title="Parallel config (parallel test runs)">
        If your UI suites can be isolated, add `parallel.playwright.config.ts` under `test/scout/ui` and point it at `parallel_tests/`:
        ```ts
        import { createPlaywrightConfig } from '@kbn/scout';

        export default createPlaywrightConfig({
          testDir: './parallel_tests',
          workers: 2,
        });
        ```

        <important>
          Use the conventional name `parallel.playwright.config.ts` so Scout tooling can discover the config.
        </important>
        Then create the `parallel_tests/` directory next to the config. For parallel suites, prefer defining test suites and test cases using `spaceTest` so each worker runs in an isolated Space (see [Parallelism](https://www.elastic.co/elastic/docs-builder/docs/3028/extend/kibana/scout/parallelism)).If many files share one-time setup (archives/ingest/settings), add a [global setup hook](https://www.elastic.co/elastic/docs-builder/docs/3028/extend/kibana/scout/global-setup-hook).
      </tab-item>
    </tab-set>
  </step>

  <step title="Enable Scout runs in CI">
    Ensure your plugin or package is listed in `.buildkite/scout_ci_config.yml` so Scout tests run in CI. If not already in the list, add **one line** under the appropriate `enabled` list:
    - **Plugins**: Add `- <plugin_name>` under `plugins.enabled`. The name is the path segment(s) after `plugins/` (the plugin folder name, or a slash-separated path for nested plugins).
    - **Packages**: Add `- <package_name>` under `packages.enabled`. The name is the folder name after `packages/`.

    ```yaml
    plugins:
      enabled:
        - <plugin_name>
      disabled:

    packages:
      enabled:
        - <package_name>
      disabled:
    ```
  </step>

  <step title="Write and run tests">
    Tweak the new Playwright config(s) and [write UI tests](https://www.elastic.co/elastic/docs-builder/docs/3028/extend/kibana/scout/write-ui-tests) or [API tests](https://www.elastic.co/elastic/docs-builder/docs/3028/extend/kibana/scout/write-api-tests).
  </step>
</stepper>