-
Notifications
You must be signed in to change notification settings - Fork 795
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(screenshot): alert user when toMatchScreenshot uses NaN #4891
Conversation
|
Path | Error Count |
---|---|
src/dev-server/index.ts | 37 |
src/mock-doc/serialize-node.ts | 36 |
src/dev-server/server-process.ts | 32 |
src/compiler/build/build-stats.ts | 27 |
src/compiler/output-targets/dist-lazy/generate-lazy-module.ts | 25 |
src/compiler/style/test/optimize-css.spec.ts | 23 |
src/testing/puppeteer/puppeteer-element.ts | 23 |
src/compiler/prerender/prerender-main.ts | 22 |
src/runtime/vdom/vdom-render.ts | 20 |
src/runtime/client-hydrate.ts | 19 |
src/screenshot/connector-base.ts | 19 |
src/compiler/config/test/validate-paths.spec.ts | 16 |
src/dev-server/request-handler.ts | 15 |
src/compiler/prerender/prerender-optimize.ts | 14 |
src/compiler/sys/stencil-sys.ts | 14 |
src/compiler/transpile/transpile-module.ts | 14 |
src/runtime/vdom/vdom-annotations.ts | 14 |
src/sys/node/node-sys.ts | 14 |
src/compiler/build/build-finish.ts | 13 |
src/compiler/prerender/prerender-queue.ts | 13 |
Our most common errors
Typescript Error Code | Count |
---|---|
TS2345 | 430 |
TS2322 | 406 |
TS18048 | 312 |
TS18047 | 100 |
TS2722 | 38 |
TS2532 | 36 |
TS2531 | 23 |
TS2454 | 14 |
TS2352 | 13 |
TS2769 | 10 |
TS2790 | 10 |
TS2538 | 8 |
TS2344 | 5 |
TS2416 | 4 |
TS2493 | 3 |
TS18046 | 2 |
TS2684 | 1 |
TS2488 | 1 |
TS2464 | 1 |
TS2430 | 1 |
Unused exports report
There are 12 unused exports on this PR. That's the same number of errors on main, so at least we're not creating new ones!
Unused exports
File | Line | Identifier |
---|---|---|
src/runtime/bootstrap-lazy.ts | 21 | setNonce |
src/screenshot/screenshot-fs.ts | 18 | readScreenshotData |
src/testing/testing-utils.ts | 198 | withSilentWarn |
src/utils/index.ts | 140 | CUSTOM |
src/compiler/app-core/app-data.ts | 25 | BUILD |
src/compiler/app-core/app-data.ts | 114 | Env |
src/compiler/app-core/app-data.ts | 116 | NAMESPACE |
src/compiler/fs-watch/fs-watch-rebuild.ts | 110 | updateCacheFromRebuild |
src/compiler/types/validate-primary-package-output-target.ts | 62 | satisfies |
src/compiler/types/validate-primary-package-output-target.ts | 62 | Record |
src/testing/puppeteer/puppeteer-declarations.ts | 485 | WaitForEventOptions |
src/compiler/sys/fetch/write-fetch-success.ts | 7 | writeFetchSuccessSync |
@@ -12,7 +12,15 @@ export function toMatchScreenshot(compare: d.ScreenshotDiff, opts: d.MatchScreen | |||
} | |||
|
|||
if (typeof compare.mismatchedPixels !== 'number') { | |||
throw new Error(`expect toMatchScreenshot() value is not a screenshot compare`); | |||
throw new Error( | |||
`expect toMatchScreenshot() value is not a valid screenshot compare object - 'mismatchedPixels' has type '${typeof compare.mismatchedPixels}', but should be a number`, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This error message before wasn't the greatest - since I was already doing the same thing for deviceScaleFactor
I decided to copy/paste/replace that error msg here too
ensures that `deviceScaleFactor` is properly narrowed to type `number` from `number | undefined`. prior to this commit, the property _could_ be set to `undefined`. this would result in multiplying by `undefined`, producing `NaN` in our calculation of mismatched pixels. this value would be used in a comparison operator, which would always return false. that is, if `deviceScaleFactor` is `undefined`, we would always fail a test using this matcher. that logic doesn't actually change - instead, we throw a much more explicit error instead of silently failing
e96b676
to
931b342
Compare
The fix for this issue has been released as a part of today's Stencil v4.4.1 release. |
What is the current behavior?
we have a few strictNullChecks violations for
toMatchScreenshot
, which are a result of a bug/not so-nice failure mode in the matcher.GitHub Issue Number: N/A
What is the new behavior?
ensures that
deviceScaleFactor
is properly narrowed to typenumber
fromnumber | undefined
. prior to this commit, the property could be set toundefined
. this would result in multiplying byundefined
, producingNaN
in our calculation of mismatched pixels. this value would be used in a comparison operator, which would always return false.that is, if
deviceScaleFactor
isundefined
, we would always fail a test using this matcher. that logic doesn't actually change - instead, we throw a much more explicit error instead of silently failingDoes this introduce a breaking change?
Testing
Pull down this branch and build it. Make note of the location of the generated tarball:
Next, create a new stencil component library with that tarball:
Navigate to
src/components/my-component.e2e.ts
in your new project and add the following tests:Run
npm t -- --screenshot
- tests fail as expected:Other information