Skip to content

fix(utils): apply focus styles on iOS when using Tab with a hardware keyboard #16604

fix(utils): apply focus styles on iOS when using Tab with a hardware keyboard

fix(utils): apply focus styles on iOS when using Tab with a hardware keyboard #16604

Triggered via pull request July 2, 2025 17:32
Status Success
Total duration 10m 38s
Artifacts 27

build.yml

on: pull_request
build-react
47s
build-react
build-vue
32s
build-vue
Matrix: test-core-screenshot
build-angular
54s
build-angular
build-angular-server
31s
build-angular-server
test-core-clean-build
12s
test-core-clean-build
test-core-lint
47s
test-core-lint
test-core-spec
49s
test-core-spec
build-react-router
24s
build-react-router
build-vue-router
37s
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
2s
verify-test-react-router-e2e
verify-test-vue-e2e
3s
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
4) [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: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
3) [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: 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 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
🎭 Playwright Run Summary
517 passed (3.0m)
🎭 Playwright Run Summary
514 passed (3.1m)
🎭 Playwright Run Summary
216 skipped 303 passed (2.9m)
🎭 Playwright Run Summary
529 passed (3.2m)
🎭 Playwright Run Summary
5 skipped 519 passed (3.4m)
🎭 Playwright Run Summary
212 skipped 302 passed (3.6m)
🎭 Playwright Run Summary
627 passed (4.1m)
🎭 Playwright Run Summary
4 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: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 499 passed (4.1m)
🎭 Playwright Run Summary
10 skipped 493 passed (4.8m)
🎭 Playwright Run Summary
5 skipped 492 passed (5.0m)
🎭 Playwright Run Summary
14 skipped 375 passed (5.1m)
🎭 Playwright Run Summary
5 skipped 506 passed (6.6m)
🎭 Playwright Run Summary
1 skipped 517 passed (6.6m)
🎭 Playwright Run Summary
10 skipped 518 passed (6.6m)
🎭 Playwright Run Summary
516 passed (6.7m)
🎭 Playwright Run Summary
4 skipped 528 passed (6.8m)
🎭 Playwright Run Summary
14 skipped 492 passed (7.2m)
🎭 Playwright Run Summary
2 skipped 533 passed (7.3m)
🎭 Playwright Run Summary
5 skipped 507 passed (7.3m)
🎭 Playwright Run Summary
7 skipped 506 passed (8.0m)

Artifacts

Produced during runtime
Name Size Digest
ionic-angular Expired
651 KB
sha256:90b46a4341ed7eaf1716a5c1eb48803489173fa0af75146b6dad2141aedcebc1
ionic-angular-server Expired
8.55 KB
sha256:faf3371eb7171970aaf2b0f8ad6ea499b941f77d3e61a4f38f721d0bb6f21d02
ionic-core Expired
4.45 MB
sha256:3c3166007e59696e503ef79ce19ed9acd48131a7c91c3e171309d1346517dfd0
ionic-react Expired
200 KB
sha256:55bd98bab0de4833f67d216be72cf160f3ccd3d34598d8f974faa4b5e7e38c4e
ionic-react-router Expired
27.9 KB
sha256:e4028bef4a6d165857c10ec27f7eaf349dbec3b12f06a3c7cec27801ccb91847
ionic-vue Expired
221 KB
sha256:57b0c4bd82deb0473109bef8ccb8eb54db3e4b0c307472a3c2798576871f6d22
ionic-vue-router Expired
17.1 KB
sha256:4d4a082a5d711b5f6014ee7b6f06b7bdcb60d7a8f138da719d736371c9e63754
test-results-1-20 Expired
430 KB
sha256:854867c9ee4a977d4d7fd8e0c6bb44fc68372ce996dd8bced661e23f3979ca0d
test-results-10-20 Expired
447 KB
sha256:35c9b6f4d832b4d5bd3656e860fc93c0a92068e922b0f89b489c5313d851c78b
test-results-11-20 Expired
2.7 MB
sha256:f9edcd3f2d65549f6ec0cf059a095a485f972b20c016d5fe18d4b28a82a298a0
test-results-12-20 Expired
432 KB
sha256:f3b064bed7f6983ceb320c7428ede5da70ab756cb31969e77c7cd0e3ac7b463b
test-results-13-20 Expired
431 KB
sha256:9b4882b785d748bfd7643274eea2d853b93cd995e3702b4b95bff0c3b410c0fc
test-results-14-20 Expired
390 KB
sha256:b2829e16c95cbf73eb1fb7c9a1c2c873760ed2d2e324ed8c9ee7bc22cf4d93de
test-results-15-20 Expired
426 KB
sha256:113f0925fec04423b2552d69529aae0495aad66d54f284e9c090bafd6f311086
test-results-16-20 Expired
411 KB
sha256:b41329768592916b6245254c6049a9f7479cd2587c5e7bd82f86915ceceac68f
test-results-17-20 Expired
520 KB
sha256:d0ed85af1a1e845dcfebc369f967f83489202985fe2af89d7d33e6f748bc6de6
test-results-18-20 Expired
493 KB
sha256:7e4e38a0bf9236282c056292d0465afc870330e37d17118181b9ee4a29b7d387
test-results-19-20 Expired
384 KB
sha256:8e4caeab135f41f1f9897a221998977f814d1b0b29f6278dd48dddd7c78d89b6
test-results-2-20 Expired
464 KB
sha256:4c43729d480131ad1cee2a5ea23dc14764a7b5ef2e8c56d8e31ea9793989c026
test-results-20-20 Expired
344 KB
sha256:ed408a9c74fb3a19ee40dac77efd45ee9a32bc0e3396c64dd9652fce991bfb0a
test-results-3-20 Expired
415 KB
sha256:75eb37f72004cd3ef92d8dea8a54c62d21c545dd52000e7d475d8137fe696489
test-results-4-20 Expired
514 KB
sha256:ab186b910c9e529dcd269e4bd464571bfb65a70117c9d418e283d719c8501773
test-results-5-20 Expired
443 KB
sha256:290cfa91242a4b14aac80d239651d2ab753eb336fc91fafcf3221087ea3ffdbb
test-results-6-20 Expired
418 KB
sha256:c13369a6b2432b084918a67db92dea83af7f68d77c4a63896f9d45309f449c8b
test-results-7-20 Expired
352 KB
sha256:508e98328c4eb7c9a8f24bf79d836a996db7ff4939def86149f4b0adb6c3c386
test-results-8-20 Expired
407 KB
sha256:ed3dd84a4702c7f7a7391f3e4b510a69aebdf78ace32871d1f737fa56c21224e
test-results-9-20 Expired
434 KB
sha256:b3dcf13ca7678cc3c1f561a29cd4446fb3f943b2e82b377113a0fe509571243e