diff --git a/core/src/components/item-sliding/test/basic/e2e.ts b/core/src/components/item-sliding/test/basic/e2e.ts deleted file mode 100644 index 225d0a543f..0000000000 --- a/core/src/components/item-sliding/test/basic/e2e.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { newE2EPage } from '@stencil/core/testing'; - -test('item-sliding: basic', async () => { - const page = await newE2EPage({ - url: '/src/components/item-sliding/test/basic?ionic:_testing=true', - }); - - const compare = await page.compareScreenshot(); - expect(compare).toMatchScreenshot(); -}); - -test('item-sliding:rtl: basic', async () => { - const page = await newE2EPage({ - url: '/src/components/item-sliding/test/basic?ionic:_testing=true&rtl=true', - }); - - const compare = await page.compareScreenshot(); - expect(compare).toMatchScreenshot(); -}); diff --git a/core/src/components/item-sliding/test/basic/index.html b/core/src/components/item-sliding/test/basic/index.html index a9bed0e0bd..87f649f922 100644 --- a/core/src/components/item-sliding/test/basic/index.html +++ b/core/src/components/item-sliding/test/basic/index.html @@ -19,33 +19,17 @@ Item Sliding - Basic - - Dynamic - - - Reload - - - - - -
- Toggle sliding - Toggle Dynamic Options Close Opened Items - Open Item Start - Open Item End - Open Item with only one side - Swap dynamic item + Open Item Start + Open Item End + Open Item with only one side
@@ -59,66 +43,6 @@ - - - One Line, dynamic option and text - - - - - - - - - - - - - - - - Two options, one dynamic option and text - - - - - - - - - - - - - - - - - - - - - -

HubStruck Notifications

-

A new message from a repo in your network

-

Oceanic Next has joined your network

-
- 10:45 AM -
- - - No close - - - - - - - - - -
- @@ -141,15 +65,15 @@ - +

RIGHT side - no icons

Hey do you want to go to the game tonight?

- Archive - Delete + Archive + Delete
@@ -161,8 +85,8 @@ - Archive - Delete + Archive + Delete @@ -174,138 +98,24 @@ - + Unread - - - Archive - - - - Delete - - - - - - - -

RIGHT/LEFT side - icons (slot="start")

-

I think I figured out how to get more Mountain Dew

-
-
- - - - Unread - - - - - - - Archive - - - - Delete - - -
- - - - - One Line w/ Icon, div only text - - - - - Archive - - - - - - - - - - One Line w/ Avatar, div only text - - - - - More - - - - Archive - - - - Delete - - - - - - - One Line, dynamic icon-start option - - - - + + Archive - - - + + + Delete - - - - - - -

DOWNLOAD

-

Paragraph text.

-
-
- - - Archive - - - -
Download
- - -
Loading...
-
-
-
- - - - - - - -

ion-item-sliding without options (no sliding)

-

Paragraph text.

-
-
-
- @@ -351,81 +161,10 @@ - - - - Dynamic First Item - - - First Item Options - - - - - -

Normal ion-item (no sliding)

-

Paragraph text.

-
-
- - - -

Normal button (no sliding)

-

Hey do you want to go to the game tonight?

-
-
-
diff --git a/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts index 3f8baae470..a3068258e2 100644 --- a/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts +++ b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts @@ -1,14 +1,51 @@ import { expect } from '@playwright/test'; -import { test } from '@utils/test/playwright'; +import { dragElementBy, test } from '@utils/test/playwright'; + +import { testSlidingItem } from '../test.utils'; test.describe('item-sliding: basic', () => { + test.beforeEach(async ({ skip }) => { + skip.mode('ios', "item-sliding doesn't have mode-specific styling"); + }); + + test('should not have visual regressions', async ({ page, browserName }, testInfo) => { + // TODO(FW-2608) + test.fixme( + testInfo.project.metadata.rtl === true && (browserName === 'firefox' || browserName === 'webkit'), + 'https://github.com/ionic-team/ionic-framework/issues/26103' + ); + + await page.goto(`/src/components/item-sliding/test/basic`); + const item = page.locator('#item2'); + + await testSlidingItem(page, item, 'start', true); + await testSlidingItem(page, item, 'end'); + }); + + test('should open when swiped', async ({ page, skip }) => { + skip.rtl(); + skip.browser( + (browserName: string) => browserName !== 'chromium', + 'dragElementBy is flaky outside of Chrome browsers.' + ); + + await page.goto(`/src/components/item-sliding/test/basic`); + const item = page.locator('#item2'); + + await dragElementBy(item, page, -150); + await page.waitForChanges(); + + // item-sliding doesn't have an easy way to tell whether it's fully open so just screenshot it + expect(await item.screenshot()).toMatchSnapshot(`item-sliding-gesture-${page.getSnapshotSettings()}.png`); + }); + test('should not scroll when the item-sliding is swiped', async ({ page, skip }) => { skip.browser('webkit', 'mouse.wheel is not available in WebKit'); skip.rtl(); await page.goto(`/src/components/item-sliding/test/basic`); - const itemSlidingEl = page.locator('#two-options'); + const itemSlidingEl = page.locator('#item2'); const scrollEl = page.locator('ion-content .inner-scroll'); expect(await scrollEl.evaluate((el: HTMLElement) => el.scrollTop)).toEqual(0); diff --git a/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000..1b65f9a2a4 Binary files /dev/null and b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-ios-ltr-Mobile-Chrome-linux.png differ diff --git a/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000..4162a5627e Binary files /dev/null and b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-ios-ltr-Mobile-Firefox-linux.png differ diff --git a/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-ios-ltr-Mobile-Safari-linux.png b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000..b87ceb126c Binary files /dev/null and b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-ios-ltr-Mobile-Safari-linux.png differ diff --git a/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-ios-rtl-Mobile-Chrome-linux.png b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-ios-rtl-Mobile-Chrome-linux.png new file mode 100644 index 0000000000..ce9bf3d800 Binary files /dev/null and b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-ios-rtl-Mobile-Chrome-linux.png differ diff --git a/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-md-ltr-Mobile-Chrome-linux.png b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000..df23ec0993 Binary files /dev/null and b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-md-ltr-Mobile-Chrome-linux.png differ diff --git a/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-md-ltr-Mobile-Firefox-linux.png b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000..a8caafbec8 Binary files /dev/null and b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-md-ltr-Mobile-Firefox-linux.png differ diff --git a/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-md-ltr-Mobile-Safari-linux.png b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000..cef7088eb2 Binary files /dev/null and b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-md-ltr-Mobile-Safari-linux.png differ diff --git a/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-md-rtl-Mobile-Chrome-linux.png b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-md-rtl-Mobile-Chrome-linux.png new file mode 100644 index 0000000000..93583899f1 Binary files /dev/null and b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-end-md-rtl-Mobile-Chrome-linux.png differ diff --git a/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-gesture-md-ltr-Mobile-Chrome-linux.png b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-gesture-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000..4e547fce98 Binary files /dev/null and b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-gesture-md-ltr-Mobile-Chrome-linux.png differ diff --git a/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000..dd43c966a4 Binary files /dev/null and b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-ios-ltr-Mobile-Chrome-linux.png differ diff --git a/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-ios-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000..afb6e15909 Binary files /dev/null and b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-ios-ltr-Mobile-Firefox-linux.png differ diff --git a/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-ios-ltr-Mobile-Safari-linux.png b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000..e0d81a76dd Binary files /dev/null and b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-ios-ltr-Mobile-Safari-linux.png differ diff --git a/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-ios-rtl-Mobile-Chrome-linux.png b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-ios-rtl-Mobile-Chrome-linux.png new file mode 100644 index 0000000000..574aa4b292 Binary files /dev/null and b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-ios-rtl-Mobile-Chrome-linux.png differ diff --git a/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-md-ltr-Mobile-Chrome-linux.png b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000..494b9a5b8e Binary files /dev/null and b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-md-ltr-Mobile-Chrome-linux.png differ diff --git a/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-md-ltr-Mobile-Firefox-linux.png b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000..67bd340257 Binary files /dev/null and b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-md-ltr-Mobile-Firefox-linux.png differ diff --git a/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-md-ltr-Mobile-Safari-linux.png b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000..516f195f0e Binary files /dev/null and b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-md-ltr-Mobile-Safari-linux.png differ diff --git a/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-md-rtl-Mobile-Chrome-linux.png b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-md-rtl-Mobile-Chrome-linux.png new file mode 100644 index 0000000000..abbc9a3438 Binary files /dev/null and b/core/src/components/item-sliding/test/basic/item-sliding.e2e.ts-snapshots/item-sliding-start-md-rtl-Mobile-Chrome-linux.png differ diff --git a/core/src/components/item-sliding/test/icons/index.html b/core/src/components/item-sliding/test/icons/index.html new file mode 100644 index 0000000000..853fccf379 --- /dev/null +++ b/core/src/components/item-sliding/test/icons/index.html @@ -0,0 +1,108 @@ + + + + + Item Sliding - Icons + + + + + + + + + + + + + Item Sliding - Icons + + + + + + + + Icons Only + + + + + + + + + + + + + + Icons in Start Slot + + + + + More + + + + Archive + + + + + + + Icons in End Slot + + + + + More + + + + Archive + + + + + + + Icons in Top Slot + + + + + More + + + + Archive + + + + + + + Icons in Bottom Slot + + + + + More + + + + Archive + + + + + + + + diff --git a/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts new file mode 100644 index 0000000000..403bdf2918 --- /dev/null +++ b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts @@ -0,0 +1,21 @@ +import { test } from '@utils/test/playwright'; + +import { testSlidingItem } from '../test.utils'; + +test.describe('item-sliding: icons', () => { + test('should not have visual regressions', async ({ page, browserName, skip }, testInfo) => { + // TODO(FW-2608) + test.fixme( + testInfo.project.metadata.rtl === true && (browserName === 'firefox' || browserName === 'webkit'), + 'https://github.com/ionic-team/ionic-framework/issues/26103' + ); + + skip.mode('ios', "item-sliding doesn't have mode-specific styling"); + await page.goto(`/src/components/item-sliding/test/icons`); + + const itemIDs = ['iconsOnly', 'iconsStart', 'iconsEnd', 'iconsTop', 'iconsBottom']; + for (const itemID of itemIDs) { + await testSlidingItem(page, page.locator(`#${itemID}`), itemID); + } + }); +}); diff --git a/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsBottom-md-ltr-Mobile-Chrome-linux.png b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsBottom-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000..af9ef726c1 Binary files /dev/null and b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsBottom-md-ltr-Mobile-Chrome-linux.png differ diff --git a/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsBottom-md-ltr-Mobile-Firefox-linux.png b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsBottom-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000..c61e5fd68a Binary files /dev/null and b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsBottom-md-ltr-Mobile-Firefox-linux.png differ diff --git a/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsBottom-md-ltr-Mobile-Safari-linux.png b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsBottom-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000..29f4ccda99 Binary files /dev/null and b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsBottom-md-ltr-Mobile-Safari-linux.png differ diff --git a/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsBottom-md-rtl-Mobile-Chrome-linux.png b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsBottom-md-rtl-Mobile-Chrome-linux.png new file mode 100644 index 0000000000..1b4cdbae24 Binary files /dev/null and b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsBottom-md-rtl-Mobile-Chrome-linux.png differ diff --git a/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsEnd-md-ltr-Mobile-Chrome-linux.png b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsEnd-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000..e923fa7d36 Binary files /dev/null and b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsEnd-md-ltr-Mobile-Chrome-linux.png differ diff --git a/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsEnd-md-ltr-Mobile-Firefox-linux.png b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsEnd-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000..0a51f3f20b Binary files /dev/null and b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsEnd-md-ltr-Mobile-Firefox-linux.png differ diff --git a/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsEnd-md-ltr-Mobile-Safari-linux.png b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsEnd-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000..8c70848f77 Binary files /dev/null and b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsEnd-md-ltr-Mobile-Safari-linux.png differ diff --git a/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsEnd-md-rtl-Mobile-Chrome-linux.png b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsEnd-md-rtl-Mobile-Chrome-linux.png new file mode 100644 index 0000000000..ca023833d3 Binary files /dev/null and b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsEnd-md-rtl-Mobile-Chrome-linux.png differ diff --git a/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsOnly-md-ltr-Mobile-Chrome-linux.png b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsOnly-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000..000654205c Binary files /dev/null and b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsOnly-md-ltr-Mobile-Chrome-linux.png differ diff --git a/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsOnly-md-ltr-Mobile-Firefox-linux.png b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsOnly-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000..991ab7a0c8 Binary files /dev/null and b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsOnly-md-ltr-Mobile-Firefox-linux.png differ diff --git a/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsOnly-md-ltr-Mobile-Safari-linux.png b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsOnly-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000..8e22b58c2e Binary files /dev/null and b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsOnly-md-ltr-Mobile-Safari-linux.png differ diff --git a/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsOnly-md-rtl-Mobile-Chrome-linux.png b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsOnly-md-rtl-Mobile-Chrome-linux.png new file mode 100644 index 0000000000..79b8cb4791 Binary files /dev/null and b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsOnly-md-rtl-Mobile-Chrome-linux.png differ diff --git a/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsStart-md-ltr-Mobile-Chrome-linux.png b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsStart-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000..589c84d070 Binary files /dev/null and b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsStart-md-ltr-Mobile-Chrome-linux.png differ diff --git a/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsStart-md-ltr-Mobile-Firefox-linux.png b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsStart-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000..226ae24ef0 Binary files /dev/null and b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsStart-md-ltr-Mobile-Firefox-linux.png differ diff --git a/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsStart-md-ltr-Mobile-Safari-linux.png b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsStart-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000..cea7726dc1 Binary files /dev/null and b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsStart-md-ltr-Mobile-Safari-linux.png differ diff --git a/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsStart-md-rtl-Mobile-Chrome-linux.png b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsStart-md-rtl-Mobile-Chrome-linux.png new file mode 100644 index 0000000000..a8b27b8e0a Binary files /dev/null and b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsStart-md-rtl-Mobile-Chrome-linux.png differ diff --git a/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsTop-md-ltr-Mobile-Chrome-linux.png b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsTop-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000..2fcd0f47c6 Binary files /dev/null and b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsTop-md-ltr-Mobile-Chrome-linux.png differ diff --git a/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsTop-md-ltr-Mobile-Firefox-linux.png b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsTop-md-ltr-Mobile-Firefox-linux.png new file mode 100644 index 0000000000..11285a2798 Binary files /dev/null and b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsTop-md-ltr-Mobile-Firefox-linux.png differ diff --git a/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsTop-md-ltr-Mobile-Safari-linux.png b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsTop-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000..3f0837f289 Binary files /dev/null and b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsTop-md-ltr-Mobile-Safari-linux.png differ diff --git a/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsTop-md-rtl-Mobile-Chrome-linux.png b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsTop-md-rtl-Mobile-Chrome-linux.png new file mode 100644 index 0000000000..38b13fa837 Binary files /dev/null and b/core/src/components/item-sliding/test/icons/item-sliding.e2e.ts-snapshots/item-sliding-iconsTop-md-rtl-Mobile-Chrome-linux.png differ diff --git a/core/src/components/item-sliding/test/interactive/e2e.ts b/core/src/components/item-sliding/test/interactive/e2e.ts deleted file mode 100644 index 4f669370d1..0000000000 --- a/core/src/components/item-sliding/test/interactive/e2e.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { newE2EPage } from '@stencil/core/testing'; - -import { openItemSliding } from '../test.utils'; - -test('item-sliding: interactive', async () => { - const page = await newE2EPage({ - url: '/src/components/item-sliding/test/interactive?ionic:_testing=true', - }); - - const compares = []; - compares.push(await page.compareScreenshot()); - - const items = await page.$$('ion-item-sliding'); - expect(items.length).toEqual(3); - - await slideAndDelete(items[0], page); - - const itemsAfterFirstSlide = await page.$$('ion-item-sliding'); - expect(itemsAfterFirstSlide.length).toEqual(2); - - await slideAndDelete(items[1], page); - - const itemsAfterSecondSlide = await page.$$('ion-item-sliding'); - expect(itemsAfterSecondSlide.length).toEqual(1); - - for (const compare of compares) { - expect(compare).toMatchScreenshot(); - } -}); - -const slideAndDelete = async (item: any, page: any) => { - try { - // Get the element's ID - const id = await (await item.getProperty('id')).jsonValue(); - await openItemSliding(`#${id}`, page); - await deleteItemSliding(item, page, id); - } catch (err) { - throw err; - } -}; - -const deleteItemSliding = async (item: any, page: any, id: string) => { - // Click the "delete" option - const options = await item.$$('ion-item-option'); - await options[0].click(); - - // Wait for element to be removed from DOM - await page.waitForSelector(id, { hidden: true }); - - await page.waitForTimeout(1000); -}; diff --git a/core/src/components/item-sliding/test/interactive/index.html b/core/src/components/item-sliding/test/interactive/index.html deleted file mode 100644 index e453f4f8bf..0000000000 --- a/core/src/components/item-sliding/test/interactive/index.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - Item Sliding - Standalone - - - - - - - - - - - - - - diff --git a/core/src/components/item-sliding/test/standalone/e2e.ts b/core/src/components/item-sliding/test/standalone/e2e.ts deleted file mode 100644 index bc577ad521..0000000000 --- a/core/src/components/item-sliding/test/standalone/e2e.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { newE2EPage } from '@stencil/core/testing'; - -import { closeItemSliding, openItemSliding } from '../test.utils'; - -test('item-sliding: standalone', async () => { - const page = await newE2EPage({ - url: '/src/components/item-sliding/test/standalone?ionic:_testing=true', - }); - - const compares = []; - compares.push(await page.compareScreenshot()); - - // Pass sliding item with start icons in option - await openItemSliding('#startItem', page); - compares.push(await page.compareScreenshot(`start icons open`)); - await closeItemSliding(page); - - // Pass sliding item with top icons in option - await openItemSliding('#topItem', page); - compares.push(await page.compareScreenshot(`top icons open`)); - await closeItemSliding(page); - - // Pass sliding item with anchor option - await openItemSliding('#anchorItem', page); - compares.push(await page.compareScreenshot(`anchor option`)); - await closeItemSliding(page); - - for (const compare of compares) { - expect(compare).toMatchScreenshot(); - } -}); - -test('item-sliding:rtl: standalone', async () => { - const page = await newE2EPage({ - url: '/src/components/item-sliding/test/standalone?ionic:_testing=true&rtl=true', - }); - - const compares = []; - compares.push(await page.compareScreenshot()); - - // Pass sliding item with start icons in option - await openItemSliding('#startItem', page, true); - compares.push(await page.compareScreenshot(`start icons open`)); - await closeItemSliding(page); - - // Pass sliding item with top icons in option - await openItemSliding('#topItem', page, true); - compares.push(await page.compareScreenshot(`top icons open`)); - await closeItemSliding(page); - - // Pass sliding item with anchor option - await openItemSliding('#anchorItem', page, true); - compares.push(await page.compareScreenshot(`anchor option`)); - await closeItemSliding(page); - - for (const compare of compares) { - expect(compare).toMatchScreenshot(); - } -}); diff --git a/core/src/components/item-sliding/test/standalone/index.html b/core/src/components/item-sliding/test/standalone/index.html deleted file mode 100644 index 29645780fc..0000000000 --- a/core/src/components/item-sliding/test/standalone/index.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - Item Sliding - Standalone - - - - - - - - - - - - - Favorite - Share - - - - Item Options - - - - Unread - - - - - - - Delete - - - - Expandable Options - - - - Archive - - - - - - - -

HubStruck Notifications

-

A new message in your network

-

Oceanic Next has joined your network

-
- 10:45 AM -
- - - - - - - - - - - - - - - -
- - - - - Sliding Item, Icons Start - - - - - More - - - - Archive - - - - - - - - Sliding Item, Icons End - - - - - More - - - - Archive - - - - - - - - Sliding Item, Icons Top - - - - - More - - - - Archive - - - - - - - - Sliding Item, Icons Bottom - - - - - More - - - - Archive - - - - - - - - Sliding Item, Anchor Icon Option - - - - - - - - - - - - - - diff --git a/core/src/components/item-sliding/test/test.utils.ts b/core/src/components/item-sliding/test/test.utils.ts index 1f236c5812..9fa3ee27a0 100644 --- a/core/src/components/item-sliding/test/test.utils.ts +++ b/core/src/components/item-sliding/test/test.utils.ts @@ -1,58 +1,33 @@ -// Opens a sliding item by simulating a drag event -export const openItemSliding = async (id: string, page: any, rtl = false) => { - try { - const slidingItem = await page.$(id); +import { expect } from '@playwright/test'; +import type { Locator } from '@playwright/test'; +import type { E2EPage } from '@utils/test/playwright'; - // Simulate a drag - const boundingBox = await slidingItem.boundingBox(); - const centerX = parseFloat(boundingBox.x + boundingBox.width / 2); - const centerY = parseFloat(boundingBox.y + boundingBox.height / 2); - - // In LTR start the drag at the center, move halfway in between the - // center and 0, then end at 0 - // - // 0 boundingBox.width - // |---------|---------|---------|---------| - // endX halfX centerX - - let halfX = centerX / 2; - let endX = 0; - - // In RTL start at the center, move halfway in between the center and - // the total width, then end at the total width - // - // 0 boundingBox.width - // |---------|---------|---------|---------| - // centerX halfX endX - - if (rtl) { - halfX = centerX + centerX / 2; - endX = boundingBox.width; - } - - // Start in the center of the item - await page.mouse.move(centerX, centerY); - await page.mouse.down(); - - // Move halfway first - await page.mouse.move(halfX, centerY); - - // Move all of the way to the end - await page.mouse.move(endX, centerY); - await page.mouse.up(); - - // Add a timeout to make sure the item is open - await page.waitForTimeout(2000); - } catch (err) { - throw err; +export const testSlidingItem = async ( + page: E2EPage, + item: Locator, + screenshotNameSuffix: string, + openStart = false +) => { + // passing a param into the eval callback is tricky due to execution context + // so just do the check outside the callback instead to make things easy + if (openStart) { + await item.evaluate(async (el: HTMLIonItemSlidingElement) => { + await el.open('start'); + }); + } else { + await item.evaluate(async (el: HTMLIonItemSlidingElement) => { + await el.open('end'); + }); } -}; -// Close a sliding item after taking a screenshot -// to allow other sliding items to open -export const closeItemSliding = async (page: any) => { - await page.mouse.move(0, 0); - await page.mouse.down(); - await page.mouse.up(); - await page.waitForTimeout(1000); + // opening animation takes longer than waitForChanges accounts for + await page.waitForTimeout(500); + + expect(await item.screenshot()).toMatchSnapshot( + `item-sliding-${screenshotNameSuffix}-${page.getSnapshotSettings()}.png` + ); + + await item.evaluate(async (el: HTMLIonItemSlidingElement) => { + await el.close(); + }); };