feat: fingerprint-healed replay with checkpoints, offline HAR, and replay export via codegen - #2
Merged
Merged
Conversation
cdg-me
commented
Aug 17, 2026
Owner
- store each recorded element interaction with its fingerprint and position among identical siblings, enabling identity-based relocation on replay
- record expect calls as checkpoint events that replay enforces through the same wait loop as /expect
- add record start --capture-har: network capture with bodies written as HAR alongside the recording
- replay offline by default: recorded responses served via snapshot router; --live clears it and hits the network
- replay with --session : restore a saved session (cookies restored) before running
- report replay outcome as JSON: steps, checkpoints total/passed, healed substitutions (from → to selectors), failed step, duration; failures exit 1 at the CLI with the report rendered
- heal through UI drift: selector no longer matching its fingerprint triggers relocation by fingerprint plus occurrence index, reported as healed
- fail loudly on semantic change: replaced or relabelled elements stop replay at that step naming the original identity and prior checkpoint results
- convert per-step panics into report errors (a failed navigation previously reported success)
- fix replayed js events skipping bare-expression wrapping and type interpolating selectors into single-quoted JS
- keep capture control commands out of recordings so replayed HAR flows don't replay capture itself
- default replay speed to instant; recorded timing available via --speed 1
- add record export: pure codegen to a Playwright spec with role-based locators, .nth() disambiguation for repeated elements, assertions with timeouts, routeFromHAR, and selector-provenance comments; verified passing under npx playwright test on both canonical and drifted UI
- persist cookies in session save/resume
- add shop fixture with canonical/drifted/broken variants; 10 replay e2e tests and 4 export unit goldens
- document replay semantics in QUICKSTART and add a fingerprint-bearing recording preset
…play export via codegen - store each recorded element interaction with its fingerprint and position among identical siblings, enabling identity-based relocation on replay - record expect calls as checkpoint events that replay enforces through the same wait loop as /expect - add record start --capture-har: network capture with bodies written as HAR alongside the recording - replay offline by default: recorded responses served via snapshot router; --live clears it and hits the network - replay with --session <name>: restore a saved session (cookies restored) before running - report replay outcome as JSON: steps, checkpoints total/passed, healed substitutions (from → to selectors), failed step, duration; failures exit 1 at the CLI with the report rendered - heal through UI drift: selector no longer matching its fingerprint triggers relocation by fingerprint plus occurrence index, reported as healed - fail loudly on semantic change: replaced or relabelled elements stop replay at that step naming the original identity and prior checkpoint results - convert per-step panics into report errors (a failed navigation previously reported success) - fix replayed js events skipping bare-expression wrapping and type interpolating selectors into single-quoted JS - keep capture control commands out of recordings so replayed HAR flows don't replay capture itself - default replay speed to instant; recorded timing available via --speed 1 - add record export: pure codegen to a Playwright spec with role-based locators, .nth() disambiguation for repeated elements, assertions with timeouts, routeFromHAR, and selector-provenance comments; verified passing under npx playwright test on both canonical and drifted UI - persist cookies in session save/resume - add shop fixture with canonical/drifted/broken variants; 10 replay e2e tests and 4 export unit goldens - document replay semantics in QUICKSTART and add a fingerprint-bearing recording preset
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.