Skip to content

fix(datetime): use ResizeObserver to reliably detect visibility changes #17755

fix(datetime): use ResizeObserver to reliably detect visibility changes

fix(datetime): use ResizeObserver to reliably detect visibility changes #17755

Triggered via pull request December 12, 2025 16:04
Status Failure
Total duration 15m 22s
Artifacts 25

build.yml

on: pull_request
build-react
46s
build-react
build-vue
34s
build-vue
Matrix: test-core-screenshot
build-angular
1m 1s
build-angular
build-angular-server
37s
build-angular-server
test-core-clean-build
15s
test-core-clean-build
test-core-lint
49s
test-core-lint
test-core-spec
51s
test-core-spec
build-react-router
24s
build-react-router
build-vue-router
37s
build-vue-router
verify-screenshots
3s
verify-screenshots
Matrix: test-angular-e2e
Matrix: test-react-e2e
Matrix: test-react-router-e2e
Matrix: test-vue-e2e
verify-test-angular-e2e
4s
verify-test-angular-e2e
verify-test-react-e2e
2s
verify-test-react-e2e
verify-test-react-router-e2e
3s
verify-test-react-router-e2e
verify-test-vue-e2e
4s
verify-test-vue-e2e
Fit to window
Zoom out
Zoom in

Annotations

29 errors and 18 notices
[Mobile Chrome] › src/components/radio/test/a11y/radio.e2e.ts:117:11 › radio: a11y - md/ltr/dark › radio: keyboard navigation - md/ltr/dark › tabbing should switch between radio groups: src/components/radio/test/a11y/radio.e2e.ts#L122
1) [Mobile Chrome] › src/components/radio/test/a11y/radio.e2e.ts:117:11 › radio: a11y - md/ltr/dark › radio: keyboard navigation - md/ltr/dark › tabbing should switch between radio groups Error: expect(locator).toBeFocused() failed Locator: locator('#first-group ion-radio').first() Expected: focused Received: inactive Timeout: 5000ms Call log: - Expect "toBeFocused" with timeout 5000ms - waiting for locator('#first-group ion-radio').first() 9 × locator resolved to <ion-radio value="huey" role="radio" tabindex="0" aria-checked="true" class="md in-item radio-checked radio-label-placement-start hydrated">Huey</ion-radio> - unexpected value "inactive" 120 | 121 | await pageUtils.pressKeys('Tab'); > 122 | await expect(firstGroupRadios.nth(0)).toBeFocused(); | ^ 123 | 124 | await pageUtils.pressKeys('Tab'); 125 | await expect(secondGroupRadios.nth(0)).toBeFocused(); at /ionic/src/components/radio/test/a11y/radio.e2e.ts:122:47
[Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:33:9 › datetime-button: rendering - ios/ltr › should size the popover correctly: src/components/datetime-button/test/overlays/datetime-button.e2e.ts#L51
2) [Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:33:9 › datetime-button: rendering - ios/ltr › should size the popover correctly Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: locator.waitFor: Test timeout of 30000ms exceeded. Call log: - waiting for locator('ion-datetime.datetime-ready') to be visible 49 | 50 | // Wait for datetime to be ready before taking screenshot > 51 | await page.locator('ion-datetime.datetime-ready').waitFor(); | ^ 52 | 53 | await expect(page).toHaveScreenshot(screenshot(`datetime-overlay-popover`)); 54 | }); at /ionic/src/components/datetime-button/test/overlays/datetime-button.e2e.ts:51:57
[Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:33:9 › datetime-button: rendering - ios/ltr › should size the popover correctly: src/components/datetime-button/test/overlays/datetime-button.e2e.ts#L0
2) [Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:33:9 › datetime-button: rendering - ios/ltr › should size the popover correctly Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 30000ms exceeded.
[Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:33:9 › datetime-button: rendering - ios/ltr › should size the popover correctly: src/components/datetime-button/test/overlays/datetime-button.e2e.ts#L51
2) [Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:33:9 › datetime-button: rendering - ios/ltr › should size the popover correctly Error: locator.waitFor: Test timeout of 30000ms exceeded. Call log: - waiting for locator('ion-datetime.datetime-ready') to be visible 49 | 50 | // Wait for datetime to be ready before taking screenshot > 51 | await page.locator('ion-datetime.datetime-ready').waitFor(); | ^ 52 | 53 | await expect(page).toHaveScreenshot(screenshot(`datetime-overlay-popover`)); 54 | }); at /ionic/src/components/datetime-button/test/overlays/datetime-button.e2e.ts:51:57
[Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:33:9 › datetime-button: rendering - ios/ltr › should size the popover correctly: src/components/datetime-button/test/overlays/datetime-button.e2e.ts#L0
2) [Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:33:9 › datetime-button: rendering - ios/ltr › should size the popover correctly Test timeout of 30000ms exceeded.
[Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:11:9 › datetime-button: rendering - ios/ltr › should size the modal correctly: src/components/datetime-button/test/overlays/datetime-button.e2e.ts#L28
1) [Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:11:9 › datetime-button: rendering - ios/ltr › should size the modal correctly Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: locator.waitFor: Test timeout of 30000ms exceeded. Call log: - waiting for locator('ion-datetime.datetime-ready') to be visible 26 | 27 | // Wait for datetime to be ready before taking screenshot > 28 | await page.locator('ion-datetime.datetime-ready').waitFor(); | ^ 29 | 30 | await expect(page).toHaveScreenshot(screenshot(`datetime-overlay-modal`)); 31 | }); at /ionic/src/components/datetime-button/test/overlays/datetime-button.e2e.ts:28:57
[Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:11:9 › datetime-button: rendering - ios/ltr › should size the modal correctly: src/components/datetime-button/test/overlays/datetime-button.e2e.ts#L0
1) [Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:11:9 › datetime-button: rendering - ios/ltr › should size the modal correctly Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 30000ms exceeded.
[Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:11:9 › datetime-button: rendering - ios/ltr › should size the modal correctly: src/components/datetime-button/test/overlays/datetime-button.e2e.ts#L28
1) [Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:11:9 › datetime-button: rendering - ios/ltr › should size the modal correctly Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: locator.waitFor: Test timeout of 30000ms exceeded. Call log: - waiting for locator('ion-datetime.datetime-ready') to be visible 26 | 27 | // Wait for datetime to be ready before taking screenshot > 28 | await page.locator('ion-datetime.datetime-ready').waitFor(); | ^ 29 | 30 | await expect(page).toHaveScreenshot(screenshot(`datetime-overlay-modal`)); 31 | }); at /ionic/src/components/datetime-button/test/overlays/datetime-button.e2e.ts:28:57
[Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:11:9 › datetime-button: rendering - ios/ltr › should size the modal correctly: src/components/datetime-button/test/overlays/datetime-button.e2e.ts#L0
1) [Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:11:9 › datetime-button: rendering - ios/ltr › should size the modal correctly Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 30000ms exceeded.
[Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:11:9 › datetime-button: rendering - ios/ltr › should size the modal correctly: src/components/datetime-button/test/overlays/datetime-button.e2e.ts#L28
1) [Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:11:9 › datetime-button: rendering - ios/ltr › should size the modal correctly Error: locator.waitFor: Test timeout of 30000ms exceeded. Call log: - waiting for locator('ion-datetime.datetime-ready') to be visible 26 | 27 | // Wait for datetime to be ready before taking screenshot > 28 | await page.locator('ion-datetime.datetime-ready').waitFor(); | ^ 29 | 30 | await expect(page).toHaveScreenshot(screenshot(`datetime-overlay-modal`)); 31 | }); at /ionic/src/components/datetime-button/test/overlays/datetime-button.e2e.ts:28:57
[Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:11:9 › datetime-button: rendering - ios/ltr › should size the modal correctly: src/components/datetime-button/test/overlays/datetime-button.e2e.ts#L0
1) [Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:11:9 › datetime-button: rendering - ios/ltr › should size the modal correctly Test timeout of 30000ms exceeded.
test-core-screenshot (15, 20)
The strategy configuration was canceled because "test-core-screenshot._16_20" failed
[Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/rtl › should position the time picker relative to the click target: src/components/datetime/test/position/datetime.e2e.ts#L14
2) [Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/rtl › should position the time picker relative to the click target Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: locator.waitFor: Test timeout of 30000ms exceeded. Call log: - waiting for locator('.datetime-ready') to be visible 12 | 13 | await ionPopoverDidPresent.next(); > 14 | await page.locator('.datetime-ready').waitFor(); | ^ 15 | 16 | await expect(page).toHaveScreenshot(screenshot(`datetime-position-base`)); 17 | at /ionic/src/components/datetime/test/position/datetime.e2e.ts:14:45
[Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/rtl › should position the time picker relative to the click target: src/components/datetime/test/position/datetime.e2e.ts#L0
2) [Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/rtl › should position the time picker relative to the click target Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 30000ms exceeded.
[Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/rtl › should position the time picker relative to the click target: src/components/datetime/test/position/datetime.e2e.ts#L14
2) [Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/rtl › should position the time picker relative to the click target Error: locator.waitFor: Test timeout of 30000ms exceeded. Call log: - waiting for locator('.datetime-ready') to be visible 12 | 13 | await ionPopoverDidPresent.next(); > 14 | await page.locator('.datetime-ready').waitFor(); | ^ 15 | 16 | await expect(page).toHaveScreenshot(screenshot(`datetime-position-base`)); 17 | at /ionic/src/components/datetime/test/position/datetime.e2e.ts:14:45
[Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/rtl › should position the time picker relative to the click target: src/components/datetime/test/position/datetime.e2e.ts#L0
2) [Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/rtl › should position the time picker relative to the click target Test timeout of 30000ms exceeded.
[Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/ltr › should position the time picker relative to the click target: src/components/datetime/test/position/datetime.e2e.ts#L14
1) [Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/ltr › should position the time picker relative to the click target Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: locator.waitFor: Test timeout of 30000ms exceeded. Call log: - waiting for locator('.datetime-ready') to be visible 12 | 13 | await ionPopoverDidPresent.next(); > 14 | await page.locator('.datetime-ready').waitFor(); | ^ 15 | 16 | await expect(page).toHaveScreenshot(screenshot(`datetime-position-base`)); 17 | at /ionic/src/components/datetime/test/position/datetime.e2e.ts:14:45
[Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/ltr › should position the time picker relative to the click target: src/components/datetime/test/position/datetime.e2e.ts#L0
1) [Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/ltr › should position the time picker relative to the click target Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 30000ms exceeded.
[Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/ltr › should position the time picker relative to the click target: src/components/datetime/test/position/datetime.e2e.ts#L14
1) [Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/ltr › should position the time picker relative to the click target Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: locator.waitFor: Test timeout of 30000ms exceeded. Call log: - waiting for locator('.datetime-ready') to be visible 12 | 13 | await ionPopoverDidPresent.next(); > 14 | await page.locator('.datetime-ready').waitFor(); | ^ 15 | 16 | await expect(page).toHaveScreenshot(screenshot(`datetime-position-base`)); 17 | at /ionic/src/components/datetime/test/position/datetime.e2e.ts:14:45
[Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/ltr › should position the time picker relative to the click target: src/components/datetime/test/position/datetime.e2e.ts#L0
1) [Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/ltr › should position the time picker relative to the click target Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 30000ms exceeded.
[Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/ltr › should position the time picker relative to the click target: src/components/datetime/test/position/datetime.e2e.ts#L14
1) [Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/ltr › should position the time picker relative to the click target Error: locator.waitFor: Test timeout of 30000ms exceeded. Call log: - waiting for locator('.datetime-ready') to be visible 12 | 13 | await ionPopoverDidPresent.next(); > 14 | await page.locator('.datetime-ready').waitFor(); | ^ 15 | 16 | await expect(page).toHaveScreenshot(screenshot(`datetime-position-base`)); 17 | at /ionic/src/components/datetime/test/position/datetime.e2e.ts:14:45
[Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/ltr › should position the time picker relative to the click target: src/components/datetime/test/position/datetime.e2e.ts#L0
1) [Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/ltr › should position the time picker relative to the click target Test timeout of 30000ms exceeded.
test-core-screenshot (9, 20)
The strategy configuration was canceled because "test-core-screenshot._16_20" failed
test-core-screenshot (9, 20)
Process completed with exit code 12.
test-core-screenshot (9, 20)
The operation was canceled.
test-core-screenshot (2, 20)
The strategy configuration was canceled because "test-core-screenshot._16_20" failed
test-core-screenshot (2, 20)
Process completed with exit code 12.
test-core-screenshot (2, 20)
The operation was canceled.
verify-screenshots
Process completed with exit code 1.
🎭 Playwright Run Summary
216 skipped 259 passed (2.3m)
🎭 Playwright Run Summary
535 passed (3.1m)
🎭 Playwright Run Summary
1 skipped 537 passed (3.2m)
🎭 Playwright Run Summary
1 skipped 534 passed (3.2m)
🎭 Playwright Run Summary
212 skipped 313 passed (3.6m)
🎭 Playwright Run Summary
1 flaky [Mobile Chrome] › src/components/radio/test/a11y/radio.e2e.ts:117:11 › radio: a11y - md/ltr/dark › radio: keyboard navigation - md/ltr/dark › tabbing should switch between radio groups 4 skipped 514 passed (3.8m)
🎭 Playwright Run Summary
648 passed (4.4m)
🎭 Playwright Run Summary
10 skipped 503 passed (5.0m)
🎭 Playwright Run Summary
14 skipped 401 passed (5.2m)
🎭 Playwright Run Summary
1 skipped 538 passed (6.0m)
🎭 Playwright Run Summary
14 skipped 498 passed (6.5m)
🎭 Playwright Run Summary
10 skipped 529 passed (6.5m)
🎭 Playwright Run Summary
5 skipped 573 passed (6.4m)
🎭 Playwright Run Summary
4 skipped 537 passed (6.6m)
🎭 Playwright Run Summary
1 skipped 528 passed (7.1m)
🎭 Playwright Run Summary
5 skipped 518 passed (7.2m)
🎭 Playwright Run Summary
5 failed [Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:11:9 › datetime-button: rendering - ios/ltr › should size the modal correctly [Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:33:9 › datetime-button: rendering - ios/ltr › should size the popover correctly [Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:11:9 › datetime-button: rendering - md/ltr › should size the modal correctly [Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:33:9 › datetime-button: rendering - md/ltr › should size the popover correctly [Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:185:9 › datetime-button: modal - md/ltr › should set datetime ready state and keep calendar interactive when reopening modal 5 skipped 508 passed (12.7m)
🎭 Playwright Run Summary
4 failed [Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/ltr › should position the time picker relative to the click target [Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - ios/rtl › should position the time picker relative to the click target [Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - md/ltr › should position the time picker relative to the click target [Mobile Safari] › src/components/datetime/test/position/datetime.e2e.ts:6:9 › datetime: position - md/rtl › should position the time picker relative to the click target 2 skipped 513 passed (13.0m)

Artifacts

Produced during runtime
Name Size Digest
ionic-angular
667 KB
sha256:44204de81265f22c5a808b80ec882ec051eacfb48de4a1f9e576be6f79e57b35
ionic-angular-server
8.54 KB
sha256:7345e20a3f532a6efc76a197b1a1a54c9596f79ab54891b431aa1506890d53d4
ionic-core
4.58 MB
sha256:a4f0c6a91944bfc8f5de23bc462b7a4f664d5edd5bb76e74cbded91069bfa34b
ionic-react
211 KB
sha256:3a548240accb8b8e98f3f172cec35177ed93792aa2dd5e72a8001218f3f9fbbb
ionic-react-router
27.9 KB
sha256:1a996837ad38f0e02d84665ae1a3371e1c9bd815c3294cfac4ce4ad70828fd67
ionic-vue
233 KB
sha256:8db6751482d105eb5f3a20db76ab0523046545f11d137174a3bf2c1015a4693d
ionic-vue-router
17 KB
sha256:d4cb51af00074c7b9eb0ac56ed661040d7be8ce492a8b9d306b1a5bf455071f0
test-results-1-20
442 KB
sha256:e7af0cfef5ff3748190d5ae461c96edb8881c6ac8e5fbeccd10c6fb8f10b54c9
test-results-10-20
460 KB
sha256:e2f6ade903435a33290c19bbb2d2a63db071f902cc06ef588903d06c4e3ffe99
test-results-11-20
1.26 MB
sha256:4846bc3a96684587baabe7b7a2321a528175316cd1a17f2b230f945ba48f6325
test-results-12-20
443 KB
sha256:5d972c57575af9824a33a1ad21fae8f92f3b8ef75879c961eca7d6e639427ae8
test-results-13-20
450 KB
sha256:a9a116e1667f61ad85387ade8cce6fa8bd50817f1e40eab0f6d14d8092c5ac6e
test-results-14-20
407 KB
sha256:a5c1376a11336e7fb9790264add7d13e0607cdad2d8e9acf4ab538c3a6e792b8
test-results-15-20
5.4 MB
sha256:3947bd2e338070845087c6c9fbcc22da39de41b4a797b74698411ba1e4779dae
test-results-16-20
7.12 MB
sha256:4cf010a6c5607b62a657b83326e02129ccc26121553bd4971950f87069cc16cc
test-results-17-20
530 KB
sha256:510dd1587802e91b06c21d27c63828039ee0b47b1533662db88619118f192f78
test-results-18-20
504 KB
sha256:b1be016471937101b032895f79c4c0a1bc734c504097e38f6dc869563e8ba7c6
test-results-19-20
396 KB
sha256:ad2e68a52d53a2f6f518bc6b7d01ef476ddf28ac71e50839594754bc200fd528
test-results-20-20
360 KB
sha256:2195c12a7f7346c85d468270209b6880d05bc78c91f1845a2937cf2af92021dc
test-results-3-20
430 KB
sha256:d1379c79acd2f66c6d47cd244a6bc70ecc98c79f82a11a60ac8a95e834eafa79
test-results-4-20
521 KB
sha256:e6d37575395f0532f8dfa9d25412c2e0b7fb5d89a2e5a08af5696b3ef152a92b
test-results-5-20
457 KB
sha256:b8de3e9b860396764118fdf3f88fbf51158607086013278b399eddc612238d7c
test-results-6-20
446 KB
sha256:4c4258fa082b37ca50d042e3be74aca3054c04ba0a8b018aeaff04b50ab480ea
test-results-7-20
352 KB
sha256:fdda2b52489269e51ac3f42bf5ca27891507145d725fb5d050c1119e95c69995
test-results-8-20
428 KB
sha256:f6d8e3c1db565b6894c7e01f7b7a98655985db9529aa2ff1c376425a970cf6a5