Skip to content

feat: aggregate E2E suites in local Playwright UI - #121

Merged
longlho merged 2 commits into
mainfrom
codex/aggregate-playwright-ui
Oct 9, 2026
Merged

longlho merged 2 commits into
mainfrom
codex/aggregate-playwright-ui

Conversation

@longlho

@longlho longlho commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Splitting E2E tests into independently compiled targets should still let developers inspect and run them together in one Playwright UI session.

Add web_e2e_ui(suites = [...], config = ...), a local bazel run executable. Callers can reuse their existing root test_suite, including nested suites, so CI and UI share one feature-target list. Traversal uses explicit suite entries, without applying Bazel suite tag filters.

Existing E2E targets expose their compiled specs and unfiltered debugging runfiles through a provider; the launcher deduplicates those specs and creates an exact discovery config at runtime. Callers supply one shared server/browser config and environment rather than combining each suite's ports and setup hooks. UI sessions have no CI execution deadline, and temporary configuration is removed on exit.

The optional workspace-source mode runs a caller-owned source config and installed Playwright for live source editing and watching. Source discovery belongs to that config; compiled mode selects exactly the declared suites and requires a rebuild to reflect source edits. This rule currently supports managed-server E2E suites.

Browser/developer proof: two independently selected suites appear once in compiled and source discovery; an unselected spec is excluded. Nested-suite discovery also selects both specs once, even with an overlapping direct target. The real Playwright UI served HTTP on localhost, and terminating the launcher removed its temporary configuration. Regression tests cover discovery and project overrides, preserving relative server command working directories, and rejecting empty selections. Existing CI test runfiles and cache policies remain unchanged.

@longlho
longlho marked this pull request as ready for review October 9, 2026 16:32
@longlho
longlho merged commit e19d50e into main Oct 9, 2026
16 checks passed
@longlho
longlho deleted the codex/aggregate-playwright-ui branch October 9, 2026 16:32
longlho pushed a commit that referenced this pull request Oct 10, 2026
🤖 I have created a release *beep* *boop*
---


## 3.9.0 (2026-10-09)

## What's Changed
* feat: prune source maps from browser input directories by @longlho in
#114
* fix: let callers control browser test selection by @longlho in
#116
* fix: preserve npm package paths in runtime inputs by @longlho in
#117
* fix: allow remote caching for local browser tests by @longlho in
#119
* fix: leave host browser execution restrictions to callers by @longlho
in #120
* feat: aggregate E2E suites in local Playwright UI by @longlho in
#121
* fix: resolve caller data paths in Playwright UI by @longlho in
#122
* fix: build Playwright UI bundles as declared Bazel outputs by @longlho
in #123


**Full Changelog**:
v3.8.1...v3.9.0

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant