diff --git a/.changeset/tasty-forks-wonder.md b/.changeset/tasty-forks-wonder.md new file mode 100644 index 00000000..b7508e07 --- /dev/null +++ b/.changeset/tasty-forks-wonder.md @@ -0,0 +1,13 @@ +--- +"@wdio/visual-service": patch +--- + +# 🐛 Bugfixes + +## #1084 expect(...).toMatch*Snapshot methods do not have Promise return types + +The methods should be typed as promises + +# Committers: 1 + +- Wim Selles ([@wswebcreation](https://github.com/wswebcreation)) diff --git a/packages/visual-service/src/index.ts b/packages/visual-service/src/index.ts index 0930adc6..3c49f887 100644 --- a/packages/visual-service/src/index.ts +++ b/packages/visual-service/src/index.ts @@ -112,13 +112,13 @@ declare global { */ toMatchScreenSnapshot( tag: string, - expectedResult?: number | ExpectWebdriverIO.PartialMatcher, + expectedResult?: number | ExpectWebdriverIO.PartialMatcher, options?: WdioCheckScreenMethodOptions - ): R + ): Promise toMatchScreenSnapshot( tag: string, options?: WdioCheckScreenMethodOptions - ): R + ): Promise /** * Checks that if the full page screenshot matches with snapshot of baseline. * @param tag snapshot name @@ -127,13 +127,13 @@ declare global { */ toMatchFullPageSnapshot( tag: string, - expectedResult?: number | ExpectWebdriverIO.PartialMatcher, + expectedResult?: number | ExpectWebdriverIO.PartialMatcher, options?: WdioCheckFullPageMethodOptions - ): R + ): Promise toMatchFullPageSnapshot( tag: string, options?: WdioCheckFullPageMethodOptions - ): R + ): Promise /** * Checks that if given element matches with snapshot of baseline. * @param tag snapshot name @@ -142,13 +142,13 @@ declare global { */ toMatchElementSnapshot( tag: string, - expectedResult?: number | ExpectWebdriverIO.PartialMatcher, + expectedResult?: number | ExpectWebdriverIO.PartialMatcher, options?: WdioCheckElementMethodOptions - ): R + ): Promise toMatchElementSnapshot( tag: string, options?: WdioCheckElementMethodOptions - ): R + ): Promise /** * Checks that if the full page screenshot including tab marks matches with snapshot of baseline. * @param tag snapshot name @@ -157,17 +157,25 @@ declare global { */ toMatchTabbablePageSnapshot( tag: string, - expectedResult?: number | ExpectWebdriverIO.PartialMatcher, + expectedResult?: number | ExpectWebdriverIO.PartialMatcher, options?: WdioCheckFullPageMethodOptions - ): R + ): Promise toMatchTabbablePageSnapshot( tag: string, options?: WdioCheckFullPageMethodOptions - ): R + ): Promise } } } -export type { VisualServiceOptions } +export type { + VisualServiceOptions, + WdioCheckElementMethodOptions, + WdioCheckScreenMethodOptions, + WdioCheckFullPageMethodOptions, + WdioSaveElementMethodOptions, + WdioSaveScreenMethodOptions, + WdioSaveFullPageMethodOptions +} export default WdioImageComparisonService export const launcher = VisualLauncher diff --git a/packages/visual-service/src/matcher.ts b/packages/visual-service/src/matcher.ts index 0e9a86cd..abb7b173 100644 --- a/packages/visual-service/src/matcher.ts +++ b/packages/visual-service/src/matcher.ts @@ -14,12 +14,12 @@ const asymmetricMatcher = ? Symbol.for('jest.asymmetricMatcher') : 0x13_57_a5 -function isAsymmetricMatcher (expected: unknown): expected is ExpectWebdriverIO.PartialMatcher { +function isAsymmetricMatcher (expected: unknown): expected is ExpectWebdriverIO.PartialMatcher { return Boolean(expected && typeof expected === 'object' && '$$typeof' in expected && expected.$$typeof === asymmetricMatcher && 'asymmetricMatch' in expected) } function evaluateResult( result: ImageCompareResult, - expected: number | ExpectWebdriverIO.PartialMatcher, + expected: number | ExpectWebdriverIO.PartialMatcher, instanceName: string ) { if (isAsymmetricMatcher(expected)) { @@ -58,7 +58,7 @@ function isMultiremoteResult( return typeof result === 'object' && Object.values(result)[0]?.misMatchPercentage !== undefined } -function compareResult (result: ImageCompareResult, expected: number | ExpectWebdriverIO.PartialMatcher) { +function compareResult (result: ImageCompareResult, expected: number | ExpectWebdriverIO.PartialMatcher) { const isMultiremote = isMultiremoteResult(result) const results = isMultiremote ? Object.entries(result as unknown as Record).map(([instanceName, instanceResult]) => ({ @@ -86,7 +86,7 @@ function compareResult (result: ImageCompareResult, expected: number | ExpectWeb function parseMatcherParams ( tag: string, - expectedResult?: number | ExpectWebdriverIO.PartialMatcher, + expectedResult?: number | ExpectWebdriverIO.PartialMatcher, options?: WdioCheckFullPageMethodOptions ) { /** @@ -125,7 +125,7 @@ function parseMatcherParams ( export async function toMatchScreenSnapshot ( browser: WebdriverIO.Browser | WebdriverIO.MultiRemoteBrowser, tag: string, - expectedResultOrOptions?: number | ExpectWebdriverIO.PartialMatcher, + expectedResultOrOptions?: number | ExpectWebdriverIO.PartialMatcher, optionsOrUndefined?: WdioCheckScreenMethodOptions ) { const { expectedResult, options } = parseMatcherParams(tag, expectedResultOrOptions, optionsOrUndefined) @@ -136,7 +136,7 @@ export async function toMatchScreenSnapshot ( export async function toMatchFullPageSnapshot ( browser: WebdriverIO.Browser | WebdriverIO.MultiRemoteBrowser, tag: string, - expectedResultOrOptions?: number | ExpectWebdriverIO.PartialMatcher, + expectedResultOrOptions?: number | ExpectWebdriverIO.PartialMatcher, optionsOrUndefined?: WdioCheckFullPageMethodOptions ) { const { expectedResult, options } = parseMatcherParams(tag, expectedResultOrOptions, optionsOrUndefined) @@ -147,7 +147,7 @@ export async function toMatchFullPageSnapshot ( export async function toMatchElementSnapshot ( element: WebdriverIO.Element, tag: string, - expectedResultOrOptions?: number | ExpectWebdriverIO.PartialMatcher, + expectedResultOrOptions?: number | ExpectWebdriverIO.PartialMatcher, optionsOrUndefined?: WdioCheckElementMethodOptions ) { const { expectedResult, options } = parseMatcherParams(tag, expectedResultOrOptions, optionsOrUndefined) @@ -159,7 +159,7 @@ export async function toMatchElementSnapshot ( export async function toMatchTabbablePageSnapshot ( browser: WebdriverIO.Browser | WebdriverIO.MultiRemoteBrowser, tag: string, - expectedResultOrOptions?: number | ExpectWebdriverIO.PartialMatcher, + expectedResultOrOptions?: number | ExpectWebdriverIO.PartialMatcher, optionsOrUndefined?: WdioCheckFullPageMethodOptions ) { const { expectedResult, options } = parseMatcherParams(tag, expectedResultOrOptions, optionsOrUndefined)