Skip to content

fix(tab-bar): prevent keyboard controller memory leak on rapid mount/unmount #17973

fix(tab-bar): prevent keyboard controller memory leak on rapid mount/unmount

fix(tab-bar): prevent keyboard controller memory leak on rapid mount/unmount #17973

Triggered via pull request January 13, 2026 22:28
@ShaneKShaneK
synchronize #30906
IONIC-82
Status Success
Total duration 10m 57s
Artifacts 27

build.yml

on: pull_request
build-react
48s
build-react
build-vue
39s
build-vue
Matrix: test-core-screenshot
build-angular
56s
build-angular
build-angular-server
42s
build-angular-server
test-core-clean-build
16s
test-core-clean-build
test-core-lint
53s
test-core-lint
test-core-spec
51s
test-core-spec
build-react-router
29s
build-react-router
build-vue-router
44s
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
3s
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

2 errors and 20 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/split-pane/test/basic/split-pane.e2e.ts:6:9 › split-pane: basic - ios/rtl › should render on the correct side: src/components/split-pane/test/basic/split-pane.e2e.ts#L10
1) [Mobile Safari] › src/components/split-pane/test/basic/split-pane.e2e.ts:6:9 › split-pane: basic - ios/rtl › should render on the correct side Error: expect(page).toHaveScreenshot(expected) failed 16 pixels (ratio 0.01 of all image pixels) are different. Snapshot: split-pane-ios-rtl.png Call log: - Expect "toHaveScreenshot(split-pane-ios-rtl.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - 16 pixels (ratio 0.01 of all image pixels) are different. - waiting 100ms before taking screenshot - taking page screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - captured a stable screenshot - 16 pixels (ratio 0.01 of all image pixels) are different. 8 | await page.goto(`/src/components/split-pane/test/basic`, config); 9 | > 10 | await expect(page).toHaveScreenshot(screenshot(`split-pane`)); | ^ 11 | }); 12 | }); 13 | }); at /ionic/src/components/split-pane/test/basic/split-pane.e2e.ts:10:26
🎭 Playwright Run Summary
216 skipped 318 passed (2.9m)
🎭 Playwright Run Summary
535 passed (3.1m)
🎭 Playwright Run Summary
1 skipped 539 passed (3.2m)
🎭 Playwright Run Summary
522 passed (3.1m)
🎭 Playwright Run Summary
5 skipped 527 passed (3.4m)
🎭 Playwright Run Summary
212 skipped 313 passed (3.8m)
🎭 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 515 passed (3.8m)
🎭 Playwright Run Summary
648 passed (4.3m)
🎭 Playwright Run Summary
14 skipped 379 passed (5.0m)
🎭 Playwright Run Summary
5 skipped 514 passed (5.2m)
🎭 Playwright Run Summary
1 flaky [Mobile Safari] › src/components/split-pane/test/basic/split-pane.e2e.ts:6:9 › split-pane: basic - ios/rtl › should render on the correct side 10 skipped 502 passed (5.1m)
🎭 Playwright Run Summary
1 skipped 538 passed (5.8m)
🎭 Playwright Run Summary
5 skipped 516 passed (6.2m)
🎭 Playwright Run Summary
4 skipped 539 passed (6.5m)
🎭 Playwright Run Summary
10 skipped 535 passed (6.7m)
🎭 Playwright Run Summary
1 skipped 528 passed (6.6m)
🎭 Playwright Run Summary
5 skipped 518 passed (7.1m)
🎭 Playwright Run Summary
2 skipped 541 passed (7.2m)
🎭 Playwright Run Summary
14 skipped 504 passed (7.3m)
🎭 Playwright Run Summary
7 skipped 511 passed (8.3m)

Artifacts

Produced during runtime
Name Size Digest
ionic-angular
667 KB
sha256:0ac5ac11e12b3c2bd97a42d2ef8158ff9a84048eceee6ba1c43f6823986c9e0e
ionic-angular-server
8.55 KB
sha256:57a5017e95d6af6b3721cd834cebdabc9915aeb27166010c9e9b1f11cbe353ef
ionic-core
4.59 MB
sha256:c85df073788ef8dcb9faa117f58208b200e5811d86fc7a8f49156cd909e777ef
ionic-react
212 KB
sha256:74b8856b2f3710814d4c6be2ba6b9f8ecd10981622b1c214b8b0a948257b36d2
ionic-react-router
27.9 KB
sha256:f44d8bdc5f78ce0463a8704e1f52dca29b487c2befec3dbf0fb639ae5dfe9d39
ionic-vue
234 KB
sha256:69d8d6f203e044c35b6f635e52873e616c3ad7c150ea43126d09af4cc0a1d791
ionic-vue-router
17 KB
sha256:3d98f6d76e1a3635f34adb4649de8fdee828d0f229fa98a86d1708f9d9154c36
test-results-1-20
444 KB
sha256:202a8a58672eaac9c142e321e75eb2bd64433bde9f9d50bde0aff98384f2dfc2
test-results-10-20
460 KB
sha256:adbccf2683ecee4321afa177e75a73b13cac2babce3ae51e5f21d0b5e0f42fa7
test-results-11-20
1.26 MB
sha256:1a9c906e0e1b3eecd5accd91355ec4a7683f58acbe4a6cd11174df6f199cfc31
test-results-12-20
448 KB
sha256:9dee989a302e2adcfd7bd55949dd10108d14d9dd5430724207f078b8048c7185
test-results-13-20
450 KB
sha256:22e86beaa286e95b2b5f11ffd4b9175b554b58a10074565f46065f46fa0035a4
test-results-14-20
402 KB
sha256:2b63ad8127c437e4b8fcad373dd16ec123918321847d15c7c27895879e708f4b
test-results-15-20
438 KB
sha256:fdad248af0307588ff4d5ab2fc050cc39c47b8d2dceeed0922007b257345e55b
test-results-16-20
429 KB
sha256:4d42bc9dda4d7632f12f10f9b71b900e486b79abc605b1529152d3b70f1cc09d
test-results-17-20
531 KB
sha256:55468a685cd2a62d2f0ff1e54166aa7784901e5492361250f602deba0aeab7c7
test-results-18-20
510 KB
sha256:4122034f01917984349cdb3e8b06c6998771f406e80c13be48ffa0f9ae7d8016
test-results-19-20
1.17 MB
sha256:37dd9d3d89979eba23268422b17fb3a3bb4721b68e1cade6b48b4b0fac6dc33d
test-results-2-20
474 KB
sha256:8788cb692246286bb5bd0048b24634312a42578e6865ed239d29b5018d25f27f
test-results-20-20
360 KB
sha256:8193f82c7f9b005cbc5245554220a5cd675397e983c7ace8cbe0665e7e512803
test-results-3-20
430 KB
sha256:ba16b4c51e8ed298f53f69e80a209042b89cadef97652e1a0d8353a9a47920c2
test-results-4-20
529 KB
sha256:6bfd5c8f2a89da472ee2c43a535e5a5f5be59cd49e2f85bdd544c38a1bb2399e
test-results-5-20
456 KB
sha256:9bdb0afb4d7ad6552e29d83ea1b0c370bff08947d0a314ac967a4ca0b01d93e2
test-results-6-20
430 KB
sha256:92ce128c0263ae4600fb2ad57f1b1a9d11775e9ac2b8fa1baa5f64a88343a4dc
test-results-7-20
370 KB
sha256:4ad0f0cf8472cf5fe901ed6f4766278c50f88e14d78aae2b64c39eac3a44b0d6
test-results-8-20
420 KB
sha256:fc2f4055ada2e957816ea7009f73d73f4a7964337717c79fedb37dda03290bfe
test-results-9-20
447 KB
sha256:696274ea581e5b8473492760bf824c6fb97114c6289c7b652a29a1ddc8b145de