test(checkbox): migrate to toHaveScreenshot (#28085)
Issue number: N/A --------- <!-- Please do not submit updates to dependencies unless it fixes an issue. --> <!-- Please try to limit your pull request to one type (bugfix, feature, etc). Submit multiple pull requests if needed. --> ## What is the current behavior? <!-- Please describe the current behavior that you are modifying. --> Several tests for this component are still using Playwright's old `toMatchSnapshot` assertion. It's now recommended to use the newer `toHaveScreenshot` assertion. This new assertion reduces the size of each screenshot and brings anti-flake improvements such as disabling animations by default. We previously migrated most of our codebase to use `toHaveScreenshot`, but it looks like we missed the tests that were written during the development of Ionic 7 in a separate branch off `main`. ## What is the new behavior? <!-- Please describe the behavior or changes that are being added by this PR. --> - Migrate component tests to use `toHaveScreenshot`. Note: There should be no layout changes to any of the screenshots. The only difference between the old and new screenshots should be image and file size. ## Does this introduce a breaking change? - [ ] Yes - [x] No <!-- If this introduces a breaking change, please describe the impact and migration path for existing applications below. --> ## Other information <!-- Any other information that is important to this PR such as screenshots of how the component looks before and after the change. --> --------- Co-authored-by: ionitron <hi@ionicframework.com>
@ -12,7 +12,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const checkbox = page.locator('ion-checkbox');
|
const checkbox = page.locator('ion-checkbox');
|
||||||
expect(await checkbox.screenshot()).toMatchSnapshot(screenshot(`checkbox-color-checked`));
|
await expect(checkbox).toHaveScreenshot(screenshot(`checkbox-color-checked`));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should not apply color when unchecked', async ({ page }) => {
|
test('should not apply color when unchecked', async ({ page }) => {
|
||||||
@ -24,7 +24,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const checkbox = page.locator('ion-checkbox');
|
const checkbox = page.locator('ion-checkbox');
|
||||||
expect(await checkbox.screenshot()).toMatchSnapshot(screenshot(`checkbox-color-unchecked`));
|
await expect(checkbox).toHaveScreenshot(screenshot(`checkbox-color-unchecked`));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 1015 B |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 906 B |
@ -15,7 +15,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
config
|
config
|
||||||
);
|
);
|
||||||
const list = page.locator('ion-list');
|
const list = page.locator('ion-list');
|
||||||
expect(await list.screenshot()).toMatchSnapshot(screenshot(`checkbox-list`));
|
await expect(list).toHaveScreenshot(screenshot(`checkbox-list`));
|
||||||
});
|
});
|
||||||
test('should render correctly in inset list', async ({ page }) => {
|
test('should render correctly in inset list', async ({ page }) => {
|
||||||
await page.setContent(
|
await page.setContent(
|
||||||
@ -29,7 +29,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
config
|
config
|
||||||
);
|
);
|
||||||
const list = page.locator('ion-list');
|
const list = page.locator('ion-list');
|
||||||
expect(await list.screenshot()).toMatchSnapshot(screenshot(`checkbox-inset-list`));
|
await expect(list).toHaveScreenshot(screenshot(`checkbox-inset-list`));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -46,7 +46,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|||||||
config
|
config
|
||||||
);
|
);
|
||||||
const item = page.locator('ion-item');
|
const item = page.locator('ion-item');
|
||||||
expect(await item.screenshot()).toMatchSnapshot(screenshot(`checkbox-item-color`));
|
await expect(item).toHaveScreenshot(screenshot(`checkbox-item-color`));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -67,7 +67,7 @@ configs({ directions: ['ltr'], modes: ['md'] }).forEach(({ title, screenshot, co
|
|||||||
config
|
config
|
||||||
);
|
);
|
||||||
const list = page.locator('ion-list');
|
const list = page.locator('ion-list');
|
||||||
expect(await list.screenshot()).toMatchSnapshot(screenshot(`checkbox-long-label-in-item`));
|
await expect(list).toHaveScreenshot(screenshot(`checkbox-long-label-in-item`));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 2.6 KiB |
@ -21,7 +21,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const checkbox = page.locator('ion-checkbox');
|
const checkbox = page.locator('ion-checkbox');
|
||||||
expect(await checkbox.screenshot()).toMatchSnapshot(screenshot(`checkbox-label-start-justify-start`));
|
await expect(checkbox).toHaveScreenshot(screenshot(`checkbox-label-start-justify-start`));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should render an end justification with label in the start position', async ({ page }) => {
|
test('should render an end justification with label in the start position', async ({ page }) => {
|
||||||
@ -33,7 +33,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const checkbox = page.locator('ion-checkbox');
|
const checkbox = page.locator('ion-checkbox');
|
||||||
expect(await checkbox.screenshot()).toMatchSnapshot(screenshot(`checkbox-label-start-justify-end`));
|
await expect(checkbox).toHaveScreenshot(screenshot(`checkbox-label-start-justify-end`));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should render a space between justification with label in the start position', async ({ page }) => {
|
test('should render a space between justification with label in the start position', async ({ page }) => {
|
||||||
@ -45,7 +45,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const checkbox = page.locator('ion-checkbox');
|
const checkbox = page.locator('ion-checkbox');
|
||||||
expect(await checkbox.screenshot()).toMatchSnapshot(screenshot(`checkbox-label-start-justify-space-between`));
|
await expect(checkbox).toHaveScreenshot(screenshot(`checkbox-label-start-justify-space-between`));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should truncate long labels with ellipses', async ({ page }) => {
|
test('should truncate long labels with ellipses', async ({ page }) => {
|
||||||
@ -59,7 +59,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const checkbox = page.locator('ion-checkbox');
|
const checkbox = page.locator('ion-checkbox');
|
||||||
expect(await checkbox.screenshot()).toMatchSnapshot(screenshot(`checkbox-long-label`));
|
await expect(checkbox).toHaveScreenshot(screenshot(`checkbox-long-label`));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -73,7 +73,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const checkbox = page.locator('ion-checkbox');
|
const checkbox = page.locator('ion-checkbox');
|
||||||
expect(await checkbox.screenshot()).toMatchSnapshot(screenshot(`checkbox-label-end-justify-start`));
|
await expect(checkbox).toHaveScreenshot(screenshot(`checkbox-label-end-justify-start`));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should render an end justification with label in the end position', async ({ page }) => {
|
test('should render an end justification with label in the end position', async ({ page }) => {
|
||||||
@ -85,7 +85,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const checkbox = page.locator('ion-checkbox');
|
const checkbox = page.locator('ion-checkbox');
|
||||||
expect(await checkbox.screenshot()).toMatchSnapshot(screenshot(`checkbox-label-end-justify-end`));
|
await expect(checkbox).toHaveScreenshot(screenshot(`checkbox-label-end-justify-end`));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should render a space between justification with label in the end position', async ({ page }) => {
|
test('should render a space between justification with label in the end position', async ({ page }) => {
|
||||||
@ -97,7 +97,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const checkbox = page.locator('ion-checkbox');
|
const checkbox = page.locator('ion-checkbox');
|
||||||
expect(await checkbox.screenshot()).toMatchSnapshot(screenshot(`checkbox-label-end-justify-space-between`));
|
await expect(checkbox).toHaveScreenshot(screenshot(`checkbox-label-end-justify-space-between`));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -111,7 +111,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const checkbox = page.locator('ion-checkbox');
|
const checkbox = page.locator('ion-checkbox');
|
||||||
expect(await checkbox.screenshot()).toMatchSnapshot(screenshot(`checkbox-label-fixed-justify-start`));
|
await expect(checkbox).toHaveScreenshot(screenshot(`checkbox-label-fixed-justify-start`));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should render an end justification with label in the fixed position', async ({ page }) => {
|
test('should render an end justification with label in the fixed position', async ({ page }) => {
|
||||||
@ -123,7 +123,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const checkbox = page.locator('ion-checkbox');
|
const checkbox = page.locator('ion-checkbox');
|
||||||
expect(await checkbox.screenshot()).toMatchSnapshot(screenshot(`checkbox-label-fixed-justify-end`));
|
await expect(checkbox).toHaveScreenshot(screenshot(`checkbox-label-fixed-justify-end`));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should render a space between justification with label in the fixed position', async ({ page }) => {
|
test('should render a space between justification with label in the fixed position', async ({ page }) => {
|
||||||
@ -135,7 +135,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const checkbox = page.locator('ion-checkbox');
|
const checkbox = page.locator('ion-checkbox');
|
||||||
expect(await checkbox.screenshot()).toMatchSnapshot(screenshot(`checkbox-label-fixed-justify-space-between`));
|
await expect(checkbox).toHaveScreenshot(screenshot(`checkbox-label-fixed-justify-space-between`));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 956 B |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 977 B |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 948 B |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 946 B |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 962 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 939 B |
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 939 B |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 962 B |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 946 B |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 948 B |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.6 KiB |