fix(runner): properly encode Uint8Array body in annotations #8951
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
This PR fixes an issue with the incorrect encoding of the Uint8Array body in test annotations. The root cause is that the table for base64 encoding is missing characters at indices 62 and 63. This bug causes "undefined" to appear in the base64-encoded body. I've figured this out while trying to view image annotations in an HTML report. They were not loading.
Reproducible in Vitest v4.0.7 (and I believe since the introduction of annotations in v3.2.0).
I didn't find a reported issue on GitHub.
BTW, I have a small question. Is there a reason to use
forloops to populate thetableinstead of a simpleconst table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'? 🤔Please don't delete this checklist! Before submitting the PR, please make sure you do the following:
pnpm-lock.yamlunless you introduce a new test example.Tests
pnpm test:ci.Documentation
pnpm run docscommand.Changesets
feat:,fix:,perf:,docs:, orchore:.