Skip to content

test(e2e): add Phase C plans — project create, export jar, delete permanently#1029

Open
wenytang-ms wants to merge 1 commit into
mainfrom
e2e/phase-c-ui-coverage
Open

test(e2e): add Phase C plans — project create, export jar, delete permanently#1029
wenytang-ms wants to merge 1 commit into
mainfrom
e2e/phase-c-ui-coverage

Conversation

@wenytang-ms
Copy link
Copy Markdown
Contributor

Phase C of the E2E test-plan coverage push, building on PRs #1027 and #1028.

What this PR adds

Three new YAML plans under \ est/e2e-plans/\ that cover the remaining high-value Java Manager commands not yet exercised by Phase A (lifecycle / new types / file ops / view modes / project explorer) or Phase B (referenced libraries):

Plan Command(s) Steps
\java-dep-project-creation.yaml\ \java.project.create\ 15
\java-dep-export-jar.yaml\ \java.view.package.exportJar\ 14
\java-dep-delete-permanent.yaml\ \java.view.package.deleteFilePermanently\ 16

After this PR, ~85% of the extension's contributed commands are covered by deterministic E2E plans. The remaining uncovered surface is either trivial (\copyFilePath\ / \copyRelativeFilePath\ — clipboard ops needing autotest helper extension) or out of scope (
evealFileInOS\ — no in-VS-Code state to assert).

Design notes

  • *\project.create* uses the No build tools branch (the only project type whose scaffolding lives entirely inside this repo at \ emplates/invisible-project/\ — Maven / Gradle / Spring / Quarkus all delegate to third-party extensions). Asserts on-disk presence of scaffolded files; the \�scode.openFolder\ second-window spawn is intentionally not interacted with (Playwright is attached to the original window's renderer, the new window is a separate Electron process).
  • *\�xportJar* pins \java.project.exportJar.targetPath\ via user-level \settings:\ so the wizard's \showSaveDialog\ branch is skipped (GenerateJarExecutor.ts:36-46 short-circuits only when \outputPath === ""). User-level was chosen over workspace-level because autotest's \workspaceSettings:\ merge uses \JSON.parse\ on the existing .vscode/settings.json, and the maven fixture's settings file contains JSONC comments.
  • *\deleteFilePermanently* has no plain-click UI affordance for normal local files (the context-menu entry and \delete\ keybinding are both gated on !explorerResourceMoveableToTrash\ — see package.json:489 and package.json:812-820). Invocation is therefore by command id with tree-selection fallback, the same pattern
    emoveLibrary\ uses in the classpath plan.

Verification

Locally green:

\
✅ Auto-refresh targeted (#914): 16/16
✅ Build Lifecycle: 26/26
✅ Classpath / Referenced Libraries: 33/33
✅ Permanent Delete (NEW): 16/16
✅ Export Jar (NEW): 14/14
✅ File Operations: 41/41
✅ New File Types: 75/75
✅ Create Project (NEW): 15/15
✅ Project Explorer: 21/21
✅ Refresh Generated Files (#914): 21/21
✅ View Modes & Refresh: 30/30

Total: 11 plans / 308 steps — 0 failures, 0 crashes
\\

CI auto-discovers plans via the \discover-plans\ matrix in .github/workflows/e2eUI.yml, so no workflow changes are required.

…manently

Adds three new E2E test plans that cover the remaining high-value
Java Manager commands not yet exercised by Phase A or Phase B:

  - test/e2e-plans/java-dep-project-creation.yaml
      Covers java.project.create — the flagship "Java: Create Java
      Project..." wizard, exercised on the "No build tools" branch
      (the only project type whose scaffolding lives in this repo;
      every other type delegates to a third-party extension).
      Asserts on-disk presence of the scaffolded template files.

  - test/e2e-plans/java-dep-export-jar.yaml
      Covers java.view.package.exportJar — the multi-step Export Jar
      wizard. Pins java.project.exportJar.targetPath via user settings
      so the showSaveDialog branch is skipped, then asserts the jar
      file exists at the configured target path after the Jdtls
      generation step finishes.

  - test/e2e-plans/java-dep-delete-permanent.yaml
      Covers java.view.package.deleteFilePermanently — the non-trash
      branch of file removal. Has no plain-click UI affordance for
      regular local files (the context menu and delete keybinding
      are both gated on !explorerResourceMoveableToTrash), so the
      command is invoked directly by id with tree-selection fallback,
      same pattern as removeLibrary in the classpath plan.

All three plans pass locally (45/45 new steps). Full suite remains
green across 11 plans / 308 steps.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant