feat(e2e): simplify E2E config and add weekly sanity workflow#1533
Open
amitjoshi438 wants to merge 13 commits intomainfrom
Open
feat(e2e): simplify E2E config and add weekly sanity workflow#1533amitjoshi438 wants to merge 13 commits intomainfrom
amitjoshi438 wants to merge 13 commits intomainfrom
Conversation
Automates manual web sanity test suite with Playwright tests that run against a real Power Platform environment. Includes tests for extension activation, site tree loading, file operations, file save/revert, and navigation. Adds a nightly GitHub Actions workflow (E2ESanity.yml). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Orchestration log: e2e test infrastructure review findings - Session log: Critical (13 hardcoded waits), major (POM, URL mismatch), minor issues - Decision inbox merged into decisions.md - Recommendations for test maintainability and CI integration Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Orchestration log: Keaton approved Hockney's e2e review with adjustments - Session log: Summary of verdict and P0/P1/P2 priority plan - Decision merge: Inbox entry consolidated into decisions.md with full action plan - Hockney history: Append Keaton lead decision and severity adjustments - Adjusted POM severity to Minor (premature for 5 specs) - Dismissed serial marker finding (config already enforces serial execution) - Elevated URL casing issue: test sends camelCase, enum is lowercase, production query failures likely Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Orchestration log: 2026-04-02T07:35:00Z Fenster P1 leaf-node detection + storageState caching - Session log: Brief summary of both fixes - Merged decision inbox: fenster-e2e-auth-caching.md → decisions.md - Updated hockney/history.md: P1 completion note - Updated mcmanus/history.md: storageState caching details Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Replace all 13 waitForTimeout() calls with condition-based waits - Fix URL builder param casing to match queryParameters enum (case-sensitive) - Fix vacuous assertion (toBeGreaterThanOrEqual(0) -> toBeGreaterThan(0)) - Improve auth error handling: swallow timeouts, propagate real errors - Replace brittle aria-expanded leaf-node detection with .monaco-tl-twistie.collapsible - Add storageState caching for auth reuse across test runs Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep squad team state local-only — not committed to repo. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Moved squad exclusions to .git/info/exclude (machine-local) to keep .gitignore clean of non-project entries. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Replace individual env vars (org URL, site IDs, tenant) with single PP_TEST_VSCODE_URL containing the full VS Code Web URL - Remove TestSiteConfig interface and buildVSCodeWebUrl helper - Simplify .env.example to 3 vars: URL, username, password - Trim E2ESanity.yml to 3 secrets, bump actions to v4 - Add --with-deps to Playwright install for CI runners - Add 'node' to e2e tsconfig types to fix process reference Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Change E2ESanity.yml schedule from nightly to weekly (Monday 2AM UTC) - Remove e2e-sanity job from PullRequest.yml - E2E tests run via E2ESanity.yml (weekly + manual dispatch only) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Adds a Playwright-based E2E “sanity” suite for the VS Code Web extension (insiders.vscode.dev) that authenticates via Microsoft login, opens a Power Pages site, and validates key UI flows; plus a scheduled/manual GitHub Actions workflow to run it regularly.
Changes:
- Introduces Playwright E2E harness (fixtures, selectors, URL helper) and 5 sanity specs under
src/e2e/. - Adds
test-e2enpm script and Playwright dependency. - Adds a weekly + manual
E2E Sanity TestsGitHub Actions workflow and ignores local E2E artifacts (.env, auth state, reports).
Reviewed changes
Copilot reviewed 13 out of 15 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/E2ESanity.yml |
New scheduled/manual workflow to run Playwright E2E sanity tests and upload artifacts. |
.gitignore |
Ignores E2E local config/auth cache and Playwright outputs. |
package.json |
Adds test-e2e script and Playwright test dependency. |
package-lock.json |
Locks Playwright test dependency. |
src/e2e/.env.example |
Documents required env vars for local E2E runs. |
src/e2e/playwright.config.ts |
Playwright config, reporters, retries, and storageState reuse; loads src/e2e/.env. |
src/e2e/fixtures/vscode-web.fixture.ts |
Provides authenticated VS Code Web page fixture with login + optional auth caching. |
src/e2e/helpers/selectors.ts |
Centralized DOM selectors for VS Code Web + Microsoft login. |
src/e2e/helpers/url-builder.ts |
Reads PP_TEST_VSCODE_URL and errors if missing. |
src/e2e/tests/extension-activation.spec.ts |
Basic workbench/activation sanity assertions. |
src/e2e/tests/site-tree.spec.ts |
Verifies explorer renders and key entity folders appear. |
src/e2e/tests/navigation.spec.ts |
Confirms explorer presence and checks for error notifications. |
src/e2e/tests/file-operations.spec.ts |
Opens a file from the tree and verifies an editor tab appears. |
src/e2e/tests/file-save.spec.ts |
Edits, saves, undoes, and re-saves a file; checks for dialogs/errors. |
src/e2e/tsconfig.json |
TypeScript config for the E2E suite output/build. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
priyanshu92
approved these changes
Apr 2, 2026
Contributor
priyanshu92
left a comment
There was a problem hiding this comment.
Looks great overall. Let's keep pages specific tests in power-pages folder
priyanshu92
reviewed
Apr 2, 2026
Contributor
There was a problem hiding this comment.
We can mention Web in the file name
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.
What this PR does
This PR sets up Playwright E2E sanity tests for the VS Code Web extension — tests that open a real Power Pages site in VS Code Web (insiders.vscode.dev), authenticate via Microsoft login, and verify core functionality: extension activation, file tree loading, navigation, file operations, and file save.
E2E Test Coverage (5 specs)
How it works
insiders.vscode.devwith the test site URL.auth/storageState.json— subsequent runs skip loginSecrets needed (repo Settings → Secrets → Actions)
PP_TEST_VSCODE_URLPP_TEST_USERNAMEPP_TEST_PASSWORDHow to run
Test plan
npm run test-e2eworks locally with.envcontaining the 3 varsPullRequest.ymlCI passes (no E2E job on non-release PRs)🤖 Generated with GitHub Copilot