chore(): sync with main
@ -87,7 +87,7 @@ const config: PlaywrightTestConfig = {
|
|||||||
* Increases the maximum allowed pixel difference to account
|
* Increases the maximum allowed pixel difference to account
|
||||||
* for slight browser rendering inconsistencies.
|
* for slight browser rendering inconsistencies.
|
||||||
*/
|
*/
|
||||||
maxDiffPixelRatio: 0.005
|
maxDiffPixelRatio: 0.0025
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
/* Fail the build on CI if you accidentally left test.only in the source code. */
|
/* Fail the build on CI if you accidentally left test.only in the source code. */
|
||||||
|
56
core/src/components/accordion/test/accordion.e2e.ts
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
import { expect } from '@playwright/test';
|
||||||
|
import { test } from '@utils/test/playwright';
|
||||||
|
|
||||||
|
test.describe('accordion: states', () => {
|
||||||
|
test.beforeEach(({ skip }) => {
|
||||||
|
skip.rtl();
|
||||||
|
skip.mode('ios');
|
||||||
|
});
|
||||||
|
test('should properly set readonly on child accordions', async ({ page }) => {
|
||||||
|
await page.setContent(`
|
||||||
|
<ion-accordion-group animated="false">
|
||||||
|
<ion-accordion>
|
||||||
|
<ion-item slot="header">Label</ion-item>
|
||||||
|
<div slot="content">Content</div>
|
||||||
|
</ion-accordion>
|
||||||
|
</ion-accordion-group>
|
||||||
|
`);
|
||||||
|
|
||||||
|
const accordionGroup = page.locator('ion-accordion-group');
|
||||||
|
const accordion = page.locator('ion-accordion');
|
||||||
|
|
||||||
|
expect(accordion).toHaveJSProperty('readonly', false);
|
||||||
|
|
||||||
|
await accordionGroup.evaluate((el: HTMLIonAccordionGroupElement) => {
|
||||||
|
el.readonly = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
await page.waitForChanges();
|
||||||
|
|
||||||
|
expect(accordion).toHaveJSProperty('readonly', true);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should properly set disabled on child accordions', async ({ page }) => {
|
||||||
|
await page.setContent(`
|
||||||
|
<ion-accordion-group animated="false">
|
||||||
|
<ion-accordion>
|
||||||
|
<ion-item slot="header">Label</ion-item>
|
||||||
|
<div slot="content">Content</div>
|
||||||
|
</ion-accordion>
|
||||||
|
</ion-accordion-group>
|
||||||
|
`);
|
||||||
|
|
||||||
|
const accordionGroup = page.locator('ion-accordion-group');
|
||||||
|
const accordion = page.locator('ion-accordion');
|
||||||
|
|
||||||
|
expect(accordion).toHaveJSProperty('disabled', false);
|
||||||
|
|
||||||
|
await accordionGroup.evaluate((el: HTMLIonAccordionGroupElement) => {
|
||||||
|
el.disabled = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
await page.waitForChanges();
|
||||||
|
|
||||||
|
expect(accordion).toHaveJSProperty('disabled', true);
|
||||||
|
});
|
||||||
|
});
|
@ -1,55 +0,0 @@
|
|||||||
import { newE2EPage } from '@stencil/core/testing';
|
|
||||||
|
|
||||||
test('should properly set readonly on child accordions', async () => {
|
|
||||||
const page = await newE2EPage({
|
|
||||||
html: `
|
|
||||||
<ion-accordion-group animated="false">
|
|
||||||
<ion-accordion>
|
|
||||||
<ion-item slot="header">Label</ion-item>
|
|
||||||
<div slot="content">Content</div>
|
|
||||||
</ion-accordion>
|
|
||||||
</ion-accordion-group>
|
|
||||||
`,
|
|
||||||
});
|
|
||||||
|
|
||||||
const accordion = await page.find('ion-accordion');
|
|
||||||
const value = await accordion.getProperty('readonly');
|
|
||||||
|
|
||||||
expect(value).toBe(false);
|
|
||||||
|
|
||||||
await page.$eval('ion-accordion-group', (el: HTMLIonAccordionGroupElement) => {
|
|
||||||
el.readonly = true;
|
|
||||||
});
|
|
||||||
|
|
||||||
await page.waitForChanges();
|
|
||||||
|
|
||||||
const valueAgain = await accordion.getProperty('readonly');
|
|
||||||
expect(valueAgain).toBe(true);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('should properly set disabled on child accordions', async () => {
|
|
||||||
const page = await newE2EPage({
|
|
||||||
html: `
|
|
||||||
<ion-accordion-group animated="false">
|
|
||||||
<ion-accordion>
|
|
||||||
<ion-item slot="header">Label</ion-item>
|
|
||||||
<div slot="content">Content</div>
|
|
||||||
</ion-accordion>
|
|
||||||
</ion-accordion-group>
|
|
||||||
`,
|
|
||||||
});
|
|
||||||
|
|
||||||
const accordion = await page.find('ion-accordion');
|
|
||||||
const value = await accordion.getProperty('disabled');
|
|
||||||
|
|
||||||
expect(value).toBe(false);
|
|
||||||
|
|
||||||
await page.$eval('ion-accordion-group', (el: HTMLIonAccordionGroupElement) => {
|
|
||||||
el.disabled = true;
|
|
||||||
});
|
|
||||||
|
|
||||||
await page.waitForChanges();
|
|
||||||
|
|
||||||
const valueAgain = await accordion.getProperty('disabled');
|
|
||||||
expect(valueAgain).toBe(true);
|
|
||||||
});
|
|
Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 101 KiB |
@ -1893,6 +1893,7 @@ export class Datetime implements ComponentInterface {
|
|||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
icon={this.showMonthAndYear ? expandedIcon : collapsedIcon}
|
icon={this.showMonthAndYear ? expandedIcon : collapsedIcon}
|
||||||
lazy={false}
|
lazy={false}
|
||||||
|
flipRtl={true}
|
||||||
></ion-icon>
|
></ion-icon>
|
||||||
</ion-label>
|
</ion-label>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
|
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 9.7 KiB |
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 9.7 KiB |
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
@ -156,9 +156,8 @@ class DatetimeLocaleFixture {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async expectLocalizedDatePicker() {
|
async expectLocalizedDatePicker() {
|
||||||
await this.waitForDatetime();
|
|
||||||
|
|
||||||
await this.page.setIonViewport();
|
await this.page.setIonViewport();
|
||||||
|
await this.waitForDatetime();
|
||||||
// Captures a screenshot of the datepicker with localized am/pm labels
|
// Captures a screenshot of the datepicker with localized am/pm labels
|
||||||
expect(await this.page.screenshot()).toMatchSnapshot(
|
expect(await this.page.screenshot()).toMatchSnapshot(
|
||||||
`datetime-locale-${this.locale}-diff-${this.page.getSnapshotSettings()}.png`
|
`datetime-locale-${this.locale}-diff-${this.page.getSnapshotSettings()}.png`
|
||||||
@ -166,8 +165,8 @@ class DatetimeLocaleFixture {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async expectLocalizedMonthYearPicker() {
|
async expectLocalizedMonthYearPicker() {
|
||||||
await this.waitForDatetime();
|
|
||||||
await this.page.setIonViewport();
|
await this.page.setIonViewport();
|
||||||
|
await this.waitForDatetime();
|
||||||
// Opens the month/year picker
|
// Opens the month/year picker
|
||||||
const monthYearButton = this.page.locator('#am .calendar-month-year ion-item');
|
const monthYearButton = this.page.locator('#am .calendar-month-year ion-item');
|
||||||
await monthYearButton.click();
|
await monthYearButton.click();
|
||||||
@ -179,8 +178,8 @@ class DatetimeLocaleFixture {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async expectLocalizedTimePicker() {
|
async expectLocalizedTimePicker() {
|
||||||
await this.waitForDatetime();
|
|
||||||
await this.page.setIonViewport();
|
await this.page.setIonViewport();
|
||||||
|
await this.waitForDatetime();
|
||||||
// Opens the timepicker
|
// Opens the timepicker
|
||||||
const timePickerButton = this.page.locator('#am .time-body');
|
const timePickerButton = this.page.locator('#am .time-body');
|
||||||
const timePickerPopoverPresentSpy = await this.page.spyOnEvent('ionPopoverDidPresent');
|
const timePickerPopoverPresentSpy = await this.page.spyOnEvent('ionPopoverDidPresent');
|
||||||
|
Before Width: | Height: | Size: 197 KiB After Width: | Height: | Size: 196 KiB |
Before Width: | Height: | Size: 202 KiB After Width: | Height: | Size: 202 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 196 KiB After Width: | Height: | Size: 196 KiB |
Before Width: | Height: | Size: 158 KiB After Width: | Height: | Size: 162 KiB |
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 168 KiB |