STATE LENS · RECORDED SYNTHETIC COMPARISON · NO SETUP TO VIEW

Same screen.
Different saved data.

Change display precision from 3 decimal places to 2. Save. Reload.
Both app screens show 1,234.57. Did both preserve the original value?

Normal save

Actual normal fixture after reload: 1,234.57, 2 decimal places, Saved

UI checks: passed

Authored regression

Actual regression fixture had the same screenshot bytes after reload: 1,234.57, 2 decimal places, Saved

The same UI checks: passed

The two screenshots were captured independently and matched byte for byte at this viewport, after save and after reload. This page uses that shared image.

See the steps beside their selected data

State Lens puts selected field differences and screenshots into one local HTML report. Open either recorded timeline and choose the save or reload checkpoint:

Standard Playwright catches this too. The same explicit saved-value assertions passed in the normal branch and failed in the regression branch, with and without State Lens. The helper organizes observations; it does not replace your assertions. A timeline action marked COMPLETED means its callback returned, not that the saved data is correct.

const saved = await page.evaluate(() =>
  JSON.parse(localStorage.getItem('precision-pad-document')));
assert.equal(saved.value, 1234.567); // Keep this assertion.

Try it in your own Playwright test

Already use Playwright? Download the common experimental package, or copy its single module. Add checkpoints around your own save and reload actions; keep your existing assertions.