Skip to content

feat(textarea): convert to a form associated shadow component #17436

feat(textarea): convert to a form associated shadow component

feat(textarea): convert to a form associated shadow component #17436

Triggered via pull request November 17, 2025 20:18
Status Failure
Total duration 7m 49s
Artifacts 14

build.yml

on: pull_request
build-react
50s
build-react
build-vue
43s
build-vue
Matrix: test-core-screenshot
build-angular
59s
build-angular
build-angular-server
36s
build-angular-server
test-core-clean-build
12s
test-core-clean-build
test-core-lint
54s
test-core-lint
test-core-spec
43s
test-core-spec
build-react-router
23s
build-react-router
build-vue-router
41s
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
2s
verify-test-react-e2e
verify-test-react-router-e2e
3s
verify-test-react-router-e2e
verify-test-vue-e2e
3s
verify-test-vue-e2e
Fit to window
Zoom out
Zoom in

Annotations

61 errors and 6 notices
test-react-e2e (react18)
Process completed with exit code 2.
test-react-e2e (react18)
Type '{ value: string; onIonInput: (e: IonInputOtpCustomEvent<InputOtpInputEventDetail>) => void; onIonBlur: () => void; className: string; required: true; }' is not assignable to type 'IntrinsicAttributes & IonInputOtp & Omit<HTMLAttributes<HTMLIonInputOtpElement>, "style"> & StyleReactProps & RefAttributes<...>'.
test-react-e2e (react19)
Process completed with exit code 2.
test-react-e2e (react19)
Type '{ value: string; onIonInput: (e: IonInputOtpCustomEvent<InputOtpInputEventDetail>) => void; onIonBlur: () => void; className: string; required: true; }' is not assignable to type 'IntrinsicAttributes & IonInputOtp & Omit<HTMLAttributes<HTMLIonInputOtpElement>, "style"> & StyleReactProps & RefAttributes<...>'.
test-react-e2e (react17)
Process completed with exit code 1.
verify-test-react-e2e
Process completed with exit code 1.
[Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:134:9 › form data - ios/ltr › form control values set to null: src/components/item/test/inputs/item.e2e.ts#L148
4) [Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:134:9 › form data - ios/ltr › form control values set to null Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 0 @@ -2,8 +2,7 @@ "checkbox": "", "datetime": "", "input": "", "range": "0", "select": "", - "textarea": "", "toggle": "", } 146 | await formData.next(); 147 | > 148 | expect(formData).toHaveReceivedEventDetail({ | ^ 149 | input: '', 150 | textarea: '', 151 | toggle: '', at /ionic/src/components/item/test/inputs/item.e2e.ts:148:24
[Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:109:9 › form data - ios/ltr › form control values set to be empty: src/components/item/test/inputs/item.e2e.ts#L123
3) [Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:109:9 › form data - ios/ltr › form control values set to be empty Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 0 @@ -2,8 +2,7 @@ "checkbox": "", "datetime": "", "input": "", "range": "0", "select": "", - "textarea": "", "toggle": "", } 121 | await formData.next(); 122 | > 123 | expect(formData).toHaveReceivedEventDetail({ | ^ 124 | input: '', 125 | textarea: '', 126 | toggle: '', at /ionic/src/components/item/test/inputs/item.e2e.ts:123:24
[Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:109:9 › form data - ios/ltr › form control values set to be empty: src/components/item/test/inputs/item.e2e.ts#L123
3) [Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:109:9 › form data - ios/ltr › form control values set to be empty Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 0 @@ -2,8 +2,7 @@ "checkbox": "", "datetime": "", "input": "", "range": "0", "select": "", - "textarea": "", "toggle": "", } 121 | await formData.next(); 122 | > 123 | expect(formData).toHaveReceivedEventDetail({ | ^ 124 | input: '', 125 | textarea: '', 126 | toggle: '', at /ionic/src/components/item/test/inputs/item.e2e.ts:123:24
[Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:109:9 › form data - ios/ltr › form control values set to be empty: src/components/item/test/inputs/item.e2e.ts#L123
3) [Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:109:9 › form data - ios/ltr › form control values set to be empty Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 0 @@ -2,8 +2,7 @@ "checkbox": "", "datetime": "", "input": "", "range": "0", "select": "", - "textarea": "", "toggle": "", } 121 | await formData.next(); 122 | > 123 | expect(formData).toHaveReceivedEventDetail({ | ^ 124 | input: '', 125 | textarea: '', 126 | toggle: '', at /ionic/src/components/item/test/inputs/item.e2e.ts:123:24
[Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:84:9 › form data - ios/ltr › form controls have some value: src/components/item/test/inputs/item.e2e.ts#L98
2) [Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:84:9 › form data - ios/ltr › form controls have some value Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 0 @@ -2,8 +2,7 @@ "checkbox": "on", "datetime": "2022-04-01T10:00", "input": "Some value", "range": "20", "select": "2", - "textarea": "Some value", "toggle": "on", } 96 | await formData.next(); 97 | > 98 | expect(formData).toHaveReceivedEventDetail({ | ^ 99 | input: 'Some value', 100 | textarea: 'Some value', 101 | toggle: 'on', at /ionic/src/components/item/test/inputs/item.e2e.ts:98:24
[Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:84:9 › form data - ios/ltr › form controls have some value: src/components/item/test/inputs/item.e2e.ts#L98
2) [Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:84:9 › form data - ios/ltr › form controls have some value Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 0 @@ -2,8 +2,7 @@ "checkbox": "on", "datetime": "2022-04-01T10:00", "input": "Some value", "range": "20", "select": "2", - "textarea": "Some value", "toggle": "on", } 96 | await formData.next(); 97 | > 98 | expect(formData).toHaveReceivedEventDetail({ | ^ 99 | input: 'Some value', 100 | textarea: 'Some value', 101 | toggle: 'on', at /ionic/src/components/item/test/inputs/item.e2e.ts:98:24
[Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:84:9 › form data - ios/ltr › form controls have some value: src/components/item/test/inputs/item.e2e.ts#L98
2) [Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:84:9 › form data - ios/ltr › form controls have some value Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 0 @@ -2,8 +2,7 @@ "checkbox": "on", "datetime": "2022-04-01T10:00", "input": "Some value", "range": "20", "select": "2", - "textarea": "Some value", "toggle": "on", } 96 | await formData.next(); 97 | > 98 | expect(formData).toHaveReceivedEventDetail({ | ^ 99 | input: 'Some value', 100 | textarea: 'Some value', 101 | toggle: 'on', at /ionic/src/components/item/test/inputs/item.e2e.ts:98:24
[Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:68:9 › form data - ios/ltr › initial form data should be empty: src/components/item/test/inputs/item.e2e.ts#L73
1) [Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:68:9 › form data - ios/ltr › initial form data should be empty Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 0 @@ -2,8 +2,7 @@ "checkbox": "", "datetime": "2022-04-01T10:00", "input": "", "range": "10", "select": "", - "textarea": "", "toggle": "", } 71 | await formData.next(); 72 | > 73 | expect(formData).toHaveReceivedEventDetail({ | ^ 74 | input: '', 75 | textarea: '', 76 | toggle: '', at /ionic/src/components/item/test/inputs/item.e2e.ts:73:24
[Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:68:9 › form data - ios/ltr › initial form data should be empty: src/components/item/test/inputs/item.e2e.ts#L73
1) [Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:68:9 › form data - ios/ltr › initial form data should be empty Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 0 @@ -2,8 +2,7 @@ "checkbox": "", "datetime": "2022-04-01T10:00", "input": "", "range": "10", "select": "", - "textarea": "", "toggle": "", } 71 | await formData.next(); 72 | > 73 | expect(formData).toHaveReceivedEventDetail({ | ^ 74 | input: '', 75 | textarea: '', 76 | toggle: '', at /ionic/src/components/item/test/inputs/item.e2e.ts:73:24
[Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:68:9 › form data - ios/ltr › initial form data should be empty: src/components/item/test/inputs/item.e2e.ts#L73
1) [Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:68:9 › form data - ios/ltr › initial form data should be empty Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 0 @@ -2,8 +2,7 @@ "checkbox": "", "datetime": "2022-04-01T10:00", "input": "", "range": "10", "select": "", - "textarea": "", "toggle": "", } 71 | await formData.next(); 72 | > 73 | expect(formData).toHaveReceivedEventDetail({ | ^ 74 | input: '', 75 | textarea: '', 76 | toggle: '', at /ionic/src/components/item/test/inputs/item.e2e.ts:73:24
test-core-screenshot (13, 20)
The strategy configuration was canceled because "test-core-screenshot._10_20" failed
test-core-screenshot (13, 20)
Process completed with exit code 12.
test-core-screenshot (13, 20)
The operation was canceled.
test-core-screenshot (1, 20)
The strategy configuration was canceled because "test-core-screenshot._10_20" failed
test-core-screenshot (1, 20)
Process completed with exit code 12.
test-core-screenshot (1, 20)
The operation was canceled.
test-core-screenshot (11, 20)
The strategy configuration was canceled because "test-core-screenshot._10_20" failed
test-core-screenshot (11, 20)
The operation was canceled.
[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
test-core-screenshot (17, 20)
The strategy configuration was canceled because "test-core-screenshot._10_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 (6, 20)
The strategy configuration was canceled because "test-core-screenshot._10_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 (18, 20)
The strategy configuration was canceled because "test-core-screenshot._10_20" failed
test-core-screenshot (18, 20)
Process completed with exit code 12.
test-core-screenshot (18, 20)
The operation was canceled.
test-core-screenshot (19, 20)
The strategy configuration was canceled because "test-core-screenshot._10_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 (15, 20)
The strategy configuration was canceled because "test-core-screenshot._10_20" failed
test-core-screenshot (15, 20)
Process completed with exit code 12.
test-core-screenshot (15, 20)
The operation was canceled.
test-core-screenshot (2, 20)
The strategy configuration was canceled because "test-core-screenshot._10_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 (14, 20)
The strategy configuration was canceled because "test-core-screenshot._10_20" failed
test-core-screenshot (14, 20)
Process completed with exit code 12.
test-core-screenshot (14, 20)
The operation was canceled.
test-core-screenshot (4, 20)
The strategy configuration was canceled because "test-core-screenshot._10_20" failed
test-core-screenshot (4, 20)
Process completed with exit code 12.
test-core-screenshot (4, 20)
The operation was canceled.
test-core-screenshot (12, 20)
The strategy configuration was canceled because "test-core-screenshot._10_20" failed
test-core-screenshot (12, 20)
The operation was canceled.
test-core-screenshot (3, 20)
The strategy configuration was canceled because "test-core-screenshot._10_20" failed
test-core-screenshot (5, 20)
The strategy configuration was canceled because "test-core-screenshot._10_20" failed
test-core-screenshot (3, 20)
Process completed with exit code 12.
test-core-screenshot (5, 20)
Process completed with exit code 12.
test-core-screenshot (3, 20)
The operation was canceled.
test-core-screenshot (5, 20)
The operation was canceled.
test-core-screenshot (16, 20)
The strategy configuration was canceled because "test-core-screenshot._10_20" failed
test-core-screenshot (16, 20)
Process completed with exit code 12.
test-core-screenshot (16, 20)
The operation was canceled.
verify-screenshots
Process completed with exit code 1.
🎭 Playwright Run Summary
360 skipped 276 passed (2.3m)
🎭 Playwright Run Summary
368 skipped 303 passed (3.4m)
🎭 Playwright Run Summary
8 skipped 680 passed (3.8m)
🎭 Playwright Run Summary
8 skipped 660 passed (4.3m)
🎭 Playwright Run Summary
9 failed [Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:68:9 › form data - ios/ltr › initial form data should be empty [Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:84:9 › form data - ios/ltr › form controls have some value [Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:109:9 › form data - ios/ltr › form control values set to be empty [Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:134:9 › form data - ios/ltr › form control values set to null [Mobile Chrome] › src/components/item/test/inputs/item.e2e.ts:159:9 › form data - ios/ltr › form control values set to undefined [Mobile Chrome] › src/components/item/test/slotted-inputs/item.e2e.ts:6:9 › item: slotted inputs - ios/ltr › should not have visual regressions [Mobile Chrome] › src/components/item/test/slotted-inputs/item.e2e.ts:6:9 › item: slotted inputs - ios/rtl › should not have visual regressions [Mobile Chrome] › src/components/item/test/slotted-inputs/item.e2e.ts:6:9 › item: slotted inputs - md/ltr › should not have visual regressions [Mobile Chrome] › src/components/item/test/slotted-inputs/item.e2e.ts:6:9 › item: slotted inputs - md/rtl › should not have visual regressions 2 skipped 660 passed (4.1m)
🎭 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 675 passed (4.7m)

Artifacts

Produced during runtime
Name Size Digest
ionic-angular
866 KB
sha256:a132c62c4d832f06c2293275c0fdeef150021f648a86ef09cb2c6170041de857
ionic-angular-server
8.55 KB
sha256:c67663b7d9c94db86e6633712e4655062082d0693f8a1d651895eaeb009628c2
ionic-core
5.17 MB
sha256:004a6023f2abdd7503fcb064f79371f6d7cc54bc73435b9dff82dc38b6203a43
ionic-react
404 KB
sha256:ce7c6eb8eac47c4a04854400a3e035d83317747b7662fb5a713d34ca3d2e0966
ionic-react-router
27.9 KB
sha256:a688a2289dabe88bb8557fb804c0152888b1aba76c47900ccca392627913ffd3
ionic-vue
435 KB
sha256:d4c43d9a85cc8bebf78f1279e4b937c8b5390d5e6747f6ebfa712df8d7a02c94
ionic-vue-router
17 KB
sha256:8a21f3c5f14b1a8d2398a9ea3fa342fe81e9a80cb6b0a7fd6030ec621fc4a911
test-results-10-20
13.7 MB
sha256:44164afdba95ce2cb79aa96e87f2b04ddddee18494601ea6576cd5ae842465b2
test-results-11-20
1.31 MB
sha256:d654443797d2f1ed8bc9e497e60c3dafd37d3d5bc6cf64e146bb41f949943cc2
test-results-12-20
19.2 MB
sha256:d2e5ebc07d6bd62b85971f60e66b828b27d3d29e31cc23af28375339c86cb716
test-results-20-20
342 KB
sha256:0b84eddc99ec218f86dd3aa76da1908c111da17c56e976d4a8c4370e01a00d4e
test-results-7-20
363 KB
sha256:cd320be6fffe9e7215c03c7b7fbf8b20babaca4f0304260b8bb0996f0a511cfb
test-results-8-20
449 KB
sha256:8400c0984c2ebd10f43e876203039f29c3b0c976e7c27a4f5e030814e2af3b70
test-results-9-20
486 KB
sha256:185f2921aee9c55b7fafa30dd156a986f888f745b0c79f054fb99387c8db4ea2