mirror of
https://github.com/react/react-native.git
synced 2026-09-29 16:58:04 +08:00
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/55892 Adds `toMatchInlineSnapshot()` to the Fantom custom `expect` implementation, matching Jest's inline snapshot behavior. On first run, snapshot values are written directly into the test source file as template literal arguments. On subsequent runs, values are compared and the test fails on mismatch unless the `-u` flag is passed to force an update. The implementation spans the two-process Fantom architecture: **Runtime (Hermes VM):** - `snapshotContext.js`: New `toMatchInlineSnapshot` method that compares received values against existing inline snapshots, captures stack traces for new/mismatched snapshots, and tracks results per test. - `expect.js`: New `toMatchInlineSnapshot` method on the `Expect` class that serializes values with `prettyFormat` and delegates to snapshot context. - `setup.js`: Plumbs `inlineSnapshotResults` through `TestCaseResult`. **Runner (Node.js):** - `snapshotUtils.js`: New `processInlineSnapshotResults` resolves VM stack traces back to original source locations via source map symbolication. New `saveInlineSnapshotsToSource` directly rewrites the test source file by finding each `toMatchInlineSnapshot(...)` call and replacing its argument with the formatted template literal. This avoids jest-snapshot's `saveInlineSnapshots` which requires Babel and Prettier 2.x. - `runner.js`: Generates source maps when inline snapshots need updating, collects pending snapshots across test configs, and writes them after all configs complete. Changelog: [Internal] Reviewed By: sammy-SC Differential Revision: D95077617 fbshipit-source-id: 6a25c8ce966ed71ecd8977c13c25de5907311c6e