Skip to content

feat(TabBar): add Ionic theme customization #18891

feat(TabBar): add Ionic theme customization

feat(TabBar): add Ionic theme customization #18891

Triggered via pull request April 14, 2026 16:30
@IonitronIonitron
synchronize #31081
ROU-12699
Status Success
Total duration 15m 4s
Artifacts 27

build.yml

on: pull_request
build-react
48s
build-react
build-vue
42s
build-vue
Matrix: test-core-screenshot
build-angular
1m 17s
build-angular
build-angular-server
44s
build-angular-server
test-core-clean-build
16s
test-core-clean-build
test-core-lint
1m 2s
test-core-lint
test-core-spec
1m 4s
test-core-spec
build-react-router
30s
build-react-router
build-vue-router
45s
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
2s
verify-test-vue-e2e
Fit to window
Zoom out
Zoom in

Annotations

5 errors and 20 notices
[Mobile Chrome] › src/components/action-sheet/test/a11y/action-sheet.e2e.ts:158:9 › action-sheet: radio buttons - ios/ltr › should navigate radio buttons with keyboard: src/components/action-sheet/test/a11y/action-sheet.e2e.ts#L188
1) [Mobile Chrome] › src/components/action-sheet/test/a11y/action-sheet.e2e.ts:158:9 › action-sheet: radio buttons - ios/ltr › should navigate radio buttons with keyboard Error: expect(received).toBe(expected) // Object.is equality Expected: "Cancel" Received: "Option 1" 186 | 187 | focusedElement = await page.evaluate(() => document.activeElement?.textContent?.trim()); > 188 | expect(focusedElement).toBe('Cancel'); | ^ 189 | }); 190 | }); 191 | }); at /ionic/src/components/action-sheet/test/a11y/action-sheet.e2e.ts:188:30
[Mobile Firefox] › src/components/action-sheet/test/a11y/action-sheet.e2e.ts:158:9 › action-sheet: radio buttons - ios/ltr › should navigate radio buttons with keyboard: src/components/action-sheet/test/a11y/action-sheet.e2e.ts#L188
1) [Mobile Firefox] › src/components/action-sheet/test/a11y/action-sheet.e2e.ts:158:9 › action-sheet: radio buttons - ios/ltr › should navigate radio buttons with keyboard Error: expect(received).toBe(expected) // Object.is equality Expected: "Cancel" Received: "Option 1" 186 | 187 | focusedElement = await page.evaluate(() => document.activeElement?.textContent?.trim()); > 188 | expect(focusedElement).toBe('Cancel'); | ^ 189 | }); 190 | }); 191 | }); at /ionic/src/components/action-sheet/test/a11y/action-sheet.e2e.ts:188:30
[Mobile Firefox] › src/components/tab-bar/test/basic/tab-bar.e2e.ts:9:9 › tab-bar: basic - ionic/md/rtl/light › should not have visual regressions: src/components/tab-bar/test/basic/tab-bar.e2e.ts#L45
1) [Mobile Firefox] › src/components/tab-bar/test/basic/tab-bar.e2e.ts:9:9 › tab-bar: basic - ionic/md/rtl/light › should not have visual regressions Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toHaveScreenshot(expected) failed Locator: locator('ion-tab-bar') 541 pixels (ratio 0.03 of all image pixels) are different. Snapshot: tab-bar-default-ionic-md-rtl-light.png Call log: - Expect "toHaveScreenshot(tab-bar-default-ionic-md-rtl-light.png)" with timeout 5000ms - verifying given screenshot expectation - waiting for locator('ion-tab-bar') - locator resolved to <ion-tab-bar role="tablist" selected-tab="2" class="ionic tab-bar-full tab-bar-round hydrated">…</ion-tab-bar> - 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 - 541 pixels (ratio 0.03 of all image pixels) are different. - waiting 100ms before taking screenshot - waiting for locator('ion-tab-bar') - locator resolved to <ion-tab-bar role="tablist" selected-tab="2" class="ionic tab-bar-full tab-bar-round hydrated">…</ion-tab-bar> - 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 - 541 pixels (ratio 0.03 of all image pixels) are different. 43 | const tabBar = page.locator('ion-tab-bar'); 44 | > 45 | await expect(tabBar).toHaveScreenshot(screenshot(`tab-bar-default`)); | ^ 46 | }); 47 | }); 48 | }); at /ionic/src/components/tab-bar/test/basic/tab-bar.e2e.ts:45:28
[Mobile Firefox] › src/components/tab-bar/test/basic/tab-bar.e2e.ts:9:9 › tab-bar: basic - ionic/md/rtl/light › should not have visual regressions: src/components/tab-bar/test/basic/tab-bar.e2e.ts#L45
1) [Mobile Firefox] › src/components/tab-bar/test/basic/tab-bar.e2e.ts:9:9 › tab-bar: basic - ionic/md/rtl/light › should not have visual regressions Error: expect(locator).toHaveScreenshot(expected) failed Locator: locator('ion-tab-bar') 541 pixels (ratio 0.03 of all image pixels) are different. Snapshot: tab-bar-default-ionic-md-rtl-light.png Call log: - Expect "toHaveScreenshot(tab-bar-default-ionic-md-rtl-light.png)" with timeout 5000ms - verifying given screenshot expectation - waiting for locator('ion-tab-bar') - locator resolved to <ion-tab-bar role="tablist" selected-tab="2" class="ionic tab-bar-full tab-bar-round hydrated">…</ion-tab-bar> - 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 - 541 pixels (ratio 0.03 of all image pixels) are different. - waiting 100ms before taking screenshot - waiting for locator('ion-tab-bar') - locator resolved to <ion-tab-bar role="tablist" selected-tab="2" class="ionic tab-bar-full tab-bar-round hydrated">…</ion-tab-bar> - 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 - 541 pixels (ratio 0.03 of all image pixels) are different. 43 | const tabBar = page.locator('ion-tab-bar'); 44 | > 45 | await expect(tabBar).toHaveScreenshot(screenshot(`tab-bar-default`)); | ^ 46 | }); 47 | }); 48 | }); at /ionic/src/components/tab-bar/test/basic/tab-bar.e2e.ts:45:28
[Mobile Safari] › src/components/item-sliding/test/shapes/item-sliding.e2e.ts:10:9 › item-sliding: shapes - ionic/md/ltr/light › should not have visual regressions when not expanded: src/components/item-sliding/test/shapes/item-sliding.e2e.ts#L26
1) [Mobile Safari] › src/components/item-sliding/test/shapes/item-sliding.e2e.ts:10:9 › item-sliding: shapes - ionic/md/ltr/light › should not have visual regressions when not expanded Error: expect(locator).toHaveScreenshot(expected) failed Locator: locator('#round') 749 pixels (ratio 0.03 of all image pixels) are different. Snapshot: item-sliding-round-ionic-md-ltr-light.png Call log: - Expect "toHaveScreenshot(item-sliding-round-ionic-md-ltr-light.png)" with timeout 5000ms - verifying given screenshot expectation - waiting for locator('#round') - locator resolved to <ion-item-sliding id="round" class="md hydrated item-sliding-active-slide item-sliding-active-options-end item-sliding-active-swipe-end">…</ion-item-sliding> - 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 - 749 pixels (ratio 0.03 of all image pixels) are different. - waiting 100ms before taking screenshot - waiting for locator('#round') - locator resolved to <ion-item-sliding id="round" class="md hydrated item-sliding-active-slide item-sliding-active-options-end item-sliding-active-swipe-end">…</ion-item-sliding> - 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 - 749 pixels (ratio 0.03 of all image pixels) are different. 24 | await page.waitForChanges(); 25 | > 26 | await expect(item).toHaveScreenshot(screenshot(`item-sliding-${itemID}`)); | ^ 27 | } 28 | }); 29 | }); at /ionic/src/components/item-sliding/test/shapes/item-sliding.e2e.ts:26:28
🎭 Playwright Run Summary
1 flaky [Mobile Chrome] › src/components/action-sheet/test/a11y/action-sheet.e2e.ts:158:9 › action-sheet: radio buttons - ios/ltr › should navigate radio buttons with keyboard 360 skipped 351 passed (3.3m)
🎭 Playwright Run Summary
368 skipped 324 passed (3.5m)
🎭 Playwright Run Summary
2 skipped 589 passed (4.1m)
🎭 Playwright Run Summary
8 skipped 719 passed (4.5m)
🎭 Playwright Run Summary
1 skipped 710 passed (4.9m)
🎭 Playwright Run Summary
8 skipped 810 passed (5.1m)
🎭 Playwright Run Summary
5 skipped 702 passed (5.3m)
🎭 Playwright Run Summary
36 skipped 870 passed (5.9m)
🎭 Playwright Run Summary
14 skipped 501 passed (6.3m)
🎭 Playwright Run Summary
5 skipped 697 passed (6.8m)
🎭 Playwright Run Summary
10 skipped 707 passed (7.4m)
🎭 Playwright Run Summary
3 skipped 701 passed (8.3m)
🎭 Playwright Run Summary
13 skipped 706 passed (8.8m)
🎭 Playwright Run Summary
1 skipped 665 passed (9.1m)
🎭 Playwright Run Summary
13 skipped 719 passed (9.0m)
🎭 Playwright Run Summary
1 flaky [Mobile Firefox] › src/components/action-sheet/test/a11y/action-sheet.e2e.ts:158:9 › action-sheet: radio buttons - ios/ltr › should navigate radio buttons with keyboard 4 skipped 745 passed (9.2m)
🎭 Playwright Run Summary
1 flaky [Mobile Firefox] › src/components/tab-bar/test/basic/tab-bar.e2e.ts:9:9 › tab-bar: basic - ionic/md/rtl/light › should not have visual regressions 5 skipped 702 passed (9.4m)
🎭 Playwright Run Summary
18 skipped 662 passed (8.8m)
🎭 Playwright Run Summary
1 flaky [Mobile Safari] › src/components/item-sliding/test/shapes/item-sliding.e2e.ts:10:9 › item-sliding: shapes - ionic/md/ltr/light › should not have visual regressions when not expanded 5 skipped 698 passed (9.9m)
🎭 Playwright Run Summary
15 skipped 744 passed (12.1m)

Artifacts

Produced during runtime
Name Size Digest
ionic-angular
811 KB
sha256:b1e3bb57e81f0afc3577292ab9817cd5659fdc92ef6746ac943b3c60658cb051
ionic-angular-server
8.55 KB
sha256:01baf8adaa96d98ea34d82f7d174ca8b202e384f376b0f85fd6057536b673963
ionic-core
5.12 MB
sha256:f9999680d477ab38dba182bc75d4e67fc4a5825ecccf5ed34d92044234b4d707
ionic-react
345 KB
sha256:b09d8cb73edf33e6b1d17663be65f890c5797e9060e4a9ef20e70a56be37de91
ionic-react-router
27.9 KB
sha256:6dd2b0102e365a5122213c676f0c297b86b0fe94722b08cd267b8f41741284a7
ionic-vue
376 KB
sha256:1f5a0fa7ce6054e6c00186bb1a2c12aa00ca8086687effb2df006b469b398b07
ionic-vue-router
17.1 KB
sha256:3053d06857956c2218391f63935ab5f85b79490faf6f0f4c70d356db9498028a
test-results-1-20
1.31 MB
sha256:cf9d195c5873dca1d71fc24beba25543b528a79cca3f1bc778266d7baea8c911
test-results-10-20
443 KB
sha256:41a013e16395ccec6427fe4956b87f0ed2c8bf72ef02ebb8ce56612e6ca74a5d
test-results-11-20
616 KB
sha256:015d1adbb47dbd30c5b3b5f769aff702caf6a0d2671bdf601f0769a4e46f53dd
test-results-12-20
538 KB
sha256:27eaebd7a85fd0e3ae5f07ae684b021eb0fb96bb225f090bf3deb31ae53dab34
test-results-13-20
546 KB
sha256:682b9282c79532778093b4f60c296bf720e4aa8ab2a19681611c7864b263153c
test-results-14-20
453 KB
sha256:27fdd2b3140789c8705daa61f10fbf7a97adfff16d2e3b8f36a5581df1261a74
test-results-15-20
507 KB
sha256:2c834ee96d9bf58c996ef485b62ca55fca32bcfca7eee7e36392deebcea51df9
test-results-16-20
511 KB
sha256:0a1d9c3cce69ef1bb007be8e3f69b5026aea7dd58a8b4c012775de222035f195
test-results-17-20
1.5 MB
sha256:8520ae53a8d8df824948f37628beccfc14734e74eedd855b9c32d24b25c99810
test-results-18-20
601 KB
sha256:05b94f6226c37abaac10763f8c9dbf448a769d2bc068e9b290b4545c87c44fe1
test-results-19-20
496 KB
sha256:12f2a9c731b7af53bc2b68574ffbf82174e491516bd9e5cd05b0907994ac332a
test-results-2-20
544 KB
sha256:ff0a203026ab4b1750b308b99d0b810471bb2ea368a5cfb88df46adb16902dff
test-results-20-20
371 KB
sha256:1402de9748b8965261682f62a9493ee86394576c606f94237d80bd0cad939f83
test-results-3-20
490 KB
sha256:b7d236e89e89a8c317a42c58052e8621f35370e5b552648778e4bc228b103ce6
test-results-4-20
645 KB
sha256:5cfe3aca3d0e4b59e3ba16604c42e4ef8e26d37d701456f7539a4833cce62269
test-results-5-20
521 KB
sha256:39d247071b16f2c769fca5b38272950255b00326fbff7e7888475caff50e0d42
test-results-6-20
1.73 MB
sha256:2f23e5935fb314850039289c176427b51fb4fa48609e8b4831432cc1a3410630
test-results-7-20
1.23 MB
sha256:73c62fbe6587584ba6301c3d8b0415e1bd43198ab2c10110a11dfb9bb65c0535
test-results-8-20
488 KB
sha256:552011d2b8e719837f2880332637a8cda10726c114c33982a8e23c2794f1be72
test-results-9-20
574 KB
sha256:d42b479ce518a01f356a09e117e49ae933025ff4f65aa68834d33b0cbb78f8a2