diff --git a/src/__tests__/react/keyboard.tsx b/src/__tests__/react/keyboard.tsx new file mode 100644 index 00000000..29f8df22 --- /dev/null +++ b/src/__tests__/react/keyboard.tsx @@ -0,0 +1,21 @@ +import React, { useState } from 'react' +import { render, screen } from '@testing-library/react' +import userEvent from 'index' + +test('maintain cursor position on controlled input', () => { + function Input({initialValue}: {initialValue: string}) { + const [val, setVal] = useState(initialValue) + + return setVal(e.target.value)}/> + } + + render() + + ;screen.getByRole('textbox').focus() + ;(screen.getByRole('textbox') as HTMLInputElement).setSelectionRange(1,1) + userEvent.keyboard('b') + + expect(screen.getByRole('textbox')).toHaveValue('abcd') + expect(screen.getByRole('textbox')).toHaveProperty('selectionStart', 2) + expect(screen.getByRole('textbox')).toHaveProperty('selectionEnd', 2) +})