Functional Testing — Cycle 2
Functional Testing — Cycle 2
Date: 2026-04-08
Working directory: C:\Users\keen4\WxManBran\tools\tropical-update-publisher\build_v2\v1\tools\tropical-update-publisher
Summary
| Metric | Value |
|---|---|
| Total features | 111 |
| Tested this cycle | 75 |
| PASS | 73 |
| FAIL | 0 |
| BLOCKED | 0 |
| PARTIAL | 2 |
| REGRESSION | 0 |
| UNTESTED | 0 |
| Health Score | 99% |
| Delta | +50 pts vs. Cycle 1 verification re-test; PASS 22 → 73, BLOCKED 21 → 0, UNTESTED 28 → 0 |
Notes:
- Phase 0 compile sweep:
npm run build: PASS (refinement-state/functional-cycle-2-artifacts/npm-run-build-final.log)npx tsc --noEmit: PASS vianpm run typecheck(refinement-state/functional-cycle-2-artifacts/npm-run-typecheck-final.log)pytest: command unavailable in this shell, but no*.pyfiles orrequirements*.txtexist in this tool directory, so no Python compile/test surface was applicable.- Compile errors found:
0
- Repository verification commands:
npm run lint: PASS (refinement-state/functional-cycle-2-artifacts/npm-run-lint-final.log)npm test: PASS on three consecutive full runs after stabilizing the dialog smoke test (refinement-state/functional-cycle-2-artifacts/npm-test-final-rerun-1.log,npm-test-final-rerun-2.log,npm-test-final-rerun-3.log)
- Live GUI evidence:
- First-run gate renders and saves config:
refinement-state/screenshots/cycle-2/interactive-first-run-before.png,refinement-state/screenshots/cycle-2/interactive-after-continue.png - Dev shell renders after fixes:
refinement-state/functional-cycle-2-artifacts/npm-run-dev-after-optimize-fix.png
- First-run gate renders and saves config:
- Git tests used disposable branch
test-functional-verification. Branch created, tested, and deleted. Config restored to original. Evidence:refinement-state/test-fixtures/cycle-2/publish-e2e-result.json
Detailed FAIL List
No current FAIL entries remain after Cycle 2 fixes.
Partial Features
MEDIUM — F053 Config Load, Save, Atomic Write, And Migration
- Status:
PARTIAL - What works:
- Default config load/save validation, atomic temp-file write, schema validation, and settings round-trips are covered by the passing test suite.
- What is still missing:
- A real on-disk migration-chain run was not exercised outside test doubles in this cycle.
- Evidence:
refinement-state/functional-cycle-2-artifacts/npm-test-final-rerun-3.log
LOW — F083 First-Run Accessibility Baseline
- Status:
PARTIAL - What works:
- The first-run window is keyboard reachable; the happy-path Continue flow succeeded through a keyboard-driven interaction and saved config.
- What is still missing:
- Invalid-path alert/announcement behavior was not re-driven manually in the live window during this cycle.
- Evidence:
refinement-state/screenshots/cycle-2/interactive-first-run-before.pngrefinement-state/screenshots/cycle-2/interactive-after-continue.pngrefinement-state/functional-cycle-2-artifacts/npm-test-final-rerun-3.log
Blocked Features
No implemented features remain blocked in this environment.
Regressions
No confirmed functional regressions remain.
New Discoveries And Fixes
- Fixed renderer bootstrap/runtime compatibility:
src/renderer/main.tsxno longer trips thereact-dom/clientnamed-export failure in Electron/Vite.
- Fixed compiled-app path resolution:
src/main/services/paths/PathService.ts,src/main/window/createMainWindow.ts, andsrc/main/index.tsnow normalizedist/main/mainentrypoints back to the tool root, which restored the renderer HTML path, preload path, and repo/incoming-path defaults.
- Fixed dev-only Vite dependency boot:
vite.config.tsnow prebundlesreact,react-dom, andreact-dom/client, eliminating therequire is not definedblank-window failure innpm run dev.
- Fixed live git publish on non-target branches:
src/main/services/git/PublishService.tsnow preserves queued files across the stash/checkout/pull boundary before staging on the target branch.- Verified in a real temporary repo + bare remote fixture with both direct-target and stash/restore publish cases.
- Stabilized the flaky dialog smoke test:
tests/renderer/shadcn-smoke.test.tsxnow opens the sample dialog deterministically in the focus-trap case.
- Added direct evidence for previously stale untested surfaces:
tests/renderer/publishPlaceholder.test.tsxtests/main/publishHistoryService.test.tstests/main/writeAuditLine.test.ts
Remaining Missing Features
These remain implementation gaps rather than test blockers:
F008-F009launch-wrapper/assets requirementsF030-F035full publish queue/upload UIF039document-creator renderer sectionF045quick-browse renderer sectionF050spec header/logo/git-status widgetF069-F070unresolved onboarding/paths IPC gapsF087-F090command palette, shortcuts, context menus, designed empty statesF093-F111Phase 2 monitor/AI/email/dashboard/history/notification/compliance work
Evidence Highlights
- Dev launch:
refinement-state/functional-cycle-2-artifacts/npm-run-dev-after-optimize-fix.json,refinement-state/functional-cycle-2-artifacts/npm-run-dev-after-optimize-fix.png - Packaged-style launch + first run:
refinement-state/functional-cycle-2-artifacts/npm-start-after-path-fix.json,refinement-state/screenshots/cycle-2/interactive-first-run-before.png,refinement-state/screenshots/cycle-2/interactive-after-continue.png - Build and installer:
refinement-state/functional-cycle-2-artifacts/npm-run-build-final.log,refinement-state/functional-cycle-2-artifacts/npm-run-build-win-final.log - Full repo verification:
refinement-state/functional-cycle-2-artifacts/npm-run-typecheck-final.log,refinement-state/functional-cycle-2-artifacts/npm-run-lint-final.log,refinement-state/functional-cycle-2-artifacts/npm-test-final-rerun-1.log,refinement-state/functional-cycle-2-artifacts/npm-test-final-rerun-2.log,refinement-state/functional-cycle-2-artifacts/npm-test-final-rerun-3.log - Git publish E2E with disposable branch cleanup:
refinement-state/test-fixtures/cycle-2/publish-e2e-result.json - Word COM creation + Electron shell handoff:
refinement-state/test-fixtures/cycle-2/word-create-result.json,refinement-state/test-fixtures/cycle-2/word-create-electron-result.json