1095 lines
37 KiB
Markdown
Raw Normal View History

# Instructions
- Following Playwright test failed.
- Explain why, be concise, respect Playwright best practices.
- Provide a snippet of code with the fix, if possible.
# Test info
- Name: all.spec.js >> modular unit tests and benchmark
- Location: test/all.spec.js:5:1
# Error details
```
Error: expect(received).toBeLessThan(expected)
Expected: < 70.92
Received: 119.90000009536743
```
# Page snapshot
```yaml
- list [ref=e2]:
- listitem [ref=e3]: item 0
- listitem [ref=e4]: item 1
- listitem [ref=e5]: item 2
- listitem [ref=e6]: item 3
- listitem [ref=e7]: item 4
- listitem [ref=e8]: item 5
- listitem [ref=e9]: item 6
- listitem [ref=e10]: item 7
- listitem [ref=e11]: item 8
- listitem [ref=e12]: item 9
- listitem [ref=e13]: item 10
- listitem [ref=e14]: item 11
- listitem [ref=e15]: item 12
- listitem [ref=e16]: item 13
- listitem [ref=e17]: item 14
- listitem [ref=e18]: item 15
- listitem [ref=e19]: item 16
- listitem [ref=e20]: item 17
- listitem [ref=e21]: item 18
- listitem [ref=e22]: item 19
- listitem [ref=e23]: item 20
- listitem [ref=e24]: item 21
- listitem [ref=e25]: item 22
- listitem [ref=e26]: item 23
- listitem [ref=e27]: item 24
- listitem [ref=e28]: item 25
- listitem [ref=e29]: item 26
- listitem [ref=e30]: item 27
- listitem [ref=e31]: item 28
- listitem [ref=e32]: item 29
- listitem [ref=e33]: item 30
- listitem [ref=e34]: item 31
- listitem [ref=e35]: item 32
- listitem [ref=e36]: item 33
- listitem [ref=e37]: item 34
- listitem [ref=e38]: item 35
- listitem [ref=e39]: item 36
- listitem [ref=e40]: item 37
- listitem [ref=e41]: item 38
- listitem [ref=e42]: item 39
- listitem [ref=e43]: item 40
- listitem [ref=e44]: item 41
- listitem [ref=e45]: item 42
- listitem [ref=e46]: item 43
- listitem [ref=e47]: item 44
- listitem [ref=e48]: item 45
- listitem [ref=e49]: item 46
- listitem [ref=e50]: item 47
- listitem [ref=e51]: item 48
- listitem [ref=e52]: item 49
- listitem [ref=e53]: item 50
- listitem [ref=e54]: item 51
- listitem [ref=e55]: item 52
- listitem [ref=e56]: item 53
- listitem [ref=e57]: item 54
- listitem [ref=e58]: item 55
- listitem [ref=e59]: item 56
- listitem [ref=e60]: item 57
- listitem [ref=e61]: item 58
- listitem [ref=e62]: item 59
- listitem [ref=e63]: item 60
- listitem [ref=e64]: item 61
- listitem [ref=e65]: item 62
- listitem [ref=e66]: item 63
- listitem [ref=e67]: item 64
- listitem [ref=e68]: item 65
- listitem [ref=e69]: item 66
- listitem [ref=e70]: item 67
- listitem [ref=e71]: item 68
- listitem [ref=e72]: item 69
- listitem [ref=e73]: item 70
- listitem [ref=e74]: item 71
- listitem [ref=e75]: item 72
- listitem [ref=e76]: item 73
- listitem [ref=e77]: item 74
- listitem [ref=e78]: item 75
- listitem [ref=e79]: item 76
- listitem [ref=e80]: item 77
- listitem [ref=e81]: item 78
- listitem [ref=e82]: item 79
- listitem [ref=e83]: item 80
- listitem [ref=e84]: item 81
- listitem [ref=e85]: item 82
- listitem [ref=e86]: item 83
- listitem [ref=e87]: item 84
- listitem [ref=e88]: item 85
- listitem [ref=e89]: item 86
- listitem [ref=e90]: item 87
- listitem [ref=e91]: item 88
- listitem [ref=e92]: item 89
- listitem [ref=e93]: item 90
- listitem [ref=e94]: item 91
- listitem [ref=e95]: item 92
- listitem [ref=e96]: item 93
- listitem [ref=e97]: item 94
- listitem [ref=e98]: item 95
- listitem [ref=e99]: item 96
- listitem [ref=e100]: item 97
- listitem [ref=e101]: item 98
- listitem [ref=e102]: item 99
- listitem [ref=e103]: item 100
- listitem [ref=e104]: item 101
- listitem [ref=e105]: item 102
- listitem [ref=e106]: item 103
- listitem [ref=e107]: item 104
- listitem [ref=e108]: item 105
- listitem [ref=e109]: item 106
- listitem [ref=e110]: item 107
- listitem [ref=e111]: item 108
- listitem [ref=e112]: item 109
- listitem [ref=e113]: item 110
- listitem [ref=e114]: item 111
- listitem [ref=e115]: item 112
- listitem [ref=e116]: item 113
- listitem [ref=e117]: item 114
- listitem [ref=e118]: item 115
- listitem [ref=e119]: item 116
- listitem [ref=e120]: item 117
- listitem [ref=e121]: item 118
- listitem [ref=e122]: item 119
- listitem [ref=e123]: item 120
- listitem [ref=e124]: item 121
- listitem [ref=e125]: item 122
- listitem [ref=e126]: item 123
- listitem [ref=e127]: item 124
- listitem [ref=e128]: item 125
- listitem [ref=e129]: item 126
- listitem [ref=e130]: item 127
- listitem [ref=e131]: item 128
- listitem [ref=e132]: item 129
- listitem [ref=e133]: item 130
- listitem [ref=e134]: item 131
- listitem [ref=e135]: item 132
- listitem [ref=e136]: item 133
- listitem [ref=e137]: item 134
- listitem [ref=e138]: item 135
- listitem [ref=e139]: item 136
- listitem [ref=e140]: item 137
- listitem [ref=e141]: item 138
- listitem [ref=e142]: item 139
- listitem [ref=e143]: item 140
- listitem [ref=e144]: item 141
- listitem [ref=e145]: item 142
- listitem [ref=e146]: item 143
- listitem [ref=e147]: item 144
- listitem [ref=e148]: item 145
- listitem [ref=e149]: item 146
- listitem [ref=e150]: item 147
- listitem [ref=e151]: item 148
- listitem [ref=e152]: item 149
- listitem [ref=e153]: item 150
- listitem [ref=e154]: item 151
- listitem [ref=e155]: item 152
- listitem [ref=e156]: item 153
- listitem [ref=e157]: item 154
- listitem [ref=e158]: item 155
- listitem [ref=e159]: item 156
- listitem [ref=e160]: item 157
- listitem [ref=e161]: item 158
- listitem [ref=e162]: item 159
- listitem [ref=e163]: item 160
- listitem [ref=e164]: item 161
- listitem [ref=e165]: item 162
- listitem [ref=e166]: item 163
- listitem [ref=e167]: item 164
- listitem [ref=e168]: item 165
- listitem [ref=e169]: item 166
- listitem [ref=e170]: item 167
- listitem [ref=e171]: item 168
- listitem [ref=e172]: item 169
- listitem [ref=e173]: item 170
- listitem [ref=e174]: item 171
- listitem [ref=e175]: item 172
- listitem [ref=e176]: item 173
- listitem [ref=e177]: item 174
- listitem [ref=e178]: item 175
- listitem [ref=e179]: item 176
- listitem [ref=e180]: item 177
- listitem [ref=e181]: item 178
- listitem [ref=e182]: item 179
- listitem [ref=e183]: item 180
- listitem [ref=e184]: item 181
- listitem [ref=e185]: item 182
- listitem [ref=e186]: item 183
- listitem [ref=e187]: item 184
- listitem [ref=e188]: item 185
- listitem [ref=e189]: item 186
- listitem [ref=e190]: item 187
- listitem [ref=e191]: item 188
- listitem [ref=e192]: item 189
- listitem [ref=e193]: item 190
- listitem [ref=e194]: item 191
- listitem [ref=e195]: item 192
- listitem [ref=e196]: item 193
- listitem [ref=e197]: item 194
- listitem [ref=e198]: item 195
- listitem [ref=e199]: item 196
- listitem [ref=e200]: item 197
- listitem [ref=e201]: item 198
- listitem [ref=e202]: item 199
- listitem [ref=e203]: item 200
- listitem [ref=e204]: item 201
- listitem [ref=e205]: item 202
- listitem [ref=e206]: item 203
- listitem [ref=e207]: item 204
- listitem [ref=e208]: item 205
- listitem [ref=e209]: item 206
- listitem [ref=e210]: item 207
- listitem [ref=e211]: item 208
- listitem [ref=e212]: item 209
- listitem [ref=e213]: item 210
- listitem [ref=e214]: item 211
- listitem [ref=e215]: item 212
- listitem [ref=e216]: item 213
- listitem [ref=e217]: item 214
- listitem [ref=e218]: item 215
- listitem [ref=e219]: item 216
- listitem [ref=e220]: item 217
- listitem [ref=e221]: item 218
- listitem [ref=e222]: item 219
- listitem [ref=e223]: item 220
- listitem [ref=e224]: item 221
- listitem [ref=e225]: item 222
- listitem [ref=e226]: item 223
- listitem [ref=e227]: item 224
- listitem [ref=e228]: item 225
- listitem [ref=e229]: item 226
- listitem [ref=e230]: item 227
- listitem [ref=e231]: item 228
- listitem [ref=e232]: item 229
- listitem [ref=e233]: item 230
- listitem [ref=e234]: item 231
- listitem [ref=e235]: item 232
- listitem [ref=e236]: item 233
- listitem [ref=e237]: item 234
- listitem [ref=e238]: item 235
- listitem [ref=e239]: item 236
- listitem [ref=e240]: item 237
- listitem [ref=e241]: item 238
- listitem [ref=e242]: item 239
- listitem [ref=e243]: item 240
- listitem [ref=e244]: item 241
- listitem [ref=e245]: item 242
- listitem [ref=e246]: item 243
- listitem [ref=e247]: item 244
- listitem [ref=e248]: item 245
- listitem [ref=e249]: item 246
- listitem [ref=e250]: item 247
- listitem [ref=e251]: item 248
- listitem [ref=e252]: item 249
- listitem [ref=e253]: item 250
- listitem [ref=e254]: item 251
- listitem [ref=e255]: item 252
- listitem [ref=e256]: item 253
- listitem [ref=e257]: item 254
- listitem [ref=e258]: item 255
- listitem [ref=e259]: item 256
- listitem [ref=e260]: item 257
- listitem [ref=e261]: item 258
- listitem [ref=e262]: item 259
- listitem [ref=e263]: item 260
- listitem [ref=e264]: item 261
- listitem [ref=e265]: item 262
- listitem [ref=e266]: item 263
- listitem [ref=e267]: item 264
- listitem [ref=e268]: item 265
- listitem [ref=e269]: item 266
- listitem [ref=e270]: item 267
- listitem [ref=e271]: item 268
- listitem [ref=e272]: item 269
- listitem [ref=e273]: item 270
- listitem [ref=e274]: item 271
- listitem [ref=e275]: item 272
- listitem [ref=e276]: item 273
- listitem [ref=e277]: item 274
- listitem [ref=e278]: item 275
- listitem [ref=e279]: item 276
- listitem [ref=e280]: item 277
- listitem [ref=e281]: item 278
- listitem [ref=e282]: item 279
- listitem [ref=e283]: item 280
- listitem [ref=e284]: item 281
- listitem [ref=e285]: item 282
- listitem [ref=e286]: item 283
- listitem [ref=e287]: item 284
- listitem [ref=e288]: item 285
- listitem [ref=e289]: item 286
- listitem [ref=e290]: item 287
- listitem [ref=e291]: item 288
- listitem [ref=e292]: item 289
- listitem [ref=e293]: item 290
- listitem [ref=e294]: item 291
- listitem [ref=e295]: item 292
- listitem [ref=e296]: item 293
- listitem [ref=e297]: item 294
- listitem [ref=e298]: item 295
- listitem [ref=e299]: item 296
- listitem [ref=e300]: item 297
- listitem [ref=e301]: item 298
- listitem [ref=e302]: item 299
- listitem [ref=e303]: item 300
- listitem [ref=e304]: item 301
- listitem [ref=e305]: item 302
- listitem [ref=e306]: item 303
- listitem [ref=e307]: item 304
- listitem [ref=e308]: item 305
- listitem [ref=e309]: item 306
- listitem [ref=e310]: item 307
- listitem [ref=e311]: item 308
- listitem [ref=e312]: item 309
- listitem [ref=e313]: item 310
- listitem [ref=e314]: item 311
- listitem [ref=e315]: item 312
- listitem [ref=e316]: item 313
- listitem [ref=e317]: item 314
- listitem [ref=e318]: item 315
- listitem [ref=e319]: item 316
- listitem [ref=e320]: item 317
- listitem [ref=e321]: item 318
- listitem [ref=e322]: item 319
- listitem [ref=e323]: item 320
- listitem [ref=e324]: item 321
- listitem [ref=e325]: item 322
- listitem [ref=e326]: item 323
- listitem [ref=e327]: item 324
- listitem [ref=e328]: item 325
- listitem [ref=e329]: item 326
- listitem [ref=e330]: item 327
- listitem [ref=e331]: item 328
- listitem [ref=e332]: item 329
- listitem [ref=e333]: item 330
- listitem [ref=e334]: item 331
- listitem [ref=e335]: item 332
- listitem [ref=e336]: item 333
- listitem [ref=e337]: item 334
- listitem [ref=e338]: item 335
- listitem [ref=e339]: item 336
- listitem [ref=e340]: item 337
- listitem [ref=e341]: item 338
- listitem [ref=e342]: item 339
- listitem [ref=e343]: item 340
- listitem [ref=e344]: item 341
- listitem [ref=e345]: item 342
- listitem [ref=e346]: item 343
- listitem [ref=e347]: item 344
- listitem [ref=e348]: item 345
- listitem [ref=e349]: item 346
- listitem [ref=e350]: item 347
- listitem [ref=e351]: item 348
- listitem [ref=e352]: item 349
- listitem [ref=e353]: item 350
- listitem [ref=e354]: item 351
- listitem [ref=e355]: item 352
- listitem [ref=e356]: item 353
- listitem [ref=e357]: item 354
- listitem [ref=e358]: item 355
- listitem [ref=e359]: item 356
- listitem [ref=e360]: item 357
- listitem [ref=e361]: item 358
- listitem [ref=e362]: item 359
- listitem [ref=e363]: item 360
- listitem [ref=e364]: item 361
- listitem [ref=e365]: item 362
- listitem [ref=e366]: item 363
- listitem [ref=e367]: item 364
- listitem [ref=e368]: item 365
- listitem [ref=e369]: item 366
- listitem [ref=e370]: item 367
- listitem [ref=e371]: item 368
- listitem [ref=e372]: item 369
- listitem [ref=e373]: item 370
- listitem [ref=e374]: item 371
- listitem [ref=e375]: item 372
- listitem [ref=e376]: item 373
- listitem [ref=e377]: item 374
- listitem [ref=e378]: item 375
- listitem [ref=e379]: item 376
- listitem [ref=e380]: item 377
- listitem [ref=e381]: item 378
- listitem [ref=e382]: item 379
- listitem [ref=e383]: item 380
- listitem [ref=e384]: item 381
- listitem [ref=e385]: item 382
- listitem [ref=e386]: item 383
- listitem [ref=e387]: item 384
- listitem [ref=e388]: item 385
- listitem [ref=e389]: item 386
- listitem [ref=e390]: item 387
- listitem [ref=e391]: item 388
- listitem [ref=e392]: item 389
- listitem [ref=e393]: item 390
- listitem [ref=e394]: item 391
- listitem [ref=e395]: item 392
- listitem [ref=e396]: item 393
- listitem [ref=e397]: item 394
- listitem [ref=e398]: item 395
- listitem [ref=e399]: item 396
- listitem [ref=e400]: item 397
- listitem [ref=e401]: item 398
- listitem [ref=e402]: item 399
- listitem [ref=e403]: item 400
- listitem [ref=e404]: item 401
- listitem [ref=e405]: item 402
- listitem [ref=e406]: item 403
- listitem [ref=e407]: item 404
- listitem [ref=e408]: item 405
- listitem [ref=e409]: item 406
- listitem [ref=e410]: item 407
- listitem [ref=e411]: item 408
- listitem [ref=e412]: item 409
- listitem [ref=e413]: item 410
- listitem [ref=e414]: item 411
- listitem [ref=e415]: item 412
- listitem [ref=e416]: item 413
- listitem [ref=e417]: item 414
- listitem [ref=e418]: item 415
- listitem [ref=e419]: item 416
- listitem [ref=e420]: item 417
- listitem [ref=e421]: item 418
- listitem [ref=e422]: item 419
- listitem [ref=e423]: item 420
- listitem [ref=e424]: item 421
- listitem [ref=e425]: item 422
- listitem [ref=e426]: item 423
- listitem [ref=e427]: item 424
- listitem [ref=e428]: item 425
- listitem [ref=e429]: item 426
- listitem [ref=e430]: item 427
- listitem [ref=e431]: item 428
- listitem [ref=e432]: item 429
- listitem [ref=e433]: item 430
- listitem [ref=e434]: item 431
- listitem [ref=e435]: item 432
- listitem [ref=e436]: item 433
- listitem [ref=e437]: item 434
- listitem [ref=e438]: item 435
- listitem [ref=e439]: item 436
- listitem [ref=e440]: item 437
- listitem [ref=e441]: item 438
- listitem [ref=e442]: item 439
- listitem [ref=e443]: item 440
- listitem [ref=e444]: item 441
- listitem [ref=e445]: item 442
- listitem [ref=e446]: item 443
- listitem [ref=e447]: item 444
- listitem [ref=e448]: item 445
- listitem [ref=e449]: item 446
- listitem [ref=e450]: item 447
- listitem [ref=e451]: item 448
- listitem [ref=e452]: item 449
- listitem [ref=e453]: item 450
- listitem [ref=e454]: item 451
- listitem [ref=e455]: item 452
- listitem [ref=e456]: item 453
- listitem [ref=e457]: item 454
- listitem [ref=e458]: item 455
- listitem [ref=e459]: item 456
- listitem [ref=e460]: item 457
- listitem [ref=e461]: item 458
- listitem [ref=e462]: item 459
- listitem [ref=e463]: item 460
- listitem [ref=e464]: item 461
- listitem [ref=e465]: item 462
- listitem [ref=e466]: item 463
- listitem [ref=e467]: item 464
- listitem [ref=e468]: item 465
- listitem [ref=e469]: item 466
- listitem [ref=e470]: item 467
- listitem [ref=e471]: item 468
- listitem [ref=e472]: item 469
- listitem [ref=e473]: item 470
- listitem [ref=e474]: item 471
- listitem [ref=e475]: item 472
- listitem [ref=e476]: item 473
- listitem [ref=e477]: item 474
- listitem [ref=e478]: item 475
- listitem [ref=e479]: item 476
- listitem [ref=e480]: item 477
- listitem [ref=e481]: item 478
- listitem [ref=e482]: item 479
- listitem [ref=e483]: item 480
- listitem [ref=e484]: item 481
- listitem [ref=e485]: item 482
- listitem [ref=e486]: item 483
- listitem [ref=e487]: item 484
- listitem [ref=e488]: item 485
- listitem [ref=e489]: item 486
- listitem [ref=e490]: item 487
- listitem [ref=e491]: item 488
- listitem [ref=e492]: item 489
- listitem [ref=e493]: item 490
- listitem [ref=e494]: item 491
- listitem [ref=e495]: item 492
- listitem [ref=e496]: item 493
- listitem [ref=e497]: item 494
- listitem [ref=e498]: item 495
- listitem [ref=e499]: item 496
- listitem [ref=e500]: item 497
- listitem [ref=e501]: item 498
- listitem [ref=e502]: item 499
- listitem [ref=e503]: item 500
- listitem [ref=e504]: item 501
- listitem [ref=e505]: item 502
- listitem [ref=e506]: item 503
- listitem [ref=e507]: item 504
- listitem [ref=e508]: item 505
- listitem [ref=e509]: item 506
- listitem [ref=e510]: item 507
- listitem [ref=e511]: item 508
- listitem [ref=e512]: item 509
- listitem [ref=e513]: item 510
- listitem [ref=e514]: item 511
- listitem [ref=e515]: item 512
- listitem [ref=e516]: item 513
- listitem [ref=e517]: item 514
- listitem [ref=e518]: item 515
- listitem [ref=e519]: item 516
- listitem [ref=e520]: item 517
- listitem [ref=e521]: item 518
- listitem [ref=e522]: item 519
- listitem [ref=e523]: item 520
- listitem [ref=e524]: item 521
- listitem [ref=e525]: item 522
- listitem [ref=e526]: item 523
- listitem [ref=e527]: item 524
- listitem [ref=e528]: item 525
- listitem [ref=e529]: item 526
- listitem [ref=e530]: item 527
- listitem [ref=e531]: item 528
- listitem [ref=e532]: item 529
- listitem [ref=e533]: item 530
- listitem [ref=e534]: item 531
- listitem [ref=e535]: item 532
- listitem [ref=e536]: item 533
- listitem [ref=e537]: item 534
- listitem [ref=e538]: item 535
- listitem [ref=e539]: item 536
- listitem [ref=e540]: item 537
- listitem [ref=e541]: item 538
- listitem [ref=e542]: item 539
- listitem [ref=e543]: item 540
- listitem [ref=e544]: item 541
- listitem [ref=e545]: item 542
- listitem [ref=e546]: item 543
- listitem [ref=e547]: item 544
- listitem [ref=e548]: item 545
- listitem [ref=e549]: item 546
- listitem [ref=e550]: item 547
- listitem [ref=e551]: item 548
- listitem [ref=e552]: item 549
- listitem [ref=e553]: item 550
- listitem [ref=e554]: item 551
- listitem [ref=e555]: item 552
- listitem [ref=e556]: item 553
- listitem [ref=e557]: item 554
- listitem [ref=e558]: item 555
- listitem [ref=e559]: item 556
- listitem [ref=e560]: item 557
- listitem [ref=e561]: item 558
- listitem [ref=e562]: item 559
- listitem [ref=e563]: item 560
- listitem [ref=e564]: item 561
- listitem [ref=e565]: item 562
- listitem [ref=e566]: item 563
- listitem [ref=e567]: item 564
- listitem [ref=e568]: item 565
- listitem [ref=e569]: item 566
- listitem [ref=e570]: item 567
- listitem [ref=e571]: item 568
- listitem [ref=e572]: item 569
- listitem [ref=e573]: item 570
- listitem [ref=e574]: item 571
- listitem [ref=e575]: item 572
- listitem [ref=e576]: item 573
- listitem [ref=e577]: item 574
- listitem [ref=e578]: item 575
- listitem [ref=e579]: item 576
- listitem [ref=e580]: item 577
- listitem [ref=e581]: item 578
- listitem [ref=e582]: item 579
- listitem [ref=e583]: item 580
- listitem [ref=e584]: item 581
- listitem [ref=e585]: item 582
- listitem [ref=e586]: item 583
- listitem [ref=e587]: item 584
- listitem [ref=e588]: item 585
- listitem [ref=e589]: item 586
- listitem [ref=e590]: item 587
- listitem [ref=e591]: item 588
- listitem [ref=e592]: item 589
- listitem [ref=e593]: item 590
- listitem [ref=e594]: item 591
- listitem [ref=e595]: item 592
- listitem [ref=e596]: item 593
- listitem [ref=e597]: item 594
- listitem [ref=e598]: item 595
- listitem [ref=e599]: item 596
- listitem [ref=e600]: item 597
- listitem [ref=e601]: item 598
- listitem [ref=e602]: item 599
- listitem [ref=e603]: item 600
- listitem [ref=e604]: item 601
- listitem [ref=e605]: item 602
- listitem [ref=e606]: item 603
- listitem [ref=e607]: item 604
- listitem [ref=e608]: item 605
- listitem [ref=e609]: item 606
- listitem [ref=e610]: item 607
- listitem [ref=e611]: item 608
- listitem [ref=e612]: item 609
- listitem [ref=e613]: item 610
- listitem [ref=e614]: item 611
- listitem [ref=e615]: item 612
- listitem [ref=e616]: item 613
- listitem [ref=e617]: item 614
- listitem [ref=e618]: item 615
- listitem [ref=e619]: item 616
- listitem [ref=e620]: item 617
- listitem [ref=e621]: item 618
- listitem [ref=e622]: item 619
- listitem [ref=e623]: item 620
- listitem [ref=e624]: item 621
- listitem [ref=e625]: item 622
- listitem [ref=e626]: item 623
- listitem [ref=e627]: item 624
- listitem [ref=e628]: item 625
- listitem [ref=e629]: item 626
- listitem [ref=e630]: item 627
- listitem [ref=e631]: item 628
- listitem [ref=e632]: item 629
- listitem [ref=e633]: item 630
- listitem [ref=e634]: item 631
- listitem [ref=e635]: item 632
- listitem [ref=e636]: item 633
- listitem [ref=e637]: item 634
- listitem [ref=e638]: item 635
- listitem [ref=e639]: item 636
- listitem [ref=e640]: item 637
- listitem [ref=e641]: item 638
- listitem [ref=e642]: item 639
- listitem [ref=e643]: item 640
- listitem [ref=e644]: item 641
- listitem [ref=e645]: item 642
- listitem [ref=e646]: item 643
- listitem [ref=e647]: item 644
- listitem [ref=e648]: item 645
- listitem [ref=e649]: item 646
- listitem [ref=e650]: item 647
- listitem [ref=e651]: item 648
- listitem [ref=e652]: item 649
- listitem [ref=e653]: item 650
- listitem [ref=e654]: item 651
- listitem [ref=e655]: item 652
- listitem [ref=e656]: item 653
- listitem [ref=e657]: item 654
- listitem [ref=e658]: item 655
- listitem [ref=e659]: item 656
- listitem [ref=e660]: item 657
- listitem [ref=e661]: item 658
- listitem [ref=e662]: item 659
- listitem [ref=e663]: item 660
- listitem [ref=e664]: item 661
- listitem [ref=e665]: item 662
- listitem [ref=e666]: item 663
- listitem [ref=e667]: item 664
- listitem [ref=e668]: item 665
- listitem [ref=e669]: item 666
- listitem [ref=e670]: item 667
- listitem [ref=e671]: item 668
- listitem [ref=e672]: item 669
- listitem [ref=e673]: item 670
- listitem [ref=e674]: item 671
- listitem [ref=e675]: item 672
- listitem [ref=e676]: item 673
- listitem [ref=e677]: item 674
- listitem [ref=e678]: item 675
- listitem [ref=e679]: item 676
- listitem [ref=e680]: item 677
- listitem [ref=e681]: item 678
- listitem [ref=e682]: item 679
- listitem [ref=e683]: item 680
- listitem [ref=e684]: item 681
- listitem [ref=e685]: item 682
- listitem [ref=e686]: item 683
- listitem [ref=e687]: item 684
- listitem [ref=e688]: item 685
- listitem [ref=e689]: item 686
- listitem [ref=e690]: item 687
- listitem [ref=e691]: item 688
- listitem [ref=e692]: item 689
- listitem [ref=e693]: item 690
- listitem [ref=e694]: item 691
- listitem [ref=e695]: item 692
- listitem [ref=e696]: item 693
- listitem [ref=e697]: item 694
- listitem [ref=e698]: item 695
- listitem [ref=e699]: item 696
- listitem [ref=e700]: item 697
- listitem [ref=e701]: item 698
- listitem [ref=e702]: item 699
- listitem [ref=e703]: item 700
- listitem [ref=e704]: item 701
- listitem [ref=e705]: item 702
- listitem [ref=e706]: item 703
- listitem [ref=e707]: item 704
- listitem [ref=e708]: item 705
- listitem [ref=e709]: item 706
- listitem [ref=e710]: item 707
- listitem [ref=e711]: item 708
- listitem [ref=e712]: item 709
- listitem [ref=e713]: item 710
- listitem [ref=e714]: item 711
- listitem [ref=e715]: item 712
- listitem [ref=e716]: item 713
- listitem [ref=e717]: item 714
- listitem [ref=e718]: item 715
- listitem [ref=e719]: item 716
- listitem [ref=e720]: item 717
- listitem [ref=e721]: item 718
- listitem [ref=e722]: item 719
- listitem [ref=e723]: item 720
- listitem [ref=e724]: item 721
- listitem [ref=e725]: item 722
- listitem [ref=e726]: item 723
- listitem [ref=e727]: item 724
- listitem [ref=e728]: item 725
- listitem [ref=e729]: item 726
- listitem [ref=e730]: item 727
- listitem [ref=e731]: item 728
- listitem [ref=e732]: item 729
- listitem [ref=e733]: item 730
- listitem [ref=e734]: item 731
- listitem [ref=e735]: item 732
- listitem [ref=e736]: item 733
- listitem [ref=e737]: item 734
- listitem [ref=e738]: item 735
- listitem [ref=e739]: item 736
- listitem [ref=e740]: item 737
- listitem [ref=e741]: item 738
- listitem [ref=e742]: item 739
- listitem [ref=e743]: item 740
- listitem [ref=e744]: item 741
- listitem [ref=e745]: item 742
- listitem [ref=e746]: item 743
- listitem [ref=e747]: item 744
- listitem [ref=e748]: item 745
- listitem [ref=e749]: item 746
- listitem [ref=e750]: item 747
- listitem [ref=e751]: item 748
- listitem [ref=e752]: item 749
- listitem [ref=e753]: item 750
- listitem [ref=e754]: item 751
- listitem [ref=e755]: item 752
- listitem [ref=e756]: item 753
- listitem [ref=e757]: item 754
- listitem [ref=e758]: item 755
- listitem [ref=e759]: item 756
- listitem [ref=e760]: item 757
- listitem [ref=e761]: item 758
- listitem [ref=e762]: item 759
- listitem [ref=e763]: item 760
- listitem [ref=e764]: item 761
- listitem [ref=e765]: item 762
- listitem [ref=e766]: item 763
- listitem [ref=e767]: item 764
- listitem [ref=e768]: item 765
- listitem [ref=e769]: item 766
- listitem [ref=e770]: item 767
- listitem [ref=e771]: item 768
- listitem [ref=e772]: item 769
- listitem [ref=e773]: item 770
- listitem [ref=e774]: item 771
- listitem [ref=e775]: item 772
- listitem [ref=e776]: item 773
- listitem [ref=e777]: item 774
- listitem [ref=e778]: item 775
- listitem [ref=e779]: item 776
- listitem [ref=e780]: item 777
- listitem [ref=e781]: item 778
- listitem [ref=e782]: item 779
- listitem [ref=e783]: item 780
- listitem [ref=e784]: item 781
- listitem [ref=e785]: item 782
- listitem [ref=e786]: item 783
- listitem [ref=e787]: item 784
- listitem [ref=e788]: item 785
- listitem [ref=e789]: item 786
- listitem [ref=e790]: item 787
- listitem [ref=e791]: item 788
- listitem [ref=e792]: item 789
- listitem [ref=e793]: item 790
- listitem [ref=e794]: item 791
- listitem [ref=e795]: item 792
- listitem [ref=e796]: item 793
- listitem [ref=e797]: item 794
- listitem [ref=e798]: item 795
- listitem [ref=e799]: item 796
- listitem [ref=e800]: item 797
- listitem [ref=e801]: item 798
- listitem [ref=e802]: item 799
- listitem [ref=e803]: item 800
- listitem [ref=e804]: item 801
- listitem [ref=e805]: item 802
- listitem [ref=e806]: item 803
- listitem [ref=e807]: item 804
- listitem [ref=e808]: item 805
- listitem [ref=e809]: item 806
- listitem [ref=e810]: item 807
- listitem [ref=e811]: item 808
- listitem [ref=e812]: item 809
- listitem [ref=e813]: item 810
- listitem [ref=e814]: item 811
- listitem [ref=e815]: item 812
- listitem [ref=e816]: item 813
- listitem [ref=e817]: item 814
- listitem [ref=e818]: item 815
- listitem [ref=e819]: item 816
- listitem [ref=e820]: item 817
- listitem [ref=e821]: item 818
- listitem [ref=e822]: item 819
- listitem [ref=e823]: item 820
- listitem [ref=e824]: item 821
- listitem [ref=e825]: item 822
- listitem [ref=e826]: item 823
- listitem [ref=e827]: item 824
- listitem [ref=e828]: item 825
- listitem [ref=e829]: item 826
- listitem [ref=e830]: item 827
- listitem [ref=e831]: item 828
- listitem [ref=e832]: item 829
- listitem [ref=e833]: item 830
- listitem [ref=e834]: item 831
- listitem [ref=e835]: item 832
- listitem [ref=e836]: item 833
- listitem [ref=e837]: item 834
- listitem [ref=e838]: item 835
- listitem [ref=e839]: item 836
- listitem [ref=e840]: item 837
- listitem [ref=e841]: item 838
- listitem [ref=e842]: item 839
- listitem [ref=e843]: item 840
- listitem [ref=e844]: item 841
- listitem [ref=e845]: item 842
- listitem [ref=e846]: item 843
- listitem [ref=e847]: item 844
- listitem [ref=e848]: item 845
- listitem [ref=e849]: item 846
- listitem [ref=e850]: item 847
- listitem [ref=e851]: item 848
- listitem [ref=e852]: item 849
- listitem [ref=e853]: item 850
- listitem [ref=e854]: item 851
- listitem [ref=e855]: item 852
- listitem [ref=e856]: item 853
- listitem [ref=e857]: item 854
- listitem [ref=e858]: item 855
- listitem [ref=e859]: item 856
- listitem [ref=e860]: item 857
- listitem [ref=e861]: item 858
- listitem [ref=e862]: item 859
- listitem [ref=e863]: item 860
- listitem [ref=e864]: item 861
- listitem [ref=e865]: item 862
- listitem [ref=e866]: item 863
- listitem [ref=e867]: item 864
- listitem [ref=e868]: item 865
- listitem [ref=e869]: item 866
- listitem [ref=e870]: item 867
- listitem [ref=e871]: item 868
- listitem [ref=e872]: item 869
- listitem [ref=e873]: item 870
- listitem [ref=e874]: item 871
- listitem [ref=e875]: item 872
- listitem [ref=e876]: item 873
- listitem [ref=e877]: item 874
- listitem [ref=e878]: item 875
- listitem [ref=e879]: item 876
- listitem [ref=e880]: item 877
- listitem [ref=e881]: item 878
- listitem [ref=e882]: item 879
- listitem [ref=e883]: item 880
- listitem [ref=e884]: item 881
- listitem [ref=e885]: item 882
- listitem [ref=e886]: item 883
- listitem [ref=e887]: item 884
- listitem [ref=e888]: item 885
- listitem [ref=e889]: item 886
- listitem [ref=e890]: item 887
- listitem [ref=e891]: item 888
- listitem [ref=e892]: item 889
- listitem [ref=e893]: item 890
- listitem [ref=e894]: item 891
- listitem [ref=e895]: item 892
- listitem [ref=e896]: item 893
- listitem [ref=e897]: item 894
- listitem [ref=e898]: item 895
- listitem [ref=e899]: item 896
- listitem [ref=e900]: item 897
- listitem [ref=e901]: item 898
- listitem [ref=e902]: item 899
- listitem [ref=e903]: item 900
- listitem [ref=e904]: item 901
- listitem [ref=e905]: item 902
- listitem [ref=e906]: item 903
- listitem [ref=e907]: item 904
- listitem [ref=e908]: item 905
- listitem [ref=e909]: item 906
- listitem [ref=e910]: item 907
- listitem [ref=e911]: item 908
- listitem [ref=e912]: item 909
- listitem [ref=e913]: item 910
- listitem [ref=e914]: item 911
- listitem [ref=e915]: item 912
- listitem [ref=e916]: item 913
- listitem [ref=e917]: item 914
- listitem [ref=e918]: item 915
- listitem [ref=e919]: item 916
- listitem [ref=e920]: item 917
- listitem [ref=e921]: item 918
- listitem [ref=e922]: item 919
- listitem [ref=e923]: item 920
- listitem [ref=e924]: item 921
- listitem [ref=e925]: item 922
- listitem [ref=e926]: item 923
- listitem [ref=e927]: item 924
- listitem [ref=e928]: item 925
- listitem [ref=e929]: item 926
- listitem [ref=e930]: item 927
- listitem [ref=e931]: item 928
- listitem [ref=e932]: item 929
- listitem [ref=e933]: item 930
- listitem [ref=e934]: item 931
- listitem [ref=e935]: item 932
- listitem [ref=e936]: item 933
- listitem [ref=e937]: item 934
- listitem [ref=e938]: item 935
- listitem [ref=e939]: item 936
- listitem [ref=e940]: item 937
- listitem [ref=e941]: item 938
- listitem [ref=e942]: item 939
- listitem [ref=e943]: item 940
- listitem [ref=e944]: item 941
- listitem [ref=e945]: item 942
- listitem [ref=e946]: item 943
- listitem [ref=e947]: item 944
- listitem [ref=e948]: item 945
- listitem [ref=e949]: item 946
- listitem [ref=e950]: item 947
- listitem [ref=e951]: item 948
- listitem [ref=e952]: item 949
- listitem [ref=e953]: item 950
- listitem [ref=e954]: item 951
- listitem [ref=e955]: item 952
- listitem [ref=e956]: item 953
- listitem [ref=e957]: item 954
- listitem [ref=e958]: item 955
- listitem [ref=e959]: item 956
- listitem [ref=e960]: item 957
- listitem [ref=e961]: item 958
- listitem [ref=e962]: item 959
- listitem [ref=e963]: item 960
- listitem [ref=e964]: item 961
- listitem [ref=e965]: item 962
- listitem [ref=e966]: item 963
- listitem [ref=e967]: item 964
- listitem [ref=e968]: item 965
- listitem [ref=e969]: item 966
- listitem [ref=e970]: item 967
- listitem [ref=e971]: item 968
- listitem [ref=e972]: item 969
- listitem [ref=e973]: item 970
- listitem [ref=e974]: item 971
- listitem [ref=e975]: item 972
- listitem [ref=e976]: item 973
- listitem [ref=e977]: item 974
- listitem [ref=e978]: item 975
- listitem [ref=e979]: item 976
- listitem [ref=e980]: item 977
- listitem [ref=e981]: item 978
- listitem [ref=e982]: item 979
- listitem [ref=e983]: item 980
- listitem [ref=e984]: item 981
- listitem [ref=e985]: item 982
- listitem [ref=e986]: item 983
- listitem [ref=e987]: item 984
- listitem [ref=e988]: item 985
- listitem [ref=e989]: item 986
- listitem [ref=e990]: item 987
- listitem [ref=e991]: item 988
- listitem [ref=e992]: item 989
- listitem [ref=e993]: item 990
- listitem [ref=e994]: item 991
- listitem [ref=e995]: item 992
- listitem [ref=e996]: item 993
- listitem [ref=e997]: item 994
- listitem [ref=e998]: item 995
- listitem [ref=e999]: item 996
- listitem [ref=e1000]: item 997
- listitem [ref=e1001]: item 998
- listitem [ref=e1002]: item 999
```
# Test source
```ts
1 | import { test, expect } from '@playwright/test';
2 | import fs from 'fs';
3 | import path from 'path';
4 |
5 | test('modular unit tests and benchmark', async ({ page }) => {
6 | page.on('console', msg => console.log('BROWSER LOG:', msg.text()));
7 | await page.goto('http://localhost:8081/test/index.html');
8 |
9 | await page.waitForFunction(() => window.testStatus !== undefined, { timeout: 10000 });
10 | const status = await page.evaluate(() => window.testStatus);
11 | expect(status).toBe('passed');
12 |
13 | // Read benchmarks from TEST.md
14 | const testMd = fs.readFileSync(path.join(process.cwd(), 'TEST.md'), 'utf-8');
15 | const getBench = (name) => {
16 | const match = testMd.match(new RegExp(`\\*\\*${name}\\*\\*\\s*\\|\\s*([\\d.]+)`));
17 | return match ? parseFloat(match[1]) : null;
18 | };
19 | const baseInitial = getBench('首次渲染 \\(1000 items\\)');
20 | const baseUpdate = getBench('浅更新 \\(Shallow Update\\)');
21 |
22 | // Benchmark: Large list rendering
23 | const renderTime = await page.evaluate(async () => {
24 | const start = performance.now();
25 | document.body.innerHTML = `
26 | <ul id="bench-list">
27 | <template $each="state.benchItems" as="item">
28 | <li $text="item.val"></li>
29 | </template>
30 | </ul>
31 | `;
32 | const items = [];
33 | for(let i=0; i<1000; i++) items.push({val: 'item ' + i});
34 | window.state.benchItems = items;
35 | const { RefreshState } = await import('@web/state');
36 | RefreshState(document.documentElement);
37 | return performance.now() - start;
38 | });
39 | console.log(`BENCHMARK: 1000 items initial render: ${renderTime.toFixed(2)}ms`);
> 40 | if (baseInitial) expect(renderTime).toBeLessThan(baseInitial * 1.2);
| ^ Error: expect(received).toBeLessThan(expected)
41 |
42 | // Benchmark: Large list update
43 | const updateTime = await page.evaluate(async () => {
44 | const start = performance.now();
45 | window.state.benchItems[0].val = 'updated';
46 | window.state.benchItems = [...window.state.benchItems];
47 | return performance.now() - start;
48 | });
49 | console.log(`BENCHMARK: 1000 items update (shallow): ${updateTime.toFixed(2)}ms`);
50 | if (baseUpdate) expect(updateTime).toBeLessThan(baseUpdate * 1.2);
51 |
52 | // Extreme Data Test
53 | await page.evaluate(async () => {
54 | const { RefreshState } = await import('@web/state');
55 | document.body.innerHTML = '<div id="extreme" $each="state.extreme"></div>';
56 | window.state.extreme = null;
57 | RefreshState(document.getElementById('extreme'));
58 | window.state.extreme = undefined;
59 | window.state.extreme = { a: 1 };
60 | window.state.extreme = [1, 2];
61 | window.state.extreme = "not iterable";
62 | });
63 | });
64 |
```