﻿---
title: Scout
description: Scout is Kibana’s modern UI and API test framework built on Playwright. It focuses on fast test execution, a good developer experience, and reusable test...
url: https://www.elastic.co/elastic/docs-builder/docs/3109/extend/kibana/scout
products:
  - Kibana
---

# Scout
Scout is Kibana’s **modern UI and API test framework** built on [Playwright](https://playwright.dev). It focuses on **fast test execution**, a good **developer experience**, and **reusable** test building blocks (e.g., [fixtures](https://www.elastic.co/elastic/docs-builder/docs/3109/extend/kibana/scout/fixtures), [page objects](https://www.elastic.co/elastic/docs-builder/docs/3109/extend/kibana/scout/page-objects) and [API services](https://www.elastic.co/elastic/docs-builder/docs/3109/extend/kibana/scout/api-services)).

## Start here

- [Getting started](https://www.elastic.co/elastic/docs-builder/docs/3109/extend/kibana/scout/getting-started)
- [Best practices](https://www.elastic.co/elastic/docs-builder/docs/3109/extend/kibana/scout/best-practices) (see also [UI test best practices](https://www.elastic.co/elastic/docs-builder/docs/3109/extend/kibana/scout/ui-best-practices) and [API test best practices](https://www.elastic.co/elastic/docs-builder/docs/3109/extend/kibana/scout/api-best-practices))
- [UI testing](https://www.elastic.co/elastic/docs-builder/docs/3109/extend/kibana/scout/ui-testing)
- [API testing](https://www.elastic.co/elastic/docs-builder/docs/3109/extend/kibana/scout/api-testing)


## Scout benefits

- **Parallel execution**: run UI suites in [parallel](https://www.elastic.co/elastic/docs-builder/docs/3109/extend/kibana/scout/parallelism) against the same deployment.
- **Selective testing**: PR builds run only the Scout tests scoped to changed modules, cutting CI time.
- **Co-located tests**: keep tests close to [plugin code](https://www.elastic.co/elastic/docs-builder/docs/3109/extend/kibana/scout/setup-plugin) for easier iteration and maintenance.
- **Deployment-agnostic**: write tests once, then use [tags](https://www.elastic.co/elastic/docs-builder/docs/3109/extend/kibana/scout/deployment-tags) to declare where they should run (stateful/serverless).
- **Fixture-based**: [fixtures](https://www.elastic.co/elastic/docs-builder/docs/3109/extend/kibana/scout/fixtures) cover auth, data setup, clients, and common workflows.
- **Better debugging**: use Playwright [UI Mode](https://playwright.dev/docs/test-ui-mode).
- **Reporting**: we capture test events that power our dashboards (for example, skipped tests, flaky tests, and more).
- **Reusability**: reuse or write reusable fixtures, page objects and API helpers to reduce duplication.
- **Follows modern best practices**: check out our [Scout best practices](https://www.elastic.co/elastic/docs-builder/docs/3109/extend/kibana/scout/best-practices).


## Scout packages

**Import the right Scout package in your Scout tests:**
- **Platform-owned tests** → `@kbn/scout`


| Package      | Use in tests               |
|--------------|----------------------------|
| `@kbn/scout` | Platform (shared baseline) |

- **Solution-owned tests** → your solution Scout package (it builds on `@kbn/scout`)


| Package               | Use in tests                                |
|-----------------------|---------------------------------------------|
| `@kbn/scout-oblt`     | `logo_observability` Observability solution |
| `@kbn/scout-security` | `logo_security` Security solution           |
| `@kbn/scout-search`   | `logo_elasticsearch` Search solution        |

<note>
  Fixtures, page objects, and API helpers defined in `@kbn/scout` can be imported by solution-specific Scout packages. When they are defined in a solution package or a plugin they will only be available to that solution or plugin.
</note>


## Contribute to Scout when possible

We welcome contributions to one of the Scout packages.

| If your helper/code…                  | Put it…                                                                                                   | Examples                                           |
|---------------------------------------|-----------------------------------------------------------------------------------------------------------|----------------------------------------------------|
| Is reusable across many plugins/teams | In `@kbn/scout`                                                                                           | Generic fixtures, page objects, and API helpers    |
| Is reusable but scoped to a solution  | In the solution Scout package (for example `@kbn/scout-security`, `@kbn/scout-oblt`, `@kbn/scout-search`) | Solution workflows and domain-specific helpers     |
| Is specific to one plugin or package  | In your plugin or package’s `test/scout` directory                                                        | Components specific to your plugin or package only |


## Need help?

- **Internal (Elasticians)**: reach out to the AppEx QA team in the `#kibana-scout` Slack channel for guidance.
- **External contributors**: open an issue in the Kibana repository and label it with `Team:QA`.


## FAQ


#### Q: Does Scout prevent flaky tests?

No—good test design still matters.

#### Q: Is Scout designed to be _just_ a Playwright UI test runner?

No. Scout supports both UI and API testing with Playwright.

#### Q: Are test runs going to be faster?

Often yes, especially with [parallel test execution](https://www.elastic.co/elastic/docs-builder/docs/3109/extend/kibana/scout/parallelism) and selective testing.

#### Q: What is selective testing?

In PR builds, Scout automatically detects which modules changed and runs only the relevant tests, reducing CI time. You can confirm your tests ran by looking for the `affected Scout:` prefix on Buildkite steps. See PR [#261510](https://github.com/elastic/kibana/pull/261510) for details.

#### Q: Why is it a good idea for tests to be close to the plugin code?

It’s easier to iterate and maintain, and it enables selective testing: PR builds automatically run only the Scout tests for affected modules.

#### Q: Can I use FTR services in Scout (for example, `esArchiver`)?

Not directly—use Scout [fixtures](https://www.elastic.co/elastic/docs-builder/docs/3109/extend/kibana/scout/fixtures) instead.

#### Q: What happens to FTR tests?

Existing FTR tests continue to run, and teams can migrate them to Scout incrementally over time.

#### Q: Does Scout support feature flags?

Yes. See [Feature flags](https://www.elastic.co/elastic/docs-builder/docs/3109/extend/kibana/scout/feature-flags) for details on enabling flags at runtime with `apiServices.core.settings()` or using custom server configurations.