@@ -106,11 +106,10 @@ class UnitTestElement implements TestElement {
106
106
107
107
async clear ( ) : Promise < void > {
108
108
await this . _stabilize ( ) ;
109
- if ( ! ( this . element instanceof HTMLInputElement ||
110
- this . element instanceof HTMLTextAreaElement ) ) {
109
+ if ( ! this . _isTextInput ( this . element ) ) {
111
110
throw Error ( 'Attempting to clear an invalid element' ) ;
112
111
}
113
- triggerFocus ( this . element ) ;
112
+ triggerFocus ( this . element as HTMLElement ) ;
114
113
this . element . value = '' ;
115
114
dispatchFakeEvent ( this . element , 'input' ) ;
116
115
await this . _stabilize ( ) ;
@@ -148,9 +147,13 @@ class UnitTestElement implements TestElement {
148
147
const keyCode = key . charCodeAt ( 0 ) ;
149
148
dispatchKeyboardEvent ( this . element , 'keydown' , keyCode ) ;
150
149
dispatchKeyboardEvent ( this . element , 'keypress' , keyCode ) ;
151
- ( this . element as HTMLInputElement ) . value += key ;
150
+ if ( this . _isTextInput ( this . element ) ) {
151
+ this . element . value += key ;
152
+ }
152
153
dispatchKeyboardEvent ( this . element , 'keyup' , keyCode ) ;
153
- dispatchFakeEvent ( this . element , 'input' ) ;
154
+ if ( this . _isTextInput ( this . element ) ) {
155
+ dispatchFakeEvent ( this . element , 'input' ) ;
156
+ }
154
157
}
155
158
await this . _stabilize ( ) ;
156
159
}
@@ -171,6 +174,11 @@ class UnitTestElement implements TestElement {
171
174
}
172
175
return value ;
173
176
}
177
+
178
+ private _isTextInput ( element : Element ) : element is HTMLInputElement | HTMLTextAreaElement {
179
+ return element . nodeName . toLowerCase ( ) === 'input' ||
180
+ element . nodeName . toLowerCase ( ) === 'textarea' ;
181
+ }
174
182
}
175
183
176
184
0 commit comments