feat(FR-2875,FR-2876): introduce @smoke tag convention and scaffold webui-smoke-cli package#7391
Conversation
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
How to use the Graphite Merge QueueAdd either label to this PR to merge it via the merge queue:
You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has required the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
There was a problem hiding this comment.
Pull request overview
Introduces a Playwright @smoke* tagging convention for selecting a curated smoke subset of existing E2E specs, and scaffolds a new workspace package (backend.ai-webui-smoke-cli) that can list smoke categories and print version info (with a stubbed run command for future implementation).
Changes:
- Documented
@smoke,@smoke-admin,@smoke-user,@smoke-any,@smoke-extendedconventions ine2e/E2E-TEST-NAMING-GUIDELINES.md. - Added
@smoke*tags to 5 existing E2E specs (auth, dashboard, session lifecycle, vfolder, agent). - Added a new
packages/backend.ai-webui-smoke-cli/CLI scaffold (commander-based) withlistandversioncommands, plus a stubrun.
Reviewed changes
Copilot reviewed 12 out of 14 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
.gitignore |
Ignores branch-suffixed pnpm lockfiles. |
e2e/E2E-TEST-NAMING-GUIDELINES.md |
Adds smoke tag taxonomy + rules and updates “Last Updated” date. |
e2e/agent/agent.spec.ts |
Adds @smoke + @smoke-admin tags to agent list suite. |
e2e/auth/login.spec.ts |
Adds @smoke-any tag to smoke-tagged login describes. |
e2e/dashboard/dashboard.spec.ts |
Adds @smoke + role tag to dashboard suite. |
e2e/session/session-lifecycle.spec.ts |
Adds @smoke + role tag to session lifecycle suite. |
e2e/vfolder/file-create.spec.ts |
Adds @smoke + @smoke-user tags to vfolder file-create suite. |
packages/backend.ai-webui-smoke-cli/bin/bai-smoke.cjs |
Adds CJS shim entrypoint that loads compiled ESM CLI. |
packages/backend.ai-webui-smoke-cli/package.json |
Adds new private workspace package metadata, bin, and build scripts. |
packages/backend.ai-webui-smoke-cli/README.md |
Adds brief package intro and spec link. |
packages/backend.ai-webui-smoke-cli/src/catalog.ts |
Adds static smoke category catalog used by bai-smoke list. |
packages/backend.ai-webui-smoke-cli/src/cli.ts |
Implements list and version subcommands; stubs run with full option surface. |
packages/backend.ai-webui-smoke-cli/src/version.ts |
Provides CLI version/name + placeholder WebUI SHA and Playwright version. |
packages/backend.ai-webui-smoke-cli/tsconfig.json |
Adds TypeScript build configuration for the CLI package. |
3e3d64d to
0819c45
Compare
e299fc9 to
6ef24fb
Compare
…ebui-smoke-cli package
6ef24fb to
39693f0
Compare
0819c45 to
0897166
Compare

Resolves #7379(FR-2875), #7380(FR-2876)
Part of Epic FR-2871 — WebUI Smoke CLI.
Summary
@smoke,@smoke-admin,@smoke-user,@smoke-anytag convention ine2e/E2E-TEST-NAMING-GUIDELINES.mdwith rules (single-account, self-cleanup, <10 min, no visual regression, no outbound deps)packages/backend.ai-webui-smoke-cli/workspace package with commander-based CLI:listandversionworking;runis a stub that prints "Not yet implemented. Coming in FR-2877." and exits 2Tagged specs
e2e/auth/login.spec.ts(Before Login + Login describes)@smoke-any(added; existing@smokekept)e2e/dashboard/dashboard.spec.ts@smoke,@smoke-anye2e/session/session-lifecycle.spec.ts@smoke,@smoke-usere2e/vfolder/file-create.spec.ts(write-path describe)@smoke,@smoke-usere2e/agent/agent.spec.ts@smoke,@smoke-adminExisting tags (
@critical,@regression,@functional, etc.) were preserved — smoke tags are additive metadata.Package surface
rundeclares the full flag surface (--endpoint,--email,--password,--role,--include,--exclude,--pages,--workers,--timeout,--output,--headed,--insecure-tls, etc.) so--helpdocuments the eventual API — every flag is a no-op at this stage.Out of scope
playwright.smoke.config.ts→ FR-2877 (next PR in stack)--password-stdinplumbing, role auto-detection → FR-2878TODOs left in code for FR-2877
src/version.ts— inject real WebUI git SHA at build timesrc/version.ts— read Playwright version once the runner depends on itVerification
pnpm install— picks up the new workspace viapackages/*globpnpm --filter backend.ai-webui-smoke-cli build— PASSpnpm --filter backend.ai-webui-smoke-cli exec bai-smoke list— prints 5 categoriespnpm --filter backend.ai-webui-smoke-cli exec bai-smoke version— prints0.1.0-alpha.0, node, platformpnpm --filter backend.ai-webui-smoke-cli exec bai-smoke run— prints stub message, exits2bash scripts/verify.sh— Relay/Lint/Format PASS. TypeScript FAIL with pre-existing errors inreact/src/components/{ImportArtifactRevisionToFolderModal,ModelCardDeployModal,MyKeypairManagementModal,PurgeUsersModal,ScanArtifactModelsFromHuggingFaceModal,VFolderDeployModal}.tsx,react/src/hooks/useDeploymentLauncher.ts,react/src/pages/{DeploymentLauncherPage,ReservoirArtifactDetailPage}.tsx. Confirmed these files exist unchanged onmainand are not touched by this PR.🤖 Generated with Claude Code