Skip to content

Conversation

@dmlemeshko
Copy link
Member

Backport

This will backport the following commits from main to 8.19:

Questions ?

Please refer to the Backport tool documentation

## Summary

This PR updates how playwright configs are discovered and grouped for
execution:
- use scout manifest files to filter configs for a run (Kibana CI, +
ECH/MKI pipelines) (see elastic#245135)
- update filtering to include configs with at least 1 test to run
(`expectedStatus` to be `passed`)
- provide 2 formats for Kibana CI and ECH/MKI (use `--flatten` flag)
pipelines to handle both cases efficiently
- use `runModes` to simplify execution script
`.buildkite/scripts/steps/test/scout_configs.sh`

### Usage:

#### For regular Kibana CI (existing functionality) we run all the
configs with at least 1 unskipped test
```
node scripts/scout discover-playwright-configs --save

[
  {
    "name": "kbn-streamlang-tests",
    "group": "platform",
    "type": "package",
    "configs": [
      {
        "path": "x-pack/platform/packages/shared/kbn-streamlang-tests/test/scout/api/playwright.config.ts",
        "hasTests": true,
        "tags": [
          "@ess",
          "@svlOblt"
        ],
        "serverRunFlags": [
          "--stateful",
          "--serverless=oblt"
        ],
        "usesParallelWorkers": false
      }
    ]
  },
  {
    "name": "discover_enhanced",
    "group": "platform",
    "type": "plugin",
    "configs": [
      {
        "path": "x-pack/platform/plugins/private/discover_enhanced/test/scout/ui/parallel.playwright.config.ts",
        "hasTests": true,
        "tags": [
          "@ess",
          "@svlSearch",
          "@svlOblt",
          "@svlSecurity",
          "@svlSecurityEssentials",
          "@svlSecurityEase",
          "@svlLogsEssentials"
        ],
        "serverRunFlags": [
          "--stateful",
          "--serverless=es",
          "--serverless=security",
          "--serverless=oblt"
        ],
        "usesParallelWorkers": true
      },
      {
        "path": "x-pack/platform/plugins/private/discover_enhanced/test/scout/ui/playwright.config.ts",
        "hasTests": true,
        "tags": [
           ...
        ],
        "serverRunFlags": [
           ...
        ],
        "usesParallelWorkers": false
      }
    ]
  },
  ...
]
```

#### For MKI we filter only configs matching serverless projects, filter
for non-empty ones and flatten structure to have multiple configs as a
single track (those that can be run together)
```
node scripts/scout discover-playwright-configs --save --target mki --flatten

[
  {
    "mode": "serverless",
    "deploymentType": "observability",
    "group": "observability",
    "scoutCommand": "node scripts/scout run-tests --serverless=oblt --testTarget=cloud",
    "configs": [
      "x-pack/solutions/observability/plugins/apm/test/scout/ui/parallel.playwright.config.ts",
      "x-pack/solutions/observability/plugins/infra/test/scout/ui/parallel.playwright.config.ts",
      "x-pack/solutions/observability/plugins/observability/test/scout/ui/playwright.config.ts",
      "x-pack/solutions/observability/plugins/observability_onboarding/test/scout/ui/playwright.config.ts",
      "x-pack/solutions/observability/plugins/slo/test/scout/ui/playwright.config.ts"
    ]
  },
  {
    "mode": "serverless",
    "deploymentType": "elasticsearch",
    "group": "platform",
    "scoutCommand": "node scripts/scout run-tests --serverless=es --testTarget=cloud",
    "configs": [
      "x-pack/platform/plugins/private/discover_enhanced/test/scout/ui/parallel.playwright.config.ts",
      "x-pack/platform/plugins/private/discover_enhanced/test/scout/ui/playwright.config.ts",
      "x-pack/platform/plugins/private/painless_lab/test/scout/api/playwright.config.ts",
      "x-pack/platform/plugins/shared/maps/test/scout/ui/playwright.config.ts",
      "src/platform/plugins/shared/console/test/scout/api/playwright.config.ts",
      "src/platform/plugins/shared/workflows_extensions/test/scout/api/playwright.config.ts"
    ]
  },
...
]
```

~~blocked by elastic#245135

---------

Co-authored-by: David Olaru <dolaru@elastic.co>
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Cesare de Cal <cesare.decal@elastic.co>
(cherry picked from commit 3862020)

# Conflicts:
#	.buildkite/pipeline-utils/scout/pick_scout_test_group_run_order.ts
#	.buildkite/scripts/steps/test/scout_configs.sh
#	src/platform/packages/shared/kbn-scout/moon.yml
#	src/platform/packages/shared/kbn-scout/src/cli/config_discovery.ts
#	src/platform/packages/shared/kbn-scout/src/servers/configs/discovery/search_configs.ts
#	src/platform/packages/shared/kbn-scout/tsconfig.json
@dmlemeshko dmlemeshko added the backport This PR is a backport of another PR label Dec 17, 2025
@dmlemeshko dmlemeshko enabled auto-merge (squash) December 17, 2025 17:34
@dmlemeshko dmlemeshko added the backport This PR is a backport of another PR label Dec 17, 2025
@dmlemeshko dmlemeshko merged commit c7a3497 into elastic:8.19 Dec 17, 2025
13 checks passed
@elasticmachine
Copy link
Contributor

💚 Build Succeeded

Metrics [docs]

Page load bundle

Size of the bundles that are downloaded on every page load. Target size is below 100kb

id before after diff
kbnUiSharedDeps-srcJs 3.7MB 3.7MB +129.0B
Unknown metric groups

ESLint disabled line counts

id before after diff
@kbn/scout 1 2 +1

Total ESLint disabled count

id before after diff
@kbn/scout 2 3 +1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport This PR is a backport of another PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants