@@ -138,6 +138,11 @@ ruleTester.run(RULE_NAME, rule, {
138
138
matcher : '.toBeInTheDocument()' ,
139
139
assertionType : 'presence' ,
140
140
} ) ,
141
+ ...getValidAssertions ( {
142
+ query : queryName ,
143
+ matcher : '.toBeOnTheScreen()' ,
144
+ assertionType : 'presence' ,
145
+ } ) ,
141
146
...getValidAssertions ( {
142
147
query : queryName ,
143
148
matcher : '.toBeTruthy()' ,
@@ -191,6 +196,12 @@ ruleTester.run(RULE_NAME, rule, {
191
196
shouldUseScreen : true ,
192
197
assertionType : 'presence' ,
193
198
} ) ,
199
+ ...getValidAssertions ( {
200
+ query : queryName ,
201
+ matcher : '.toBeOnTheScreen()' ,
202
+ shouldUseScreen : true ,
203
+ assertionType : 'presence' ,
204
+ } ) ,
194
205
...getValidAssertions ( {
195
206
query : queryName ,
196
207
matcher : '.toBeTruthy()' ,
@@ -251,6 +262,11 @@ ruleTester.run(RULE_NAME, rule, {
251
262
matcher : '.toBeInTheDocument()' ,
252
263
assertionType : 'presence' ,
253
264
} ) ,
265
+ ...getValidAssertions ( {
266
+ query : queryName ,
267
+ matcher : '.toBeOnTheScreen()' ,
268
+ assertionType : 'presence' ,
269
+ } ) ,
254
270
...getValidAssertions ( {
255
271
query : queryName ,
256
272
matcher : '.toBeTruthy()' ,
@@ -304,6 +320,12 @@ ruleTester.run(RULE_NAME, rule, {
304
320
shouldUseScreen : true ,
305
321
assertionType : 'presence' ,
306
322
} ) ,
323
+ ...getValidAssertions ( {
324
+ query : queryName ,
325
+ matcher : '.toBeOnTheScreen()' ,
326
+ shouldUseScreen : true ,
327
+ assertionType : 'presence' ,
328
+ } ) ,
307
329
...getValidAssertions ( {
308
330
query : queryName ,
309
331
matcher : '.toBeTruthy()' ,
@@ -374,6 +396,11 @@ ruleTester.run(RULE_NAME, rule, {
374
396
matcher : '.not.toBeInTheDocument()' ,
375
397
assertionType : 'absence' ,
376
398
} ) ,
399
+ ...getValidAssertions ( {
400
+ query : queryName ,
401
+ matcher : '.not.toBeOnTheScreen()' ,
402
+ assertionType : 'absence' ,
403
+ } ) ,
377
404
...getValidAssertions ( {
378
405
query : queryName ,
379
406
matcher : '.not.toBeTruthy()' ,
@@ -419,6 +446,12 @@ ruleTester.run(RULE_NAME, rule, {
419
446
shouldUseScreen : true ,
420
447
assertionType : 'absence' ,
421
448
} ) ,
449
+ ...getValidAssertions ( {
450
+ query : queryName ,
451
+ matcher : '.not.toBeOnTheScreen()' ,
452
+ shouldUseScreen : true ,
453
+ assertionType : 'absence' ,
454
+ } ) ,
422
455
...getValidAssertions ( {
423
456
query : queryName ,
424
457
matcher : '.not.toBeTruthy()' ,
@@ -465,6 +498,11 @@ ruleTester.run(RULE_NAME, rule, {
465
498
matcher : '.not.toBeInTheDocument()' ,
466
499
assertionType : 'absence' ,
467
500
} ) ,
501
+ ...getValidAssertions ( {
502
+ query : queryName ,
503
+ matcher : '.not.toBeOnTheScreen()' ,
504
+ assertionType : 'absence' ,
505
+ } ) ,
468
506
...getValidAssertions ( {
469
507
query : queryName ,
470
508
matcher : '.not.toBeTruthy()' ,
@@ -510,6 +548,12 @@ ruleTester.run(RULE_NAME, rule, {
510
548
shouldUseScreen : true ,
511
549
assertionType : 'absence' ,
512
550
} ) ,
551
+ ...getValidAssertions ( {
552
+ query : queryName ,
553
+ matcher : '.not.toBeOnTheScreen()' ,
554
+ shouldUseScreen : true ,
555
+ assertionType : 'absence' ,
556
+ } ) ,
513
557
...getValidAssertions ( {
514
558
query : queryName ,
515
559
matcher : '.not.toBeTruthy()' ,
@@ -557,6 +601,11 @@ ruleTester.run(RULE_NAME, rule, {
557
601
matcher : '.not.toBeInTheDocument' ,
558
602
assertionType : 'absence' ,
559
603
} ) ,
604
+ getDisabledValidAssertion ( {
605
+ query : queryName ,
606
+ matcher : '.not.toBeOnTheScreen' ,
607
+ assertionType : 'absence' ,
608
+ } ) ,
560
609
getDisabledValidAssertion ( {
561
610
query : queryName ,
562
611
matcher : '.not.toBeTruthy()' ,
@@ -592,6 +641,12 @@ ruleTester.run(RULE_NAME, rule, {
592
641
shouldUseScreen : true ,
593
642
assertionType : 'absence' ,
594
643
} ) ,
644
+ getDisabledValidAssertion ( {
645
+ query : queryName ,
646
+ matcher : '.not.toBeOnTheScreen' ,
647
+ shouldUseScreen : true ,
648
+ assertionType : 'absence' ,
649
+ } ) ,
595
650
getDisabledValidAssertion ( {
596
651
query : queryName ,
597
652
matcher : '.not.toBeTruthy()' ,
@@ -626,6 +681,11 @@ ruleTester.run(RULE_NAME, rule, {
626
681
matcher : '.not.toBeInTheDocument' ,
627
682
assertionType : 'absence' ,
628
683
} ) ,
684
+ getDisabledValidAssertion ( {
685
+ query : queryName ,
686
+ matcher : '.not.toBeOnTheScreen' ,
687
+ assertionType : 'absence' ,
688
+ } ) ,
629
689
getDisabledValidAssertion ( {
630
690
query : queryName ,
631
691
matcher : '.not.toBeTruthy()' ,
@@ -661,6 +721,12 @@ ruleTester.run(RULE_NAME, rule, {
661
721
shouldUseScreen : true ,
662
722
assertionType : 'absence' ,
663
723
} ) ,
724
+ getDisabledValidAssertion ( {
725
+ query : queryName ,
726
+ matcher : '.not.toBeOnTheScreen' ,
727
+ shouldUseScreen : true ,
728
+ assertionType : 'absence' ,
729
+ } ) ,
664
730
getDisabledValidAssertion ( {
665
731
query : queryName ,
666
732
matcher : '.not.toBeTruthy()' ,
@@ -695,6 +761,11 @@ ruleTester.run(RULE_NAME, rule, {
695
761
matcher : '.toBeInTheDocument()' ,
696
762
assertionType : 'presence' ,
697
763
} ) ,
764
+ getDisabledValidAssertion ( {
765
+ query : queryName ,
766
+ matcher : '.toBeOnTheScreen()' ,
767
+ assertionType : 'presence' ,
768
+ } ) ,
698
769
getDisabledValidAssertion ( {
699
770
query : queryName ,
700
771
matcher : '.not.toBeFalsy()' ,
@@ -730,6 +801,12 @@ ruleTester.run(RULE_NAME, rule, {
730
801
shouldUseScreen : true ,
731
802
assertionType : 'presence' ,
732
803
} ) ,
804
+ getDisabledValidAssertion ( {
805
+ query : queryName ,
806
+ matcher : '.toBeOnTheScreen()' ,
807
+ shouldUseScreen : true ,
808
+ assertionType : 'presence' ,
809
+ } ) ,
733
810
getDisabledValidAssertion ( {
734
811
query : queryName ,
735
812
matcher : '.not.toBeFalsy()' ,
@@ -764,6 +841,11 @@ ruleTester.run(RULE_NAME, rule, {
764
841
matcher : '.toBeInTheDocument()' ,
765
842
assertionType : 'presence' ,
766
843
} ) ,
844
+ getDisabledValidAssertion ( {
845
+ query : queryName ,
846
+ matcher : '.toBeOnTheScreen()' ,
847
+ assertionType : 'presence' ,
848
+ } ) ,
767
849
getDisabledValidAssertion ( {
768
850
query : queryName ,
769
851
matcher : '.not.toBeFalsy()' ,
@@ -799,6 +881,12 @@ ruleTester.run(RULE_NAME, rule, {
799
881
shouldUseScreen : true ,
800
882
assertionType : 'presence' ,
801
883
} ) ,
884
+ getDisabledValidAssertion ( {
885
+ query : queryName ,
886
+ matcher : '.toBeOnTheScreen()' ,
887
+ shouldUseScreen : true ,
888
+ assertionType : 'presence' ,
889
+ } ) ,
802
890
getDisabledValidAssertion ( {
803
891
query : queryName ,
804
892
matcher : '.not.toBeFalsy()' ,
@@ -867,6 +955,12 @@ ruleTester.run(RULE_NAME, rule, {
867
955
messageId : 'wrongAbsenceQuery' ,
868
956
assertionType : 'absence' ,
869
957
} ) ,
958
+ ...getInvalidAssertions ( {
959
+ query : queryName ,
960
+ matcher : '.not.toBeOnTheScreen()' ,
961
+ messageId : 'wrongAbsenceQuery' ,
962
+ assertionType : 'absence' ,
963
+ } ) ,
870
964
...getInvalidAssertions ( {
871
965
query : queryName ,
872
966
matcher : '.not.toBeTruthy()' ,
@@ -907,6 +1001,13 @@ ruleTester.run(RULE_NAME, rule, {
907
1001
shouldUseScreen : true ,
908
1002
assertionType : 'absence' ,
909
1003
} ) ,
1004
+ ...getInvalidAssertions ( {
1005
+ query : queryName ,
1006
+ matcher : '.not.toBeOnTheScreen()' ,
1007
+ messageId : 'wrongAbsenceQuery' ,
1008
+ shouldUseScreen : true ,
1009
+ assertionType : 'absence' ,
1010
+ } ) ,
910
1011
...getInvalidAssertions ( {
911
1012
query : queryName ,
912
1013
matcher : '.not.toBeTruthy()' ,
@@ -946,6 +1047,12 @@ ruleTester.run(RULE_NAME, rule, {
946
1047
messageId : 'wrongAbsenceQuery' ,
947
1048
assertionType : 'absence' ,
948
1049
} ) ,
1050
+ ...getInvalidAssertions ( {
1051
+ query : queryName ,
1052
+ matcher : '.not.toBeOnTheScreen()' ,
1053
+ messageId : 'wrongAbsenceQuery' ,
1054
+ assertionType : 'absence' ,
1055
+ } ) ,
949
1056
...getInvalidAssertions ( {
950
1057
query : queryName ,
951
1058
matcher : '.not.toBeTruthy()' ,
@@ -986,6 +1093,13 @@ ruleTester.run(RULE_NAME, rule, {
986
1093
shouldUseScreen : true ,
987
1094
assertionType : 'absence' ,
988
1095
} ) ,
1096
+ ...getInvalidAssertions ( {
1097
+ query : queryName ,
1098
+ matcher : '.not.toBeOnTheScreen()' ,
1099
+ messageId : 'wrongAbsenceQuery' ,
1100
+ shouldUseScreen : true ,
1101
+ assertionType : 'absence' ,
1102
+ } ) ,
989
1103
...getInvalidAssertions ( {
990
1104
query : queryName ,
991
1105
matcher : '.not.toBeTruthy()' ,
@@ -1025,6 +1139,12 @@ ruleTester.run(RULE_NAME, rule, {
1025
1139
messageId : 'wrongPresenceQuery' ,
1026
1140
assertionType : 'presence' ,
1027
1141
} ) ,
1142
+ ...getInvalidAssertions ( {
1143
+ query : queryName ,
1144
+ matcher : '.toBeOnTheScreen()' ,
1145
+ messageId : 'wrongPresenceQuery' ,
1146
+ assertionType : 'presence' ,
1147
+ } ) ,
1028
1148
...getInvalidAssertions ( {
1029
1149
query : queryName ,
1030
1150
matcher : '.not.toBeFalsy()' ,
@@ -1065,6 +1185,13 @@ ruleTester.run(RULE_NAME, rule, {
1065
1185
shouldUseScreen : true ,
1066
1186
assertionType : 'presence' ,
1067
1187
} ) ,
1188
+ ...getInvalidAssertions ( {
1189
+ query : queryName ,
1190
+ matcher : '.toBeOnTheScreen()' ,
1191
+ messageId : 'wrongPresenceQuery' ,
1192
+ shouldUseScreen : true ,
1193
+ assertionType : 'presence' ,
1194
+ } ) ,
1068
1195
...getInvalidAssertions ( {
1069
1196
query : queryName ,
1070
1197
matcher : '.not.toBeFalsy()' ,
@@ -1104,6 +1231,12 @@ ruleTester.run(RULE_NAME, rule, {
1104
1231
messageId : 'wrongPresenceQuery' ,
1105
1232
assertionType : 'presence' ,
1106
1233
} ) ,
1234
+ ...getInvalidAssertions ( {
1235
+ query : queryName ,
1236
+ matcher : '.toBeOnTheScreen()' ,
1237
+ messageId : 'wrongPresenceQuery' ,
1238
+ assertionType : 'presence' ,
1239
+ } ) ,
1107
1240
...getInvalidAssertions ( {
1108
1241
query : queryName ,
1109
1242
matcher : '.not.toBeFalsy()' ,
@@ -1144,6 +1277,13 @@ ruleTester.run(RULE_NAME, rule, {
1144
1277
shouldUseScreen : true ,
1145
1278
assertionType : 'presence' ,
1146
1279
} ) ,
1280
+ ...getInvalidAssertions ( {
1281
+ query : queryName ,
1282
+ matcher : '.toBeOnTheScreen()' ,
1283
+ messageId : 'wrongPresenceQuery' ,
1284
+ shouldUseScreen : true ,
1285
+ assertionType : 'presence' ,
1286
+ } ) ,
1147
1287
...getInvalidAssertions ( {
1148
1288
query : queryName ,
1149
1289
matcher : '.not.toBeFalsy()' ,
@@ -1165,21 +1305,43 @@ ruleTester.run(RULE_NAME, rule, {
1165
1305
code : 'expect(screen.getAllByText("button")[1]).not.toBeInTheDocument()' ,
1166
1306
errors : [ { messageId : 'wrongAbsenceQuery' , line : 1 , column : 15 } ] ,
1167
1307
} ,
1308
+ {
1309
+ code : 'expect(screen.getAllByText("button")[1]).not.toBeOnTheScreen()' ,
1310
+ errors : [ { messageId : 'wrongAbsenceQuery' , line : 1 , column : 15 } ] ,
1311
+ } ,
1168
1312
{
1169
1313
code : 'expect(screen.queryAllByText("button")[1]).toBeInTheDocument()' ,
1170
1314
errors : [ { messageId : 'wrongPresenceQuery' , line : 1 , column : 15 } ] ,
1171
1315
} ,
1316
+ {
1317
+ code : 'expect(screen.queryAllByText("button")[1]).toBeOnTheScreen()' ,
1318
+ errors : [ { messageId : 'wrongPresenceQuery' , line : 1 , column : 15 } ] ,
1319
+ } ,
1172
1320
{
1173
1321
code : `
1174
1322
// case: asserting presence incorrectly with custom queryBy* query
1175
1323
expect(queryByCustomQuery("button")).toBeInTheDocument()
1324
+ ` ,
1325
+ errors : [ { messageId : 'wrongPresenceQuery' , line : 3 , column : 16 } ] ,
1326
+ } ,
1327
+ {
1328
+ code : `
1329
+ // case: asserting presence incorrectly with custom queryBy* query
1330
+ expect(queryByCustomQuery("button")).toBeOnTheScreen()
1176
1331
` ,
1177
1332
errors : [ { messageId : 'wrongPresenceQuery' , line : 3 , column : 16 } ] ,
1178
1333
} ,
1179
1334
{
1180
1335
code : `
1181
1336
// case: asserting absence incorrectly with custom getBy* query
1182
1337
expect(getByCustomQuery("button")).not.toBeInTheDocument()
1338
+ ` ,
1339
+ errors : [ { messageId : 'wrongAbsenceQuery' , line : 3 , column : 16 } ] ,
1340
+ } ,
1341
+ {
1342
+ code : `
1343
+ // case: asserting absence incorrectly with custom getBy* query
1344
+ expect(getByCustomQuery("button")).not.toBeOnTheScreen()
1183
1345
` ,
1184
1346
errors : [ { messageId : 'wrongAbsenceQuery' , line : 3 , column : 16 } ] ,
1185
1347
} ,
@@ -1191,6 +1353,17 @@ ruleTester.run(RULE_NAME, rule, {
1191
1353
// case: asserting presence incorrectly importing custom module
1192
1354
import 'test-utils'
1193
1355
expect(queryByRole("button")).toBeInTheDocument()
1356
+ ` ,
1357
+ errors : [ { line : 4 , column : 14 , messageId : 'wrongPresenceQuery' } ] ,
1358
+ } ,
1359
+ {
1360
+ settings : {
1361
+ 'testing-library/utils-module' : 'test-utils' ,
1362
+ } ,
1363
+ code : `
1364
+ // case: asserting presence incorrectly importing custom module
1365
+ import 'test-utils'
1366
+ expect(queryByRole("button")).toBeOnTheScreen()
1194
1367
` ,
1195
1368
errors : [ { line : 4 , column : 14 , messageId : 'wrongPresenceQuery' } ] ,
1196
1369
} ,
@@ -1202,6 +1375,17 @@ ruleTester.run(RULE_NAME, rule, {
1202
1375
// case: asserting absence incorrectly importing custom module
1203
1376
import 'test-utils'
1204
1377
expect(getByRole("button")).not.toBeInTheDocument()
1378
+ ` ,
1379
+ errors : [ { line : 4 , column : 14 , messageId : 'wrongAbsenceQuery' } ] ,
1380
+ } ,
1381
+ {
1382
+ settings : {
1383
+ 'testing-library/utils-module' : 'test-utils' ,
1384
+ } ,
1385
+ code : `
1386
+ // case: asserting absence incorrectly importing custom module
1387
+ import 'test-utils'
1388
+ expect(getByRole("button")).not.toBeOnTheScreen()
1205
1389
` ,
1206
1390
errors : [ { line : 4 , column : 14 , messageId : 'wrongAbsenceQuery' } ] ,
1207
1391
} ,
@@ -1247,5 +1431,47 @@ ruleTester.run(RULE_NAME, rule, {
1247
1431
{ line : 3 , column : 48 , messageId : 'wrongPresenceQuery' } ,
1248
1432
] ,
1249
1433
} ,
1434
+ {
1435
+ code : `
1436
+ // case: asserting within check does still work with improper outer clause
1437
+ expect(within(screen.getByRole("button")).getByText("Hello")).not.toBeOnTheScreen()` ,
1438
+ errors : [ { line : 3 , column : 46 , messageId : 'wrongAbsenceQuery' } ] ,
1439
+ } ,
1440
+ {
1441
+ code : `
1442
+ // case: asserting within check does still work with improper outer clause
1443
+ expect(within(screen.getByRole("button")).queryByText("Hello")).toBeOnTheScreen()` ,
1444
+ errors : [ { line : 3 , column : 46 , messageId : 'wrongPresenceQuery' } ] ,
1445
+ } ,
1446
+ {
1447
+ code : `
1448
+ // case: asserting within check does still work with improper outer clause and improper inner clause
1449
+ expect(within(screen.queryByRole("button")).getByText("Hello")).not.toBeOnTheScreen()` ,
1450
+ errors : [
1451
+ { line : 3 , column : 25 , messageId : 'wrongPresenceQuery' } ,
1452
+ { line : 3 , column : 48 , messageId : 'wrongAbsenceQuery' } ,
1453
+ ] ,
1454
+ } ,
1455
+ {
1456
+ code : `
1457
+ // case: asserting within check does still work with proper outer clause and improper inner clause
1458
+ expect(within(screen.queryByRole("button")).queryByText("Hello")).not.toBeOnTheScreen()` ,
1459
+ errors : [ { line : 3 , column : 25 , messageId : 'wrongPresenceQuery' } ] ,
1460
+ } ,
1461
+ {
1462
+ code : `
1463
+ // case: asserting within check does still work with proper outer clause and improper inner clause
1464
+ expect(within(screen.queryByRole("button")).getByText("Hello")).toBeOnTheScreen()` ,
1465
+ errors : [ { line : 3 , column : 25 , messageId : 'wrongPresenceQuery' } ] ,
1466
+ } ,
1467
+ {
1468
+ code : `
1469
+ // case: asserting within check does still work with improper outer clause and improper inner clause
1470
+ expect(within(screen.queryByRole("button")).queryByText("Hello")).toBeOnTheScreen()` ,
1471
+ errors : [
1472
+ { line : 3 , column : 25 , messageId : 'wrongPresenceQuery' } ,
1473
+ { line : 3 , column : 48 , messageId : 'wrongPresenceQuery' } ,
1474
+ ] ,
1475
+ } ,
1250
1476
] ,
1251
1477
} ) ;
0 commit comments