Skip to content

fix: migrate Phase-1 live check off tabbed Notepad onto mspaint (#20) - #41

Merged
CameronCrow merged 1 commit into
mainfrom
fix/20-migrate-live-check-notepad-to-mspaint
Jul 23, 2026
Merged

CameronCrow merged 1 commit into
mainfrom
fix/20-migrate-live-check-notepad-to-mspaint

Conversation

@CameronCrow

@CameronCrow CameronCrow commented Jul 23, 2026 •

Copy link
Copy Markdown
Owner

Closes #20

Summary

  • Replaces tests/test_notepad_live.py with tests/test_mspaint_live.py. Current Windows 11 notepad.exe is the single-process tabbed Notepad, so PID-scoped ownership (Phase 2A: PID-scoped window ownership #12) cannot launch-and-own it — app_session/ui.window(pid=...) fails safe there rather than risk attaching to one of Cameron's real open tabs.
  • mspaint is already the live target elsewhere in the suite (test_app_session.py, test_acceptance_phase2.py), so this makes the Phase-1 mechanism proof ownable again on current Win11.
  • Preserves the exact discipline the Notepad version demonstrated: act→verify round trip with independent re-reads, re-assert after actions (old state truly cleared, not appended to), right-window-among-several, and a real modal save-prompt asserted structurally and dismissed non-destructively.
  • Every assertion is grounded in mspaint's real accessibility tree, captured live on Windows 11 while writing the check (not guessed) — see the new file's module docstring for what was tried and dropped (the Zoom text field, which lives inside a collapsed combo box and was flaky to resolve/act on) versus what shipped (Pencil/Eraser toggle-button checked,pressed states — the exact vocabulary ui.py's own docstring already cites as the original smoke-test finding — and a canvas click, which is what actually dirties a Paint document).
  • Fixes a stray docstring reference in test_app_session.py that pointed at test_notepad_live and mis-described its own live test as launching Notepad (it already launches mspaint).
  • Updates planning/TODO.md's Phase-1 line and planning/PLAN_MAIN.md's Phase-3 status note to reflect the migration — no other phase lines touched.

Test plan

  • python -m pytest -q — 233 passed, 6 deselected (the live tests, as expected without -m live)
  • python -m pytest tests/test_mspaint_live.py -m live -v — all 4 tests passed against a real Windows 11 desktop, run twice for stability, no stray mspaint.exe process or window left behind either time

🤖 Generated with Claude Code

Current Windows 11 notepad.exe is single-process tabbed, so PID-scoped
ownership can no longer launch-and-own it and the fixture fails safe
(AppSessionError) rather than attach to a window it can't prove is ours.
Replace tests/test_notepad_live.py with tests/test_mspaint_live.py,
targeting mspaint.exe (already the live target elsewhere in the suite)
and preserving the same discipline: act->verify round trip, re-assert
after actions, right-window-among-several, and a structurally-asserted
save-prompt dismissed cleanly. Every assertion is grounded in mspaint's
real accessibility tree, captured live on Windows 11 while writing the
check (toggle-button checked/pressed states, the canvas-click that
actually dirties the document, the curly-apostrophe "Don't save" label).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@CameronCrow
CameronCrow force-pushed the fix/20-migrate-live-check-notepad-to-mspaint branch from ca86752 to 6be83cd Compare July 23, 2026 15:27
@CameronCrow
CameronCrow merged commit 40f1e32 into main Jul 23, 2026
1 check passed
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.

Migrate Phase-1 live check off tabbed Notepad (unownable on Win11)

1 participant