Repository navigation
test: add packaged VS Code E2E smoke coverage - #302
Open
Sanjay Singh (san360) wants to merge 5 commits into
Open
Sanjay Singh (san360) wants to merge 5 commits into
Sanjay Singh (san360) wants to merge 5 commits into
Conversation
Add isolated synthetic-session fixtures and real VSIX desktop smoke coverage. Run browser and desktop suites in PR/release pipelines and schedule cross-platform compatibility checks. Resolves #208 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Dependency ReviewThe following issues were found:
|
Contributor
There was a problem hiding this comment.
🔵 Needs a closer look
The new release-blocking desktop harness needs hosted Linux and macOS validation beyond the reported Windows results.
No open issues 🎉
What changed in this PR
Adds packaged-extension smoke tests inside real VS Code, complementing the existing unit and browser suites and addressing #208’s release-testing need.
Changes:
- Adds isolated synthetic fixtures and desktop coverage for activation, workers, navigation, reloads, reopening, and empty data.
- Integrates browser and desktop tests into CI and release gates, preserving the tested VSIX and failure diagnostics.
- Adds cross-platform compatibility runs, contributor guidance, and desktop-test integration with existing development checks.
| File | Description |
|---|---|
vitest.config.mts |
Includes desktop fixture unit tests. |
tsconfig.json |
Type-checks desktop test sources. |
tests/vscode/tsconfig.build.json |
Compiles the desktop harness separately. |
tests/vscode/suite/populated.spec.ts |
Tests real session analysis and dashboard interactions. |
tests/vscode/suite/empty.spec.ts |
Tests isolated no-data behavior. |
tests/vscode/run.ts |
Orchestrates VSIX installation, scenarios, diagnostics, and hashing. |
tests/vscode/fixtures.ts |
Creates isolated fixtures and verifies input integrity. |
tests/vscode/fixtures.test.ts |
Tests fixture parsing, isolation, and runner helpers. |
tests/vscode/dashboard.ts |
Provides reusable desktop dashboard interactions. |
playwright.config.ts |
Adds failure diagnostics and tighter CI execution settings. |
package.json |
Adds desktop test commands and dependencies. |
package-lock.json |
Locks desktop testing dependencies and transitive updates. |
knip.json |
Registers desktop test sources and entry points. |
eslint.config.mjs |
Extends lint coverage to desktop tests. |
CONTRIBUTING.md |
Documents execution, isolation, and regression-test maintenance. |
.vscodeignore |
Excludes desktop runtime files and test artifacts from packaging. |
.github/workflows/vscode-compatibility.yml |
Tests minimum and latest VS Code across three operating systems. |
.github/workflows/release.yml |
Gates release publication on checks and E2E tests. |
.github/workflows/ci.yml |
Tests and uploads the exact packaged VSIX. |
.github/actions/e2e/action.yml |
Shares E2E setup, execution, caching, and diagnostic uploads. |
Review effort: Balanced
Aymen (aymenfurter)
approved these changes
Oct 23, 2026
Aymen (aymenfurter)
approved these changes
Oct 23, 2026
Wait for the replacement document and reacquire transiently stale frames within one deadline. Keep reload execution and smoke assertions unchanged, with deterministic regression coverage for the Linux CI race. Fixes CI for #302; relates to #208. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Capture six named synthetic-data milestones after assertions and chart rendering. Generate an offline screenshot gallery and link its diagnostics artifact from the GitHub Actions summary, preserving failure outcomes and existing failure screenshots. Relates to #208 and #302. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Check in fictional TypeScript, Python and Go projects with seven days of raw sessions and edit timelines. Verify meaningful Dashboard, Timeline, Output and Patterns results, publish the synthetic input files and dataset manifest, and capture nine UI milestones. No personal logs were read or copied. Relates to #208 and #302. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Handle ExTester's precise stale-outer-frame wrapper, remove inherited Mocha selection filters, and wait for the default dashboard after reload. Add regression coverage and run compatibility checks for desktop-harness PR changes. Addresses review feedback on #302; relates to #208. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
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.

Description
Add real packaged-VSIX testing alongside the existing unit and browser suites, with inspectable synthetic input data and screenshots of successful UI journeys.
tests/vscode/data/projects.json. Generate raw chat sessions and edit timelines: 3 projects, 21 sessions, 63 requests, 315 added lines and 294 net lines over 7 days. Reload adds one session, producing 22 sessions, 66 requests and 330 added lines. No personal logs were read or copied; input integrity is asserted.CONTRIBUTING.md.The review fixes handle ExTester's precise wrapped stale-outer-frame error within the original deadline, prevent inherited
MOCHA_GREP/MOCHA_INVERTfrom silently selecting a subset, and avoid clicking while the replacement dashboard is still laying out.Validation on the current revision:
vscode/<run>/gallery.html. Each suite also includesdataset.json,fixtures/initial,fixtures/reload, and individual PNGs. The empty suite intentionally has no session inputs.npm run checknpm run test:e2ewithCI=truenpm run test:vscode -- --vsix ai-engineer-coach-0.1.0.vsixMOCHA_GREPandMOCHA_INVERTvalues inherited by the parent; the complete suite still ran.npm run test:vscode -- --vsix ai-engineer-coach-0.1.0.vsix --vscode-version latestnpm run check-sizego run github.com/rhysd/actionlint/cmd/actionlint@v1.7.12 .github\workflows\ci.yml .github\workflows\release.yml .github\workflows\vscode-compatibility.ymlTry it locally: with Node 22, run
npm cithennpm run test:vscode. It builds the VSIX and runs the isolated synthetic-data suite. To use an existing artifact without rebuilding, pass-- --vsix ai-engineer-coach-0.1.0.vsix. For headless Linux, first runnpx playwright install-deps chromium, then prefix the desktop command withxvfb-run -a. Local galleries and raw fixture copies are undertest-results/vscode/<run>.Related Issues
Resolves #208.
Checklist
npm run checkpasses (typecheck + lint + spellcheck + knip + tests)