Skip to content

fix(react-router): reject orphaned IonPage registrations during navigation #17779

fix(react-router): reject orphaned IonPage registrations during navigation

fix(react-router): reject orphaned IonPage registrations during navigation #17779

Triggered via pull request December 15, 2025 20:05
@ShaneKShaneK
synchronize #30867
FW-6316
Status Success
Total duration 10m 26s
Artifacts 27

build.yml

on: pull_request
build-react
44s
build-react
build-vue
36s
build-vue
Matrix: test-core-screenshot
build-angular
1m 2s
build-angular
build-angular-server
34s
build-angular-server
test-core-clean-build
11s
test-core-clean-build
test-core-lint
1m 7s
test-core-lint
test-core-spec
44s
test-core-spec
build-react-router
37s
build-react-router
build-vue-router
44s
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
4s
verify-test-angular-e2e
verify-test-react-e2e
2s
verify-test-react-e2e
verify-test-react-router-e2e
4s
verify-test-react-router-e2e
verify-test-vue-e2e
3s
verify-test-vue-e2e
Fit to window
Zoom out
Zoom in

Annotations

4 errors and 20 notices
[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: 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 › 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
[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#L27
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: expect(page).toHaveScreenshot(expected) failed 2329 pixels (ratio 0.01 of all image pixels) are different. Snapshot: datetime-overlay-modal-ios-ltr.png Call log: - Expect "toHaveScreenshot(datetime-overlay-modal-ios-ltr.png)" with timeout 5000ms - verifying given screenshot expectation - taking page screenshot - disabled all CSS animations - waiting for fonts to load... - fonts loaded - 2329 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 - 2329 pixels (ratio 0.01 of all image pixels) are different. 25 | await ionModalDidPresent.next(); 26 | > 27 | await expect(page).toHaveScreenshot(screenshot(`datetime-overlay-modal`)); | ^ 28 | }); 29 | 30 | test('should size the popover correctly', async ({ page, skip }) => { at /ionic/src/components/datetime-button/test/overlays/datetime-button.e2e.ts:27:26
[Mobile Safari] › src/components/router/test/guards/router.e2e.ts:6:9 › router: guards - ios/ltr › guards should be run on initial load: src/components/router/test/guards/router.e2e.ts#L9
1) [Mobile Safari] › src/components/router/test/guards/router.e2e.ts:6:9 › router: guards - ios/ltr › guards should be run on initial load Error: expect(received).toContain(expected) // indexOf Expected substring: "#/child/1" Received string: "http://localhost:3333/src/components/router/test/guards#/guard-initial-page?ionic:_testing=true&ionic:mode=ios&rtl=undefined&palette=light" 7 | await page.goto(`/src/components/router/test/guards#/guard-initial-page`, config); 8 | > 9 | expect(page.url()).toContain('#/child/1'); | ^ 10 | }); 11 | }); 12 | }); at /ionic/src/components/router/test/guards/router.e2e.ts:9:26
🎭 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
4 skipped 511 passed (3.2m)
🎭 Playwright Run Summary
1 skipped 534 passed (3.3m)
🎭 Playwright Run Summary
212 skipped 313 passed (3.6m)
🎭 Playwright Run Summary
2 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 4 skipped 513 passed (4.0m)
🎭 Playwright Run Summary
648 passed (4.3m)
🎭 Playwright Run Summary
10 skipped 503 passed (4.9m)
🎭 Playwright Run Summary
14 skipped 401 passed (5.0m)
🎭 Playwright Run Summary
1 flaky [Mobile Safari] › src/components/datetime-button/test/overlays/datetime-button.e2e.ts:11:9 › datetime-button: rendering - ios/ltr › should size the modal correctly 5 skipped 512 passed (5.2m)
🎭 Playwright Run Summary
4 skipped 537 passed (6.1m)
🎭 Playwright Run Summary
1 skipped 538 passed (6.4m)
🎭 Playwright Run Summary
1 skipped 528 passed (6.6m)
🎭 Playwright Run Summary
5 skipped 573 passed (6.7m)
🎭 Playwright Run Summary
1 flaky [Mobile Safari] › src/components/router/test/guards/router.e2e.ts:6:9 › router: guards - ios/ltr › guards should be run on initial load 10 skipped 528 passed (7.1m)
🎭 Playwright Run Summary
2 skipped 517 passed (7.1m)
🎭 Playwright Run Summary
14 skipped 498 passed (7.2m)
🎭 Playwright Run Summary
5 skipped 518 passed (7.2m)
🎭 Playwright Run Summary
7 skipped 510 passed (7.9m)

Artifacts

Produced during runtime
Name Size Digest
ionic-angular
667 KB
sha256:d2415eb74f9eb4f5cef15c2b20a2a8f73a1b27973ffe564a73fb317a0f9f751b
ionic-angular-server
8.54 KB
sha256:9062633743554967a62699cf0a0838861ec1d8122dd8fdb1138c6e96f73eb75a
ionic-core
4.58 MB
sha256:35d35b49bac7d83b3e9731c8c478959711476032737027fda64e592c4987477c
ionic-react
212 KB
sha256:fdb30b8f64bca27b7bc4bc86add6b946e62bdc5a68135a07a805641739bff643
ionic-react-router
82.5 KB
sha256:a9bb99d245a9b3f46045f0517eca8f36bfa5fc0b06bcae7b99adc6d277750d42
ionic-vue
233 KB
sha256:ee8e860e0ebb87a182721772b334dea98ac3c5f22f1798b482840e704eb764a3
ionic-vue-router
17.1 KB
sha256:8c37edd7866e2a254a1b656e07e51c24d1570a65617f1ed5f81f0844da577edf
test-results-1-20
442 KB
sha256:f1c7129c520831438ade6bfb9fad20bfdb50f514bdc5d04145592e4182b91baa
test-results-10-20
460 KB
sha256:c9ef6fa46efbcc73f142cbdcb29142a7427bc882b596305c618ca64eb4107231
test-results-11-20
1.62 MB
sha256:11c38c7287e8a19f74fb529b0cb138a69efd53edfcba771ad1ab4c63f7f3613e
test-results-12-20
443 KB
sha256:140e570e7d2c0a52933a57e7d1ec64c5d714fa74689640dbf5936e876fb0c795
test-results-13-20
450 KB
sha256:eaa5f12f1309c93db07926405b4e931599b893ee6c9d4cc339ed41bf2c217379
test-results-14-20
406 KB
sha256:a6f21d4637ff7a37bd8b55c7f931082b048bff857f66147b0758ebd4c958e477
test-results-15-20
431 KB
sha256:a0038840ac84611167557f5b0a7385a6881c915d248900c6014cd000ee6f65fa
test-results-16-20
1.41 MB
sha256:06aab08419dc70e2546ee0d892ec9e8b1f63413f27c0a768414e9918b16dedf3
test-results-17-20
530 KB
sha256:6831047ed02e52f1c86e14f4e6f34a469c62ad384ff5200355c92c530ed7349c
test-results-18-20
1.25 MB
sha256:28969ed0520bf6d260dfa272ee0e84535fb10e016aad2a4a01423891b10d09ed
test-results-19-20
396 KB
sha256:24cd0163e04362c21fa83dae4abe96eb05663dbe8f268d7302b63d7a56fde33d
test-results-2-20
472 KB
sha256:0f0cc2c565aa44d55a0aad680c8c518cff37fa6c7477e555e814756fdde42b22
test-results-20-20
360 KB
sha256:0b134808cf58730800ce90dbbb9f019ae5447cf586e46f63e8cac7852c9e4676
test-results-3-20
431 KB
sha256:2641e36f32c4558dfc8e8c96e8b1e62e0b7a3619bce50169d2e08f8402fd5ef1
test-results-4-20
522 KB
sha256:d69467ef6457c0a95c6b7367e59e06f282e209a2b200d6a09685ce412d610359
test-results-5-20
456 KB
sha256:ff3a4456486d60f2ba749dfeb8d3beee970669652a6146ccef5558ecf0ef2bde
test-results-6-20
446 KB
sha256:7cd3ead15ddd38f67e57e8e802600e9ea5bd9472383f0b637f914011c0357e48
test-results-7-20
352 KB
sha256:e6a8e9b7fc17ba079a9abbdff59201c668f7be56a07f7e76a26651dfbddd36c5
test-results-8-20
428 KB
sha256:ceb58e9bd2cf3eef7cfc77322beaab31c2037973c8f387d859dddbe71edd4e17
test-results-9-20
436 KB
sha256:50ef2e52c568dca0921ba02321448245563a0fb18d5cd387a4b1e5a0543635df