Skip to content

fix(modal): prevent browser hang when using ModalController in Angular #17705

fix(modal): prevent browser hang when using ModalController in Angular

fix(modal): prevent browser hang when using ModalController in Angular #17705

Triggered via pull request December 9, 2025 17:04
@ShaneKShaneK
synchronize #30845
IONIC-60
Status Success
Total duration 10m 39s
Artifacts 27

build.yml

on: pull_request
build-react
46s
build-react
build-vue
34s
build-vue
Matrix: test-core-screenshot
build-angular
1m 8s
build-angular
build-angular-server
41s
build-angular-server
test-core-clean-build
13s
test-core-clean-build
test-core-lint
49s
test-core-lint
test-core-spec
1m 33s
test-core-spec
build-react-router
35s
build-react-router
build-vue-router
40s
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
3s
verify-test-angular-e2e
verify-test-react-e2e
3s
verify-test-react-e2e
verify-test-react-router-e2e
3s
verify-test-react-router-e2e
verify-test-vue-e2e
2s
verify-test-vue-e2e
Fit to window
Zoom out
Zoom in

Annotations

5 errors and 20 notices
[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: 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" 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/dark › radio: keyboard navigation - md/ltr/dark › tabbing should switch between radio groups: src/components/radio/test/a11y/radio.e2e.ts#L122
2) [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 Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── 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 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
2) [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 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 Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── 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 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: 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
🎭 Playwright Run Summary
216 skipped 259 passed (2.5m)
🎭 Playwright Run Summary
535 passed (3.0m)
🎭 Playwright Run Summary
1 skipped 537 passed (3.3m)
🎭 Playwright Run Summary
4 skipped 511 passed (3.3m)
🎭 Playwright Run Summary
212 skipped 313 passed (3.8m)
🎭 Playwright Run Summary
1 skipped 534 passed (3.2m)
🎭 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:117:11 › radio: a11y - md/ltr/dark › radio: keyboard navigation - md/ltr/dark › tabbing should switch between radio groups [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 512 passed (4.2m)
🎭 Playwright Run Summary
10 skipped 503 passed (4.9m)
🎭 Playwright Run Summary
5 skipped 513 passed (5.0m)
🎭 Playwright Run Summary
648 passed (4.5m)
🎭 Playwright Run Summary
14 skipped 401 passed (5.3m)
🎭 Playwright Run Summary
1 skipped 538 passed (6.1m)
🎭 Playwright Run Summary
4 skipped 537 passed (6.7m)
🎭 Playwright Run Summary
1 skipped 528 passed (6.9m)
🎭 Playwright Run Summary
10 skipped 529 passed (6.6m)
🎭 Playwright Run Summary
2 skipped 517 passed (6.9m)
🎭 Playwright Run Summary
5 skipped 518 passed (7.1m)
🎭 Playwright Run Summary
5 skipped 573 passed (7.0m)
🎭 Playwright Run Summary
14 skipped 498 passed (7.0m)
🎭 Playwright Run Summary
7 skipped 510 passed (7.7m)

Artifacts

Produced during runtime
Name Size Digest
ionic-angular
667 KB
sha256:ad78717da8b34c3f097a71377f2102bd8a1b0f85d770e5e3489dbe627cb68ee9
ionic-angular-server
8.55 KB
sha256:30b8e344424593f58c88d3fb811070e7d129f04059b72bbe4423a851fe21bccf
ionic-core
4.57 MB
sha256:2f61a339bf3243affb9a6ac70114bfffdc1e4478b0428ab75cf054759c22bc05
ionic-react
211 KB
sha256:dce493828e98da9cf29ac10f907139589758837581bb1f1f75dd35dec340ecbc
ionic-react-router
27.9 KB
sha256:5292d3d2843d0d84dffd8f7c1a4c2b85d6186e637d3b72feb4aeaade22793eda
ionic-vue
233 KB
sha256:bb258a34cdbf44db068275e9add4a3dfa55f4952e7a8ba98137b7de070848bf4
ionic-vue-router
17.1 KB
sha256:3766e4c88310b1f87c09b4dd6a1da589d33e044d00f104c444b9b26fd12bc64a
test-results-1-20
442 KB
sha256:8f3b84cd35b133d26024befca59daea51af7becf28bd0a40b8e47e6b9d6028d1
test-results-10-20
460 KB
sha256:510b4d5719f04321b6c6b6855322a60d27baed669a87ec36e58c8a4e51e49c41
test-results-11-20
2.72 MB
sha256:1cec2f29f2a63123c44364434e865a73a28be080b4365401f58b799a2fc507e4
test-results-12-20
442 KB
sha256:f4c4385b9469950b77f6c1891c12b4718835705a8f1345efe63df480830b5ea8
test-results-13-20
452 KB
sha256:7e989e7efc55e55cb51ff1bf79db3b5a1dfe484641a8283c01d516704a8624ac
test-results-14-20
407 KB
sha256:5c850a60bb18643266ca05151bd779fec1b53de605798da553d749bacbade75a
test-results-15-20
430 KB
sha256:44ba2868f0b58ee277751da4d30c9aeec936970d64d84a07700a296ebfb22397
test-results-16-20
427 KB
sha256:27b5919b95bbb9b69649bdb6c0143e7c6ca8bef280a6a2c67ce954dc6e72e8e4
test-results-17-20
531 KB
sha256:f1f50a328218fe9a9dd9adef52f9491e008b1e74f8b73777d93aaf8c550e2119
test-results-18-20
505 KB
sha256:98eded763e7ec8e8988517b70f56a04a60c2902042dad9c2b287e06b675d1759
test-results-19-20
396 KB
sha256:7c0c72c8da406f6bb858342abc030ad6f465e86128d2265cb5f67296046d3be7
test-results-2-20
472 KB
sha256:ddfac7afaa40595e377c64a612c7f304100ae0d95f89f6ec54bed3fec529f84b
test-results-20-20
360 KB
sha256:07c8bd089714c646083169932eefa62591eb0f73380cadd11d8587872ee67753
test-results-3-20
431 KB
sha256:eba0ab2f9de579a4d6ec2b5a45a3eb3ab46915f7f0ed4a366f83c866af9d98ab
test-results-4-20
522 KB
sha256:cf2113336e30c427433a0b3f9e6c447cd45961f1783f36bfe9a851afb34a950b
test-results-5-20
457 KB
sha256:8b55750a8dab60702404ef56ae4532a2f535856ac5c4f3f9f4d435eccaeca848
test-results-6-20
447 KB
sha256:8bbcf5a4edabda2a42f84e75994302647bbc6eec0be2e6d6233df7e885db5fdd
test-results-7-20
353 KB
sha256:5bb1ec34cb3bbbe8f0a0767919351b4a1e14fedd0e4cfa5488e1ab02b45cf19a
test-results-8-20
429 KB
sha256:84ab4aac07592c3b6484f1cb602d08b9e6816cc1ffa7e40df6bc922b35c107e1
test-results-9-20
436 KB
sha256:6c669e86527629cfa10faade19fc2686c143594ba643377eb4fbe7cc4f199d77