Skip to content

feat(item-sliding): add automatic full expand animation of items #18772

feat(item-sliding): add automatic full expand animation of items

feat(item-sliding): add automatic full expand animation of items #18772

Triggered via pull request April 2, 2026 08:51
Status Success
Total duration 14m 18s
Artifacts 27

build.yml

on: pull_request
build-react
48s
build-react
build-vue
43s
build-vue
Matrix: test-core-screenshot
build-angular
1m 17s
build-angular
build-angular-server
59s
build-angular-server
test-core-clean-build
18s
test-core-clean-build
test-core-lint
59s
test-core-lint
test-core-spec
1m 4s
test-core-spec
build-react-router
29s
build-react-router
build-vue-router
46s
build-vue-router
verify-screenshots
2s
verify-screenshots
Matrix: test-angular-e2e
Matrix: test-react-e2e
Matrix: test-react-router-e2e
Matrix: test-vue-e2e
verify-test-angular-e2e
2s
verify-test-angular-e2e
verify-test-react-e2e
4s
verify-test-react-e2e
verify-test-react-router-e2e
4s
verify-test-react-router-e2e
verify-test-vue-e2e
2s
verify-test-vue-e2e
Fit to window
Zoom out
Zoom in

Annotations

8 errors and 20 notices
[Mobile Chrome] › src/components/action-sheet/test/a11y/action-sheet.e2e.ts:158:9 › action-sheet: radio buttons - ios/ltr › should navigate radio buttons with keyboard: src/components/action-sheet/test/a11y/action-sheet.e2e.ts#L188
1) [Mobile Chrome] › src/components/action-sheet/test/a11y/action-sheet.e2e.ts:158:9 › action-sheet: radio buttons - ios/ltr › should navigate radio buttons with keyboard Error: expect(received).toBe(expected) // Object.is equality Expected: "Cancel" Received: "Option 1" 186 | 187 | focusedElement = await page.evaluate(() => document.activeElement?.textContent?.trim()); > 188 | expect(focusedElement).toBe('Cancel'); | ^ 189 | }); 190 | }); 191 | }); at /ionic/src/components/action-sheet/test/a11y/action-sheet.e2e.ts:188:30
[Mobile Safari] › src/components/toast/test/swipe-gesture/toast.e2e.ts:25:9 › toast: swipe gesture with top position - ios/ltr › should swipe up to dismiss with anchor: src/components/toast/test/swipe-gesture/toast.e2e.ts#L0
1) [Mobile Safari] › src/components/toast/test/swipe-gesture/toast.e2e.ts:25:9 › toast: swipe gesture with top position - ios/ltr › should swipe up to dismiss with anchor Test timeout of 30000ms exceeded.
[Mobile Safari] › src/components/checkbox/test/a11y/checkbox.e2e.ts:7:9 › checkbox: a11y - ios/ltr › should not have accessibility violations: src/components/checkbox/test/a11y/checkbox.e2e.ts#L23
1) [Mobile Safari] › src/components/checkbox/test/a11y/checkbox.e2e.ts:7:9 › checkbox: a11y - ios/ltr › should not have accessibility violations Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 69 - Array [] + Array [ + Object { + "description": "Ensure every ARIA toggle field has an accessible name", + "help": "ARIA toggle fields must have an accessible name", + "helpUrl": "https://dequeuniversity.com/rules/axe/4.11/aria-toggle-field-name?application=playwright", + "id": "aria-toggle-field-name", + "impact": "serious", + "nodes": Array [ + Object { + "all": Array [], + "any": Array [ + Object { + "data": null, + "id": "has-visible-text", + "impact": "serious", + "message": "Element does not have text that is visible to screen readers", + "relatedNodes": Array [], + }, + Object { + "data": null, + "id": "aria-label", + "impact": "serious", + "message": "aria-label attribute does not exist or is empty", + "relatedNodes": Array [], + }, + Object { + "data": null, + "id": "aria-labelledby", + "impact": "serious", + "message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty", + "relatedNodes": Array [], + }, + Object { + "data": Object { + "messageKey": "noAttr", + }, + "id": "non-empty-title", + "impact": "serious", + "message": "Element has no title attribute", + "relatedNodes": Array [], + }, + ], + "failureSummary": "Fix any of the following: + Element does not have text that is visible to screen readers + aria-label attribute does not exist or is empty + aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty + Element has no title attribute", + "html": "<ion-checkbox role=\"checkbox\" aria-checked=\"false\" tabindex=\"0\" class=\"ios in-item ion-focusable interactive checkbox-label-placement-start checkbox-shape-soft hydrated\">Checkbox in item<input type=\"hidden\" class=\"aux-input\" name=\"ion-cb-3\" value=\"\"></ion-checkbox>", + "impact": "serious", + "none": Array [], + "target": Array [ + ".in-item", + ], + }, + ], + "tags": Array [ + "cat.aria", + "wcag2a", + "wcag412", + "TTv5", + "TT5.c", + "EN-301-549", + "EN-9.4.1.2", + "ACT", + "RGAAv4", + "RGAA-7.1.1", + ], + }, + ] 21 | 22 | const results = await new AxeBuilder({ page }).analyze(); > 23 | expect(results.violations).toEqual([]); | ^ 24 | }); 25 | }); 26 | }); at /ionic/src/components/checkbox/test/a11y/checkbox.e2e.ts:23:34
[Mobile Firefox] › src/components/action-sheet/test/a11y/action-sheet.e2e.ts:158:9 › action-sheet: radio buttons - ios/ltr › should navigate radio buttons with keyboard: src/components/action-sheet/test/a11y/action-sheet.e2e.ts#L188
1) [Mobile Firefox] › src/components/action-sheet/test/a11y/action-sheet.e2e.ts:158:9 › action-sheet: radio buttons - ios/ltr › should navigate radio buttons with keyboard Error: expect(received).toBe(expected) // Object.is equality Expected: "Cancel" Received: "Option 1" 186 | 187 | focusedElement = await page.evaluate(() => document.activeElement?.textContent?.trim()); > 188 | expect(focusedElement).toBe('Cancel'); | ^ 189 | }); 190 | }); 191 | }); at /ionic/src/components/action-sheet/test/a11y/action-sheet.e2e.ts:188:30
[Mobile Safari] › src/components/item-sliding/test/icons/item-sliding.e2e.ts:13:9 › item-sliding: icons - md/rtl › should not have visual regressions: src/components/item-sliding/test/icons/item-sliding.e2e.ts#L33
4) [Mobile Safari] › src/components/item-sliding/test/icons/item-sliding.e2e.ts:13:9 › item-sliding: icons - md/rtl › should not have visual regressions Error: expect(locator).toHaveScreenshot(expected) failed Locator: locator('#iconsOnly') 15127 pixels (ratio 0.81 of all image pixels) are different. Snapshot: item-sliding-icons-only-md-rtl.png Call log: - Expect "toHaveScreenshot(item-sliding-icons-only-md-rtl.png)" with timeout 5000ms - verifying given screenshot expectation - waiting for locator('#iconsOnly') - locator resolved to <ion-item-sliding id="iconsOnly" class="md hydrated item-sliding-active-slide item-sliding-active-options-start item-sliding-active-swipe-start">…</ion-item-sliding> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - 15127 pixels (ratio 0.81 of all image pixels) are different. - waiting 100ms before taking screenshot - waiting for locator('#iconsOnly') - locator resolved to <ion-item-sliding id="iconsOnly" class="md hydrated item-sliding-active-slide item-sliding-active-options-start item-sliding-active-swipe-start">…</ion-item-sliding> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - captured a stable screenshot - 15127 pixels (ratio 0.81 of all image pixels) are different. 31 | // Convert camelCase ids to kebab-case for screenshot file names 32 | const itemIDKebab = itemID.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); > 33 | await expect(item).toHaveScreenshot(screenshot(`item-sliding-${itemIDKebab}`)); | ^ 34 | } 35 | }); 36 | }); at /ionic/src/components/item-sliding/test/icons/item-sliding.e2e.ts:33:28
[Mobile Safari] › src/components/item-sliding/test/icons/item-sliding.e2e.ts:13:9 › item-sliding: icons - ios/rtl › should not have visual regressions: src/components/item-sliding/test/icons/item-sliding.e2e.ts#L33
3) [Mobile Safari] › src/components/item-sliding/test/icons/item-sliding.e2e.ts:13:9 › item-sliding: icons - ios/rtl › should not have visual regressions Error: expect(locator).toHaveScreenshot(expected) failed Locator: locator('#iconsBottom') 14091 pixels (ratio 0.83 of all image pixels) are different. Snapshot: item-sliding-icons-bottom-ios-rtl.png Call log: - Expect "toHaveScreenshot(item-sliding-icons-bottom-ios-rtl.png)" with timeout 5000ms - verifying given screenshot expectation - waiting for locator('#iconsBottom') - locator resolved to <ion-item-sliding id="iconsBottom" class="ios hydrated item-sliding-active-slide item-sliding-active-options-start item-sliding-active-swipe-start">…</ion-item-sliding> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - 14091 pixels (ratio 0.83 of all image pixels) are different. - waiting 100ms before taking screenshot - waiting for locator('#iconsBottom') - locator resolved to <ion-item-sliding id="iconsBottom" class="ios hydrated item-sliding-active-slide item-sliding-active-options-start item-sliding-active-swipe-start">…</ion-item-sliding> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - captured a stable screenshot - 14091 pixels (ratio 0.83 of all image pixels) are different. 31 | // Convert camelCase ids to kebab-case for screenshot file names 32 | const itemIDKebab = itemID.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); > 33 | await expect(item).toHaveScreenshot(screenshot(`item-sliding-${itemIDKebab}`)); | ^ 34 | } 35 | }); 36 | }); at /ionic/src/components/item-sliding/test/icons/item-sliding.e2e.ts:33:28
[Mobile Safari] › src/components/item-sliding/test/icons/item-sliding.e2e.ts:13:9 › item-sliding: icons - ionic/md/rtl/light › should not have visual regressions: src/components/item-sliding/test/icons/item-sliding.e2e.ts#L33
2) [Mobile Safari] › src/components/item-sliding/test/icons/item-sliding.e2e.ts:13:9 › item-sliding: icons - ionic/md/rtl/light › should not have visual regressions Error: expect(locator).toHaveScreenshot(expected) failed Locator: locator('#iconsOnly') 381 pixels (ratio 0.02 of all image pixels) are different. Snapshot: item-sliding-icons-only-ionic-md-rtl-light.png Call log: - Expect "toHaveScreenshot(item-sliding-icons-only-ionic-md-rtl-light.png)" with timeout 5000ms - verifying given screenshot expectation - waiting for locator('#iconsOnly') - locator resolved to <ion-item-sliding id="iconsOnly" class="md hydrated item-sliding-active-slide item-sliding-active-options-start item-sliding-active-swipe-start">…</ion-item-sliding> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - 381 pixels (ratio 0.02 of all image pixels) are different. - waiting 100ms before taking screenshot - waiting for locator('#iconsOnly') - locator resolved to <ion-item-sliding id="iconsOnly" class="md hydrated item-sliding-active-slide item-sliding-active-options-start item-sliding-active-swipe-start">…</ion-item-sliding> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - captured a stable screenshot - 381 pixels (ratio 0.02 of all image pixels) are different. 31 | // Convert camelCase ids to kebab-case for screenshot file names 32 | const itemIDKebab = itemID.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); > 33 | await expect(item).toHaveScreenshot(screenshot(`item-sliding-${itemIDKebab}`)); | ^ 34 | } 35 | }); 36 | }); at /ionic/src/components/item-sliding/test/icons/item-sliding.e2e.ts:33:28
[Mobile Safari] › src/components/item-sliding/test/basic/item-sliding.e2e.ts:37:11 › item-sliding: basic - ionic/md/rtl/light › end options › should not have visual regressions: src/components/item-sliding/test/basic/item-sliding.e2e.ts#L50
1) [Mobile Safari] › src/components/item-sliding/test/basic/item-sliding.e2e.ts:37:11 › item-sliding: basic - ionic/md/rtl/light › end options › should not have visual regressions Error: expect(locator).toHaveScreenshot(expected) failed Locator: locator('#item2') 861 pixels (ratio 0.03 of all image pixels) are different. Snapshot: item-sliding-end-ionic-md-rtl-light.png Call log: - Expect "toHaveScreenshot(item-sliding-end-ionic-md-rtl-light.png)" with timeout 5000ms - verifying given screenshot expectation - waiting for locator('#item2') - locator resolved to <ion-item-sliding id="item2" class="md hydrated item-sliding-active-slide item-sliding-active-options-start item-sliding-active-swipe-start">…</ion-item-sliding> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - 861 pixels (ratio 0.03 of all image pixels) are different. - waiting 100ms before taking screenshot - waiting for locator('#item2') - locator resolved to <ion-item-sliding id="item2" class="md hydrated item-sliding-active-slide item-sliding-active-options-start item-sliding-active-swipe-start">…</ion-item-sliding> - taking element screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - attempting scroll into view action - waiting for element to be stable - captured a stable screenshot - 861 pixels (ratio 0.03 of all image pixels) are different. 48 | await dragElementBy(item, page, dragByX); 49 | > 50 | await expect(item).toHaveScreenshot(screenshot('item-sliding-end')); | ^ 51 | }); 52 | }); 53 | }); at /ionic/src/components/item-sliding/test/basic/item-sliding.e2e.ts:50:28
🎭 Playwright Run Summary
1 flaky [Mobile Chrome] › src/components/action-sheet/test/a11y/action-sheet.e2e.ts:158:9 › action-sheet: radio buttons - ios/ltr › should navigate radio buttons with keyboard 360 skipped 289 passed (2.5m)
🎭 Playwright Run Summary
20 skipped 571 passed (3.9m)
🎭 Playwright Run Summary
1 flaky [Mobile Safari] › src/components/toast/test/swipe-gesture/toast.e2e.ts:25:9 › toast: swipe gesture with top position - ios/ltr › should swipe up to dismiss with anchor 368 skipped 323 passed (4.2m)
🎭 Playwright Run Summary
1 skipped 712 passed (4.3m)
🎭 Playwright Run Summary
8 skipped 717 passed (4.5m)
🎭 Playwright Run Summary
8 skipped 810 passed (5.4m)
🎭 Playwright Run Summary
5 skipped 706 passed (5.4m)
🎭 Playwright Run Summary
36 skipped 862 passed (5.9m)
🎭 Playwright Run Summary
14 skipped 520 passed (6.4m)
🎭 Playwright Run Summary
5 skipped 697 passed (6.7m)
🎭 Playwright Run Summary
10 skipped 705 passed (7.0m)
🎭 Playwright Run Summary
3 skipped 701 passed (8.0m)
🎭 Playwright Run Summary
13 skipped 706 passed (8.6m)
🎭 Playwright Run Summary
1 flaky [Mobile Safari] › src/components/checkbox/test/a11y/checkbox.e2e.ts:7:9 › checkbox: a11y - ios/ltr › should not have accessibility violations 13 skipped 698 passed (8.9m)
🎭 Playwright Run Summary
1 skipped 665 passed (8.9m)
🎭 Playwright Run Summary
1 flaky [Mobile Firefox] › src/components/action-sheet/test/a11y/action-sheet.e2e.ts:158:9 › action-sheet: radio buttons - ios/ltr › should navigate radio buttons with keyboard 4 skipped 745 passed (9.1m)
🎭 Playwright Run Summary
5 skipped 764 passed (9.5m)
🎭 Playwright Run Summary
4 flaky [Mobile Safari] › src/components/item-sliding/test/basic/item-sliding.e2e.ts:37:11 › item-sliding: basic - ionic/md/rtl/light › end options › should not have visual regressions [Mobile Safari] › src/components/item-sliding/test/icons/item-sliding.e2e.ts:13:9 › item-sliding: icons - ionic/md/rtl/light › should not have visual regressions [Mobile Safari] › src/components/item-sliding/test/icons/item-sliding.e2e.ts:13:9 › item-sliding: icons - ios/rtl › should not have visual regressions [Mobile Safari] › src/components/item-sliding/test/icons/item-sliding.e2e.ts:13:9 › item-sliding: icons - md/rtl › should not have visual regressions 23 skipped 677 passed (9.7m)
🎭 Playwright Run Summary
18 skipped 661 passed (10.8m)
🎭 Playwright Run Summary
33 skipped 726 passed (11.4m)

Artifacts

Produced during runtime
Name Size Digest
ionic-angular
810 KB
sha256:3ad178cf906b2d86bfc8aa3f631e6e25d36a7bd330b08c79dbe90fd92446cce4
ionic-angular-server
8.55 KB
sha256:af820964674b8dac8751ad7163ba39ca4a929407144f46c59f694b5fdabaeb41
ionic-core
5.11 MB
sha256:f0e9787bbbfacc5c7f6e14e1fc425cce0e0a91dd8b9db74de5833a89075e5180
ionic-react
344 KB
sha256:4a6eeb0350eea647356fe1f0f275f732e3f710633dcbb88c49e3cbbbf8759674
ionic-react-router
27.9 KB
sha256:c4a2f64b6a1338c418669dcacce824eb309f53638c1bfc973a46d0571cb0a1e1
ionic-vue
375 KB
sha256:776994388fd578d8afaede1e9d59460fb494e2b1a4a80b9c21cc89bf240c823c
ionic-vue-router
17.1 KB
sha256:aa83d1bddc6ec6eef76f701e0c9920fc377b4752e9325699f69339661d6f5049
test-results-1-20
1.32 MB
sha256:ceca5e5a998b967d3fe7be52ad4d81b06332ff3bffd7c6ea0822987e86146cbc
test-results-10-20
438 KB
sha256:d48989ba3d5b27784f6d1dd5b4757ed3c044d224e2bbea4a21c324639915f3ea
test-results-11-20
621 KB
sha256:88fb14ceda70dde41299307a7ded2b3fc05672aef1c5eecd6aed8cbb89756754
test-results-12-20
536 KB
sha256:49356d90150dbac91294dbad4df9411031d1f43d85afa5662b315527b8a7d079
test-results-13-20
542 KB
sha256:0e8c55cc1c4b8858035f1ea2299a4a3c65f129a7c3f0a24ff3620293ab446275
test-results-14-20
460 KB
sha256:089b62b805a72350632199aeb1fed2442fcae6638a5e764ceaf84cf20b884538
test-results-15-20
2.52 MB
sha256:3da4796203879ccb2e15271b02120ad8e5ec23dac8f86dd349a4851e73570b5e
test-results-16-20
511 KB
sha256:f3b0e358e986a65334447ba7d6663465433be1dd0f3e6a6a7d51f38e84cd9f90
test-results-17-20
4.14 MB
sha256:77a7bec0d70393d49b4991d7f08a39f83a73b3c80edc99587d679f777cdfa076
test-results-18-20
601 KB
sha256:08431599ca1e48efbf346e1c465944ec58db81e0b4d4693a6a4e581cd08e27c2
test-results-19-20
496 KB
sha256:17b297fc0f876acb307027e175052ec6d0d6686f33402ae47d9dd078cc0b6205
test-results-2-20
546 KB
sha256:f92f3c5b0d7861928b09fbf412fa881a736a26ed97a36f9a3c244f3518d5ce3a
test-results-20-20
1.31 MB
sha256:fec6d2522487c7fffee7cea4a15c35585bc48105042ba896eee76b89ddd262d2
test-results-3-20
491 KB
sha256:217e8d08771d7c35f87d5112139e67ff29331fe65d931adb8b41e8c9e132d695
test-results-4-20
640 KB
sha256:111c8eb1a9e09276c31f20dfa8e34162347760074dc99346b018c458cf73f449
test-results-5-20
520 KB
sha256:d03eff4172f3a81b4bf9f8e8c6c6619b6dcfbbef079d7f18fd05245c29909181
test-results-6-20
528 KB
sha256:26383486f5fb010ae26603a5ccae83baeaa733f4aae959d4a6e963cec0ef3b17
test-results-7-20
1.24 MB
sha256:54854e867ccc37f212f42859bdd261658a44c8c9cd9ec5fc7b7c5b8a227f8463
test-results-8-20
486 KB
sha256:604ea4e909ee06c221ecc01f451a98766471a32e67a4b0c820be07c216c32d14
test-results-9-20
573 KB
sha256:52f07f4ea1496331fe4a812aa52b66bca0f999105bb4f65a76851fc0d0586d56