test(vscode): add test-cli lifecycle baseline - #9592
Open
Brian Lam (lambrianmsft) wants to merge 71 commits into
Open
Brian Lam (lambrianmsft) wants to merge 71 commits into
Brian Lam (lambrianmsft) wants to merge 71 commits into
Conversation
Contributor
🤖 AI PR Validation ReportPR Review ResultsThank you for your submission! Here's detailed feedback on your PR title and body compliance:✅ PR Title
✅ Commit Type
✅ Risk Level
✅ What & Why
✅ Impact of Change
✅ Test Plan
✅ Contributors
|
| Section | Status | Recommendation |
|---|---|---|
| Title | ✅ | No changes needed |
| Commit Type | ✅ | No changes needed |
| Risk Level | ✅ | High is correct (auth/credential handling) |
| What & Why | ✅ | No changes needed |
| Impact of Change | ✅ | No changes needed |
| Test Plan | ✅ | No changes needed |
| Contributors | ✅ | Optionally tag reviewers/PMs |
| Screenshots/Videos | Not required (no visual change) |
All required checks pass — this PR is compliant and cleared to merge.
Powered by: Copilot CLI (claude-opus-4.8) | Last updated: Sun, 27 Sep 2026 20:56:42 GMT
Contributor
There was a problem hiding this comment.
Note
Copilot was unable to run its full agentic suite in this review.
Pull request overview
Adds a latest-stable @vscode/test-cli E2E baseline for the VS Code Logic Apps extension, enabling Create Workspace and select lifecycle tests to run independently of ExTester while improving CI visibility.
Changes:
- Added root and app-level
pnpmscripts plus Node wrappers to run label-based CLI E2E and multi-host lifecycle flows. - Introduced new CLI E2E test utilities (dialog guard, CDP helpers, screenshots) and expanded smoke / Create Workspace coverage.
- Updated CI (
vscode-e2e.yml) to run a Create Workspace CLI matrix with structured results + aggregate reporting.
Reviewed changes
Copilot reviewed 33 out of 44 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| package.json | Adds root-level forwarding scripts for new CLI E2E entry points. |
| libs/vscode-extension/src/graphify-out/GRAPH_REPORT.md | Updates generated graph report snapshot metadata/content. |
| libs/data-mapper-v2/src/graphify-out/GRAPH_REPORT.md | Updates generated graph report snapshot metadata/content. |
| libs/chatbot/src/graphify-out/GRAPH_REPORT.md | Updates generated graph report snapshot metadata/content. |
| libs/a2a-core/src/graphify-out/GRAPH_REPORT.md | Updates generated graph report snapshot metadata/content. |
| apps/vs-code-designer/src/test/e2e/workspaceArtifacts.ts | Adds helpers/assertions for generated workspace artifacts (tasks/launch/settings/csproj). |
| apps/vs-code-designer/src/test/e2e/webviewTabs.ts | Adds helpers to find/wait/close webview tabs in VS Code. |
| apps/vs-code-designer/src/test/e2e/visibleDelay.ts | Adds optional “keep host visible” delay for local debug runs. |
| apps/vs-code-designer/src/test/e2e/testUtils.ts | Adds small string/path helper utilities for tests. |
| apps/vs-code-designer/src/test/e2e/screenshot.ts | Adds screenshot capture utilities (Windows screen + CDP). |
| apps/vs-code-designer/src/test/e2e/extension.test.ts | Expands activation smoke to assert dist loading, dependencies, empty startup, and dialog suppression. |
| apps/vs-code-designer/src/test/e2e/dialogGuard.ts | Adds dialog interception/allowlist to fail tests on unexpected prompts. |
| apps/vs-code-designer/src/test/e2e/createWorkspaceTypes.ts | Adds typed models for Create Workspace test cases. |
| apps/vs-code-designer/src/test/e2e/createWorkspaceParityMap.md | Documents ExTester↔CLI parity mapping for Create Workspace + lifecycle coverage. |
| apps/vs-code-designer/src/test/e2e/createWorkspaceCases.ts | Adds curated Create Workspace case generators and label filtering. |
| apps/vs-code-designer/src/test/e2e/commands.test.ts | Replaces generic command listing with explicit Logic Apps command/config assertions + dialog guard. |
| apps/vs-code-designer/src/test/e2e/cdpFormHelpers.ts | Adds CDP-based Create Workspace webview interaction helpers (fields, dropdowns, radios). |
| apps/vs-code-designer/src/test/e2e/cdpClient.ts | Adds a lightweight CDP client to connect to VS Code’s remote debugging targets. |
| apps/vs-code-designer/src/test/e2e/azureAuthWarmup.test.ts | Adds Azure auth warm-up test for durable local profiles. |
| apps/vs-code-designer/src/test/e2e/README.md | Major documentation expansion for running CLI E2E locally and in CI. |
| apps/vs-code-designer/src/main.ts | Adds env-gated minimal activation and env-gated workspace ensure skip for CLI test runs. |
| apps/vs-code-designer/src/app/utils/codeless/getAuthorizationToken.ts | Adds test-gated env token fallback for silent auth; fixes return type to allow undefined. |
| apps/vs-code-designer/src/app/utils/codeless/test/getAuthorizationToken.test.ts | Adds unit coverage for the new test-gated Azure CLI token fallback behavior. |
| apps/vs-code-designer/scripts/summarize-e2e-cli-results.js | Adds Mocha log parsing + JSON/JUnit/summary generation and aggregate reporting. |
| apps/vs-code-designer/scripts/run-e2e-cli.js | Adds wrapper to run labels/lifecycle flows, filter noise, enforce “no dialogs”, and clean temp workspaces. |
| apps/vs-code-designer/scripts/open-e2e-cli-vscode.js | Adds helper to open latest-stable VS Code with an isolated profile for interactive verification/auth. |
| apps/vs-code-designer/package.json | Replaces direct vscode-test call with wrapper scripts for CLI E2E and lifecycle flows. |
| apps/vs-code-designer/.vscode-test.mjs | Expands @vscode/test-cli config to multiple labels, env forwarding, and per-run user-data settings. |
| .squad/knowledge/vscode-e2e-testing.md | Documents learnings/patterns for CLI Create Workspace CI structured results and parity scripts. |
| .github/workflows/vscode-e2e.yml | Adds Create Workspace CLI matrix job + aggregate report job and wires into overall summary. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Add latest-stable @vscode/test-cli coverage for activation, command registration, Create Workspace parity labels, generated workspace lifecycle smoke, CI wiring, and documentation while preserving ExTester coverage. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Extract shared CLI helper utilities and add an ExTester-to-test-cli Create Workspace parity map for traceability. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add traceability from ExTester Create Workspace cases to @vscode/test-cli labels and extract shared Create Workspace case metadata. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add latest-stable @vscode/test-cli coverage for VS Code activation, workspace creation, generated workspace lifecycles, Azure auth warm-up, MSN Weather designer authoring, and codeful debug task parity. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Brian Lam (lambrianmsft)
force-pushed
the
lambrian-microsoft-vs-code-test-cli-baseline
branch
from
September 1, 2026 22:27
ef950fb to
097593f
Compare
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Brian Lam (lambrianmsft)
deployed
to
standalone-ephemeral
September 15, 2026 19:04 — with
GitHub Actions
Active
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
VS Code keeps hidden quick-input widgets in the DOM, and the previous selector could bind a stale hidden palette after dependency validation. Locate the rendered widget by computed style and type into that input so fixture creation can open the workspace command reliably. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Marketplace VSIX responses are gzip-encoded. Plain curl saved the compressed stream with a .vsix name, causing VS Code to reject fallback installs as invalid zips. Request decompression and discard invalid cached package files before retrying. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
On ADO Linux, Selenium can find the visible QuickInput but still fail the click/sendKeys path with a visibility timeout. Set the active QuickInput value through the native input value setter and dispatch input/change events so the command palette updates without requiring Selenium to interact with the field. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
ExTester Workbench.openCommandPrompt can fail its internal visibility wait on ADO Linux before the test can type into the command palette. Open the palette with raw WebDriver keyboard input and select the visible create-workspace quick pick from the DOM, while preserving the guard against the package import command. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The raw DOM quick-pick selection can leave VS Code with the intended command highlighted but not executed on ADO Linux. Send Enter immediately after selecting the guarded create-workspace pick so the command is activated reliably. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Run product dependency validation in a disposable scenario before creating workspace fixtures so hosted Linux QuickInput state cannot poison the wizard run. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use ExTester's quick-pick selection after robust command-palette typing so the Create Workspace command is actually invoked on hosted Linux. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Invoke the product create-workspace command through the existing test helper extension for fixture setup, avoiding hosted Linux command-palette execution flakiness while still driving the real webview. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Track helper command invocations by request id and proceed once the product command starts, since the command can stay pending while the webview remains open. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Run the new @vscode/test-cli smoke by default and leave the legacy ExTester fixture/scenario shards opt-in, avoiding the pinned 1.108.0 fixture path in the ADO baseline. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use a shallow checkout for the Windows runtime dependency seeding job so GitHub runners on case-insensitive filesystems do not fail when remote refs differ only by casing. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Skip the legacy ExTester fixture bootstrap/matrix from the required GitHub E2E summary and use dependency validation only for Windows runtime dependency cache seeding, relying on the passing test-cli create-workspace checks for the baseline. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Stop gating the Windows func self-heal ExTester job while the legacy p41a fixture bootstrap is retired in favor of the passing test-cli create-workspace coverage. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Publish @vscode/test-cli JUnit output and smaller results, log, and screenshot artifacts from the active ADO validation template. Expand the ADO VS Code validation stage to run the lightweight create-workspace labels in parallel with the unit smoke path and align the stage pool with the requested 1ES hosted pool. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep the ADO VS Code E2E stage on the hosted pool path that previously produced runnable jobs, while retaining the structured test result and artifact publication changes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use compact per-case user-data suffixes for create-workspace matrix labels so VS Code can create Linux IPC sockets on hosted agents. Strip ANSI/control characters before writing JUnit so ADO can ingest failure results. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Capture non-Windows test-cli screenshots through the VS Code workbench CDP endpoint so Linux ADO runs publish real PNGs. Add a parallel Windows test-cli lane for unitTests and createWorkspaceBehavior with distinct result, log, and screenshot artifacts. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use the VS Code workbench CDP endpoint as the primary CLI screenshot capture path across platforms. Keep Windows desktop capture as a fallback, but do not fail E2E tests when hosted agents lack an interactive screen handle. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Increase the Create Workspace field visibility wait and allow one additional pre-submit retry for transient blank webview reloads observed in ADO once screenshot capture became active. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Retry the initial Create Workspace content assertion so transient blank webview reloads on hosted agents do not fail before the page settles. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add a Create Workspace behavior-smoke label for hosted Windows validation so the Windows lane still exercises webview review/back behavior and screenshot publishing without depending on the field-validation test that is blocked by C# Dev Kit native addon startup on the hosted Windows image. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Enable the live MSN Weather workflow lifecycle in the VS Code E2E ADO stage and the standalone CLI pipeline, include it in the aggregate summary gate, and allow the CLI lifecycle runner to use headless Azure auth in CI without a pre-existing signed-in VS Code profile. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Retry blank create-workspace webview contexts in the behavior lane and allow the live MSN Weather pipeline job to extend designer startup waits on cold ADO agents. Also update the Azure auth warm-up test to use the exported azureauth provider API so the E2E TypeScript compile passes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Retry blank Create Workspace contexts in the initial validation path and invoke the designer command with the explicit workflow URI during lifecycle tests so ADO does not depend on active editor state. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep servicing designer quick-pick prompts while waiting for the webview tab to open in lifecycle tests. This prevents slow ADO live-connector runs from blocking on delayed Azure connector prompts. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add the Windows MSN Weather lifecycle lane to the shared 1ES VS Code E2E stage and publish failure screenshots as ADO test-result attachments via JUnit attachment markers. The E2E runner now records failure screenshots in a manifest scoped by test label so failed ADO test cases link directly to the relevant image without relying only on separate screenshot artifacts. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Commit Type
Risk Level
What & Why
Adds a latest-stable
@vscode/test-clibaseline for the VS Code Logic Apps extension so selected extension-host smoke and generated-workspace lifecycle tests can run independently of ExTester while preserving ExTester for deep webview DOM coverage.This PR also layers in the ADO Workload Identity Federation auth path needed for complete VS Code E2E coverage in 1ES/MountainPass-compliant Azure DevOps pipelines. The extension now has a provider seam that can use VS Code auth locally and Azure DevOps federated credentials in CI, while preserving existing silent auth, tenant handling, node subscription credential precedence, and the test-cli token fallback.
Impact of Change
@vscode/test-cliruns, Azure profile warm-up, generated workspace lifecycle validation, and CI result summaries.@microsoft/vscode-azext-azureauthfor Azure DevOps subscription provider support.Test Plan
@vscode/test-clihost, local unit/compile validation, YAML parse validation for GitHub and ADO pipeline changesValidation run locally before integration:
Additional validation after integrating ADO/WIF auth and resolving the
mainmerge:Results:
.github/workflows/vscode-e2e.yml,.azure-pipelines/1esmain.yml, and the new VS Code E2E ADO templates.Contributors
Brian Lam (@lambrianmsft)
Screenshots/Videos
N/A - test infrastructure, authentication plumbing, and documentation changes only.