web 3d图形渲染器
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

737 lines
53 KiB

  1. <div align="center">
  2. <h1>@testing-library/user-event</h1>
  3. <a href="https://www.joypixels.com/profiles/emoji/1f415">
  4. <img
  5. height="80"
  6. width="80"
  7. alt="dog"
  8. src="https://raw.githubusercontent.com/testing-library/user-event/master/other/dog.png"
  9. />
  10. </a>
  11. <p>Fire events the same way the user does</p>
  12. </div>
  13. ---
  14. <!-- prettier-ignore-start -->
  15. [![Build Status][build-badge]][build]
  16. [![Code Coverage][coverage-badge]][coverage]
  17. [![version][version-badge]][package]
  18. [![downloads][downloads-badge]][npmtrends]
  19. [![MIT License][license-badge]][license]
  20. [![All Contributors][all-contributors-badge]](#contributors)
  21. [![PRs Welcome][prs-badge]][prs]
  22. [![Code of Conduct][coc-badge]][coc]
  23. <!-- prettier-ignore-end -->
  24. ## The problem
  25. From
  26. [testing-library/dom-testing-library#107](https://github.com/testing-library/dom-testing-library/issues/107):
  27. > [...] it is becoming apparent the need to express user actions on a web page
  28. > using a higher-level abstraction than `fireEvent`
  29. ## The solution
  30. `user-event` tries to simulate the real events that would happen in the browser
  31. as the user interacts with it. For example `userEvent.click(checkbox)` would
  32. change the state of the checkbox.
  33. **The library is still a work in progress and any help is appreciated.**
  34. ## Table of Contents
  35. <!-- START doctoc generated TOC please keep comment here to allow auto update -->
  36. <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
  37. - [Installation](#installation)
  38. - [API](#api)
  39. - [`click(element, eventInit, options)`](#clickelement-eventinit-options)
  40. - [`dblClick(element, eventInit, options)`](#dblclickelement-eventinit-options)
  41. - [`type(element, text, [options])`](#typeelement-text-options)
  42. - [`upload(element, file, [{ clickInit, changeInit }])`](#uploadelement-file--clickinit-changeinit-)
  43. - [`clear(element)`](#clearelement)
  44. - [`selectOptions(element, values)`](#selectoptionselement-values)
  45. - [`deselectOptions(element, values)`](#deselectoptionselement-values)
  46. - [`tab({shift, focusTrap})`](#tabshift-focustrap)
  47. - [`hover(element)`](#hoverelement)
  48. - [`unhover(element)`](#unhoverelement)
  49. - [`paste(element, text, eventInit, options)`](#pasteelement-text-eventinit-options)
  50. - [`specialChars`](#specialchars)
  51. - [Issues](#issues)
  52. - [🐛 Bugs](#-bugs)
  53. - [💡 Feature Requests](#-feature-requests)
  54. - [Contributors ✨](#contributors-)
  55. - [LICENSE](#license)
  56. <!-- END doctoc generated TOC please keep comment here to allow auto update -->
  57. ## Installation
  58. With NPM:
  59. ```sh
  60. npm install @testing-library/user-event @testing-library/dom --save-dev
  61. ```
  62. With Yarn:
  63. ```sh
  64. yarn add @testing-library/user-event @testing-library/dom --dev
  65. ```
  66. Now simply import it in your tests:
  67. ```js
  68. import userEvent from '@testing-library/user-event'
  69. // or
  70. const {default: userEvent} = require('@testing-library/user-event')
  71. ```
  72. ## API
  73. Note: All userEvent methods are synchronous with one exception: when `delay`
  74. with `userEvent.type` as described below). We also discourage using `userEvent`
  75. inside `before/after` blocks at all, for important reasons described in
  76. ["Avoid Nesting When You're Testing"](https://kentcdodds.com/blog/avoid-nesting-when-youre-testing).
  77. ### `click(element, eventInit, options)`
  78. Clicks `element`, depending on what `element` is it can have different side
  79. effects.
  80. ```jsx
  81. import React from 'react'
  82. import {render, screen} from '@testing-library/react'
  83. import userEvent from '@testing-library/user-event'
  84. test('click', () => {
  85. render(
  86. <div>
  87. <label htmlFor="checkbox">Check</label>
  88. <input id="checkbox" type="checkbox" />
  89. </div>,
  90. )
  91. userEvent.click(screen.getByText('Check'))
  92. expect(screen.getByLabelText('Check')).toBeChecked()
  93. })
  94. ```
  95. You can also ctrlClick / shiftClick etc with
  96. ```js
  97. userEvent.click(elem, {ctrlKey: true, shiftKey: true})
  98. ```
  99. See the
  100. [`MouseEvent`](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/MouseEvent)
  101. constructor documentation for more options.
  102. Note that `click` will trigger hover events before clicking. To disable this,
  103. set the `skipHover` option to `true`.
  104. ### `dblClick(element, eventInit, options)`
  105. Clicks `element` twice, depending on what `element` is it can have different
  106. side effects.
  107. ```jsx
  108. import React from 'react'
  109. import {render, screen} from '@testing-library/react'
  110. import userEvent from '@testing-library/user-event'
  111. test('double click', () => {
  112. const onChange = jest.fn()
  113. render(<input type="checkbox" onChange={onChange} />)
  114. const checkbox = screen.getByRole('checkbox')
  115. userEvent.dblClick(checkbox)
  116. expect(onChange).toHaveBeenCalledTimes(2)
  117. expect(checkbox).not.toBeChecked()
  118. })
  119. ```
  120. ### `type(element, text, [options])`
  121. Writes `text` inside an `<input>` or a `<textarea>`.
  122. ```jsx
  123. import React from 'react'
  124. import {render, screen} from '@testing-library/react'
  125. import userEvent from '@testing-library/user-event'
  126. test('type', () => {
  127. render(<textarea />)
  128. userEvent.type(screen.getByRole('textbox'), 'Hello,{enter}World!')
  129. expect(screen.getByRole('textbox')).toHaveValue('Hello,\nWorld!')
  130. })
  131. ```
  132. `options.delay` is the number of milliseconds that pass between two characters
  133. are typed. By default it's 0. You can use this option if your component has a
  134. different behavior for fast or slow users. If you do this, you need to make sure
  135. to `await`!
  136. > To be clear, `userEvent.type` _always_ returns a promise, but you _only_ need
  137. > to `await` the promise it returns if you're using the `delay` option.
  138. > Otherwise everything runs synchronously and you can ignore the promise.
  139. `type` will click the element before typing. To disable this, set the
  140. `skipClick` option to `true`.
  141. #### Special characters
  142. The following special character strings are supported:
  143. | Text string | Key | Modifier | Notes |
  144. | -------------- | ---------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  145. | `{enter}` | Enter | N/A | Will insert a newline character (`<textarea />` only). |
  146. | `{space}` | `' '` | N/A | |
  147. | `{esc}` | Escape | N/A | |
  148. | `{backspace}` | Backspace | N/A | Will delete the previous character (or the characters within the `selectedRange`, see example below). |
  149. | `{del}` | Delete | N/A | Will delete the next character (or the characters within the `selectedRange`, see example below) |
  150. | `{selectall}` | N/A | N/A | Selects all the text of the element. Note that this will only work for elements that support selection ranges (so, not `email`, `password`, `number`, among others) |
  151. | `{arrowleft}` | ArrowLeft | N/A | |
  152. | `{arrowright}` | ArrowRight | N/A | |
  153. | `{arrowup}` | ArrowUp | N/A | |
  154. | `{arrowdown}` | ArrowDown | N/A | |
  155. | `{home}` | Home | N/A | |
  156. | `{end}` | End | N/A | |
  157. | `{shift}` | Shift | `shiftKey` | Does **not** capitalize following characters. |
  158. | `{ctrl}` | Control | `ctrlKey` | |
  159. | `{alt}` | Alt | `altKey` | |
  160. | `{meta}` | OS | `metaKey` | |
  161. | `{capslock}` | CapsLock | `modifierCapsLock` | Fires both keydown and keyup when used (simulates a user clicking their "Caps Lock" button to enable caps lock). |
  162. > **A note about modifiers:** Modifier keys (`{shift}`, `{ctrl}`, `{alt}`,
  163. > `{meta}`) will activate their corresponding event modifiers for the duration
  164. > of type command or until they are closed (via `{/shift}`, `{/ctrl}`, etc.). If
  165. > they are not closed explicitly, then events will be fired to close them
  166. > automatically (to disable this, set the `skipAutoClose` option to `true`).
  167. <!-- space out these notes -->
  168. > We take the same
  169. > [stance as Cypress](https://docs.cypress.io/api/commands/type.html#Modifiers)
  170. > in that we do not simulate the behavior that happens with modifier key
  171. > combinations as different operating systems function differently in this
  172. > regard.
  173. An example of an usage with a selection range:
  174. ```jsx
  175. import React from 'react'
  176. import {render, screen} from '@testing-library/react'
  177. import userEvent from '@testing-library/user-event'
  178. test('delete characters within the selectedRange', () => {
  179. render(
  180. <div>
  181. <label htmlFor="my-input">Example:</label>
  182. <input id="my-input" type="text" value="This is a bad example" />
  183. </div>,
  184. )
  185. const input = screen.getByLabelText(/example/i)
  186. input.setSelectionRange(10, 13)
  187. userEvent.type(input, '{backspace}good')
  188. expect(input).toHaveValue('This is a good example')
  189. })
  190. ```
  191. #### <input type="time" /> support
  192. The following is an example of usage of this library with
  193. `<input type="time" />`
  194. ```jsx
  195. import React from 'react
  196. import {render, screen} from '@testing-library/react'
  197. import userEvent from '@testing-library/user-event'
  198. test('types into the input', () => {
  199. render(
  200. <>
  201. <label for="time">Enter a time</label>
  202. <input
  203. type="time"
  204. id="time"
  205. />
  206. </>
  207. )
  208. const input = screen.getByLabelText(/enter a time/i)
  209. userEvent.type(input, '13:58')
  210. expect(input.value).toBe('13:58')
  211. })
  212. ```
  213. ### `upload(element, file, [{ clickInit, changeInit }], [options])`
  214. Uploads file to an `<input>`. For uploading multiple files use `<input>` with
  215. `multiple` attribute and the second `upload` argument must be array then. Also
  216. it's possible to initialize click or change event with using third argument.
  217. If `options.applyAccept` is set to `true` and there is an `accept` attribute on
  218. the element, files that don't match will be discarded.
  219. ```jsx
  220. import React from 'react'
  221. import {render, screen} from '@testing-library/react'
  222. import userEvent from '@testing-library/user-event'
  223. test('upload file', () => {
  224. const file = new File(['hello'], 'hello.png', {type: 'image/png'})
  225. render(
  226. <div>
  227. <label htmlFor="file-uploader">Upload file:</label>
  228. <input id="file-uploader" type="file" />
  229. </div>,
  230. )
  231. const input = screen.getByLabelText(/upload file/i)
  232. userEvent.upload(input, file)
  233. expect(input.files[0]).toStrictEqual(file)
  234. expect(input.files.item(0)).toStrictEqual(file)
  235. expect(input.files).toHaveLength(1)
  236. })
  237. test('upload multiple files', () => {
  238. const files = [
  239. new File(['hello'], 'hello.png', {type: 'image/png'}),
  240. new File(['there'], 'there.png', {type: 'image/png'}),
  241. ]
  242. render(
  243. <div>
  244. <label htmlFor="file-uploader">Upload file:</label>
  245. <input id="file-uploader" type="file" multiple />
  246. </div>,
  247. )
  248. const input = screen.getByLabelText(/upload file/i)
  249. userEvent.upload(input, files)
  250. expect(input.files).toHaveLength(2)
  251. expect(input.files[0]).toStrictEqual(files[0])
  252. expect(input.files[1]).toStrictEqual(files[1])
  253. })
  254. ```
  255. ### `clear(element)`
  256. Selects the text inside an `<input>` or `<textarea>` and deletes it.
  257. ```jsx
  258. import React from 'react'
  259. import {render, screen} from '@testing-library/react'
  260. import userEvent from '@testing-library/user-event'
  261. test('clear', () => {
  262. render(<textarea value="Hello, World!" />)
  263. userEvent.clear(screen.getByRole('textbox', 'email'))
  264. expect(screen.getByRole('textbox', 'email')).toHaveAttribute('value', '')
  265. })
  266. ```
  267. ### `selectOptions(element, values)`
  268. Selects the specified option(s) of a `<select>` or a `<select multiple>`
  269. element.
  270. ```jsx
  271. import React from 'react'
  272. import {render, screen} from '@testing-library/react'
  273. import userEvent from '@testing-library/user-event'
  274. test('selectOptions', () => {
  275. render(
  276. <select multiple data-testid="select-multiple">
  277. <option data-testid="val1" value="1">
  278. A
  279. </option>
  280. <option data-testid="val2" value="2">
  281. B
  282. </option>
  283. <option data-testid="val3" value="3">
  284. C
  285. </option>
  286. </select>,
  287. )
  288. userEvent.selectOptions(screen.getByTestId('select-multiple'), ['1', '3'])
  289. expect(screen.getByTestId('val1').selected).toBe(true)
  290. expect(screen.getByTestId('val2').selected).toBe(false)
  291. expect(screen.getByTestId('val3').selected).toBe(true)
  292. })
  293. ```
  294. The `values` parameter can be either an array of values or a singular scalar
  295. value.
  296. It also accepts option nodes:
  297. ```js
  298. userEvent.selectOptions(screen.getByTestId('select-multiple'), [
  299. screen.getByText('A'),
  300. screen.getByText('B'),
  301. ])
  302. ```
  303. ### `deselectOptions(element, values)`
  304. Remove the selection for the specified option(s) of a `<select multiple>`
  305. element.
  306. ```jsx
  307. import * as React from 'react'
  308. import {render, screen} from '@testing-library/react'
  309. import userEvent from '@testing-library/user-event'
  310. test('deselectOptions', () => {
  311. render(
  312. <select multiple>
  313. <option value="1">A</option>
  314. <option value="2">B</option>
  315. <option value="3">C</option>
  316. </select>,
  317. )
  318. userEvent.selectOptions(screen.getByRole('listbox'), '2')
  319. expect(screen.getByText('B').selected).toBe(true)
  320. userEvent.deselectOptions(screen.getByRole('listbox'), '2')
  321. expect(screen.getByText('B').selected).toBe(false)
  322. // can do multiple at once as well:
  323. // userEvent.deselectOptions(screen.getByRole('listbox'), ['1', '2'])
  324. })
  325. ```
  326. The `values` parameter can be either an array of values or a singular scalar
  327. value.
  328. ### `tab({shift, focusTrap})`
  329. Fires a tab event changing the document.activeElement in the same way the
  330. browser does.
  331. Options:
  332. - `shift` (default `false`) can be true or false to invert tab direction.
  333. - `focusTrap` (default `document`) a container element to restrict the tabbing
  334. within.
  335. > **A note about tab**:
  336. > [jsdom does not support tabbing](https://github.com/jsdom/jsdom/issues/2102),
  337. > so this feature is a way to enable tests to verify tabbing from the end user's
  338. > perspective. However, this limitation in jsdom will mean that components like
  339. > [focus-trap-react](https://github.com/davidtheclark/focus-trap-react) will not
  340. > work with `userEvent.tab()` or jsdom. For that reason, the `focusTrap` option
  341. > is available to let you ensure your user is restricted within a focus-trap.
  342. ```jsx
  343. import React from 'react'
  344. import {render, screen} from '@testing-library/react'
  345. import '@testing-library/jest-dom/extend-expect'
  346. import userEvent from '@testing-library/user-event'
  347. it('should cycle elements in document tab order', () => {
  348. render(
  349. <div>
  350. <input data-testid="element" type="checkbox" />
  351. <input data-testid="element" type="radio" />
  352. <input data-testid="element" type="number" />
  353. </div>,
  354. )
  355. const [checkbox, radio, number] = screen.getAllByTestId('element')
  356. expect(document.body).toHaveFocus()
  357. userEvent.tab()
  358. expect(checkbox).toHaveFocus()
  359. userEvent.tab()
  360. expect(radio).toHaveFocus()
  361. userEvent.tab()
  362. expect(number).toHaveFocus()
  363. userEvent.tab()
  364. // cycle goes back to the body element
  365. expect(document.body).toHaveFocus()
  366. userEvent.tab()
  367. expect(checkbox).toHaveFocus()
  368. })
  369. ```
  370. ### `hover(element)`
  371. Hovers over `element`.
  372. ```jsx
  373. import React from 'react'
  374. import {render, screen} from '@testing-library/react'
  375. import userEvent from '@testing-library/user-event'
  376. import Tooltip from '../tooltip'
  377. test('hover', () => {
  378. const messageText = 'Hello'
  379. render(
  380. <Tooltip messageText={messageText}>
  381. <TrashIcon aria-label="Delete" />
  382. </Tooltip>,
  383. )
  384. userEvent.hover(screen.getByLabelText(/delete/i))
  385. expect(screen.getByText(messageText)).toBeInTheDocument()
  386. userEvent.unhover(screen.getByLabelText(/delete/i))
  387. expect(screen.queryByText(messageText)).not.toBeInTheDocument()
  388. })
  389. ```
  390. ### `unhover(element)`
  391. Unhovers out of `element`.
  392. > See [above](#hoverelement) for an example
  393. ### `paste(element, text, eventInit, options)`
  394. Allows you to simulate the user pasting some text into an input.
  395. ```javascript
  396. test('should paste text in input', () => {
  397. render(<MyInput />)
  398. const text = 'Hello, world!'
  399. userEvent.paste(getByRole('textbox', {name: /paste your greeting/i}), text)
  400. expect(element).toHaveValue(text)
  401. })
  402. ```
  403. You can use the `eventInit` if what you're pasting should have `clipboardData`
  404. (like `files`).
  405. ### `specialChars`
  406. A handful set of special characters used in [type](#typeelement-text-options)
  407. method.
  408. | Key | Character |
  409. | ---------- | -------------- |
  410. | arrowLeft | `{arrowleft}` |
  411. | arrowRight | `{arrowright}` |
  412. | arrowDown | `{arrowdown}` |
  413. | arrowUp | `{arrowup}` |
  414. | home | `{home}` |
  415. | end | `{end}` |
  416. | enter | `{enter}` |
  417. | escape | `{esc}` |
  418. | delete | `{del}` |
  419. | backspace | `{backspace}` |
  420. | selectAll | `{selectall}` |
  421. | space | `{space}` |
  422. | whitespace | `' '` |
  423. Usage example:
  424. ```jsx
  425. import React from 'react'
  426. import {render, screen} from '@testing-library/react'
  427. import userEvent, {specialChars} from '@testing-library/user-event'
  428. test('delete characters within the selectedRange', () => {
  429. render(
  430. <div>
  431. <label htmlFor="my-input">Example:</label>
  432. <input id="my-input" type="text" value="This is a bad example" />
  433. </div>,
  434. )
  435. const input = screen.getByLabelText(/example/i)
  436. input.setSelectionRange(10, 13)
  437. userEvent.type(input, `${specialChars.backspace}good`)
  438. expect(input).toHaveValue('This is a good example')
  439. })
  440. ```
  441. ## Issues
  442. _Looking to contribute? Look for the [Good First Issue][good-first-issue]
  443. label._
  444. ### 🐛 Bugs
  445. Please file an issue for bugs, missing documentation, or unexpected behavior.
  446. [**See Bugs**][bugs]
  447. ### 💡 Feature Requests
  448. Please file an issue to suggest new features. Vote on feature requests by adding
  449. a 👍. This helps maintainers prioritize what to work on.
  450. [**See Feature Requests**][requests]
  451. ## Contributors ✨
  452. Thanks goes to these people ([emoji key][emojis]):
  453. <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
  454. <!-- prettier-ignore-start -->
  455. <!-- markdownlint-disable -->
  456. <table>
  457. <tr>
  458. <td align="center"><a href="https://twitter.com/Gpx"><img src="https://avatars0.githubusercontent.com/u/767959?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Giorgio Polvara</b></sub></a><br /><a href="https://github.com/testing-library/user-event/issues?q=author%3AGpx" title="Bug reports">🐛</a> <a href="https://github.com/testing-library/user-event/commits?author=Gpx" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=Gpx" title="Documentation">📖</a> <a href="#ideas-Gpx" title="Ideas, Planning, & Feedback">🤔</a> <a href="#infra-Gpx" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/testing-library/user-event/pulls?q=is%3Apr+reviewed-by%3AGpx" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/testing-library/user-event/commits?author=Gpx" title="Tests">⚠️</a></td>
  459. <td align="center"><a href="https://github.com/weyert"><img src="https://avatars3.githubusercontent.com/u/7049?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Weyert de Boer</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=weyert" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=weyert" title="Tests">⚠️</a></td>
  460. <td align="center"><a href="https://github.com/twhitbeck"><img src="https://avatars2.githubusercontent.com/u/762471?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tim Whitbeck</b></sub></a><br /><a href="https://github.com/testing-library/user-event/issues?q=author%3Atwhitbeck" title="Bug reports">🐛</a> <a href="https://github.com/testing-library/user-event/commits?author=twhitbeck" title="Code">💻</a></td>
  461. <td align="center"><a href="https://michaeldeboey.be"><img src="https://avatars3.githubusercontent.com/u/6643991?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Michaël De Boey</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=MichaelDeBoey" title="Documentation">📖</a></td>
  462. <td align="center"><a href="https://github.com/michaellasky"><img src="https://avatars2.githubusercontent.com/u/6646599?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Michael Lasky</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=michaellasky" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=michaellasky" title="Documentation">📖</a> <a href="#ideas-michaellasky" title="Ideas, Planning, & Feedback">🤔</a></td>
  463. <td align="center"><a href="https://github.com/shomalgan"><img src="https://avatars0.githubusercontent.com/u/2883620?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ahmad Esmaeilzadeh</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=shomalgan" title="Documentation">📖</a></td>
  464. <td align="center"><a href="https://calebeby.ml"><img src="https://avatars1.githubusercontent.com/u/13206945?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Caleb Eby</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=calebeby" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/issues?q=author%3Acalebeby" title="Bug reports">🐛</a> <a href="https://github.com/testing-library/user-event/pulls?q=is%3Apr+reviewed-by%3Acalebeby" title="Reviewed Pull Requests">👀</a></td>
  465. </tr>
  466. <tr>
  467. <td align="center"><a href="https://afontcu.dev"><img src="https://avatars0.githubusercontent.com/u/9197791?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Adrià Fontcuberta</b></sub></a><br /><a href="https://github.com/testing-library/user-event/issues?q=author%3Aafontcu" title="Bug reports">🐛</a> <a href="https://github.com/testing-library/user-event/commits?author=afontcu" title="Tests">⚠️</a> <a href="https://github.com/testing-library/user-event/commits?author=afontcu" title="Code">💻</a></td>
  468. <td align="center"><a href="https://github.com/skywickenden"><img src="https://avatars2.githubusercontent.com/u/4930551?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sky Wickenden</b></sub></a><br /><a href="https://github.com/testing-library/user-event/issues?q=author%3Askywickenden" title="Bug reports">🐛</a> <a href="https://github.com/testing-library/user-event/commits?author=skywickenden" title="Code">💻</a></td>
  469. <td align="center"><a href="https://github.com/bogdanbodnar"><img src="https://avatars2.githubusercontent.com/u/9034868?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Bodnar Bogdan</b></sub></a><br /><a href="https://github.com/testing-library/user-event/issues?q=author%3Abogdanbodnar" title="Bug reports">🐛</a> <a href="https://github.com/testing-library/user-event/commits?author=bogdanbodnar" title="Code">💻</a></td>
  470. <td align="center"><a href="https://zach.website"><img src="https://avatars0.githubusercontent.com/u/1699281?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Zach Perrault</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=zperrault" title="Documentation">📖</a></td>
  471. <td align="center"><a href="https://twitter.com/ryanastelly"><img src="https://avatars1.githubusercontent.com/u/4138357?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ryan Stelly</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=FLGMwt" title="Documentation">📖</a></td>
  472. <td align="center"><a href="https://github.com/benmonro"><img src="https://avatars3.githubusercontent.com/u/399236?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ben Monro</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=benmonro" title="Code">💻</a></td>
  473. <td align="center"><a href="https://github.com/GentlemanHal"><img src="https://avatars2.githubusercontent.com/u/415521?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Christopher Martin</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=GentlemanHal" title="Code">💻</a></td>
  474. </tr>
  475. <tr>
  476. <td align="center"><a href="http://fullgallop.me"><img src="https://avatars0.githubusercontent.com/u/32252769?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Yuancheng Wu</b></sub></a><br /><a href="https://github.com/testing-library/user-event/pulls?q=is%3Apr+reviewed-by%3AYuanchengWu" title="Reviewed Pull Requests">👀</a></td>
  477. <td align="center"><a href="https://github.com/maheshjag"><img src="https://avatars0.githubusercontent.com/u/1705603?v=4?s=100" width="100px;" alt=""/><br /><sub><b>MJ</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=maheshjag" title="Documentation">📖</a></td>
  478. <td align="center"><a href="https://github.com/jmcriffey"><img src="https://avatars0.githubusercontent.com/u/2831294?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jeff McRiffey</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=jmcriffey" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=jmcriffey" title="Tests">⚠️</a></td>
  479. <td align="center"><a href="http://jagascript.com"><img src="https://avatars0.githubusercontent.com/u/4562878?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jaga Santagostino</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=kandros" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=kandros" title="Tests">⚠️</a></td>
  480. <td align="center"><a href="http://jordy.app"><img src="https://avatars3.githubusercontent.com/u/12712484?v=4?s=100" width="100px;" alt=""/><br /><sub><b>jordyvandomselaar</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=jordyvandomselaar" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=jordyvandomselaar" title="Tests">⚠️</a></td>
  481. <td align="center"><a href="https://lyamkin.com"><img src="https://avatars2.githubusercontent.com/u/3854930?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ilya Lyamkin</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=ilyamkin" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=ilyamkin" title="Tests">⚠️</a></td>
  482. <td align="center"><a href="http://todofullstack.com"><img src="https://avatars2.githubusercontent.com/u/4474353?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Kenneth Luján Rosas</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=klujanrosas" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=klujanrosas" title="Tests">⚠️</a></td>
  483. </tr>
  484. <tr>
  485. <td align="center"><a href="http://thejoemorgan.com"><img src="https://avatars1.githubusercontent.com/u/2388943?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Joe Morgan</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=jsmapr1" title="Code">💻</a></td>
  486. <td align="center"><a href="https://twitter.com/wachunga"><img src="https://avatars0.githubusercontent.com/u/438545?v=4?s=100" width="100px;" alt=""/><br /><sub><b>David Hirtle</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=wachunga" title="Code">💻</a></td>
  487. <td align="center"><a href="https://github.com/bdh1011"><img src="https://avatars2.githubusercontent.com/u/8446067?v=4?s=100" width="100px;" alt=""/><br /><sub><b>whiteUnicorn</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=bdh1011" title="Code">💻</a></td>
  488. <td align="center"><a href="https://www.matej.snuderl.si/"><img src="https://avatars3.githubusercontent.com/u/8524109?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Matej Šnuderl</b></sub></a><br /><a href="https://github.com/testing-library/user-event/pulls?q=is%3Apr+reviewed-by%3AMeemaw" title="Reviewed Pull Requests">👀</a></td>
  489. <td align="center"><a href="https://pomb.us"><img src="https://avatars1.githubusercontent.com/u/1911623?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Rodrigo Pombo</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=pomber" title="Code">💻</a></td>
  490. <td align="center"><a href="http://github.com/Raynos"><img src="https://avatars3.githubusercontent.com/u/479538?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jake Verbaten</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=Raynos" title="Code">💻</a></td>
  491. <td align="center"><a href="https://skovy.dev"><img src="https://avatars1.githubusercontent.com/u/5247455?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Spencer Miskoviak</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=skovy" title="Documentation">📖</a></td>
  492. </tr>
  493. <tr>
  494. <td align="center"><a href="https://proling.ru/"><img src="https://avatars2.githubusercontent.com/u/16336572?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Vadim Shvetsov</b></sub></a><br /><a href="#ideas-vadimshvetsov" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/testing-library/user-event/commits?author=vadimshvetsov" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=vadimshvetsov" title="Tests">⚠️</a></td>
  495. <td align="center"><a href="https://github.com/9still"><img src="https://avatars0.githubusercontent.com/u/4924760?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Greg Shtilman</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=9still" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=9still" title="Tests">⚠️</a> <a href="https://github.com/testing-library/user-event/issues?q=author%3A9still" title="Bug reports">🐛</a></td>
  496. <td align="center"><a href="https://github.com/rbusquet"><img src="https://avatars1.githubusercontent.com/u/7198302?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ricardo Busquet</b></sub></a><br /><a href="https://github.com/testing-library/user-event/issues?q=author%3Arbusquet" title="Bug reports">🐛</a> <a href="https://github.com/testing-library/user-event/commits?author=rbusquet" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=rbusquet" title="Tests">⚠️</a></td>
  497. <td align="center"><a href="https://www.linkedin.com/in/dougbacelar/en"><img src="https://avatars3.githubusercontent.com/u/9267678?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Doug Bacelar</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=dougbacelar" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=dougbacelar" title="Tests">⚠️</a></td>
  498. <td align="center"><a href="https://github.com/kayleighridd"><img src="https://avatars3.githubusercontent.com/u/36446015?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Kayleigh Ridd</b></sub></a><br /><a href="https://github.com/testing-library/user-event/issues?q=author%3Akayleighridd" title="Bug reports">🐛</a> <a href="https://github.com/testing-library/user-event/commits?author=kayleighridd" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=kayleighridd" title="Tests">⚠️</a></td>
  499. <td align="center"><a href="https://malcolmkee.com"><img src="https://avatars0.githubusercontent.com/u/24528512?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Malcolm Kee</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=malcolm-kee" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=malcolm-kee" title="Documentation">📖</a> <a href="https://github.com/testing-library/user-event/commits?author=malcolm-kee" title="Tests">⚠️</a></td>
  500. <td align="center"><a href="https://github.com/kelvinlzhang"><img src="https://avatars3.githubusercontent.com/u/8291294?v=4?s=100" width="100px;" alt=""/><br /><sub><b>kelvinlzhang</b></sub></a><br /><a href="https://github.com/testing-library/user-event/issues?q=author%3Akelvinlzhang" title="Bug reports">🐛</a></td>
  501. </tr>
  502. <tr>
  503. <td align="center"><a href="https://github.com/krzysztof-hellostudio"><img src="https://avatars3.githubusercontent.com/u/1942664?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Krzysztof</b></sub></a><br /><a href="https://github.com/testing-library/user-event/issues?q=author%3Akrzysztof-hellostudio" title="Bug reports">🐛</a></td>
  504. <td align="center"><a href="https://github.com/hontas"><img src="https://avatars2.githubusercontent.com/u/1521113?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Pontus Lundin</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=hontas" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=hontas" title="Tests">⚠️</a></td>
  505. <td align="center"><a href="https://hudochenkov.com/"><img src="https://avatars2.githubusercontent.com/u/654597?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Aleks Hudochenkov</b></sub></a><br /><a href="https://github.com/testing-library/user-event/issues?q=author%3Ahudochenkov" title="Bug reports">🐛</a></td>
  506. <td align="center"><a href="https://github.com/nanivijay"><img src="https://avatars0.githubusercontent.com/u/5945591?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Vijay Kumar Otti</b></sub></a><br /><a href="https://github.com/testing-library/user-event/issues?q=author%3Ananivijay" title="Bug reports">🐛</a></td>
  507. <td align="center"><a href="http://tompicton.com"><img src="https://avatars2.githubusercontent.com/u/12588098?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tom Picton</b></sub></a><br /><a href="https://github.com/testing-library/user-event/issues?q=author%3Atpict" title="Bug reports">🐛</a> <a href="https://github.com/testing-library/user-event/commits?author=tpict" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=tpict" title="Tests">⚠️</a></td>
  508. <td align="center"><a href="https://hung.dev"><img src="https://avatars3.githubusercontent.com/u/8603085?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Hung Viet Nguyen</b></sub></a><br /><a href="https://github.com/testing-library/user-event/issues?q=author%3Anvh95" title="Bug reports">🐛</a></td>
  509. <td align="center"><a href="https://nickmccurdy.com/"><img src="https://avatars0.githubusercontent.com/u/927220?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nick McCurdy</b></sub></a><br /><a href="#projectManagement-nickmccurdy" title="Project Management">📆</a> <a href="#question-nickmccurdy" title="Answering Questions">💬</a> <a href="https://github.com/testing-library/user-event/commits?author=nickmccurdy" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=nickmccurdy" title="Tests">⚠️</a> <a href="https://github.com/testing-library/user-event/commits?author=nickmccurdy" title="Documentation">📖</a></td>
  510. </tr>
  511. <tr>
  512. <td align="center"><a href="http://timdeschryver.dev"><img src="https://avatars1.githubusercontent.com/u/28659384?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tim Deschryver</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=timdeschryver" title="Tests">⚠️</a></td>
  513. <td align="center"><a href="https://github.com/ben-dyer"><img src="https://avatars2.githubusercontent.com/u/43922444?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ben Dyer</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=ben-dyer" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=ben-dyer" title="Tests">⚠️</a></td>
  514. <td align="center"><a href="https://twitter.com/herecydev"><img src="https://avatars1.githubusercontent.com/u/11328618?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dan Kirkham</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=herecydev" title="Code">💻</a></td>
  515. <td align="center"><a href="https://github.com/Johannesklint"><img src="https://avatars3.githubusercontent.com/u/16774845?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Johannesklint</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=Johannesklint" title="Documentation">📖</a></td>
  516. <td align="center"><a href="https://github.com/juanca"><img src="https://avatars0.githubusercontent.com/u/841084?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Juan Carlos Medina</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=juanca" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=juanca" title="Tests">⚠️</a></td>
  517. <td align="center"><a href="https://github.com/WretchedDade"><img src="https://avatars0.githubusercontent.com/u/17183431?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dade Cook</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=WretchedDade" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=WretchedDade" title="Tests">⚠️</a></td>
  518. <td align="center"><a href="https://blog.lourenci.com/"><img src="https://avatars3.githubusercontent.com/u/2339362?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Leandro Lourenci</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=lourenci" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=lourenci" title="Tests">⚠️</a></td>
  519. </tr>
  520. <tr>
  521. <td align="center"><a href="https://github.com/marcosvega91"><img src="https://avatars2.githubusercontent.com/u/5365582?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Marco Moretti</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=marcosvega91" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=marcosvega91" title="Tests">⚠️</a></td>
  522. <td align="center"><a href="https://github.com/ybentz"><img src="https://avatars3.githubusercontent.com/u/14811577?v=4?s=100" width="100px;" alt=""/><br /><sub><b>ybentz</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=ybentz" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=ybentz" title="Tests">⚠️</a></td>
  523. <td align="center"><a href="http://www.lemoncode.net/"><img src="https://avatars2.githubusercontent.com/u/4374977?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nasdan</b></sub></a><br /><a href="https://github.com/testing-library/user-event/issues?q=author%3ANasdan" title="Bug reports">🐛</a></td>
  524. <td align="center"><a href="https://github.com/JavierMartinz"><img src="https://avatars1.githubusercontent.com/u/1155507?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Javier Martínez</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=JavierMartinz" title="Documentation">📖</a></td>
  525. <td align="center"><a href="http://www.visualjerk.de"><img src="https://avatars0.githubusercontent.com/u/28823153?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jörg Bayreuther</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=visualjerk" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=visualjerk" title="Tests">⚠️</a> <a href="https://github.com/testing-library/user-event/commits?author=visualjerk" title="Documentation">📖</a></td>
  526. <td align="center"><a href="https://ko-fi.com/thislucas"><img src="https://avatars0.githubusercontent.com/u/8645841?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Lucas Bernalte</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=lucbpz" title="Documentation">📖</a></td>
  527. <td align="center"><a href="https://github.com/maxnewlands"><img src="https://avatars3.githubusercontent.com/u/1304166?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Maxwell Newlands</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=maxnewlands" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=maxnewlands" title="Tests">⚠️</a></td>
  528. </tr>
  529. <tr>
  530. <td align="center"><a href="https://github.com/ph-fritsche"><img src="https://avatars3.githubusercontent.com/u/39068198?v=4?s=100" width="100px;" alt=""/><br /><sub><b>ph-fritsche</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=ph-fritsche" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=ph-fritsche" title="Tests">⚠️</a></td>
  531. <td align="center"><a href="https://github.com/reywright"><img src="https://avatars3.githubusercontent.com/u/708820?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Rey Wright</b></sub></a><br /><a href="https://github.com/testing-library/user-event/issues?q=author%3Areywright" title="Bug reports">🐛</a> <a href="https://github.com/testing-library/user-event/commits?author=reywright" title="Code">💻</a></td>
  532. <td align="center"><a href="https://github.com/mischnic"><img src="https://avatars1.githubusercontent.com/u/4586894?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Niklas Mischkulnig</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=mischnic" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=mischnic" title="Tests">⚠️</a></td>
  533. <td align="center"><a href="http://pascalduez.me"><img src="https://avatars3.githubusercontent.com/u/335467?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Pascal Duez</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=pascalduez" title="Code">💻</a></td>
  534. <td align="center"><a href="http://malachi.dev"><img src="https://avatars3.githubusercontent.com/u/10888943?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Malachi Willey</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=malwilley" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=malwilley" title="Tests">⚠️</a></td>
  535. <td align="center"><a href="https://clarkwinters.com"><img src="https://avatars2.githubusercontent.com/u/40615752?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Clark Winters</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=cwinters8" title="Documentation">📖</a></td>
  536. <td align="center"><a href="https://github.com/lazytype"><img src="https://avatars1.githubusercontent.com/u/840985?v=4?s=100" width="100px;" alt=""/><br /><sub><b>lazytype</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=lazytype" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=lazytype" title="Tests">⚠️</a></td>
  537. </tr>
  538. <tr>
  539. <td align="center"><a href="https://www.linkedin.com/in/luis-takahashi/"><img src="https://avatars0.githubusercontent.com/u/19766035?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Luís Takahashi</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=luistak" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=luistak" title="Tests">⚠️</a></td>
  540. <td align="center"><a href="https://github.com/jesujcastillom"><img src="https://avatars3.githubusercontent.com/u/7827281?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jesu Castillo</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=jesujcastillom" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=jesujcastillom" title="Tests">⚠️</a></td>
  541. <td align="center"><a href="https://sarahdayan.dev"><img src="https://avatars1.githubusercontent.com/u/5370675?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sarah Dayan</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=sarahdayan" title="Documentation">📖</a></td>
  542. <td align="center"><a href="http://saul-mirone.github.io/"><img src="https://avatars0.githubusercontent.com/u/10047788?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mirone</b></sub></a><br /><a href="https://github.com/testing-library/user-event/issues?q=author%3ASaul-Mirone" title="Bug reports">🐛</a></td>
  543. <td align="center"><a href="https://github.com/amandapouget"><img src="https://avatars3.githubusercontent.com/u/12855692?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Amanda Pouget</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=amandapouget" title="Documentation">📖</a></td>
  544. <td align="center"><a href="https://github.com/Sonic12040"><img src="https://avatars3.githubusercontent.com/u/21055893?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sonic12040</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=Sonic12040" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=Sonic12040" title="Tests">⚠️</a> <a href="https://github.com/testing-library/user-event/commits?author=Sonic12040" title="Documentation">📖</a></td>
  545. <td align="center"><a href="https://github.com/gndelia"><img src="https://avatars1.githubusercontent.com/u/352474?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Gonzalo D'Elia</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=gndelia" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=gndelia" title="Tests">⚠️</a> <a href="https://github.com/testing-library/user-event/commits?author=gndelia" title="Documentation">📖</a></td>
  546. </tr>
  547. <tr>
  548. <td align="center"><a href="https://github.com/vasilii-kovalev"><img src="https://avatars0.githubusercontent.com/u/10310491?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Vasilii Kovalev</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=vasilii-kovalev" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=vasilii-kovalev" title="Documentation">📖</a></td>
  549. <td align="center"><a href="https://www.daleseo.com"><img src="https://avatars1.githubusercontent.com/u/5466341?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dale Seo</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=daleseo" title="Documentation">📖</a></td>
  550. <td align="center"><a href="http://www.alex-boyce.me/"><img src="https://avatars.githubusercontent.com/u/4050934?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alex Boyce</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=curiosity26" title="Code">💻</a></td>
  551. <td align="center"><a href="https://benadamstyles.com"><img src="https://avatars.githubusercontent.com/u/4380655?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ben Styles</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=benadamstyles" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=benadamstyles" title="Tests">⚠️</a></td>
  552. <td align="center"><a href="http://laurabeatris.com"><img src="https://avatars.githubusercontent.com/u/48022589?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Laura Beatris</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=LauraBeatris" title="Code">💻</a> <a href="https://github.com/testing-library/user-event/commits?author=LauraBeatris" title="Tests">⚠️</a></td>
  553. <td align="center"><a href="https://twitter.com/boriscoder"><img src="https://avatars.githubusercontent.com/u/812240?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Boris Serdiuk</b></sub></a><br /><a href="https://github.com/testing-library/user-event/issues?q=author%3Ajust-boris" title="Bug reports">🐛</a></td>
  554. <td align="center"><a href="https://bozdoz.com"><img src="https://avatars.githubusercontent.com/u/1410985?v=4?s=100" width="100px;" alt=""/><br /><sub><b>bozdoz</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=bozdoz" title="Documentation">📖</a></td>
  555. </tr>
  556. <tr>
  557. <td align="center"><a href="https://github.com/jKatt"><img src="https://avatars.githubusercontent.com/u/5550790?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jan Kattelans</b></sub></a><br /><a href="https://github.com/testing-library/user-event/commits?author=jKatt" title="Code">💻</a></td>
  558. <td align="center"><a href="https://github.com/schoeneu"><img src="https://avatars.githubusercontent.com/u/3261341?v=4?s=100" width="100px;" alt=""/><br /><sub><b>schoeneu</b></sub></a><br /><a href="https://github.com/testing-library/user-event/issues?q=author%3Aschoeneu" title="Bug reports">🐛</a></td>
  559. </tr>
  560. </table>
  561. <!-- markdownlint-restore -->
  562. <!-- prettier-ignore-end -->
  563. <!-- ALL-CONTRIBUTORS-LIST:END -->
  564. This project follows the [all-contributors][all-contributors] specification.
  565. Contributions of any kind welcome!
  566. ## LICENSE
  567. MIT
  568. <!-- prettier-ignore-start -->
  569. [npm]: https://www.npmjs.com
  570. [node]: https://nodejs.org
  571. [build-badge]: https://img.shields.io/github/workflow/status/testing-library/user-event/validate/master?logo=github&style=flat-square
  572. [build]: https://github.com/testing-library/user-event/actions?query=workflow%3Avalidate
  573. [coverage-badge]: https://img.shields.io/codecov/c/github/testing-library/user-event.svg?style=flat-square
  574. [coverage]: https://codecov.io/github/testing-library/user-event
  575. [version-badge]: https://img.shields.io/npm/v/@testing-library/user-event.svg?style=flat-square
  576. [package]: https://www.npmjs.com/package/@testing-library/user-event
  577. [downloads-badge]: https://img.shields.io/npm/dm/@testing-library/user-event.svg?style=flat-square
  578. [npmtrends]: http://www.npmtrends.com/@testing-library/user-event
  579. [license-badge]: https://img.shields.io/npm/l/@testing-library/user-event.svg?style=flat-square
  580. [license]: https://github.com/testing-library/user-event/blob/master/LICENSE
  581. [prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square
  582. [prs]: http://makeapullrequest.com
  583. [coc-badge]: https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square
  584. [coc]: https://github.com/testing-library/user-event/blob/master/other/CODE_OF_CONDUCT.md
  585. [emojis]: https://github.com/all-contributors/all-contributors#emoji-key
  586. [all-contributors]: https://github.com/all-contributors/all-contributors
  587. [all-contributors-badge]: https://img.shields.io/github/all-contributors/testing-library/user-event?color=orange&style=flat-square
  588. [bugs]: https://github.com/testing-library/user-event/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+sort%3Acreated-desc+label%3Abug
  589. [requests]: https://github.com/testing-library/user-event/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+label%3Aenhancement
  590. [good-first-issue]: https://github.com/testing-library/user-event/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+label%3Aenhancement+label%3A%22good+first+issue%22
  591. <!-- prettier-ignore-end -->