Beat Pony E2E Test Catalog
Read-only VS Code catalog for reviewing and navigating the repository's Playwright E2E cases.
Features
- Browse all matching Product and Smoke E2E scenarios in one compact module wall.
- Filter by application, suite, domain, English title, Chinese BDD text, or source path.
- Hover or focus a test to inspect its complete Scenario, Given, When, and Then behavior.
- Open the exact source line or run one test or one spec in a scoped terminal command.
- Refresh automatically when matching spec files are added, changed, or removed.
- Review diagnostics for dynamic titles, malformed BDD comments, and unreadable files.
Getting started
- Open the Beat Pony repository or another workspace that follows the supported layout.
- Open the VS Code command palette.
- Run
E2E Test Catalog: Open.
The catalog is read-only. It never executes spec source while indexing tests.
Supported layout
Only files matching this repository-relative layout are scanned:
apps/<app>/e2e/product/**/*.e2e.spec.ts
apps/<app>/e2e/smoke/**/*.e2e.spec.ts
The catalog recognizes static string titles in it(...), test(...), it.skip(...),
test.skip(...), it.only(...), and test.only(...). Nested static describe(...) titles
are included in the test's full title. Computed or interpolated test titles are reported as
diagnostics instead of being evaluated.
BDD comments must be four consecutive line comments immediately above the test call, in this
order:
// Scenario: 会员享受免运费
// Given 用户是付费会员
// When 结算一笔不满包邮门槛的订单
// Then 运费为 0
it("should waive shipping for a paid member", async () => {
// ...
});
Blank lines, unrelated comments, reordered fields, duplicate fields, or missing fields produce
diagnostics. The extension never executes spec source while building the catalog.
Catalog actions
The catalog provides:
- Combined App, suite, domain, and full-text filters.
- Search across English test titles, Chinese BDD text, file paths, domains, and describe paths.
- A wrapping wall of equal-width test modules with complete BDD details and actions on hover or
keyboard focus.
- A compact file diagnostics table below the test module wall for dynamic titles, parse failures,
and unreadable spec files.
Open source, which opens the spec and reveals the recorded test line inside the workspace.
Run test, which runs the selected test using its exact file and full Playwright title.
Run spec, which runs only the selected Product or Smoke spec.
- Automatic refresh after matching spec files are created, changed, or deleted.
Run commands are generated from a freshly validated catalog record. The Webview cannot send
arbitrary shell commands, and paths and titles are escaped before they reach the terminal.
Before reading a local spec, opening source, or creating a test terminal, the extension resolves
the workspace root and target with realpath and rejects symbolic links that resolve outside the
workspace. Remote providers retain their original URI scheme and authority; the extension checks
each path segment and rejects links that the provider reports as symbolic links.
Test commands
Run these from apps/e2e-catalog-vscode:
bun run test
bun run check-types
bun run lint
bun run build
bun run quality
bun run test:extension
bun run package:vsix
Development
- Run
bun install from the repository root.
- Run
bun run build from apps/e2e-catalog-vscode.
- Open the repository root in VS Code.
- Start
Run E2E Test Catalog Extension from Run and Debug.
The extension build output is written to dist/. The repository ignores dist/, so generated
bundles are rebuilt locally and are not committed.
quality runs both TypeScript projects, Oxlint, Vitest, and the production build.
test:extension builds the extension and runs the VS Code Electron integration suite in an
isolated temporary workspace.
Package and install
From apps/e2e-catalog-vscode, run:
bun run package:vsix
code --install-extension beat-pony-e2e-test-catalog-0.1.0.vsix
The generated VSIX is intentionally ignored by Git. Packaging includes only the Marketplace
metadata, documentation, icon, and the three production bundles in dist/.