fix(diff): truncate to avoid crash on diff large objects #7133
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.
Description
ElementHandle
#7009This isn't fool-proof for all situations, but it seems to help dealing with some cases.
For playwright's case, the large formatting happens because of
callToJSON: false
, which is used only when comparing against two different "types" of objects (ElementHandle
vsnull
in the repro's case).ElementHandle.toJSON
is something compact like this:vitest/packages/utils/src/diff/index.ts
Lines 58 to 62 in f9a6284
I also noticed
prettyFormat
actually succeeds, but large memory consumption happens probably later when going through RPC etc... So the fix here is to just truncate beforehand forFALLBACK_FORMAT_OPTIONS
case and also reduce the defaultFALLBACK_FORMAT_OPTIONS.maxDepth
a little.Please don't delete this checklist! Before submitting the PR, please make sure you do the following:
pnpm-lock.yaml
unless you introduce a new test example.Tests
pnpm test:ci
.Documentation
pnpm run docs
command.Changesets
feat:
,fix:
,perf:
,docs:
, orchore:
.