Skip to content

chore: run the automatable #42 live checks with npm run live-check - #102

Merged
iamnbutler merged 1 commit into
mainfrom
feat/live-check
Oct 17, 2026
Merged

iamnbutler merged 1 commit into
mainfrom
feat/live-check

Conversation

@iamnbutler

Copy link
Copy Markdown
Contributor

Adds npm run live-check (scripts/live-check.mjs), which runs the automatable checks from #42 through the real MCP server (dist/mcp.js) against the installed app, or a dev app named by DESKTOP_TOOLS_STATE. It prints pass, fail or skip for each check, with evidence, and then a summary grouped by PR. --only 82,88 filters by PR, --list lists the checks, and --json <path> writes the results to a file.

It starts with the 0.8 to 0.10 releases, plus #99 when the build has it: #77, #79, #81, #82, #83, #86, #88, #89, #90, #92, #96, #99, and one #70 wait check. That is 31 checks in all.

Safety:

  • It refuses to start if the screen is locked, the session is off the console, the screensaver is running or the displays are asleep. It checks this with desktop_apps system.session before opening anything.
  • It creates its own fixtures in a new /tmp/desktop-tools-live-* folder:
    • TextEdit plain-text and RTF documents;
    • a Finder folder;
    • a PNG;
    • a web page with a React-style controlled input, a date input, a contenteditable, a <th> table and a grid of inputs.
  • It opens the fixtures with desktop_open and acts only on the new windows.
  • In a finally block, which also runs after Control-C, it:
    • closes each window it opened, answering Delete or Don't Save on its own document only;
    • quits only the apps it launched itself;
    • restores the clipboard and the input source;
    • removes the fixtures.
  • The web checks are skipped while Safari has windows open, since a fixture could open as a tab in one of the user's windows. The clipboard checks run only when the clipboard holds plain text, which is written back at the end.
  • docs/live-checks.md documents the harness and lists the checks that stay manual: destructive ones, ones that change system settings, ones that need a second display, Space or password, and ones that need other apps.

Verified

  • --list, --only and --only 80 (no automated checks, exit 2) work.
  • With the screen locked it refuses and exits 2. Nothing is opened and no fixture folder is created:
    Refusing to run: the screen is locked or not on the console ({…"locked":true,"on_console":true}). Nothing was opened.
  • npm test and npm run check pass.

Pending: screen locked

None of the checks has been run on an unlocked session, so element matching (the labels and roles found in Safari and Finder) and the result fields used as evidence haven't been checked against live output yet. Expect a round of fixes after the first unlocked run.

@iamnbutler
iamnbutler merged commit d7c4ccd into main Oct 17, 2026
2 checks passed
@iamnbutler
iamnbutler deleted the feat/live-check branch October 17, 2026 08:42
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