chore: hide "comparator" option from documentation and types (#19441)

This commit is contained in:
Andrey Lushnikov 2022-12-14 09:58:19 -08:00 committed by GitHub
parent 8cc8fca129
commit 8167f8bf54
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 39 additions and 114 deletions

View File

@ -1362,9 +1362,6 @@ Snapshot name.
### option: LocatorAssertions.toHaveScreenshot#1.scale = %%-screenshot-option-scale-default-css-%%
* since: v1.23
### option: LocatorAssertions.toHaveScreenshot#1.comparator = %%-assertions-comparator-%%
* since: v1.29
### option: LocatorAssertions.toHaveScreenshot#1.maxDiffPixels = %%-assertions-max-diff-pixels-%%
* since: v1.23
@ -1408,9 +1405,6 @@ Note that screenshot assertions only work with Playwright test runner.
### option: LocatorAssertions.toHaveScreenshot#2.scale = %%-screenshot-option-scale-default-css-%%
* since: v1.23
### option: LocatorAssertions.toHaveScreenshot#2.comparator = %%-assertions-comparator-%%
* since: v1.29
### option: LocatorAssertions.toHaveScreenshot#2.maxDiffPixels = %%-assertions-max-diff-pixels-%%
* since: v1.23

View File

@ -170,9 +170,6 @@ Snapshot name.
### option: PageAssertions.toHaveScreenshot#1.scale = %%-screenshot-option-scale-default-css-%%
* since: v1.23
### option: PageAssertions.toHaveScreenshot#1.comparator = %%-assertions-comparator-%%
* since: v1.29
### option: PageAssertions.toHaveScreenshot#1.maxDiffPixels = %%-assertions-max-diff-pixels-%%
* since: v1.23
@ -221,9 +218,6 @@ Note that screenshot assertions only work with Playwright test runner.
### option: PageAssertions.toHaveScreenshot#2.scale = %%-screenshot-option-scale-default-css-%%
* since: v1.23
### option: PageAssertions.toHaveScreenshot#2.comparator = %%-assertions-comparator-%%
* since: v1.29
### option: PageAssertions.toHaveScreenshot#2.maxDiffPixels = %%-assertions-max-diff-pixels-%%
* since: v1.23

View File

@ -43,9 +43,6 @@ Note that matching snapshots only work with Playwright test runner.
Snapshot name.
### option: SnapshotAssertions.toMatchSnapshot#1.comparator = %%-assertions-comparator-%%
* since: v1.29
### option: SnapshotAssertions.toMatchSnapshot#1.maxDiffPixels = %%-assertions-max-diff-pixels-%%
* since: v1.22
@ -82,9 +79,6 @@ Learn more about [visual comparisons](../test-snapshots.md).
Note that matching snapshots only work with Playwright test runner.
### option: SnapshotAssertions.toMatchSnapshot#2.comparator = %%-assertions-comparator-%%
* since: v1.29
### option: SnapshotAssertions.toMatchSnapshot#2.maxDiffPixels = %%-assertions-max-diff-pixels-%%
* since: v1.22

View File

@ -806,12 +806,6 @@ Time to retry the assertion for.
An acceptable amount of pixels that could be different. Default is configurable with `TestConfig.expect`. Unset by default.
## assertions-comparator
* langs: js
- `comparator` <[string]> Either `"pixelmatch"` or `"ssim-cie94"`.
A comparator function to use when comparing images. Defaults to `"pixelmatch"`.
## assertions-max-diff-pixel-ratio
* langs: js
- `maxDiffPixelRatio` <[float]>
@ -824,7 +818,7 @@ An acceptable ratio of pixels that are different to the total amount of pixels,
An acceptable perceived color difference in the [YIQ color space](https://en.wikipedia.org/wiki/YIQ)
between the same pixel in compared images, between zero (strict) and one (lax), default is configurable with
`TestConfig.expect`. Defaults to `0.2`. This option is used by "pixelmatch" image comparator.
`TestConfig.expect`. Defaults to `0.2`.
## shared-context-params-list-v1.8
- %%-context-option-acceptdownloads-%%

View File

@ -39,16 +39,14 @@ export default config;
- type: ?<[Object]>
- `timeout` ?<[int]> Default timeout for async expect matchers in milliseconds, defaults to 5000ms.
- `toHaveScreenshot` ?<[Object]> Configuration for the [`method: PageAssertions.toHaveScreenshot#1`] method.
- `comparator` ?<[string]> a comparator function to use, either `"pixelmatch"` or `"ssim-cie94"`. Defaults to `"pixelmatch"`.
- `threshold` ?<[float]> an acceptable perceived color difference between the same pixel in compared images, ranging from `0` (strict) and `1` (lax). `"pixelmatch"` comparator computes color difference in [YIQ color space](https://en.wikipedia.org/wiki/YIQ) and defaults `threshold` value to `0.2`. This option is used by `pixelmatch` image comparator.
- `threshold` ?<[float]> an acceptable perceived color difference between the same pixel in compared images, ranging from `0` (strict) and `1` (lax). `"pixelmatch"` comparator computes color difference in [YIQ color space](https://en.wikipedia.org/wiki/YIQ) and defaults `threshold` value to `0.2`.
- `maxDiffPixels` ?<[int]> an acceptable amount of pixels that could be different, unset by default.
- `maxDiffPixelRatio` ?<[float]> an acceptable ratio of pixels that are different to the total amount of pixels, between `0` and `1` , unset by default.
- `animations` ?<[ScreenshotAnimations]<"allow"|"disabled">> See [`option: animations`] in [`method: Page.screenshot`]. Defaults to `"disabled"`.
- `caret` ?<[ScreenshotCaret]<"hide"|"initial">> See [`option: caret`] in [`method: Page.screenshot`]. Defaults to `"hide"`.
- `scale` ?<[ScreenshotScale]<"css"|"device">> See [`option: scale`] in [`method: Page.screenshot`]. Defaults to `"css"`.
- `toMatchSnapshot` ?<[Object]> Configuration for the [`method: SnapshotAssertions.toMatchSnapshot#1`] method.
- `comparator` ?<[string]> a comparator function to use, either `"pixelmatch"` or `"ssim-cie94"`. Defaults to `"pixelmatch"`.
- `threshold` ?<[float]> an acceptable perceived color difference between the same pixel in compared images, ranging from `0` (strict) and `1` (lax). `"pixelmatch"` comparator computes color difference in [YIQ color space](https://en.wikipedia.org/wiki/YIQ) and defaults `threshold` value to `0.2`. This option is used by `pixelmatch` image comparator.
- `threshold` ?<[float]> an acceptable perceived color difference between the same pixel in compared images, ranging from `0` (strict) and `1` (lax). `"pixelmatch"` comparator computes color difference in [YIQ color space](https://en.wikipedia.org/wiki/YIQ) and defaults `threshold` value to `0.2`.
- `maxDiffPixels` ?<[int]> an acceptable amount of pixels that could be different, unset by default.
- `maxDiffPixelRatio` ?<[float]> an acceptable ratio of pixels that are different to the total amount of pixels, between `0` and `1` , unset by default.

View File

@ -110,16 +110,14 @@ export default config;
- type: ?<[Object]>
- `timeout` ?<[int]> Default timeout for async expect matchers in milliseconds, defaults to 5000ms.
- `toHaveScreenshot` ?<[Object]> Configuration for the [`method: PageAssertions.toHaveScreenshot#1`] method.
- `comparator` ?<[string]> a comparator function to use, either `"pixelmatch"` or `"ssim-cie94"`. Defaults to `"pixelmatch"`.
- `threshold` ?<[float]> an acceptable perceived color difference between the same pixel in compared images, ranging from `0` (strict) and `1` (lax). `"pixelmatch"` comparator computes color difference in [YIQ color space](https://en.wikipedia.org/wiki/YIQ) and defaults `threshold` value to `0.2`. This option is used by `pixelmatch` image comparator.
- `threshold` ?<[float]> an acceptable perceived color difference between the same pixel in compared images, ranging from `0` (strict) and `1` (lax). `"pixelmatch"` comparator computes color difference in [YIQ color space](https://en.wikipedia.org/wiki/YIQ) and defaults `threshold` value to `0.2`.
- `maxDiffPixels` ?<[int]> an acceptable amount of pixels that could be different, unset by default.
- `maxDiffPixelRatio` ?<[float]> an acceptable ratio of pixels that are different to the total amount of pixels, between `0` and `1` , unset by default.
- `animations` ?<[ScreenshotAnimations]<"allow"|"disabled">> See [`option: animations`] in [`method: Page.screenshot`]. Defaults to `"disabled"`.
- `caret` ?<[ScreenshotCaret]<"hide"|"initial">> See [`option: caret`] in [`method: Page.screenshot`]. Defaults to `"hide"`.
- `scale` ?<[ScreenshotScale]<"css"|"device">> See [`option: scale`] in [`method: Page.screenshot`]. Defaults to `"css"`.
- `toMatchSnapshot` ?<[Object]> Configuration for the [`method: SnapshotAssertions.toMatchSnapshot#1`] method.
- `comparator` ?<[string]> a comparator function to use, either `"pixelmatch"` or `"ssim-cie94"`. Defaults to `"pixelmatch"`.
- `threshold` ?<[float]> an acceptable perceived color difference between the same pixel in compared images, ranging from `0` (strict) and `1` (lax). `"pixelmatch"` comparator computes color difference in [YIQ color space](https://en.wikipedia.org/wiki/YIQ) and defaults `threshold` value to `0.2`. This option is used by `pixelmatch` image comparator.
- `threshold` ?<[float]> an acceptable perceived color difference between the same pixel in compared images, ranging from `0` (strict) and `1` (lax). `"pixelmatch"` comparator computes color difference in [YIQ color space](https://en.wikipedia.org/wiki/YIQ) and defaults `threshold` value to `0.2`.
- `maxDiffPixels` ?<[int]> an acceptable amount of pixels that could be different, unset by default.
- `maxDiffPixelRatio` ?<[float]> an acceptable ratio of pixels that are different to the total amount of pixels, between `0` and `1` , unset by default.

View File

@ -176,6 +176,10 @@ export class PageDispatcher extends Dispatcher<Page, channels.PageChannel, Brows
return await this._page.expectScreenshot(metadata, {
...params,
locator,
comparatorOptions: {
...params.comparatorOptions,
_comparator: params.comparatorOptions?.comparator,
},
screenshotOptions: {
...params.screenshotOptions,
mask,

View File

@ -21,7 +21,7 @@ import { compare } from '../image_tools/compare';
const { diff_match_patch, DIFF_INSERT, DIFF_DELETE, DIFF_EQUAL } = require('../third_party/diff_match_patch');
import { PNG } from '../utilsBundle';
export type ImageComparatorOptions = { threshold?: number, maxDiffPixels?: number, maxDiffPixelRatio?: number, comparator?: string };
export type ImageComparatorOptions = { threshold?: number, maxDiffPixels?: number, maxDiffPixelRatio?: number, _comparator?: string };
export type ComparatorResult = { diff?: Buffer; errorMessage: string; } | null;
export type Comparator = (actualBuffer: Buffer | string, expectedBuffer: Buffer, options?: any) => ComparatorResult;
@ -60,18 +60,18 @@ function compareImages(mimeType: string, actualBuffer: Buffer | string, expected
}
const diff = new PNG({ width: expected.width, height: expected.height });
let count;
if (options.comparator === 'ssim-cie94') {
if (options._comparator === 'ssim-cie94') {
count = compare(expected.data, actual.data, diff.data, expected.width, expected.height, {
// All ΔE* formulae are originally designed to have the difference of 1.0 stand for a "just noticeable difference" (JND).
// See https://en.wikipedia.org/wiki/Color_difference#CIELAB_%CE%94E*
maxColorDeltaE94: 1.0,
});
} else if ((options.comparator ?? 'pixelmatch') === 'pixelmatch') {
} else if ((options._comparator ?? 'pixelmatch') === 'pixelmatch') {
count = pixelmatch(expected.data, actual.data, diff.data, expected.width, expected.height, {
threshold: options.threshold ?? 0.2,
});
} else {
throw new Error(`Configuration specifies unknown comparator "${options.comparator}"`);
throw new Error(`Configuration specifies unknown comparator "${options._comparator}"`);
}
const maxDiffPixels1 = options.maxDiffPixels;

View File

@ -145,7 +145,7 @@ class SnapshotHelper<T extends ImageComparatorOptions> {
maxDiffPixels: options.maxDiffPixels,
maxDiffPixelRatio: options.maxDiffPixelRatio,
threshold: options.threshold,
comparator: options.comparator,
_comparator: options._comparator,
};
this.kind = this.mimeType.startsWith('image/') ? 'Screenshot' : 'Snapshot';
}
@ -306,7 +306,7 @@ export async function toHaveScreenshot(
const helper = new SnapshotHelper(
testInfo, snapshotPathResolver, 'png',
{
comparator: config?.comparator,
_comparator: config?._comparator,
maxDiffPixels: config?.maxDiffPixels,
maxDiffPixelRatio: config?.maxDiffPixelRatio,
threshold: config?.threshold,
@ -342,7 +342,10 @@ export async function toHaveScreenshot(
expected: await fs.promises.readFile(helper.snapshotPath),
isNot: true,
locator,
comparatorOptions: helper.comparatorOptions,
comparatorOptions: {
...helper.comparatorOptions,
comparator: helper.comparatorOptions._comparator,
},
screenshotOptions,
timeout: currentExpectTimeout(helper.allOptions),
})).errorMessage;
@ -360,7 +363,7 @@ export async function toHaveScreenshot(
expected: undefined,
isNot: false,
locator,
comparatorOptions: helper.comparatorOptions,
comparatorOptions: { ...helper.comparatorOptions, comparator: helper.comparatorOptions._comparator },
screenshotOptions,
timeout,
});
@ -382,7 +385,7 @@ export async function toHaveScreenshot(
expected,
isNot: false,
locator,
comparatorOptions: helper.comparatorOptions,
comparatorOptions: { ...helper.comparatorOptions, comparator: helper.comparatorOptions._comparator },
screenshotOptions,
timeout: currentExpectTimeout(helper.allOptions),
});

View File

@ -530,16 +530,10 @@ interface TestConfig {
* method.
*/
toHaveScreenshot?: {
/**
* a comparator function to use, either `"pixelmatch"` or `"ssim-cie94"`. Defaults to `"pixelmatch"`.
*/
comparator?: string;
/**
* an acceptable perceived color difference between the same pixel in compared images, ranging from `0` (strict) and
* `1` (lax). `"pixelmatch"` comparator computes color difference in
* [YIQ color space](https://en.wikipedia.org/wiki/YIQ) and defaults `threshold` value to `0.2`. This option is used
* by `pixelmatch` image comparator.
* [YIQ color space](https://en.wikipedia.org/wiki/YIQ) and defaults `threshold` value to `0.2`.
*/
threshold?: number;
@ -579,16 +573,10 @@ interface TestConfig {
* method.
*/
toMatchSnapshot?: {
/**
* a comparator function to use, either `"pixelmatch"` or `"ssim-cie94"`. Defaults to `"pixelmatch"`.
*/
comparator?: string;
/**
* an acceptable perceived color difference between the same pixel in compared images, ranging from `0` (strict) and
* `1` (lax). `"pixelmatch"` comparator computes color difference in
* [YIQ color space](https://en.wikipedia.org/wiki/YIQ) and defaults `threshold` value to `0.2`. This option is used
* by `pixelmatch` image comparator.
* [YIQ color space](https://en.wikipedia.org/wiki/YIQ) and defaults `threshold` value to `0.2`.
*/
threshold?: number;
@ -3825,11 +3813,6 @@ interface LocatorAssertions {
*/
caret?: "hide"|"initial";
/**
* A comparator function to use when comparing images. Defaults to `"pixelmatch"`.
*/
comparator?: string;
/**
* Specify locators that should be masked when the screenshot is taken. Masked elements will be overlaid with a pink
* box `#FF00FF` that completely covers its bounding box.
@ -3866,7 +3849,7 @@ interface LocatorAssertions {
/**
* An acceptable perceived color difference in the [YIQ color space](https://en.wikipedia.org/wiki/YIQ) between the
* same pixel in compared images, between zero (strict) and one (lax), default is configurable with
* `TestConfig.expect`. Defaults to `0.2`. This option is used by "pixelmatch" image comparator.
* `TestConfig.expect`. Defaults to `0.2`.
*/
threshold?: number;
@ -3907,11 +3890,6 @@ interface LocatorAssertions {
*/
caret?: "hide"|"initial";
/**
* A comparator function to use when comparing images. Defaults to `"pixelmatch"`.
*/
comparator?: string;
/**
* Specify locators that should be masked when the screenshot is taken. Masked elements will be overlaid with a pink
* box `#FF00FF` that completely covers its bounding box.
@ -3948,7 +3926,7 @@ interface LocatorAssertions {
/**
* An acceptable perceived color difference in the [YIQ color space](https://en.wikipedia.org/wiki/YIQ) between the
* same pixel in compared images, between zero (strict) and one (lax), default is configurable with
* `TestConfig.expect`. Defaults to `0.2`. This option is used by "pixelmatch" image comparator.
* `TestConfig.expect`. Defaults to `0.2`.
*/
threshold?: number;
@ -4160,11 +4138,6 @@ interface PageAssertions {
height: number;
};
/**
* A comparator function to use when comparing images. Defaults to `"pixelmatch"`.
*/
comparator?: string;
/**
* When true, takes a screenshot of the full scrollable page, instead of the currently visible viewport. Defaults to
* `false`.
@ -4207,7 +4180,7 @@ interface PageAssertions {
/**
* An acceptable perceived color difference in the [YIQ color space](https://en.wikipedia.org/wiki/YIQ) between the
* same pixel in compared images, between zero (strict) and one (lax), default is configurable with
* `TestConfig.expect`. Defaults to `0.2`. This option is used by "pixelmatch" image comparator.
* `TestConfig.expect`. Defaults to `0.2`.
*/
threshold?: number;
@ -4272,11 +4245,6 @@ interface PageAssertions {
height: number;
};
/**
* A comparator function to use when comparing images. Defaults to `"pixelmatch"`.
*/
comparator?: string;
/**
* When true, takes a screenshot of the full scrollable page, instead of the currently visible viewport. Defaults to
* `false`.
@ -4319,7 +4287,7 @@ interface PageAssertions {
/**
* An acceptable perceived color difference in the [YIQ color space](https://en.wikipedia.org/wiki/YIQ) between the
* same pixel in compared images, between zero (strict) and one (lax), default is configurable with
* `TestConfig.expect`. Defaults to `0.2`. This option is used by "pixelmatch" image comparator.
* `TestConfig.expect`. Defaults to `0.2`.
*/
threshold?: number;
@ -4407,11 +4375,6 @@ interface SnapshotAssertions {
* @param options
*/
toMatchSnapshot(name: string|Array<string>, options?: {
/**
* A comparator function to use when comparing images. Defaults to `"pixelmatch"`.
*/
comparator?: string;
/**
* An acceptable ratio of pixels that are different to the total amount of pixels, between `0` and `1`. Default is
* configurable with `TestConfig.expect`. Unset by default.
@ -4427,7 +4390,7 @@ interface SnapshotAssertions {
/**
* An acceptable perceived color difference in the [YIQ color space](https://en.wikipedia.org/wiki/YIQ) between the
* same pixel in compared images, between zero (strict) and one (lax), default is configurable with
* `TestConfig.expect`. Defaults to `0.2`. This option is used by "pixelmatch" image comparator.
* `TestConfig.expect`. Defaults to `0.2`.
*/
threshold?: number;
}): void;
@ -4460,11 +4423,6 @@ interface SnapshotAssertions {
* @param options
*/
toMatchSnapshot(options?: {
/**
* A comparator function to use when comparing images. Defaults to `"pixelmatch"`.
*/
comparator?: string;
/**
* An acceptable ratio of pixels that are different to the total amount of pixels, between `0` and `1`. Default is
* configurable with `TestConfig.expect`. Unset by default.
@ -4485,7 +4443,7 @@ interface SnapshotAssertions {
/**
* An acceptable perceived color difference in the [YIQ color space](https://en.wikipedia.org/wiki/YIQ) between the
* same pixel in compared images, between zero (strict) and one (lax), default is configurable with
* `TestConfig.expect`. Defaults to `0.2`. This option is used by "pixelmatch" image comparator.
* `TestConfig.expect`. Defaults to `0.2`.
*/
threshold?: number;
}): void;
@ -4590,16 +4548,10 @@ interface TestProject {
* method.
*/
toHaveScreenshot?: {
/**
* a comparator function to use, either `"pixelmatch"` or `"ssim-cie94"`. Defaults to `"pixelmatch"`.
*/
comparator?: string;
/**
* an acceptable perceived color difference between the same pixel in compared images, ranging from `0` (strict) and
* `1` (lax). `"pixelmatch"` comparator computes color difference in
* [YIQ color space](https://en.wikipedia.org/wiki/YIQ) and defaults `threshold` value to `0.2`. This option is used
* by `pixelmatch` image comparator.
* [YIQ color space](https://en.wikipedia.org/wiki/YIQ) and defaults `threshold` value to `0.2`.
*/
threshold?: number;
@ -4639,16 +4591,10 @@ interface TestProject {
* method.
*/
toMatchSnapshot?: {
/**
* a comparator function to use, either `"pixelmatch"` or `"ssim-cie94"`. Defaults to `"pixelmatch"`.
*/
comparator?: string;
/**
* an acceptable perceived color difference between the same pixel in compared images, ranging from `0` (strict) and
* `1` (lax). `"pixelmatch"` comparator computes color difference in
* [YIQ color space](https://en.wikipedia.org/wiki/YIQ) and defaults `threshold` value to `0.2`. This option is used
* by `pixelmatch` image comparator.
* [YIQ color space](https://en.wikipedia.org/wiki/YIQ) and defaults `threshold` value to `0.2`.
*/
threshold?: number;

View File

@ -631,13 +631,13 @@ test('should respect comparator name', async ({ runInlineTest }) => {
test('should pass', ({}) => {
expect(Buffer.from('${actual.toString('base64')}', 'base64')).toMatchSnapshot('snapshot.png', {
threshold: 0,
comparator: 'ssim-cie94',
_comparator: 'ssim-cie94',
});
});
test('should fail', ({}) => {
expect(Buffer.from('${actual.toString('base64')}', 'base64')).toMatchSnapshot('snapshot.png', {
threshold: 0,
comparator: 'pixelmatch',
_comparator: 'pixelmatch',
});
});
`
@ -662,7 +662,7 @@ test('should respect comparator in config', async ({ runInlineTest }) => {
name: 'should-pass',
expect: {
toMatchSnapshot: {
comparator: 'ssim-cie94',
_comparator: 'ssim-cie94',
}
},
},
@ -670,7 +670,7 @@ test('should respect comparator in config', async ({ runInlineTest }) => {
name: 'should-fail',
expect: {
toMatchSnapshot: {
comparator: 'pixelmatch',
_comparator: 'pixelmatch',
}
},
},

View File

@ -1035,14 +1035,14 @@ test('should respect comparator name', async ({ runInlineTest }) => {
await page.goto('${actualURL}');
await expect(page.locator('img')).toHaveScreenshot('snapshot.png', {
threshold: 0,
comparator: 'ssim-cie94',
_comparator: 'ssim-cie94',
});
});
pwt.test('should fail', async ({ page }) => {
await page.goto('${actualURL}');
await expect(page.locator('img')).toHaveScreenshot('snapshot.png', {
threshold: 0,
comparator: 'pixelmatch',
_comparator: 'pixelmatch',
});
});
`
@ -1065,7 +1065,7 @@ test('should respect comparator in config', async ({ runInlineTest }) => {
name: 'should-pass',
expect: {
toHaveScreenshot: {
comparator: 'ssim-cie94',
_comparator: 'ssim-cie94',
}
},
},
@ -1073,7 +1073,7 @@ test('should respect comparator in config', async ({ runInlineTest }) => {
name: 'should-fail',
expect: {
toHaveScreenshot: {
comparator: 'pixelmatch',
_comparator: 'pixelmatch',
}
},
},