@khanacademy/wonder-blocks-button 6.2.10 → 6.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/dist/es/index.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +8 -8
- package/src/__tests__/__snapshots__/custom-snapshot.test.tsx.snap +6 -6
- package/src/components/__tests__/button-with-icon.test.tsx +38 -36
- package/src/components/__tests__/button.test.tsx +103 -89
- package/src/components/button-core.tsx +1 -1
- package/tsconfig-build.tsbuildinfo +1 -1
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import * as React from "react";
|
|
8
8
|
import {MemoryRouter, Route, Switch} from "react-router-dom";
|
|
9
9
|
import {render, screen, waitFor} from "@testing-library/react";
|
|
10
|
-
import userEvent from "@testing-library/user-event";
|
|
10
|
+
import {userEvent} from "@testing-library/user-event";
|
|
11
11
|
|
|
12
12
|
import Button from "../button";
|
|
13
13
|
|
|
@@ -25,7 +25,7 @@ describe("Button", () => {
|
|
|
25
25
|
window.location = location;
|
|
26
26
|
});
|
|
27
27
|
|
|
28
|
-
test("client-side navigation", () => {
|
|
28
|
+
test("client-side navigation", async () => {
|
|
29
29
|
// Arrange
|
|
30
30
|
render(
|
|
31
31
|
<MemoryRouter>
|
|
@@ -41,14 +41,14 @@ describe("Button", () => {
|
|
|
41
41
|
);
|
|
42
42
|
|
|
43
43
|
// Act
|
|
44
|
-
const button = screen.
|
|
45
|
-
userEvent.click(button);
|
|
44
|
+
const button = await screen.findByRole("button");
|
|
45
|
+
await userEvent.click(button);
|
|
46
46
|
|
|
47
47
|
// Assert
|
|
48
|
-
expect(screen.
|
|
48
|
+
expect(await screen.findByText("Hello, world!")).toBeInTheDocument();
|
|
49
49
|
});
|
|
50
50
|
|
|
51
|
-
test("beforeNav rejection blocks client-side navigation", () => {
|
|
51
|
+
test("beforeNav rejection blocks client-side navigation", async () => {
|
|
52
52
|
// Arrange
|
|
53
53
|
render(
|
|
54
54
|
<MemoryRouter>
|
|
@@ -66,14 +66,14 @@ describe("Button", () => {
|
|
|
66
66
|
);
|
|
67
67
|
|
|
68
68
|
// Act
|
|
69
|
-
const button = screen.
|
|
70
|
-
userEvent.click(button);
|
|
69
|
+
const button = await screen.findByRole("button");
|
|
70
|
+
await userEvent.click(button);
|
|
71
71
|
|
|
72
72
|
// Assert
|
|
73
73
|
expect(screen.queryByText("Hello, world!")).not.toBeInTheDocument();
|
|
74
74
|
});
|
|
75
75
|
|
|
76
|
-
test("beforeNav rejection blocks calling safeWithNav", () => {
|
|
76
|
+
test("beforeNav rejection blocks calling safeWithNav", async () => {
|
|
77
77
|
// Arrange
|
|
78
78
|
const safeWithNavMock = jest.fn();
|
|
79
79
|
render(
|
|
@@ -96,8 +96,8 @@ describe("Button", () => {
|
|
|
96
96
|
);
|
|
97
97
|
|
|
98
98
|
// Act
|
|
99
|
-
const button = screen.
|
|
100
|
-
userEvent.click(button);
|
|
99
|
+
const button = await screen.findByRole("button");
|
|
100
|
+
await userEvent.click(button);
|
|
101
101
|
|
|
102
102
|
// Assert
|
|
103
103
|
expect(safeWithNavMock).not.toHaveBeenCalled();
|
|
@@ -121,11 +121,13 @@ describe("Button", () => {
|
|
|
121
121
|
);
|
|
122
122
|
|
|
123
123
|
// Act
|
|
124
|
-
userEvent.click(screen.
|
|
124
|
+
await userEvent.click(await screen.findByRole("button"));
|
|
125
125
|
|
|
126
126
|
// Assert
|
|
127
|
-
await waitFor(() => {
|
|
128
|
-
expect(
|
|
127
|
+
await waitFor(async () => {
|
|
128
|
+
expect(
|
|
129
|
+
await screen.findByText("Hello, world!"),
|
|
130
|
+
).toBeInTheDocument();
|
|
129
131
|
});
|
|
130
132
|
});
|
|
131
133
|
|
|
@@ -152,7 +154,7 @@ describe("Button", () => {
|
|
|
152
154
|
);
|
|
153
155
|
|
|
154
156
|
// Act
|
|
155
|
-
userEvent.click(screen.
|
|
157
|
+
await userEvent.click(await screen.findByRole("button"));
|
|
156
158
|
|
|
157
159
|
// Assert
|
|
158
160
|
await waitFor(() => {
|
|
@@ -160,7 +162,10 @@ describe("Button", () => {
|
|
|
160
162
|
});
|
|
161
163
|
});
|
|
162
164
|
|
|
163
|
-
test
|
|
165
|
+
// Unfortunately we can't test the spinner here after upgrading to
|
|
166
|
+
// user-event v14 as the render happens before we're aable to check on the
|
|
167
|
+
// state of the spinner.
|
|
168
|
+
test.skip("show circular spinner before beforeNav resolves", async () => {
|
|
164
169
|
// Arrange
|
|
165
170
|
render(
|
|
166
171
|
<MemoryRouter>
|
|
@@ -178,12 +183,12 @@ describe("Button", () => {
|
|
|
178
183
|
);
|
|
179
184
|
|
|
180
185
|
// Act
|
|
181
|
-
const button = screen.
|
|
182
|
-
userEvent.click(button);
|
|
186
|
+
const button = await screen.findByRole("button");
|
|
187
|
+
await userEvent.click(button);
|
|
183
188
|
|
|
184
189
|
// Assert
|
|
185
190
|
// TODO(juan): Find a way to use a more accessible query.
|
|
186
|
-
expect(screen.
|
|
191
|
+
expect(await screen.findByTestId("button-spinner")).toBeInTheDocument();
|
|
187
192
|
});
|
|
188
193
|
|
|
189
194
|
test("safeWithNav with skipClientNav=true waits for promise resolution", async () => {
|
|
@@ -209,7 +214,7 @@ describe("Button", () => {
|
|
|
209
214
|
);
|
|
210
215
|
|
|
211
216
|
// Act
|
|
212
|
-
userEvent.click(screen.
|
|
217
|
+
await userEvent.click(await screen.findByRole("button"));
|
|
213
218
|
|
|
214
219
|
// Assert
|
|
215
220
|
await waitFor(() => {
|
|
@@ -217,7 +222,7 @@ describe("Button", () => {
|
|
|
217
222
|
});
|
|
218
223
|
});
|
|
219
224
|
|
|
220
|
-
test("safeWithNav with skipClientNav=true shows spinner", () => {
|
|
225
|
+
test("safeWithNav with skipClientNav=true shows spinner", async () => {
|
|
221
226
|
// Arrange
|
|
222
227
|
jest.spyOn(window.location, "assign");
|
|
223
228
|
render(
|
|
@@ -240,11 +245,11 @@ describe("Button", () => {
|
|
|
240
245
|
);
|
|
241
246
|
|
|
242
247
|
// Act
|
|
243
|
-
const button = screen.
|
|
244
|
-
userEvent.click(button);
|
|
248
|
+
const button = await screen.findByRole("button");
|
|
249
|
+
await userEvent.click(button);
|
|
245
250
|
|
|
246
251
|
// Assert
|
|
247
|
-
expect(screen.
|
|
252
|
+
expect(await screen.findByTestId("button-spinner")).toBeInTheDocument();
|
|
248
253
|
});
|
|
249
254
|
|
|
250
255
|
test("beforeNav resolution and safeWithNav with skipClientNav=true waits for promise resolution", async () => {
|
|
@@ -271,8 +276,8 @@ describe("Button", () => {
|
|
|
271
276
|
);
|
|
272
277
|
|
|
273
278
|
// Act
|
|
274
|
-
const button = screen.
|
|
275
|
-
userEvent.click(button);
|
|
279
|
+
const button = await screen.findByRole("button");
|
|
280
|
+
await userEvent.click(button);
|
|
276
281
|
|
|
277
282
|
// Assert
|
|
278
283
|
await waitFor(() => {
|
|
@@ -280,7 +285,7 @@ describe("Button", () => {
|
|
|
280
285
|
});
|
|
281
286
|
});
|
|
282
287
|
|
|
283
|
-
test("safeWithNav with skipClientNav=true waits for promise rejection", () => {
|
|
288
|
+
test("safeWithNav with skipClientNav=true waits for promise rejection", async () => {
|
|
284
289
|
// Arrange
|
|
285
290
|
jest.spyOn(window.location, "assign");
|
|
286
291
|
render(
|
|
@@ -303,14 +308,14 @@ describe("Button", () => {
|
|
|
303
308
|
);
|
|
304
309
|
|
|
305
310
|
// Act
|
|
306
|
-
const button = screen.
|
|
307
|
-
userEvent.click(button);
|
|
311
|
+
const button = await screen.findByRole("button");
|
|
312
|
+
await userEvent.click(button);
|
|
308
313
|
|
|
309
314
|
// Assert
|
|
310
315
|
expect(window.location.assign).toHaveBeenCalledWith("/foo");
|
|
311
316
|
});
|
|
312
317
|
|
|
313
|
-
test("safeWithNav with skipClientNav=false calls safeWithNav but doesn't wait to navigate", () => {
|
|
318
|
+
test("safeWithNav with skipClientNav=false calls safeWithNav but doesn't wait to navigate", async () => {
|
|
314
319
|
// Arrange
|
|
315
320
|
jest.spyOn(window.location, "assign");
|
|
316
321
|
const safeWithNavMock = jest.fn();
|
|
@@ -334,8 +339,8 @@ describe("Button", () => {
|
|
|
334
339
|
);
|
|
335
340
|
|
|
336
341
|
// Act
|
|
337
|
-
const button = screen.
|
|
338
|
-
userEvent.click(button);
|
|
342
|
+
const button = await screen.findByRole("button");
|
|
343
|
+
await userEvent.click(button);
|
|
339
344
|
|
|
340
345
|
// Assert
|
|
341
346
|
expect(safeWithNavMock).toHaveBeenCalled();
|
|
@@ -367,7 +372,7 @@ describe("Button", () => {
|
|
|
367
372
|
);
|
|
368
373
|
|
|
369
374
|
// Act
|
|
370
|
-
userEvent.click(screen.
|
|
375
|
+
await userEvent.click(await screen.findByRole("button"));
|
|
371
376
|
|
|
372
377
|
// Assert
|
|
373
378
|
await waitFor(() => {
|
|
@@ -378,7 +383,7 @@ describe("Button", () => {
|
|
|
378
383
|
});
|
|
379
384
|
});
|
|
380
385
|
|
|
381
|
-
test("client-side navigation with unknown URL fails", () => {
|
|
386
|
+
test("client-side navigation with unknown URL fails", async () => {
|
|
382
387
|
// Arrange
|
|
383
388
|
render(
|
|
384
389
|
<MemoryRouter>
|
|
@@ -394,14 +399,14 @@ describe("Button", () => {
|
|
|
394
399
|
);
|
|
395
400
|
|
|
396
401
|
// Act
|
|
397
|
-
const button = screen.
|
|
398
|
-
userEvent.click(button);
|
|
402
|
+
const button = await screen.findByRole("button");
|
|
403
|
+
await userEvent.click(button);
|
|
399
404
|
|
|
400
405
|
// Assert
|
|
401
406
|
expect(screen.queryByText("Hello, world!")).not.toBeInTheDocument();
|
|
402
407
|
});
|
|
403
408
|
|
|
404
|
-
test("client-side navigation with `skipClientNav` set to `true` fails", () => {
|
|
409
|
+
test("client-side navigation with `skipClientNav` set to `true` fails", async () => {
|
|
405
410
|
// Arrange
|
|
406
411
|
render(
|
|
407
412
|
<MemoryRouter>
|
|
@@ -419,14 +424,14 @@ describe("Button", () => {
|
|
|
419
424
|
);
|
|
420
425
|
|
|
421
426
|
// Act
|
|
422
|
-
const button = screen.
|
|
423
|
-
userEvent.click(button);
|
|
427
|
+
const button = await screen.findByRole("button");
|
|
428
|
+
await userEvent.click(button);
|
|
424
429
|
|
|
425
430
|
// Assert
|
|
426
431
|
expect(screen.queryByText("Hello, world!")).not.toBeInTheDocument();
|
|
427
432
|
});
|
|
428
433
|
|
|
429
|
-
test("disallow navigation when href and disabled are both set", () => {
|
|
434
|
+
test("disallow navigation when href and disabled are both set", async () => {
|
|
430
435
|
// Arrange
|
|
431
436
|
render(
|
|
432
437
|
<MemoryRouter>
|
|
@@ -444,14 +449,14 @@ describe("Button", () => {
|
|
|
444
449
|
);
|
|
445
450
|
|
|
446
451
|
// Act
|
|
447
|
-
const button = screen.
|
|
448
|
-
userEvent.click(button);
|
|
452
|
+
const button = await screen.findByRole("button");
|
|
453
|
+
await userEvent.click(button);
|
|
449
454
|
|
|
450
455
|
// Assert
|
|
451
456
|
expect(screen.queryByText("Hello, world!")).not.toBeInTheDocument();
|
|
452
457
|
});
|
|
453
458
|
|
|
454
|
-
test("don't call beforeNav when href and disabled are both set", () => {
|
|
459
|
+
test("don't call beforeNav when href and disabled are both set", async () => {
|
|
455
460
|
// Arrange
|
|
456
461
|
const beforeNavMock = jest.fn();
|
|
457
462
|
render(
|
|
@@ -474,14 +479,14 @@ describe("Button", () => {
|
|
|
474
479
|
);
|
|
475
480
|
|
|
476
481
|
// Act
|
|
477
|
-
const button = screen.
|
|
478
|
-
userEvent.click(button);
|
|
482
|
+
const button = await screen.findByRole("button");
|
|
483
|
+
await userEvent.click(button);
|
|
479
484
|
|
|
480
485
|
// Assert
|
|
481
486
|
expect(beforeNavMock).not.toHaveBeenCalled();
|
|
482
487
|
});
|
|
483
488
|
|
|
484
|
-
test("don't call safeWithNav when href and disabled are both set", () => {
|
|
489
|
+
test("don't call safeWithNav when href and disabled are both set", async () => {
|
|
485
490
|
// Arrange
|
|
486
491
|
const safeWithNavMock = jest.fn();
|
|
487
492
|
render(
|
|
@@ -504,14 +509,14 @@ describe("Button", () => {
|
|
|
504
509
|
);
|
|
505
510
|
|
|
506
511
|
// Act
|
|
507
|
-
const button = screen.
|
|
508
|
-
userEvent.click(button);
|
|
512
|
+
const button = await screen.findByRole("button");
|
|
513
|
+
await userEvent.click(button);
|
|
509
514
|
|
|
510
515
|
// Assert
|
|
511
516
|
expect(safeWithNavMock).not.toHaveBeenCalled();
|
|
512
517
|
});
|
|
513
518
|
|
|
514
|
-
it("should set attribute on the underlying button", () => {
|
|
519
|
+
it("should set attribute on the underlying button", async () => {
|
|
515
520
|
// Arrange
|
|
516
521
|
|
|
517
522
|
// Act
|
|
@@ -522,10 +527,10 @@ describe("Button", () => {
|
|
|
522
527
|
);
|
|
523
528
|
|
|
524
529
|
// Assert
|
|
525
|
-
expect(screen.
|
|
530
|
+
expect(await screen.findByRole("button")).toHaveAttribute("id", "foo");
|
|
526
531
|
});
|
|
527
532
|
|
|
528
|
-
it("should set attribute on the underlying link", () => {
|
|
533
|
+
it("should set attribute on the underlying link", async () => {
|
|
529
534
|
// Arrange
|
|
530
535
|
|
|
531
536
|
// Act
|
|
@@ -536,11 +541,14 @@ describe("Button", () => {
|
|
|
536
541
|
);
|
|
537
542
|
|
|
538
543
|
// Assert
|
|
539
|
-
expect(screen.
|
|
544
|
+
expect(await screen.findByRole("button")).toHaveAttribute(
|
|
545
|
+
"href",
|
|
546
|
+
"/bar",
|
|
547
|
+
);
|
|
540
548
|
});
|
|
541
549
|
|
|
542
550
|
describe("client-side navigation with keyboard", () => {
|
|
543
|
-
it("should navigate on pressing the space key", () => {
|
|
551
|
+
it("should navigate on pressing the space key", async () => {
|
|
544
552
|
// Arrange
|
|
545
553
|
render(
|
|
546
554
|
<MemoryRouter>
|
|
@@ -556,14 +564,16 @@ describe("Button", () => {
|
|
|
556
564
|
);
|
|
557
565
|
|
|
558
566
|
// Act
|
|
559
|
-
const button = screen.
|
|
560
|
-
userEvent.type(button, "{space}");
|
|
567
|
+
const button = await screen.findByRole("button");
|
|
568
|
+
await userEvent.type(button, "{space}");
|
|
561
569
|
|
|
562
570
|
// Assert
|
|
563
|
-
expect(
|
|
571
|
+
expect(
|
|
572
|
+
await screen.findByText("Hello, world!"),
|
|
573
|
+
).toBeInTheDocument();
|
|
564
574
|
});
|
|
565
575
|
|
|
566
|
-
it("should navigate on pressing the enter key", () => {
|
|
576
|
+
it("should navigate on pressing the enter key", async () => {
|
|
567
577
|
// Arrange
|
|
568
578
|
render(
|
|
569
579
|
<MemoryRouter>
|
|
@@ -579,14 +589,16 @@ describe("Button", () => {
|
|
|
579
589
|
);
|
|
580
590
|
|
|
581
591
|
// Act
|
|
582
|
-
const button = screen.
|
|
583
|
-
userEvent.type(button, "{enter}");
|
|
592
|
+
const button = await screen.findByRole("button");
|
|
593
|
+
await userEvent.type(button, "{enter}");
|
|
584
594
|
|
|
585
595
|
// Assert
|
|
586
|
-
expect(
|
|
596
|
+
expect(
|
|
597
|
+
await screen.findByText("Hello, world!"),
|
|
598
|
+
).toBeInTheDocument();
|
|
587
599
|
});
|
|
588
600
|
|
|
589
|
-
test("beforeNav rejection blocks client-side navigation ", () => {
|
|
601
|
+
test("beforeNav rejection blocks client-side navigation ", async () => {
|
|
590
602
|
// Arrange
|
|
591
603
|
render(
|
|
592
604
|
<MemoryRouter>
|
|
@@ -604,8 +616,8 @@ describe("Button", () => {
|
|
|
604
616
|
);
|
|
605
617
|
|
|
606
618
|
// Act
|
|
607
|
-
const button = screen.
|
|
608
|
-
userEvent.type(button, "{enter}");
|
|
619
|
+
const button = await screen.findByRole("button");
|
|
620
|
+
await userEvent.type(button, "{enter}");
|
|
609
621
|
|
|
610
622
|
// Assert
|
|
611
623
|
expect(screen.queryByText("Hello, world!")).not.toBeInTheDocument();
|
|
@@ -629,16 +641,18 @@ describe("Button", () => {
|
|
|
629
641
|
);
|
|
630
642
|
|
|
631
643
|
// Act
|
|
632
|
-
const button = screen.
|
|
633
|
-
userEvent.type(button, "{enter}");
|
|
644
|
+
const button = await screen.findByRole("button");
|
|
645
|
+
await userEvent.type(button, "{enter}");
|
|
634
646
|
|
|
635
647
|
// Assert
|
|
636
|
-
await waitFor(() => {
|
|
637
|
-
expect(
|
|
648
|
+
await waitFor(async () => {
|
|
649
|
+
expect(
|
|
650
|
+
await screen.findByText("Hello, world!"),
|
|
651
|
+
).toBeInTheDocument();
|
|
638
652
|
});
|
|
639
653
|
});
|
|
640
654
|
|
|
641
|
-
test("safeWithNav with skipClientNav=true waits for promise resolution", () => {
|
|
655
|
+
test("safeWithNav with skipClientNav=true waits for promise resolution", async () => {
|
|
642
656
|
// Arrange
|
|
643
657
|
jest.spyOn(window.location, "assign");
|
|
644
658
|
render(
|
|
@@ -661,8 +675,8 @@ describe("Button", () => {
|
|
|
661
675
|
);
|
|
662
676
|
|
|
663
677
|
// Act
|
|
664
|
-
const button = screen.
|
|
665
|
-
userEvent.type(button, "{enter}");
|
|
678
|
+
const button = await screen.findByRole("button");
|
|
679
|
+
await userEvent.type(button, "{enter}");
|
|
666
680
|
|
|
667
681
|
// Assert
|
|
668
682
|
expect(window.location.assign).toHaveBeenCalledWith("/foo");
|
|
@@ -691,8 +705,8 @@ describe("Button", () => {
|
|
|
691
705
|
);
|
|
692
706
|
|
|
693
707
|
// Act
|
|
694
|
-
const button = screen.
|
|
695
|
-
userEvent.type(button, "{enter}");
|
|
708
|
+
const button = await screen.findByRole("button");
|
|
709
|
+
await userEvent.type(button, "{enter}");
|
|
696
710
|
|
|
697
711
|
// Assert
|
|
698
712
|
await waitFor(() => {
|
|
@@ -724,8 +738,8 @@ describe("Button", () => {
|
|
|
724
738
|
);
|
|
725
739
|
|
|
726
740
|
// Act
|
|
727
|
-
const button = screen.
|
|
728
|
-
userEvent.type(button, "{enter}");
|
|
741
|
+
const button = await screen.findByRole("button");
|
|
742
|
+
await userEvent.type(button, "{enter}");
|
|
729
743
|
|
|
730
744
|
// Assert
|
|
731
745
|
await waitFor(() => {
|
|
@@ -738,19 +752,19 @@ describe("Button", () => {
|
|
|
738
752
|
});
|
|
739
753
|
|
|
740
754
|
describe("button focus", () => {
|
|
741
|
-
test("primary button can have focus", () => {
|
|
755
|
+
test("primary button can have focus", async () => {
|
|
742
756
|
// Arrange
|
|
743
757
|
render(<Button testId={"button-focus-test"}>Label</Button>);
|
|
744
758
|
|
|
745
759
|
// Act
|
|
746
|
-
const button = screen.
|
|
760
|
+
const button = await screen.findByTestId("button-focus-test");
|
|
747
761
|
button.focus();
|
|
748
762
|
|
|
749
763
|
// Assert
|
|
750
764
|
expect(button).toHaveFocus();
|
|
751
765
|
});
|
|
752
766
|
|
|
753
|
-
test("primary button can have focus when disabled", () => {
|
|
767
|
+
test("primary button can have focus when disabled", async () => {
|
|
754
768
|
// Arrange
|
|
755
769
|
render(
|
|
756
770
|
<Button disabled={true} testId={"button-focus-test"}>
|
|
@@ -759,14 +773,14 @@ describe("Button", () => {
|
|
|
759
773
|
);
|
|
760
774
|
|
|
761
775
|
// Act
|
|
762
|
-
const button = screen.
|
|
776
|
+
const button = await screen.findByTestId("button-focus-test");
|
|
763
777
|
button.focus();
|
|
764
778
|
|
|
765
779
|
// Assert
|
|
766
780
|
expect(button).toHaveFocus();
|
|
767
781
|
});
|
|
768
782
|
|
|
769
|
-
test("tertiary button can have focus when disabled", () => {
|
|
783
|
+
test("tertiary button can have focus when disabled", async () => {
|
|
770
784
|
// Arrange
|
|
771
785
|
render(
|
|
772
786
|
<Button
|
|
@@ -779,7 +793,7 @@ describe("Button", () => {
|
|
|
779
793
|
);
|
|
780
794
|
|
|
781
795
|
// Act
|
|
782
|
-
const button = screen.
|
|
796
|
+
const button = await screen.findByTestId("button-focus-test");
|
|
783
797
|
button.focus();
|
|
784
798
|
|
|
785
799
|
// Assert
|
|
@@ -788,7 +802,7 @@ describe("Button", () => {
|
|
|
788
802
|
});
|
|
789
803
|
|
|
790
804
|
describe("type='submit'", () => {
|
|
791
|
-
test("submit button within form via click", () => {
|
|
805
|
+
test("submit button within form via click", async () => {
|
|
792
806
|
// Arrange
|
|
793
807
|
const submitFnMock = jest.fn();
|
|
794
808
|
render(
|
|
@@ -798,14 +812,14 @@ describe("Button", () => {
|
|
|
798
812
|
);
|
|
799
813
|
|
|
800
814
|
// Act
|
|
801
|
-
const button = screen.
|
|
802
|
-
userEvent.click(button);
|
|
815
|
+
const button = await screen.findByRole("button");
|
|
816
|
+
await userEvent.click(button);
|
|
803
817
|
|
|
804
818
|
// Assert
|
|
805
819
|
expect(submitFnMock).toHaveBeenCalled();
|
|
806
820
|
});
|
|
807
821
|
|
|
808
|
-
test("submit button within form via keyboard", () => {
|
|
822
|
+
test("submit button within form via keyboard", async () => {
|
|
809
823
|
// Arrange
|
|
810
824
|
const submitFnMock = jest.fn();
|
|
811
825
|
render(
|
|
@@ -815,21 +829,21 @@ describe("Button", () => {
|
|
|
815
829
|
);
|
|
816
830
|
|
|
817
831
|
// Act
|
|
818
|
-
const button = screen.
|
|
819
|
-
userEvent.type(button, "{enter}");
|
|
832
|
+
const button = await screen.findByRole("button");
|
|
833
|
+
await userEvent.type(button, "{enter}");
|
|
820
834
|
|
|
821
835
|
// Assert
|
|
822
836
|
expect(submitFnMock).toHaveBeenCalled();
|
|
823
837
|
});
|
|
824
838
|
|
|
825
|
-
test("submit button doesn't break if it's not in a form", () => {
|
|
839
|
+
test("submit button doesn't break if it's not in a form", async () => {
|
|
826
840
|
// Arrange
|
|
827
841
|
render(<Button type="submit">Click me!</Button>);
|
|
828
842
|
|
|
829
843
|
// Act
|
|
830
|
-
expect(() => {
|
|
844
|
+
expect(async () => {
|
|
831
845
|
// Assert
|
|
832
|
-
userEvent.click(screen.
|
|
846
|
+
await userEvent.click(await screen.findByRole("button"));
|
|
833
847
|
}).not.toThrow();
|
|
834
848
|
});
|
|
835
849
|
});
|