diff --git a/packages/vee-validate/tests/Field.spec.ts b/packages/vee-validate/tests/Field.spec.ts index 3e255c1a0..745779ffe 100644 --- a/packages/vee-validate/tests/Field.spec.ts +++ b/packages/vee-validate/tests/Field.spec.ts @@ -1125,4 +1125,38 @@ describe('', () => { expect(error.textContent).toBe(''); expect(input.value).toBe(''); }); + + // #3440 + test('should preserve select input options value type', async () => { + const value = ref(); + + const wrapper = mountWithHoc({ + setup() { + return { + value, + }; + }, + template: ` + + + + + `, + }); + + await flushPromises(); + const select = document.querySelector('select') as HTMLSelectElement; + const optTrue = document.querySelector('#true') as HTMLOptionElement; + const optFalse = document.querySelector('#false') as HTMLOptionElement; + + optTrue.selected = true; + dispatchEvent(select, 'change'); + await flushPromises(); + expect(value.value).toBe(true); + + optFalse.selected = true; + dispatchEvent(select, 'change'); + await flushPromises(); + expect(value.value).toBe(false); + }); });