Skip to content

feat(select): allow HTML within options #19028

feat(select): allow HTML within options

feat(select): allow HTML within options #19028

Triggered via pull request April 24, 2026 23:49
@thetaPCthetaPC
synchronize #31072
FW-7137
Status Failure
Total duration 12m 30s
Artifacts 19

build.yml

on: pull_request
build-react
57s
build-react
build-vue
47s
build-vue
Matrix: test-core-screenshot
build-angular
1m 17s
build-angular
build-angular-server
39s
build-angular-server
test-core-clean-build
12s
test-core-clean-build
test-core-lint
59s
test-core-lint
test-core-spec
55s
test-core-spec
build-react-router
31s
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
3s
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

44 errors and 12 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
test-vue-e2e (vue3)
Process completed with exit code 1.
verify-test-vue-e2e
Process completed with exit code 1.
test-angular-e2e (ng17)
Process completed with exit code 1.
test-angular-e2e (ng16)
Process completed with exit code 1.
test-angular-e2e (ng19)
Process completed with exit code 1.
test-angular-e2e (ng20)
Process completed with exit code 1.
test-angular-e2e (ng18)
Process completed with exit code 1.
verify-test-angular-e2e
Process completed with exit code 1.
test-core-screenshot (15, 20)
Process completed with exit code 1.
[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
4) [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/datetime/test/basic/datetime.e2e.ts:534:9 › datetime: IO fallback - md/ltr › should become ready even if IntersectionObserver never reports visible: src/components/datetime/test/basic/datetime.e2e.ts#L572
3) [Mobile Safari] › src/components/datetime/test/basic/datetime.e2e.ts:534:9 › datetime: IO fallback - md/ltr › should become ready even if IntersectionObserver never reports visible Error: expect(locator).toHaveClass(expected) failed Locator: locator('ion-datetime') Expected pattern: /datetime-ready/ Received string: "ion-color ion-color-primary md datetime-presentation-date-time datetime-size-fixed datetime-grid hydrated" Timeout: 5000ms Call log: - Expect "toHaveClass" with timeout 5000ms - waiting for locator('ion-datetime') 9 × locator resolved to <ion-datetime value="2022-05-03" class="ion-color ion-color-primary md datetime-presentation-date-time datetime-size-fixed datetime-grid hydrated">…</ion-datetime> - unexpected value "ion-color ion-color-primary md datetime-presentation-date-time datetime-size-fixed datetime-grid hydrated" 570 | await page.waitForTimeout(100); 571 | > 572 | await expect(datetime).toHaveClass(/datetime-ready/); | ^ 573 | 574 | const calendarBody = datetime.locator('.calendar-body'); 575 | await expect(calendarBody).toBeVisible(); at /ionic/src/components/datetime/test/basic/datetime.e2e.ts:572:30
[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
2) [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 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
1) [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 Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── 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/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
1) [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 Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── 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/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
1) [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
test-core-screenshot (1, 20)
The strategy configuration was canceled because "test-core-screenshot._15_20" failed
test-core-screenshot (1, 20)
The operation was canceled.
[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
test-core-screenshot (17, 20)
The strategy configuration was canceled because "test-core-screenshot._15_20" failed
test-core-screenshot (17, 20)
Process completed with exit code 12.
test-core-screenshot (17, 20)
The operation was canceled.
test-core-screenshot (2, 20)
The strategy configuration was canceled because "test-core-screenshot._15_20" failed
test-core-screenshot (2, 20)
Process completed with exit code 12.
test-core-screenshot (2, 20)
The operation was canceled.
test-core-screenshot (6, 20)
The strategy configuration was canceled because "test-core-screenshot._15_20" failed
test-core-screenshot (6, 20)
Process completed with exit code 12.
test-core-screenshot (6, 20)
The operation was canceled.
test-core-screenshot (19, 20)
The strategy configuration was canceled because "test-core-screenshot._15_20" failed
test-core-screenshot (19, 20)
Process completed with exit code 12.
test-core-screenshot (19, 20)
The operation was canceled.
test-core-screenshot (5, 20)
The strategy configuration was canceled because "test-core-screenshot._15_20" failed
test-core-screenshot (5, 20)
Process completed with exit code 12.
test-core-screenshot (5, 20)
The operation was canceled.
test-core-screenshot (4, 20)
The strategy configuration was canceled because "test-core-screenshot._15_20" failed
test-core-screenshot (4, 20)
Process completed with exit code 12.
test-core-screenshot (12, 20)
The strategy configuration was canceled because "test-core-screenshot._15_20" failed
test-core-screenshot (4, 20)
The operation was canceled.
test-core-screenshot (12, 20)
Process completed with exit code 12.
test-core-screenshot (12, 20)
The operation was canceled.
test-core-screenshot (18, 20)
The strategy configuration was canceled because "test-core-screenshot._15_20" failed
test-core-screenshot (18, 20)
Process completed with exit code 12.
test-core-screenshot (18, 20)
The operation was canceled.
verify-screenshots
Process completed with exit code 1.
🎭 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 356 passed (3.2m)
🎭 Playwright Run Summary
368 skipped 324 passed (3.5m)
🎭 Playwright Run Summary
2 skipped 597 passed (4.1m)
🎭 Playwright Run Summary
8 skipped 714 passed (4.4m)
🎭 Playwright Run Summary
8 skipped 810 passed (5.4m)
🎭 Playwright Run Summary
5 skipped 713 passed (5.0m)
🎭 Playwright Run Summary
36 skipped 870 passed (6.4m)
🎭 Playwright Run Summary
14 skipped 520 passed (6.5m)
🎭 Playwright Run Summary
5 skipped 697 passed (6.8m)
🎭 Playwright Run Summary
3 skipped 727 passed (9.0m)
🎭 Playwright Run Summary
1 failed [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 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/basic/datetime.e2e.ts:534:9 › datetime: IO fallback - md/ltr › should become ready even if IntersectionObserver never reports visible [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 13 skipped 696 passed (9.3m)
🎭 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.5m)

Artifacts

Produced during runtime
Name Size Digest
ionic-angular
819 KB
sha256:54d127aacb09f8ecd0e25b5d354e99b2f50495b4efbeb153b67a872f0c682f93
ionic-angular-server
8.55 KB
sha256:c4807a85a7c83e5a07b6c838530af7b106c8bec29345a7ba44b8dd41d74c69da
ionic-core
5.19 MB
sha256:7515a3267f5b60206a5c89e82d70c3b30d508498b1f48d5f3bd169c0acafae97
ionic-react
353 KB
sha256:187609ce78907cf6dfb9ea11a109ed9de8749f028f2bae12922fa58a24cc7523
ionic-react-router
27.9 KB
sha256:49be0cf5621e150bad11dea31f3161b3ec8da58d477fe03ddab567912e39f12c
ionic-vue
385 KB
sha256:51696f51bdcb002601b81b9556f348e4ad3dd2676bbb951338372ab7f595ffb6
ionic-vue-router
17.1 KB
sha256:d7ea6ebaa4686c52ab0aa08d64de8dfdf5b7ab4bb2f3821fd9c0978a68b7d629
test-results-1-20
1.34 MB
sha256:be93b9ca3e5efe6844ee0710b398c7aa4304ce8a998934304a5449baaabcbd19
test-results-10-20
449 KB
sha256:0557fe284edd0ebd410be9482765be7281f3126a45acc617a0418ab1f482fa1d
test-results-11-20
624 KB
sha256:b0ce8b2907a88471d8325aa39763a735720c9b9b5185c719f238bb76db6b65a3
test-results-13-20
548 KB
sha256:35f2c7cddc4de241aef7ca386ec5a0cf6531d484836c7f2a81c96b4f4ee71d98
test-results-14-20
460 KB
sha256:190741d2813bcc2f93a9919fd3b64717f88cfa8edb7148923213ffaad9eb330d
test-results-15-20
4.51 MB
sha256:9f78c75a9cc9cbfeda369fe1b27e68a64b59a153c27dcccc29c65f188912000e
test-results-16-20
511 KB
sha256:30b4ad2755643a471baf51c59b1469b38d260205fb7ac35bc73c5e4390818306
test-results-20-20
371 KB
sha256:0972ca011f74b60fb992792e35c15cf06e19130a93b1ede6e56f01beec44370f
test-results-3-20
503 KB
sha256:16e3218e69c36eb8193b3a2e416ffd4226cd1da585cea1b6b149fb0353cc3455
test-results-7-20
1.24 MB
sha256:491cafa2bdae49e4e34f9dd24da7e9c631808325556be3a3d077f67104648cc4
test-results-8-20
482 KB
sha256:ef8fca601661830c4e99cd0107e4a27791066e51d8e24dad94428b04a0bda822
test-results-9-20
574 KB
sha256:55cf1b33aa097b16d53f182ac776ab28fcf48b9f30ede2239bf9908feac255d7