test: real-webview bridge smoke -- engine parity against what actually ships (goal 0097, re-scoped) - #223
Merged
Merged
Conversation
…oal 0097, re-scoped) Playwright's webkit project was researched and rejected as the parity mechanism (patched WebKit-main, never attaches to an app's own embedded webview; no macOS WebDriver exists for third-party WKWebView). The honest mechanism is driving the real desktop window over Wails3's own -tags mcp control bridge: internal/webviewbridgesmoke builds and launches the real app in isolated data, refuses to run alongside an already-live task dev or installed Mill.app, and runs a named check registry (window sanity, Atlas board render, note-card flip, and the two burned selection/border-color rendering classes) against it. scripts/webview-bridge-smoke.sh is the entrypoint; ci.yml gets a non-required macos-latest job until it has a CI track record. testing.md records the new layer and the researched-and-rejected webkit-project premise. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FW5GkkAG8du7tNdYLk2zSd
alicoding
enabled auto-merge (squash)
August 18, 2026 03:58
… (goal 0097) Unit-test coverage for internal/webviewbridgesmoke's decision logic: guard.go's conflict detection (findConflictingProcess/parsePSOutput, mirroring internal/devguard's own seam), checks.go's full check registry against a scripted fakeMCPCaller (every assertion branch: success, precondition, gesture-didn't-select, ring-never-rendered, bridge-gap-propagates), and main.go's runRegistry/repoRootFrom/ portInUse extracted for testability with no behavioral change. Package coverage 12.2% -> 55.9%; whole-repo total 70.9% locally (floor stays 69.5%, untouched). testing.md now records the CI job's first live attempt against a real macos-latest runner: it failed launching the app (MCP bridge never became reachable, connection refused, empty captured stderr) after both builds succeeded. Recorded as non-required/informational pending investigation, with the empty-stderr silent-exit as the first investigation lead -- not iterated further tonight. The operative parity gate stays the local pre-release run until this is resolved. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FW5GkkAG8du7tNdYLk2zSd
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.
The original webkit-Playwright premise was researched and REJECTED (Playwright's webkit is patched WebKit-main that never attaches to an embedded WKWebView; no macOS WebDriver for third-party webviews exists; the OSS convergence is driving the real webview via an app bridge). This ships the honest mechanism:
internal/webviewbridgesmoke+scripts/webview-bridge-smoke.sh: builds-tags mcp, launches the REAL desktop app on isolated data (devguard-shaped refusal if task dev / installed Mill / port 9099 is live — proven live against a real conflicting session), drives a 6-check named registry over Wails' own MCP bridge: isolated-data badge, window sanity, board render, card interaction, and the two burned classes — selection ring and sticky border-flip via real clicks on live-created entities. Every selector/method traced against source.macos-latestCI job (continue-on-error, outside ci-gate) — GUI apps run on hosted macOS runners per working precedent; this PR's own run is the first live attempt.Goal: docs/goals/0097-webkit-parity-smoke.md.
🤖 Generated with Claude Code
https://claude.ai/code/session_01FW5GkkAG8du7tNdYLk2zSd