Add CI integration for @elastic/eui-test-helpers (M3)#9740
Add CI integration for @elastic/eui-test-helpers (M3)#9740steliosmavro wants to merge 4 commits into
@elastic/eui-test-helpers (M3)#9740Conversation
- Run validation tests on every PR (test-helpers task + PR pipeline step) - Flake detection: re-run a helper's specs 25x when its correlated EUI component changes (pure-bash, directory-name correlation), hard-failing - Scheduled pipeline running all specs 5x with Slack failure notification - Serve Storybook in CI via Playwright webServer (static build + http-server) - Document CI behavior in the testing wiki
3 visual difference(s) found - expand to review, then click Approve visual changes to update baselineseuicodeblock (1 difference)
euipopover (1 difference)
euidatagrid (1 difference)
|
There was a problem hiding this comment.
Pull request overview
Integrates @elastic/eui-test-helpers Playwright validation tests into EUI’s Buildkite CI, adding PR validation, component-correlated flake detection reruns, and a scheduled flaky-run pipeline, with supporting documentation updates.
Changes:
- Add a
test-helpersCI task that builds workspaces + Storybook and runs the Playwright suite (including a static Storybook web server in CI). - Add a flake-detection script that detects correlated component changes and re-runs affected helper specs with
--repeat-each. - Add a scheduled Buildkite pipeline and document the new CI behavior in the wiki + package CONTRIBUTING.
Reviewed changes
Copilot reviewed 9 out of 10 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| yarn.lock | Locks new dependency graph for http-server used by CI Storybook serving. |
| wiki/contributing-to-eui/testing/README.md | Adds EUI test-helpers to the testing documentation index. |
| wiki/contributing-to-eui/testing/eui-test-helpers.md | New wiki page documenting CI validation, flake detection, and scheduled runs. |
| packages/test-helpers/playwright.config.ts | Adds Playwright webServer to serve static Storybook in CI (and reuse dev server locally). |
| packages/test-helpers/package.json | Adds http-server devDependency for serving static Storybook. |
| packages/test-helpers/CONTRIBUTING.md | Documents CI integration and the local vs CI Storybook serving behavior. |
| .buildkite/scripts/pipelines/pipeline_test.sh | Adds test-helpers task and plumbs PLAYWRIGHT_ARGS into the container. |
| .buildkite/scripts/pipelines/pipeline_test_helpers_flaky.sh | New script that detects correlated component changes and uploads rerun steps with repeats. |
| .buildkite/pipelines/pipeline_test_helpers_scheduled.yml | New scheduled pipeline to run all helper specs with repeats and Slack notify on failure. |
| .buildkite/pipelines/pipeline_pull_request_test.yml | Adds PR-time validation step and flake-detection step to the CI pipeline. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- npx --no-install so the webServer never falls back to a registry download - add the html reporter in CI so the uploaded playwright-report artifact exists - trace retain-on-failure in CI (on-first-retry never fires with retries: 0)
|
Hi @steliosmavro!
My personal take on this is that we don't need it. We can make all CI of eui-test-helpers with the flaky repeat configuration for very high certainty of their correctness. I'm not a huge fan of cron jobs for these kinds of things. We can run the same test suite when changes get merged to Here's what I would recommend:
LMK if you need any assistance with this! We have some other Buildkite changes in open PRs and I'm happy to help with this :D |
Per review: rely on PR validation + flake-on-change instead of periodic runs. Removes the scheduled pipeline and its doc references; on-merge/throttling/ browser-matrix tracked as follow-ups.
|
Thanks @tkajtoch I agree 👍 Dropped the scheduled job + Slack from the PR. For the on-merge run, this PR or a follow up? Since nothing runs on main today I'd guess that's more your side to enable so happy to do a separate change on top. I'd leave it as is for now. |
…i-integration # Conflicts: # .buildkite/pipelines/pipeline_pull_request_test.yml # .buildkite/scripts/pipelines/pipeline_test.sh
💚 Build Succeeded
History
|
💚 Build Succeeded
History
|









Summary
What: CI integration (Milestone 3) for
@elastic/eui-test-helpers, building on theEuiComboBoxObjecthelper added in #9644.Why: The helper package needs its validation tests running in EUI CI, with extra flakiness coverage when an underlying component changes, so breakage is caught before it reaches downstream Scout tests.
How:
test-helperstask inpipeline_test.shbuilds the EUI workspaces + Storybook, installs Chromium, and runs the Playwright validation suite. Storybook is served by Playwright'swebServer(static build +http-serverdevDependency);reuseExistingServerleaves the local dev-server workflow untouched.pipeline_test_helpers_flaky.shdiffs the PR against its merge base and, for any changed component with a correlated helper, dynamically uploads a step re-running that helper's specs--repeat-each=25. Correlation is by directory name (eui/src/components/<name>⇄test-helpers/src/playwright/components/<name>) — no map to maintain. A flaky failure fails the build; no-op when nothing correlated changed. Pure bash, nonodeon the agent host.pipeline_test_helpers_scheduled.ymlruns all specs--repeat-each=5and notifies Slack on failure.This is Milestone 3 of the eui-test-helpers epic (M2 was #9644).
Note
One-time Buildkite setup (not in-repo, needs org-admin/Vault): schedule a build of
pipeline_test_helpers_scheduled.ymlevery 8h (cron0 */8 * * *); enable the Buildkite Slack integration and confirm the channel (currently#appex-qa).API Changes
Screenshots
N/A— CI configuration only.Impact Assessment
Impact level: 🟢 None — package is
private; changes are additive CI plus a private-package devDependency.Release Readiness
FigmaMigration guideQA instructions for reviewer
Checklist before marking Ready for Review
QA: light/dark, high contrast, mobile, browsers, keyboard, screen readerQA: Tested in CodeSandbox and Kibana— Kibana consumption is M4.QA: Tested docs changesEuiComboBoxObjectPlaywright helper to@elastic/eui-test-helpers#9644) now run in CI, plus flake-detection and scheduled coverage.Changelog— package isprivate, not released.Breaking changes labelReviewer checklist