Skip to content

Commit bc6a003

Browse files
authored
Merge pull request testing-library#248 from testing-library/docs
Docs
2 parents 5ba70d9 + 632826b commit bc6a003

File tree

1 file changed

+54
-37
lines changed

1 file changed

+54
-37
lines changed

README.md

+54-37
Original file line numberDiff line numberDiff line change
@@ -71,19 +71,19 @@ effects.
7171

7272
```jsx
7373
import React from "react";
74-
import { render } from "@testing-library/react";
74+
import { render, screen } from "@testing-library/react";
7575
import userEvent from "@testing-library/user-event";
7676

7777
test("click", () => {
78-
const { getByText, getByTestId } = render(
78+
render(
7979
<div>
8080
<label htmlFor="checkbox">Check</label>
8181
<input id="checkbox" data-testid="checkbox" type="checkbox" />
8282
</div>
8383
);
8484

85-
userEvent.click(getByText("Check"));
86-
expect(getByTestId("checkbox")).toHaveAttribute("checked", true);
85+
userEvent.click(screen.getByText("Check"));
86+
expect(screen.getByTestId("checkbox")).toHaveAttribute("checked", true);
8787
});
8888
```
8989

@@ -94,15 +94,13 @@ side effects.
9494

9595
```jsx
9696
import React from "react";
97-
import { render } from "@testing-library/react";
97+
import { render, screen } from "@testing-library/react";
9898
import userEvent from "@testing-library/user-event";
9999

100100
test("double click", () => {
101101
const onChange = jest.fn();
102-
const { getByTestId } = render(
103-
<input type="checkbox" id="checkbox" onChange={onChange} />
104-
);
105-
const checkbox = getByTestId("checkbox");
102+
render(<input type="checkbox" id="checkbox" onChange={onChange} />);
103+
const checkbox = screen.getByTestId("checkbox");
106104
userEvent.dblClick(checkbox);
107105
expect(onChange).toHaveBeenCalledTimes(2);
108106
expect(checkbox).toHaveProperty("checked", false);
@@ -115,15 +113,15 @@ Writes `text` inside an `<input>` or a `<textarea>`.
115113

116114
```jsx
117115
import React from "react";
118-
import { render } from "@testing-library/react";
116+
import { render, screen } from "@testing-library/react";
119117
import userEvent from "@testing-library/user-event";
120118

121-
const { getByTestId } = test("click", () => {
119+
test("type", async () => {
122120
render(<textarea data-testid="email" />);
123-
});
124121

125-
await userEvent.type(getByTestId("email"), "Hello, World!");
126-
expect(getByTestId("email")).toHaveAttribute("value", "Hello, World!");
122+
await userEvent.type(screen.getByTestId("email"), "Hello, World!");
123+
expect(screen.getByTestId("email")).toHaveAttribute("value", "Hello, World!");
124+
});
127125
```
128126

129127
If `options.allAtOnce` is `true`, `type` will write `text` at once rather than
@@ -133,35 +131,54 @@ one character at the time. `false` is the default value.
133131
are typed. By default it's 0. You can use this option if your component has a
134132
different behavior for fast or slow users.
135133

134+
### clear(element)
135+
136+
Selects the text inside an `<input>` or `<textarea>` and deletes it.
137+
138+
```jsx
139+
import React from "react";
140+
import { render, screen } from "@testing-library/react";
141+
import userEvent from "@testing-library/user-event";
142+
143+
test("clear", () => {
144+
render(<textarea data-testid="email" value="Hello, World!" />);
145+
146+
userEvent.clear(screen.getByTestId("email"));
147+
expect(screen.getByTestId("email")).toHaveAttribute("value", "");
148+
});
149+
```
150+
136151
### `selectOptions(element, values)`
137152

138153
Selects the specified option(s) of a `<select>` or a `<select multiple>`
139154
element.
140155

141156
```jsx
142157
import React from "react";
143-
import { render } from "@testing-library/react";
158+
import { render, screen } from "@testing-library/react";
144159
import userEvent from "@testing-library/user-event";
145160

146-
const { getByTestId } = render(
147-
<select multiple data-testid="select-multiple">
148-
<option data-testid="val1" value="1">
149-
A
150-
</option>
151-
<option data-testid="val2" value="2">
152-
B
153-
</option>
154-
<option data-testid="val3" value="3">
155-
C
156-
</option>
157-
</select>
158-
);
159-
160-
userEvent.selectOptions(getByTestId("select-multiple"), ["1", "3"]);
161-
162-
expect(getByTestId("val1").selected).toBe(true);
163-
expect(getByTestId("val2").selected).toBe(false);
164-
expect(getByTestId("val3").selected).toBe(true);
161+
test("selectOptions", () => {
162+
render(
163+
<select multiple data-testid="select-multiple">
164+
<option data-testid="val1" value="1">
165+
A
166+
</option>
167+
<option data-testid="val2" value="2">
168+
B
169+
</option>
170+
<option data-testid="val3" value="3">
171+
C
172+
</option>
173+
</select>
174+
);
175+
176+
userEvent.selectOptions(screen.getByTestId("select-multiple"), ["1", "3"]);
177+
178+
expect(screen.getByTestId("val1").selected).toBe(true);
179+
expect(screen.getByTestId("val2").selected).toBe(false);
180+
expect(screen.getByTestId("val3").selected).toBe(true);
181+
});
165182
```
166183

167184
The `values` parameter can be either an array of values or a singular scalar
@@ -188,20 +205,20 @@ Options:
188205
189206
```jsx
190207
import React from "react";
191-
import { render } from "@testing-library/react";
208+
import { render, screen } from "@testing-library/react";
192209
import "@testing-library/jest-dom/extend-expect";
193210
import userEvent from "@testing-library/user-event";
194211

195212
it("should cycle elements in document tab order", () => {
196-
const { getAllByTestId } = render(
213+
render(
197214
<div>
198215
<input data-testid="element" type="checkbox" />
199216
<input data-testid="element" type="radio" />
200217
<input data-testid="element" type="number" />
201218
</div>
202219
);
203220

204-
const [checkbox, radio, number] = getAllByTestId("element");
221+
const [checkbox, radio, number] = screen.getAllByTestId("element");
205222

206223
expect(document.body).toHaveFocus();
207224

0 commit comments

Comments
 (0)