Skip to content

feat(tab-bar): add hideOnScroll for ionic theme #18945

feat(tab-bar): add hideOnScroll for ionic theme

feat(tab-bar): add hideOnScroll for ionic theme #18945

Triggered via pull request April 17, 2026 20:50
@joselriojoselrio
synchronize #31085
ROU-12708
Status Success
Total duration 15m 11s
Artifacts 27

build.yml

on: pull_request
build-react
54s
build-react
build-vue
43s
build-vue
Matrix: test-core-screenshot
build-angular
1m 19s
build-angular
build-angular-server
45s
build-angular-server
test-core-clean-build
18s
test-core-clean-build
test-core-lint
57s
test-core-lint
test-core-spec
49s
test-core-spec
build-react-router
25s
build-react-router
build-vue-router
40s
build-vue-router
verify-screenshots
4s
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
2s
verify-test-react-router-e2e
verify-test-vue-e2e
2s
verify-test-vue-e2e
Fit to window
Zoom out
Zoom in

Annotations

9 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 Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── 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 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 Chrome] › src/components/segment/test/segment-events.e2e.ts:10:11 › segment: events: ionChange - ios/ltr › when the segment is activated by keyboard navigation › should emit when there is no initial value: src/components/segment/test/segment-events.e2e.ts#L37
1) [Mobile Chrome] › src/components/segment/test/segment-events.e2e.ts:10:11 › segment: events: ionChange - ios/ltr › when the segment is activated by keyboard navigation › should emit when there is no initial value Error: expect(received).toBe(expected) // Object.is equality Expected: "2" Received: undefined 35 | await page.keyboard.press('Enter'); 36 | > 37 | expect(await segment.evaluate((el: HTMLIonSegmentElement) => el.value)).toBe('2'); | ^ 38 | 39 | expect(ionChangeSpy).toHaveReceivedEventTimes(1); 40 | expect(ionChangeSpy).toHaveReceivedEventDetail({ value: '2' }); at /ionic/src/components/segment/test/segment-events.e2e.ts:37:81
[Mobile Firefox] › src/components/tab-bar/test/basic/tab-bar.e2e.ts:9:9 › tab-bar: basic - ionic/md/ltr/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/ltr/light › should not have visual regressions Error: expect(locator).toHaveScreenshot(expected) failed Locator: locator('ion-tab-bar') 533 pixels (ratio 0.03 of all image pixels) are different. Snapshot: tab-bar-default-ionic-md-ltr-light.png Call log: - Expect "toHaveScreenshot(tab-bar-default-ionic-md-ltr-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 - 533 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 - 533 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/datetime/test/set-value/datetime.e2e.ts:54:9 › datetime: set-value - ios/ltr › should scroll to new month when value is initially set and then updated: src/components/datetime/test/set-value/datetime.e2e.ts#L63
3) [Mobile Safari] › src/components/datetime/test/set-value/datetime.e2e.ts:54:9 › datetime: set-value - ios/ltr › should scroll to new month when value is initially set and then updated Error: expect(locator).toHaveText(expected) failed Locator: locator('ion-datetime').locator('.calendar-month-year') Expected pattern: /May 2021/ Received string: "November 2021" Timeout: 5000ms Call log: - Expect "toHaveText" with timeout 5000ms - waiting for locator('ion-datetime').locator('.calendar-month-year') 9 × locator resolved to <div class="calendar-month-year">…</div> - unexpected value "November 2021" 61 | 62 | const calendarHeader = datetime.locator('.calendar-month-year'); > 63 | await expect(calendarHeader).toHaveText(/May 2021/); | ^ 64 | }); 65 | }); 66 | }); at /ionic/src/components/datetime/test/set-value/datetime.e2e.ts:63:36
[Mobile Safari] › src/components/datetime/test/multiple/datetime.e2e.ts:161:9 › datetime: multiple date selection (functionality) - md/ltr › should scroll to new month when value is updated with multiple dates in the same month: src/components/datetime/test/multiple/datetime.e2e.ts#L174
2) [Mobile Safari] › src/components/datetime/test/multiple/datetime.e2e.ts:161:9 › datetime: multiple date selection (functionality) - md/ltr › should scroll to new month when value is updated with multiple dates in the same month Error: expect(locator).toHaveText(expected) failed Locator: locator('ion-datetime').locator('.calendar-month-year') Expected pattern: /June 2022/ Received string: "May 2022" Timeout: 5000ms Call log: - Expect "toHaveText" with timeout 5000ms - waiting for locator('ion-datetime').locator('.calendar-month-year') 9 × locator resolved to <div class="calendar-month-year">…</div> - unexpected value "May 2022" 172 | 173 | const monthYear = datetime.locator('.calendar-month-year'); > 174 | await expect(monthYear).toHaveText(/June 2022/); | ^ 175 | }); 176 | 177 | test('with buttons, should only update value when confirm is called', async ({ page }) => { at /ionic/src/components/datetime/test/multiple/datetime.e2e.ts:174:31
[Mobile Safari] › src/components/checkbox/test/a11y/checkbox.e2e.ts:7:9 › checkbox: a11y - ios/ltr › should not have accessibility violations: src/components/checkbox/test/a11y/checkbox.e2e.ts#L23
1) [Mobile Safari] › src/components/checkbox/test/a11y/checkbox.e2e.ts:7:9 › checkbox: a11y - ios/ltr › should not have accessibility violations Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 69 - Array [] + Array [ + Object { + "description": "Ensure every ARIA toggle field has an accessible name", + "help": "ARIA toggle fields must have an accessible name", + "helpUrl": "https://dequeuniversity.com/rules/axe/4.11/aria-toggle-field-name?application=playwright", + "id": "aria-toggle-field-name", + "impact": "serious", + "nodes": Array [ + Object { + "all": Array [], + "any": Array [ + Object { + "data": null, + "id": "has-visible-text", + "impact": "serious", + "message": "Element does not have text that is visible to screen readers", + "relatedNodes": Array [], + }, + Object { + "data": null, + "id": "aria-label", + "impact": "serious", + "message": "aria-label attribute does not exist or is empty", + "relatedNodes": Array [], + }, + Object { + "data": null, + "id": "aria-labelledby", + "impact": "serious", + "message": "aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty", + "relatedNodes": Array [], + }, + Object { + "data": Object { + "messageKey": "noAttr", + }, + "id": "non-empty-title", + "impact": "serious", + "message": "Element has no title attribute", + "relatedNodes": Array [], + }, + ], + "failureSummary": "Fix any of the following: + Element does not have text that is visible to screen readers + aria-label attribute does not exist or is empty + aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty + Element has no title attribute", + "html": "<ion-checkbox role=\"checkbox\" aria-checked=\"false\" tabindex=\"0\" class=\"ios in-item ion-focusable interactive checkbox-label-placement-start checkbox-shape-soft hydrated\">Checkbox in item<input type=\"hidden\" class=\"aux-input\" name=\"ion-cb-3\" value=\"\"></ion-checkbox>", + "impact": "serious", + "none": Array [], + "target": Array [ + ".in-item", + ], + }, + ], + "tags": Array [ + "cat.aria", + "wcag2a", + "wcag412", + "TTv5", + "TT5.c", + "EN-301-549", + "EN-9.4.1.2", + "ACT", + "RGAAv4", + "RGAA-7.1.1", + ], + }, + ] 21 | 22 | const results = await new AxeBuilder({ page }).analyze(); > 23 | expect(results.violations).toEqual([]); | ^ 24 | }); 25 | }); 26 | }); at /ionic/src/components/checkbox/test/a11y/checkbox.e2e.ts:23:34
[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 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.1m)
🎭 Playwright Run Summary
368 skipped 324 passed (3.5m)
🎭 Playwright Run Summary
2 skipped 589 passed (4.0m)
🎭 Playwright Run Summary
8 skipped 719 passed (4.1m)
🎭 Playwright Run Summary
1 flaky [Mobile Chrome] › src/components/segment/test/segment-events.e2e.ts:10:11 › segment: events: ionChange - ios/ltr › when the segment is activated by keyboard navigation › should emit when there is no initial value 1 skipped 709 passed (4.4m)
🎭 Playwright Run Summary
5 skipped 702 passed (5.4m)
🎭 Playwright Run Summary
8 skipped 810 passed (5.4m)
🎭 Playwright Run Summary
14 skipped 501 passed (6.1m)
🎭 Playwright Run Summary
5 skipped 697 passed (6.7m)
🎭 Playwright Run Summary
36 skipped 870 passed (6.6m)
🎭 Playwright Run Summary
10 skipped 707 passed (7.2m)
🎭 Playwright Run Summary
3 skipped 701 passed (8.4m)
🎭 Playwright Run Summary
13 skipped 706 passed (8.9m)
🎭 Playwright Run Summary
1 flaky [Mobile Firefox] › src/components/tab-bar/test/basic/tab-bar.e2e.ts:9:9 › tab-bar: basic - ionic/md/ltr/light › should not have visual regressions 5 skipped 702 passed (9.0m)
🎭 Playwright Run Summary
1 skipped 665 passed (9.2m)
🎭 Playwright Run Summary
3 flaky [Mobile Safari] › src/components/checkbox/test/a11y/checkbox.e2e.ts:7:9 › checkbox: a11y - ios/ltr › should not have accessibility violations [Mobile Safari] › src/components/datetime/test/multiple/datetime.e2e.ts:161:9 › datetime: multiple date selection (functionality) - md/ltr › should scroll to new month when value is updated with multiple dates in the same month [Mobile Safari] › src/components/datetime/test/set-value/datetime.e2e.ts:54:9 › datetime: set-value - ios/ltr › should scroll to new month when value is initially set and then updated 13 skipped 716 passed (9.4m)
🎭 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.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
18 skipped 662 passed (10.3m)
🎭 Playwright Run Summary
15 skipped 744 passed (11.1m)

Artifacts

Produced during runtime
Name Size Digest
ionic-angular
819 KB
sha256:88860cff0d6fb1d927c7b12561dcc47f55096d057016ed684da6ddc36f612d5c
ionic-angular-server
8.55 KB
sha256:dbf41c7b4eac2668fb1338cfd04a29cd33c9f6a7f00fd8502fedc602af567b15
ionic-core
5.13 MB
sha256:e5511172ebc52fd953891ccde15cf08bcc4f73d43d806d638da92e9a237648d3
ionic-react
353 KB
sha256:2705884f8038e779cc8fa0b9d2dbaf6457d8d158334e1971abf2d8f031c74b93
ionic-react-router
27.9 KB
sha256:db6f5388ac2200502385cec6cf8f9441fab50ee9dce012bd5be6b6a44d693926
ionic-vue
384 KB
sha256:9c73fdf7b8d0aa22edcea7b02ff8140d45cb6f2679b134fc9ba9d418f955f01d
ionic-vue-router
17.1 KB
sha256:7789b601654cacde9fdb2e1560e68d66340fa8fdcdf8e6c4428078cf3fef2228
test-results-1-20
1.33 MB
sha256:59a5dfa0f8f4f2260bbbdb11e686ca23907a4bbbfb17443fbe8dbd00eef3d6dc
test-results-10-20
443 KB
sha256:8ab14a864a01cbd8874d193435c3431c41d9a1d75b3762614c263ad0f61cbc40
test-results-11-20
617 KB
sha256:fa78133c61e10622b5b1ffd2754ca4761c3c7ffbc8add19bbf4ab0afdcae639d
test-results-12-20
1.29 MB
sha256:e6e0d743c4fbbf2fab8fd988e89643dc8675e47072b32c6e88ee77756a01ca5d
test-results-13-20
550 KB
sha256:ff035b1d26974de606cacd1194b986f44ea5e74cae7560dd4979ff8a80b6d815
test-results-14-20
452 KB
sha256:e0c137f2ca0f4f970b1038f5a8128f9226ac12af245994261cbdeb36d3780c8b
test-results-15-20
3.32 MB
sha256:f77d63864e8cfe3c2191559ac4c04683abd739a9cbc78bb5c134322792342625
test-results-16-20
511 KB
sha256:10c0e439740e498e815360aa4f498ef6ed0698acd9f2a21a728ce943e55770c7
test-results-17-20
1.49 MB
sha256:952a136f5fc6de42dcc9f1f7b10ae3c128699aff20d29106fe26ffb07b634207
test-results-18-20
601 KB
sha256:792c09669da62c7317a82fce3cbca60c82a01af32c7c2f44b0b4891111164865
test-results-19-20
497 KB
sha256:56193a190042bb7b4d7a30daecabdb4bf954c21536a16d67bd079a9a169f7716
test-results-2-20
546 KB
sha256:532f557e419c15b84b8dc7589cd683130babdbeba3bfa4f8e1a0fbe30e8a33f5
test-results-20-20
371 KB
sha256:a86be6075699a3aa3cdfef6aa89af47e9a47a777cc7f12da67070a5347e917db
test-results-3-20
491 KB
sha256:5370b8b63943b7c9c04fd58b9550d9becaedc9243be4fc644af957a1e7137dff
test-results-4-20
643 KB
sha256:27b2f0ecfd013d80bd69d30ea5e4d05c39167d27a0896f1342d85d3eaf21a9ed
test-results-5-20
521 KB
sha256:3796b620ad3cf192d14132e8ceee63f21e07f3c39c4723fdcbd62535e957b323
test-results-6-20
1.33 MB
sha256:20970c150eeb7ed1e0c047b192499a511e1cb8d335b5faef01157eed87364807
test-results-7-20
1.71 MB
sha256:da84684b02e12bc1bcaa3b5679e60c03df3fb4c848265192007a8d8874d3a378
test-results-8-20
486 KB
sha256:bb4b0fc02526152e976297e3d62354242b9136acbb5cd5e4d5411b16b00452d3
test-results-9-20
574 KB
sha256:432a63b871ed0b5016e3251469d418d86efb4d64a61df51c0b7bcd9bd7221388