Skip to content

fix(modal): dismiss modal when parent element is removed from DOM #16661

fix(modal): dismiss modal when parent element is removed from DOM

fix(modal): dismiss modal when parent element is removed from DOM #16661

Triggered via pull request July 12, 2025 12:24
Status Success
Total duration 11m 43s
Artifacts 27

build.yml

on: pull_request
build-react
52s
build-react
build-vue
38s
build-vue
Matrix: test-core-screenshot
build-angular
59s
build-angular
build-angular-server
35s
build-angular-server
test-core-clean-build
21s
test-core-clean-build
test-core-lint
46s
test-core-lint
test-core-spec
40s
test-core-spec
build-react-router
20s
build-react-router
build-vue-router
36s
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
2s
verify-test-angular-e2e
verify-test-react-e2e
4s
verify-test-react-e2e
verify-test-react-router-e2e
2s
verify-test-react-router-e2e
verify-test-vue-e2e
2s
verify-test-vue-e2e
Fit to window
Zoom out
Zoom in

Annotations

7 errors and 20 notices
[Mobile Chrome] › src/components/datetime/test/locale/datetime.e2e.ts:30:11 › datetime: locale - md/ltr › en-US › time picker should not have visual regressions: src/components/datetime/test/locale/datetime.e2e.ts#L166
2) [Mobile Chrome] › src/components/datetime/test/locale/datetime.e2e.ts:30:11 › datetime: locale - md/ltr › en-US › time picker should not have visual regressions Error: expect(locator).toHaveScreenshot(expected) 97 pixels (ratio 0.01 of all image pixels) are different. Expected: /ionic/src/components/datetime/test/locale/datetime.e2e.ts-snapshots/datetime-locale-en-US-time-diff-md-ltr-Mobile-Chrome-linux.png Received: /ionic/test-results/src-components-datetime-te-50df4-not-have-visual-regressions-Mobile-Chrome/datetime-locale-en-US-time-diff-md-ltr-actual.png Diff: /ionic/test-results/src-components-datetime-te-50df4-not-have-visual-regressions-Mobile-Chrome/datetime-locale-en-US-time-diff-md-ltr-diff.png Call log: - Expect "toHaveScreenshot(datetime-locale-en-US-time-diff-md-ltr.png)" with timeout 5000ms - verifying given screenshot expectation - waiting for locator('ion-datetime') - locator resolved to <ion-datetime max="2022" locale="en-US" presentation="time" show-default-title="true" show-default-buttons="true" value="2022-04-19T04:20:00" class="ion-color ion-color-primary md datetime-presentation-time datetime-size-fixed hydrated datetime-ready">…</ion-datetime> - 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 - 97 pixels (ratio 0.01 of all image pixels) are different. - waiting 100ms before taking screenshot - waiting for locator('ion-datetime') - locator resolved to <ion-datetime max="2022" locale="en-US" presentation="time" show-default-title="true" show-default-buttons="true" value="2022-04-19T04:20:00" class="ion-color ion-color-primary md datetime-presentation-time datetime-size-fixed hydrated datetime-ready">…</ion-datetime> - 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 - 97 pixels (ratio 0.01 of all image pixels) are different. 164 | async expectLocalizedPicker(screenshot: ScreenshotFn, modifier?: string) { 165 | const modifierString = modifier === undefined ? '' : `-${modifier}`; > 166 | await expect(this.datetime).toHaveScreenshot(screenshot(`datetime-locale-${this.locale}${modifierString}-diff`)); | ^ 167 | } 168 | } 169 | at DatetimeLocaleFixture.expectLocalizedPicker (/ionic/src/components/datetime/test/locale/datetime.e2e.ts:166:33) at DatetimeLocaleFixture.expectLocalizedTimePicker (/ionic/src/components/datetime/test/locale/datetime.e2e.ts:161:16) at /ionic/src/components/datetime/test/locale/datetime.e2e.ts:32:31
[Mobile Chrome] › src/components/datetime/test/datetime.e2e.ts:35:9 › datetime: switching months with different number of days - md/ltr › should adjust the selected day when moving to a month with a different number of days: src/components/datetime/test/datetime.e2e.ts#L49
1) [Mobile Chrome] › src/components/datetime/test/datetime.e2e.ts:35:9 › datetime: switching months with different number of days - md/ltr › should adjust the selected day when moving to a month with a different number of days Error: Timed out 5000ms waiting for expect(locator).toHaveJSProperty(expected) Locator: locator('ion-datetime') Expected: "2022-02-28" Received: "2021-02-28" Call log: - Expect "toHaveJSProperty" with timeout 5000ms - waiting for locator('ion-datetime') 9 × locator resolved to <ion-datetime locale="en-US" value="2022-01-31" presentation="date" class="ion-color ion-color-primary md datetime-presentation-date datetime-size-fixed datetime-grid hydrated datetime-ready show-month-and-year month-year-picker-open">…</ion-datetime> - unexpected value "2021-02-28" 47 | await ionChange.next(); 48 | await expect(ionChange).toHaveReceivedEventTimes(1); > 49 | await expect(datetime).toHaveJSProperty('value', '2022-02-28'); | ^ 50 | }); 51 | }); 52 | }); at /ionic/src/components/datetime/test/datetime.e2e.ts:49:30
[Mobile Chrome] › src/components/radio/test/a11y/radio.e2e.ts:130:11 › radio: a11y - md/ltr/dark › radio: keyboard navigation - md/ltr/dark › using arrow keys should move between enabled radios within group: src/components/radio/test/a11y/radio.e2e.ts#L134
3) [Mobile Chrome] › src/components/radio/test/a11y/radio.e2e.ts:130:11 › radio: a11y - md/ltr/dark › radio: keyboard navigation - md/ltr/dark › using arrow keys should move between enabled radios within group Error: Timed out 5000ms waiting for expect(locator).toBeFocused() Locator: locator('#first-group ion-radio').first() Expected: focused Received: inactive 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" 132 | 133 | await pageUtils.pressKeys('Tab'); > 134 | await expect(firstGroupRadios.nth(0)).toBeFocused(); | ^ 135 | 136 | await page.keyboard.press('ArrowDown'); 137 | await expect(firstGroupRadios.nth(1)).toBeFocused(); at /ionic/src/components/radio/test/a11y/radio.e2e.ts:134:47
[Mobile Chrome] › src/components/radio/test/a11y/radio.e2e.ts:130:11 › radio: a11y - md/ltr › radio: keyboard navigation - md/ltr › using arrow keys should move between enabled radios within group: src/components/radio/test/a11y/radio.e2e.ts#L134
2) [Mobile Chrome] › src/components/radio/test/a11y/radio.e2e.ts:130:11 › radio: a11y - md/ltr › radio: keyboard navigation - md/ltr › using arrow keys should move between enabled radios within group Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: Timed out 5000ms waiting for expect(locator).toBeFocused() Locator: locator('#first-group ion-radio').first() Expected: focused Received: inactive 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" 132 | 133 | await pageUtils.pressKeys('Tab'); > 134 | await expect(firstGroupRadios.nth(0)).toBeFocused(); | ^ 135 | 136 | await page.keyboard.press('ArrowDown'); 137 | await expect(firstGroupRadios.nth(1)).toBeFocused(); at /ionic/src/components/radio/test/a11y/radio.e2e.ts:134:47
[Mobile Chrome] › src/components/radio/test/a11y/radio.e2e.ts:130:11 › radio: a11y - md/ltr › radio: keyboard navigation - md/ltr › using arrow keys should move between enabled radios within group: src/components/radio/test/a11y/radio.e2e.ts#L134
2) [Mobile Chrome] › src/components/radio/test/a11y/radio.e2e.ts:130:11 › radio: a11y - md/ltr › radio: keyboard navigation - md/ltr › using arrow keys should move between enabled radios within group Error: Timed out 5000ms waiting for expect(locator).toBeFocused() Locator: locator('#first-group ion-radio').first() Expected: focused Received: inactive 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" 132 | 133 | await pageUtils.pressKeys('Tab'); > 134 | await expect(firstGroupRadios.nth(0)).toBeFocused(); | ^ 135 | 136 | await page.keyboard.press('ArrowDown'); 137 | await expect(firstGroupRadios.nth(1)).toBeFocused(); at /ionic/src/components/radio/test/a11y/radio.e2e.ts:134:47
[Mobile Chrome] › src/components/radio/test/a11y/radio.e2e.ts:117:11 › radio: a11y - md/ltr › radio: keyboard navigation - md/ltr › 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 › radio: keyboard navigation - md/ltr › tabbing should switch between radio groups Error: Timed out 5000ms waiting for expect(locator).toBeFocused() Locator: locator('#first-group ion-radio').first() Expected: focused Received: inactive 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/input-otp/test/separators/input-otp.e2e.ts:90:9 › input-otp: separators functionality - ios/ltr › should render separators after the second and third input box: src/components/input-otp/test/separators/input-otp.e2e.ts#L99
1) [Mobile Safari] › src/components/input-otp/test/separators/input-otp.e2e.ts:90:9 › input-otp: separators functionality - ios/ltr › should render separators after the second and third input box Error: expect(received).toBe(expected) // Object.is equality Expected: true Received: false 97 | 98 | await expect(await hasSeparatorAfter(page, 0)).toBe(false); > 99 | await expect(await hasSeparatorAfter(page, 1)).toBe(true); | ^ 100 | await expect(await hasSeparatorAfter(page, 2)).toBe(true); 101 | await expect(await hasSeparatorAfter(page, 3)).toBe(false); 102 | }); at /ionic/src/components/input-otp/test/separators/input-otp.e2e.ts:99:54
🎭 Playwright Run Summary
512 passed (2.9m)
🎭 Playwright Run Summary
216 skipped 303 passed (2.9m)
🎭 Playwright Run Summary
542 passed (3.3m)
🎭 Playwright Run Summary
2 flaky [Mobile Chrome] › src/components/datetime/test/datetime.e2e.ts:35:9 › datetime: switching months with different number of days - md/ltr › should adjust the selected day when moving to a month with a different number of days [Mobile Chrome] › src/components/datetime/test/locale/datetime.e2e.ts:30:11 › datetime: locale - md/ltr › en-US › time picker should not have visual regressions 512 passed (3.2m)
🎭 Playwright Run Summary
5 skipped 523 passed (3.4m)
🎭 Playwright Run Summary
212 skipped 302 passed (3.7m)
🎭 Playwright Run Summary
3 flaky [Mobile Chrome] › src/components/radio/test/a11y/radio.e2e.ts:117:11 › radio: a11y - md/ltr › radio: keyboard navigation - md/ltr › tabbing should switch between radio groups [Mobile Chrome] › src/components/radio/test/a11y/radio.e2e.ts:130:11 › radio: a11y - md/ltr › radio: keyboard navigation - md/ltr › using arrow keys should move between enabled radios within group [Mobile Chrome] › src/components/radio/test/a11y/radio.e2e.ts:130:11 › radio: a11y - md/ltr/dark › radio: keyboard navigation - md/ltr/dark › using arrow keys should move between enabled radios within group 4 skipped 511 passed (4.0m)
🎭 Playwright Run Summary
627 passed (4.1m)
🎭 Playwright Run Summary
10 skipped 493 passed (4.8m)
🎭 Playwright Run Summary
1 flaky [Mobile Safari] › src/components/input-otp/test/separators/input-otp.e2e.ts:90:9 › input-otp: separators functionality - ios/ltr › should render separators after the second and third input box 5 skipped 509 passed (5.2m)
🎭 Playwright Run Summary
14 skipped 375 passed (5.1m)
🎭 Playwright Run Summary
1 skipped 515 passed (6.1m)
🎭 Playwright Run Summary
5 skipped 506 passed (6.3m)
🎭 Playwright Run Summary
10 skipped 530 passed (6.8m)
🎭 Playwright Run Summary
524 passed (6.9m)
🎭 Playwright Run Summary
4 skipped 528 passed (6.9m)
🎭 Playwright Run Summary
5 skipped 500 passed (7.1m)
🎭 Playwright Run Summary
14 skipped 509 passed (7.6m)
🎭 Playwright Run Summary
7 skipped 506 passed (7.9m)
🎭 Playwright Run Summary
2 skipped 533 passed (8.8m)

Artifacts

Produced during runtime
Name Size Digest
ionic-angular Expired
651 KB
sha256:774cea57aa49208200093b150f1dd7e48900da2e0a391899402700f03174113b
ionic-angular-server Expired
8.55 KB
sha256:b8ca974f697b90a78291c603384a327096c601ffb6014ff1d7216c421677be97
ionic-core Expired
4.48 MB
sha256:f982d192b23253eb55c0c6e77baae4a613fa3ed117d81b9d25cbf8a9411b1059
ionic-react Expired
200 KB
sha256:ce61226c4423180589a68be5d97e3ba32ea986fbbf59943512247de5730fc878
ionic-react-router Expired
27.9 KB
sha256:713dd6eafbb800418ae103733557172dd0e545eb7a76233a7d5f7ec1f7975b96
ionic-vue Expired
221 KB
sha256:0828781cf9a3e000d214c458ef26081f3026ce7d4cdaa5a8c18bbdd458cb36b0
ionic-vue-router Expired
17 KB
sha256:dd2caef329a6eb7f14d678e76fe3f72a09d7d0b0f1f92dd1d203f227b9b20fe1
test-results-1-20 Expired
430 KB
sha256:12f10e0a52e0842d291bd243d19748451aaaa07d2da8d526101d09ea30886fbd
test-results-10-20 Expired
433 KB
sha256:838973b28d976a036e2e7fcfc23d48eb6b517c8a8b51f9a7443c5b0b086a11fe
test-results-11-20 Expired
2.34 MB
sha256:ab4346a560f4f9272126e282c8bfba9a06574d96519fe38e326395acf6886465
test-results-12-20 Expired
449 KB
sha256:806b6da8df4ac956f7e04d75206c32680b3a9332165376aae0bf2bc81cac25a1
test-results-13-20 Expired
431 KB
sha256:12a3183df8df0fea9a1d9768c10f425d21e8bd492a500d1ba0ab78ea1ab2c925
test-results-14-20 Expired
389 KB
sha256:64a18855e27bbd6fed19bca6fee4238898e20c5d7867d8f2a336cfd91cce8b2d
test-results-15-20 Expired
429 KB
sha256:9658e811534bac8d7dd11b851292408d4475e97145760799c87eaf387b47d988
test-results-16-20 Expired
1.14 MB
sha256:21def887b58250d68ec4c1ea2d65527cc4c3ee7aea7bc7b29529f63f0ebf0c21
test-results-17-20 Expired
517 KB
sha256:aa8815d846e800aa41e8122e81e929a215dca5efd98abc397be1fbd792767f40
test-results-18-20 Expired
500 KB
sha256:240ee99d10f85cca70266c47f418794ed6f739eb34ae2e91d7f99bd52ddde042
test-results-19-20 Expired
385 KB
sha256:cc3d02e6f460cd160989342aabdf1aa3974b4f13dae886868d886a237affc9cf
test-results-2-20 Expired
465 KB
sha256:d70dd8c034598cc5889b90800104395c3542c1b02dd14fcd58b60dc1988c1c5d
test-results-20-20 Expired
344 KB
sha256:365045f64295f3448b418d341524dbf10fcc7fe60fcd9087ba6911f1d575d28e
test-results-3-20 Expired
411 KB
sha256:29898f8f558abe1abd769d487941516682208c5981446db7ac01e483514db0e6
test-results-4-20 Expired
526 KB
sha256:08bbbdc016166a293cbb8b2deb1dfcd103af26d31448391211f04f9e3e35a3df
test-results-5-20 Expired
446 KB
sha256:44e40738103e619caabf190139f6cd7528074ba311bc74d1d9fb3387bf865fa1
test-results-6-20 Expired
418 KB
sha256:87fea4843f58099ea697702d53d4c1036338f631b16a8a5ee867907ec3c484f4
test-results-7-20 Expired
352 KB
sha256:3f16ed26f7d1fa87198156bc2f467d3931a757521af2a6d0bedfdeda157c5a67
test-results-8-20 Expired
1.74 MB
sha256:78f9415b6167c347e21adfcb378c441a7fb3e9d17acddbb17f5675ba3f971cac
test-results-9-20 Expired
435 KB
sha256:ce4d7ef6339826156703b72249ebfc55798b36c67afc8ca27acfb23092cdf54c