@vardot/varbase-e2e 2.0.2 → 2.0.4
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/.playwright-mcp/console-2026-09-07T08-40-17-262Z.log +28 -0
- package/.playwright-mcp/console-2026-09-07T08-40-55-044Z.log +4 -0
- package/.playwright-mcp/console-2026-09-07T08-41-12-557Z.log +18 -0
- package/.playwright-mcp/console-2026-09-07T08-42-32-413Z.log +38 -0
- package/.playwright-mcp/console-2026-09-07T09-02-43-145Z.log +1 -0
- package/.playwright-mcp/console-2026-09-07T09-03-15-665Z.log +17 -0
- package/.playwright-mcp/page-2026-09-07T08-40-18-956Z.yml +261 -0
- package/.playwright-mcp/page-2026-09-07T08-40-55-673Z.yml +132 -0
- package/.playwright-mcp/page-2026-09-07T08-41-13-471Z.yml +386 -0
- package/.playwright-mcp/page-2026-09-07T08-42-33-250Z.yml +287 -0
- package/AGENTS.md +1 -1
- package/CLAUDE.md +6 -5
- package/README.md +2 -0
- package/docs/04-step-reference.md +15 -1
- package/docs/README.md +8 -5
- package/docs/install-varbase-e2e.md +0 -2
- package/docs/steps/README.md +6 -5
- package/docs/steps/assertion.md +90 -5
- package/docs/steps/drupal-drimage-improved.md +372 -0
- package/docs/steps/navigation.md +81 -1
- package/docs/steps/varbase.md +6 -65
- package/examples/access-denied.html +6 -0
- package/examples/drimage.html +55 -0
- package/examples/styles/drimage_improved_1000_667/public/sample.png +0 -0
- package/examples/styles/drimage_improved_1200_800/public/sample.png +0 -0
- package/examples/styles/drimage_improved_1400_933/public/sample.png +0 -0
- package/examples/styles/drimage_improved_1600_1067/public/sample.png +0 -0
- package/examples/styles/drimage_improved_1800_1200/public/sample.png +0 -0
- package/examples/styles/drimage_improved_2000_1333/public/sample.png +0 -0
- package/examples/styles/drimage_improved_200_133/public/sample.png +0 -0
- package/examples/styles/drimage_improved_2200_1467/public/sample.png +0 -0
- package/examples/styles/drimage_improved_2400_1600/public/sample.png +0 -0
- package/examples/styles/drimage_improved_2600_1734/public/sample.png +0 -0
- package/examples/styles/drimage_improved_2800_1867/public/sample.png +0 -0
- package/examples/styles/drimage_improved_3000_2000/public/sample.png +0 -0
- package/examples/styles/drimage_improved_3200_2134/public/sample.png +0 -0
- package/examples/styles/drimage_improved_3400_2267/public/sample.png +0 -0
- package/examples/styles/drimage_improved_3600_2400/public/sample.png +0 -0
- package/examples/styles/drimage_improved_3800_2534/public/sample.png +0 -0
- package/examples/styles/drimage_improved_4000_2667/public/sample.png +0 -0
- package/examples/styles/drimage_improved_400_267/public/sample.png +0 -0
- package/examples/styles/drimage_improved_600_400/public/sample.png +0 -0
- package/examples/styles/drimage_improved_800_533/public/sample.png +0 -0
- package/examples/user-login.html +12 -0
- package/images/varbase-e2e-logo.svg +24 -0
- package/package.json +1 -1
- package/tests/features/access.feature +33 -0
- package/tests/features/drupal-drimage-improved.feature +59 -0
- package/tests/features/http-status.feature +21 -0
- package/tests/features/page-title.feature +24 -0
- package/tests/step-definitions/assertion.steps.js +108 -19
- package/tests/step-definitions/drupal-drimage-improved.steps.js +486 -0
- package/tests/step-definitions/navigation.steps.js +101 -1
- package/tests/step-definitions/varbase.steps.js +0 -83
- package/.playwright-mcp/console-2026-08-09T19-48-04-420Z.log +0 -6
- package/.playwright-mcp/console-2026-08-09T19-48-21-910Z.log +0 -4
- package/.playwright-mcp/console-2026-08-09T19-48-37-544Z.log +0 -5
- package/.playwright-mcp/console-2026-08-09T20-02-58-240Z.log +0 -5
- package/.playwright-mcp/console-2026-08-09T20-15-05-487Z.log +0 -71
- package/.playwright-mcp/console-2026-08-09T20-31-11-228Z.log +0 -14
- package/.playwright-mcp/console-2026-08-09T20-34-03-115Z.log +0 -7
- package/.playwright-mcp/console-2026-08-09T20-34-34-018Z.log +0 -85
- package/.playwright-mcp/console-2026-08-09T20-34-34-740Z.log +0 -46
- package/.playwright-mcp/console-2026-08-09T20-34-35-618Z.log +0 -92
- package/.playwright-mcp/console-2026-08-09T22-57-59-606Z.log +0 -14
- package/.playwright-mcp/console-2026-08-09T23-09-53-902Z.log +0 -28
- package/.playwright-mcp/console-2026-08-09T23-09-55-918Z.log +0 -49
- package/.playwright-mcp/console-2026-08-09T23-09-57-522Z.log +0 -42
- package/.playwright-mcp/console-2026-08-09T23-40-26-847Z.log +0 -28
- package/.playwright-mcp/console-2026-08-10T00-05-53-423Z.log +0 -8
- package/.playwright-mcp/console-2026-08-10T08-51-59-747Z.log +0 -5
- package/.playwright-mcp/console-2026-08-10T09-00-26-735Z.log +0 -7
- package/.playwright-mcp/page-2026-08-09T19-48-23-422Z.yml +0 -288
- package/.playwright-mcp/page-2026-08-09T19-48-32-827Z.yml +0 -39
- package/.playwright-mcp/page-2026-08-09T19-48-39-150Z.yml +0 -39
- package/.playwright-mcp/page-2026-08-09T19-50-55-594Z.yml +0 -787
- package/.playwright-mcp/page-2026-08-09T19-51-28-160Z.yml +0 -391
- package/.playwright-mcp/page-2026-08-09T19-51-45-546Z.yml +0 -391
- package/.playwright-mcp/page-2026-08-09T19-51-46-085Z.yml +0 -391
- package/.playwright-mcp/page-2026-08-09T19-51-46-355Z.yml +0 -391
- package/.playwright-mcp/page-2026-08-09T19-51-49-918Z.yml +0 -391
- package/.playwright-mcp/page-2026-08-09T19-52-30-248Z.yml +0 -415
- package/.playwright-mcp/page-2026-08-09T19-52-42-510Z.yml +0 -415
- package/.playwright-mcp/page-2026-08-09T19-52-45-588Z.yml +0 -391
- package/.playwright-mcp/page-2026-08-09T19-52-54-615Z.yml +0 -391
- package/.playwright-mcp/page-2026-08-09T19-52-55-424Z.yml +0 -391
- package/.playwright-mcp/page-2026-08-09T19-52-55-553Z.yml +0 -391
- package/.playwright-mcp/page-2026-08-09T19-52-58-991Z.yml +0 -391
- package/.playwright-mcp/page-2026-08-09T19-53-29-261Z.yml +0 -415
- package/.playwright-mcp/page-2026-08-09T19-53-40-322Z.yml +0 -415
- package/.playwright-mcp/page-2026-08-09T19-53-44-146Z.yml +0 -391
- package/.playwright-mcp/page-2026-08-09T19-53-51-021Z.yml +0 -391
- package/.playwright-mcp/page-2026-08-09T19-53-51-565Z.yml +0 -391
- package/.playwright-mcp/page-2026-08-09T19-53-51-979Z.yml +0 -391
- package/.playwright-mcp/page-2026-08-09T19-53-54-883Z.yml +0 -391
- package/.playwright-mcp/page-2026-08-09T19-54-24-537Z.yml +0 -415
- package/.playwright-mcp/page-2026-08-09T20-01-07-921Z.yml +0 -404
- package/.playwright-mcp/page-2026-08-09T20-01-35-366Z.yml +0 -404
- package/.playwright-mcp/page-2026-08-09T20-01-54-083Z.yml +0 -404
- package/.playwright-mcp/page-2026-08-09T20-02-07-954Z.yml +0 -416
- package/.playwright-mcp/page-2026-08-09T20-02-24-800Z.yml +0 -404
- package/.playwright-mcp/page-2026-08-09T20-02-29-695Z.yml +0 -404
- package/.playwright-mcp/page-2026-08-09T20-02-33-819Z.yml +0 -404
- package/.playwright-mcp/page-2026-08-09T20-02-41-437Z.yml +0 -404
- package/.playwright-mcp/page-2026-08-09T20-02-53-232Z.yml +0 -416
- package/.playwright-mcp/page-2026-08-09T20-03-00-246Z.yml +0 -404
- package/.playwright-mcp/page-2026-08-09T20-03-03-297Z.yml +0 -404
- package/.playwright-mcp/page-2026-08-09T20-03-11-014Z.yml +0 -404
- package/.playwright-mcp/page-2026-08-09T20-03-21-049Z.yml +0 -416
- package/.playwright-mcp/page-2026-08-10T01-04-54-039Z.yml +0 -410
- package/.playwright-mcp/page-2026-08-10T01-05-06-967Z.png +0 -0
- package/.playwright-mcp/page-2026-08-10T01-05-52-136Z.yml +0 -720
- package/.playwright-mcp/page-2026-08-10T01-06-05-985Z.yml +0 -410
- package/.playwright-mcp/page-2026-08-10T01-06-25-942Z.yml +0 -726
- package/.playwright-mcp/page-2026-08-10T01-25-57-152Z.yml +0 -395
- package/.playwright-mcp/page-2026-08-10T01-26-48-853Z.yml +0 -395
- package/.playwright-mcp/page-2026-08-10T01-27-47-127Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-27-57-349Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-28-07-943Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-28-30-462Z.yml +0 -369
- package/.playwright-mcp/page-2026-08-10T01-29-00-369Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-29-08-988Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-29-19-888Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-29-30-189Z.yml +0 -369
- package/.playwright-mcp/page-2026-08-10T01-30-08-272Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-30-16-955Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-30-27-612Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-30-37-943Z.yml +0 -465
- package/.playwright-mcp/page-2026-08-10T01-31-15-265Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-31-24-328Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-31-36-622Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-31-45-965Z.yml +0 -470
- package/.playwright-mcp/page-2026-08-10T01-32-13-400Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-32-23-469Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-32-33-859Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-32-43-461Z.yml +0 -513
- package/.playwright-mcp/page-2026-08-10T01-33-13-160Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-33-23-937Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-33-35-367Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-33-47-266Z.yml +0 -459
- package/.playwright-mcp/page-2026-08-10T01-34-14-452Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-34-26-042Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-34-40-869Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-34-49-587Z.yml +0 -391
- package/.playwright-mcp/page-2026-08-10T01-35-16-735Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-35-24-882Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-35-36-165Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-35-45-644Z.yml +0 -455
- package/.playwright-mcp/page-2026-08-10T01-36-18-148Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-36-26-751Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-36-37-834Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-36-48-078Z.yml +0 -370
- package/.playwright-mcp/page-2026-08-10T01-37-16-309Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-37-28-723Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-37-39-325Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-37-48-278Z.yml +0 -409
- package/.playwright-mcp/page-2026-08-10T01-38-27-405Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-38-36-994Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-38-49-584Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-38-59-289Z.yml +0 -396
- package/.playwright-mcp/page-2026-08-10T01-39-24-880Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-39-35-551Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-39-47-960Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-39-56-844Z.yml +0 -549
- package/.playwright-mcp/page-2026-08-10T01-40-24-645Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-40-33-806Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-40-46-946Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-40-56-503Z.yml +0 -443
- package/.playwright-mcp/page-2026-08-10T01-41-32-064Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-41-40-666Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-41-51-325Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-41-58-790Z.yml +0 -368
- package/.playwright-mcp/page-2026-08-10T01-42-26-459Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-42-38-306Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-42-49-073Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-42-57-453Z.yml +0 -443
- package/.playwright-mcp/page-2026-08-10T01-43-32-099Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-43-42-882Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-43-54-853Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-44-04-373Z.yml +0 -399
- package/.playwright-mcp/page-2026-08-10T01-44-30-874Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-44-39-830Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-44-51-515Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-44-59-974Z.yml +0 -503
- package/.playwright-mcp/page-2026-08-10T01-45-26-748Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-45-36-685Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-45-47-715Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-45-57-895Z.yml +0 -469
- package/.playwright-mcp/page-2026-08-10T01-46-36-371Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-46-49-906Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-47-01-554Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-47-12-712Z.yml +0 -581
- package/.playwright-mcp/page-2026-08-10T01-47-39-024Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-47-49-714Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-48-00-608Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-48-09-739Z.yml +0 -604
- package/.playwright-mcp/page-2026-08-10T01-48-51-940Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-49-01-562Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-49-13-751Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-49-22-503Z.yml +0 -400
- package/.playwright-mcp/page-2026-08-10T01-49-49-311Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-50-00-769Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-50-12-083Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-50-23-765Z.yml +0 -458
- package/.playwright-mcp/page-2026-08-10T01-51-02-339Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-51-12-711Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-51-25-370Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-51-33-936Z.yml +0 -368
- package/.playwright-mcp/page-2026-08-10T01-52-09-467Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-52-21-616Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-52-32-806Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-52-42-382Z.yml +0 -407
- package/.playwright-mcp/page-2026-08-10T01-53-11-994Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-53-21-669Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-53-33-141Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-53-43-582Z.yml +0 -443
- package/.playwright-mcp/page-2026-08-10T01-54-19-884Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-54-32-359Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-54-43-530Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-54-53-891Z.yml +0 -474
- package/.playwright-mcp/page-2026-08-10T01-55-24-634Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-55-35-283Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-55-46-649Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-55-56-585Z.yml +0 -431
- package/.playwright-mcp/page-2026-08-10T01-56-31-670Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-56-40-782Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-56-52-065Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-57-03-705Z.yml +0 -445
- package/.playwright-mcp/page-2026-08-10T01-57-31-390Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-57-44-756Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-57-56-802Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-58-06-937Z.yml +0 -468
- package/.playwright-mcp/page-2026-08-10T01-58-40-595Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-58-51-715Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T01-59-04-402Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T01-59-15-638Z.yml +0 -472
- package/.playwright-mcp/page-2026-08-10T01-59-58-162Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T02-00-09-962Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T02-00-21-468Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T02-00-33-248Z.yml +0 -451
- package/.playwright-mcp/page-2026-08-10T02-01-15-418Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T02-01-27-182Z.yml +0 -413
- package/.playwright-mcp/page-2026-08-10T02-01-38-250Z.yml +0 -425
- package/.playwright-mcp/page-2026-08-10T04-20-27-979Z.yml +0 -513
- package/.playwright-mcp/page-2026-08-10T04-20-41-431Z.yml +0 -513
- package/.playwright-mcp/page-2026-08-10T04-21-46-133Z.yml +0 -406
- package/.playwright-mcp/page-2026-08-10T04-22-10-938Z.yml +0 -406
- package/.playwright-mcp/page-2026-08-10T04-23-00-626Z.yml +0 -406
- package/.playwright-mcp/page-2026-08-10T04-23-19-844Z.yml +0 -418
- package/.playwright-mcp/page-2026-08-10T04-25-00-732Z.yml +0 -455
- package/.playwright-mcp/page-2026-08-10T04-25-35-125Z.yml +0 -412
- package/.playwright-mcp/page-2026-08-10T04-25-46-640Z.yml +0 -412
- package/.playwright-mcp/page-2026-08-10T04-25-55-092Z.yml +0 -549
- package/.playwright-mcp/page-2026-08-10T04-26-26-403Z.yml +0 -406
- package/.playwright-mcp/page-2026-08-10T04-26-40-673Z.yml +0 -406
- package/.playwright-mcp/page-2026-08-10T04-26-48-427Z.yml +0 -604
- package/.playwright-mcp/page-2026-08-10T04-27-23-584Z.yml +0 -408
- package/.playwright-mcp/page-2026-08-10T04-27-34-294Z.yml +0 -408
- package/.playwright-mcp/page-2026-08-10T04-27-42-299Z.yml +0 -443
- package/.playwright-mcp/page-2026-08-10T04-28-20-032Z.yml +0 -406
- package/.playwright-mcp/page-2026-08-10T04-28-32-275Z.yml +0 -406
- package/.playwright-mcp/page-2026-08-10T04-28-41-592Z.yml +0 -581
- package/.playwright-mcp/page-2026-08-10T04-29-19-972Z.yml +0 -414
- package/.playwright-mcp/page-2026-08-10T04-29-30-961Z.yml +0 -414
- package/.playwright-mcp/page-2026-08-10T04-29-39-044Z.yml +0 -465
- package/.playwright-mcp/page-2026-08-10T04-30-13-196Z.yml +0 -402
- package/.playwright-mcp/page-2026-08-10T04-30-24-867Z.yml +0 -402
- package/.playwright-mcp/page-2026-08-10T04-30-32-372Z.yml +0 -409
- package/.playwright-mcp/page-2026-08-10T04-31-06-199Z.yml +0 -402
- package/.playwright-mcp/page-2026-08-10T04-31-17-733Z.yml +0 -402
- package/.playwright-mcp/page-2026-08-10T04-31-26-296Z.yml +0 -445
- package/.playwright-mcp/page-2026-08-10T04-32-02-456Z.yml +0 -402
- package/.playwright-mcp/page-2026-08-10T04-32-14-091Z.yml +0 -402
- package/.playwright-mcp/page-2026-08-10T04-32-23-437Z.yml +0 -396
- package/.playwright-mcp/page-2026-08-10T04-32-58-401Z.yml +0 -403
- package/.playwright-mcp/page-2026-08-10T04-33-09-818Z.yml +0 -403
- package/.playwright-mcp/page-2026-08-10T04-33-20-858Z.yml +0 -468
- package/.playwright-mcp/page-2026-08-10T04-33-53-074Z.yml +0 -407
- package/.playwright-mcp/page-2026-08-10T04-34-05-806Z.yml +0 -407
- package/.playwright-mcp/page-2026-08-10T08-52-00-165Z.yml +0 -0
- package/.playwright-mcp/page-2026-08-10T08-52-17-430Z.yml +0 -410
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html><head><title>Log in</title></head>
|
|
3
|
+
<body>
|
|
4
|
+
<h1>Log in</h1>
|
|
5
|
+
<form id="user-login-form" action="#" method="post">
|
|
6
|
+
<label for="edit-name">Username</label>
|
|
7
|
+
<input id="edit-name" name="name" type="text">
|
|
8
|
+
<label for="edit-pass">Password</label>
|
|
9
|
+
<input id="edit-pass" name="pass" type="password">
|
|
10
|
+
<input id="edit-submit" type="submit" value="Log in">
|
|
11
|
+
</form>
|
|
12
|
+
</body></html>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<svg width="100%" viewBox="0 0 215 30" xmlns="http://www.w3.org/2000/svg" role="img" xmlns:c2pa="http://c2pa.org/manifest"><metadata><c2pa:manifest>AAAWkGp1bWIAAAAeanVtZGMycGEAEQAQgAAAqgA4m3EDYzJwYQAAABZqanVtYgAAAEdqdW1kYzJtYQARABCAAACqADibcQN1cm46YzJwYTo1YTMwMDlhNC05YjI1LTQwYmQtOWE0YS1lOGNhYmEyOTFhYjQAAAADf2p1bWIAAAApanVtZGMyYXMAEQAQgAAAqgA4m3EDYzJwYS5hc3NlcnRpb25zAAAAALxqdW1iAAAARGp1bWRjYm9yABEAEIAAAKoAOJtxE2MycGEuaW5ncmVkaWVudC52MwAAAAAYYzJzaF/Loa2IHTLZ76YmYhLtmrYAAABwY2JvcqNscmVsYXRpb25zaGlwaHBhcmVudE9maWRjOmZvcm1hdG1pbWFnZS9zdmcreG1samluc3RhbmNlSUR4LHhtcDppaWQ6YjhkMzRjYTMtMWZlNS00NDYzLTliMzItZmE4YjRmYzEzMDQ4AAABzmp1bWIAAABBanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5hY3Rpb25zLnYyAAAAABhjMnNodeNIX6kKQys0WwLuJzmV6gAAAYVjYm9yoWdhY3Rpb25zgqJmYWN0aW9ua2MycGEub3BlbmVkanBhcmFtZXRlcnOha2luZ3JlZGllbnRzgaJjdXJseC1zZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmluZ3JlZGllbnQudjNkaGFzaFggmXz9f/AJ0+JTXcjT/GcbTfpRfjLCMb1sYldKRRNez2qkZmFjdGlvbngdY29tLmFudGhyb3BpYy5jbGF1ZGUucHJvdmlkZWRtc29mdHdhcmVBZ2VudKFkbmFtZWZDbGF1ZGVqcGFyYW1ldGVyc6F4H2NvbS5hbnRocm9waWMub3JpZ2luLWNvbmZpZGVuY2VndW5rbm93bmtkZXNjcmlwdGlvbnhmQ2xhdWRlIHByb3ZpZGVkIHRoaXMgZmlsZSBhdCB0aGUgcmVxdWVzdCBvZiBhIHVzZXIgYW5kIG1heSBoYXZlIGNyZWF0ZWQgb3IgbW9kaWZpZWQgdGhlIGZpbGUgY29udGVudHMuAAAAxGp1bWIAAABAanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5oYXNoLmRhdGEAAAAAGGMyc2hQFbwKTtWrCvdaogRPd6bgAAAAfGNib3KlamV4Y2x1c2lvbnOBomVzdGFydBiUZmxlbmd0aBkeGGRuYW1lbmp1bWJmIG1hbmlmZXN0Y2FsZ2ZzaGEyNTZkaGFzaFggHPZzqvJCzffRtP1srbNv6FgAO3DDIVjHHHZ9qssnjy1jcGFkSQAAAAAAAAAAAAAAAmRqdW1iAAAAJ2p1bWRjMmNsABEAEIAAAKoAOJtxA2MycGEuY2xhaW0udjIAAAACNWNib3Kmamluc3RhbmNlSUR4LHhtcDppaWQ6ODA2OTU0NWItNzQ2NC00ODg4LWJmYTAtN2MyZDdiNDY5MzcydGNsYWltX2dlbmVyYXRvcl9pbmZvo2RuYW1lc0FudGhyb3BpYyBDbGF1ZGUuYWlndmVyc2lvbmUxLjAuMHdvcmcuY29udGVudGF1dGguYzJwYV9yc2YwLjkwLjBpc2lnbmF0dXJleE1zZWxmI2p1bWJmPS9jMnBhL3VybjpjMnBhOjVhMzAwOWE0LTliMjUtNDBiZC05YTRhLWU4Y2FiYTI5MWFiNC9jMnBhLnNpZ25hdHVyZXJjcmVhdGVkX2Fzc2VydGlvbnOComN1cmx4KnNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuYWN0aW9ucy52MmRoYXNoWCDPwzwpk/iUmmqxGuHZX+30zj4icMz0HGJRtxLW2vZm96JjdXJseClzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmhhc2guZGF0YWRoYXNoWCAh8+e5U3QtjXtOnzgUf64PjrTPRMEx3aaZY09XwnHlZXNnYXRoZXJlZF9hc3NlcnRpb25zgaJjdXJseC1zZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmluZ3JlZGllbnQudjNkaGFzaFggmXz9f/AJ0+JTXcjT/GcbTfpRfjLCMb1sYldKRRNez2pjYWxnZnNoYTI1NgAAEDhqdW1iAAAAKGp1bWRjMmNzABEAEIAAAKoAOJtxA2MycGEuc2lnbmF0dXJlAAAAEAhjYm9y0oRZAhKiASYYIVkCCjCCAgYwggGNoAMCAQICFEDloAruwjnQvriD+gZCBT1nVRMAMAoGCCqGSM49BAMDMEkxFzAVBgNVBAoTDkFudGhyb3BpYywgUEJDMS4wLAYDVQQDEyVBbnRocm9waWMgQ29udGVudCBDcmVkZW50aWFscyBSb290IENBMB4XDTI2MDgwNzE4NDM1NloXDTI4MDgwNjE5NDM1NlowRDEXMBUGA1UEChMOQW50aHJvcGljLCBQQkMxKTAnBgNVBAMTIEFudGhyb3BpYyBDbGF1ZGUgQ29udGVudCBTaWduaW5nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmHoKa8tQGAUU1TS9QqU5W0Tp2N3XsvlK7BfQt6YWKwEzd2R3/dzKPEUDdCjlLjp9fT+KFjRVnuZ9v0oXvTe3k6NYMFYwDgYDVR0PAQH/BAQDAgeAMBUGA1UdJQQOMAwGCisGAQQBg+heAgEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBTOUeIEgU5kWyP448TPmj6cwddcwjAKBggqhkjOPQQDAwNnADBkAjAxcx0UngF60stVjs5G4T2eiptsBk5mf9oCtfJPAUBl8qs/PEXa8+gk1/X5QJ2DVcYCMHBfXN31YapiSqYvlIWrDVDJKOvXMl+kkz37Wt0PBI8sw486Mq6JeOhT+lRR4b1HCaFjcGFkWQ2eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9lhAJomwIBDXXmJKtFaKOoxKyO/Yr5tfee2vh4HI1yJUVOI9QkXsKrRQOuTRu18aPurxHreP7Firxk998Yx5osHD+w==</c2pa:manifest></metadata>
|
|
2
|
+
<title style="fill:rgb(0, 0, 0);stroke:none;color:rgb(11, 11, 11);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:anthropic-sans, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">Varbase E2E logo</title>
|
|
3
|
+
<desc style="fill:rgb(0, 0, 0);stroke:none;color:rgb(11, 11, 11);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:anthropic-sans, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">The official Varbase wordmark logo with E2E appended directly after it in a rounded geometric sans font, colored in the logo's brand blue accent, with no divider.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
|
|
6
|
+
</defs>
|
|
7
|
+
<g id="Type=Dark, Logo=Default" style="fill:rgb(0, 0, 0);stroke:none;color:rgb(11, 11, 11);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:anthropic-sans, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
|
8
|
+
<g id="Group 632618" style="fill:rgb(0, 0, 0);stroke:none;color:rgb(11, 11, 11);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:anthropic-sans, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
|
9
|
+
<g id="Frame 6" style="fill:rgb(0, 0, 0);stroke:none;color:rgb(11, 11, 11);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:anthropic-sans, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
|
10
|
+
<path id="Vector" fill-rule="evenodd" clip-rule="evenodd" d="M142.153 25.7417C145.489 25.7417 149.199 23.3408 149.913 19.2411C150.027 18.5849 149.598 18.5849 149.339 18.5849H145.778C145.174 18.5849 144.935 18.4032 144.772 18.2266C144.61 18.0499 144.548 17.8147 144.471 17.4776C143.967 15.2953 142.031 13.6774 139.674 13.6774C136.937 13.6775 134.719 15.8746 134.719 18.5849C134.719 22.4039 138.015 25.7417 142.153 25.7417ZM144.37 19.3878C144.531 18.5835 144.01 18.5835 143.566 18.5835H135.925C135.481 18.5835 134.96 18.5849 135.121 19.3878C135.523 21.3985 137.464 23.2082 139.745 23.2082C142.026 23.2082 143.968 21.3985 144.37 19.3878Z" fill="#0D6EFD" style="fill:rgb(13, 110, 253);stroke:none;color:rgb(11, 11, 11);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:anthropic-sans, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
11
|
+
</g>
|
|
12
|
+
<g id="Combined-Shape" style="fill:rgb(0, 0, 0);stroke:none;color:rgb(11, 11, 11);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:anthropic-sans, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
|
|
13
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M33.9587 9.65601V11.7512C32.5336 10.1933 30.5984 9.24421 28.2579 9.24421C22.6231 9.24421 19.7409 14.0342 19.7409 18.4135C19.7409 23.5569 23.2959 27.5828 28.2579 27.5828C30.5799 27.5828 32.5171 26.6527 33.9587 25.0758V27.1706H38.4234V9.65601H33.9587ZM24.3431 18.4135C24.3431 21.2394 26.4825 23.2557 29.1507 23.2557C31.8105 23.2557 33.9587 21.2474 33.9587 18.4135C33.9587 15.7115 31.9432 13.5713 29.1507 13.5713C26.3373 13.5713 24.3431 15.7332 24.3431 18.4135Z" fill="black" style="fill:rgb(0, 0, 0);stroke:none;color:rgb(11, 11, 11);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:anthropic-sans, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
14
|
+
<path d="M52.8984 13.572H52.1428C48.9055 13.572 47.0946 15.625 47.0946 18.5703V27.1709H42.63V9.65633H47.0946V11.6124C48.4221 9.91853 50.1047 9.24373 52.1428 9.24373H52.8984V13.572Z" fill="black" style="fill:rgb(0, 0, 0);stroke:none;color:rgb(11, 11, 11);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:anthropic-sans, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
15
|
+
<path d="M19.3428 9.65617H14.5906L9.67158 21.5339L4.75174 9.65617H0L7.25469 27.1708H12.0881L19.3428 9.65617Z" fill="black" style="fill:rgb(0, 0, 0);stroke:none;color:rgb(11, 11, 11);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:anthropic-sans, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
16
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M89.4547 9.65598V11.7512C88.0295 10.1932 86.0944 9.24419 83.7539 9.24419C78.1191 9.24419 75.2369 14.0341 75.2369 18.4135C75.2369 23.5569 78.7919 27.5828 83.7539 27.5828C86.0759 27.5828 88.013 26.6526 89.4547 25.0758V27.1706H93.9193V9.65598H89.4547ZM79.839 18.4135C79.839 21.2394 81.9785 23.2557 84.6467 23.2557C87.3065 23.2557 89.4547 21.2474 89.4547 18.4135C89.4547 15.7115 87.4392 13.5713 84.6467 13.5713C81.8333 13.5713 79.839 15.7332 79.839 18.4135Z" fill="black" style="fill:rgb(0, 0, 0);stroke:none;color:rgb(11, 11, 11);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:anthropic-sans, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
17
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M59.5943 2.41735V11.7511C61.0195 10.1932 62.9546 9.24416 65.2951 9.24416C70.9299 9.24416 73.8121 14.0341 73.8121 18.4135C73.8121 23.5569 70.2572 27.5828 65.2951 27.5828C62.9731 27.5828 61.036 26.6526 59.5943 25.0758V27.1706H55.1297V2.41735H59.5943ZM69.21 18.4135C69.21 21.2393 67.0706 23.2557 64.4023 23.2557C61.7425 23.2557 59.5943 21.2474 59.5943 18.4135C59.5943 15.7115 61.6098 13.5712 64.4023 13.5712C67.2157 13.5712 69.21 15.7332 69.21 18.4135Z" fill="black" style="fill:rgb(0, 0, 0);stroke:none;color:rgb(11, 11, 11);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:anthropic-sans, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
18
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M122.777 9.62886C124.458 9.62886 125.969 9.99119 127.309 10.7151C128.671 11.4178 129.746 12.4396 130.533 13.7811C131.32 15.1012 131.714 16.6876 131.714 18.5401C131.714 18.7317 131.703 18.9553 131.682 19.2108C131.66 19.445 131.639 19.6687 131.618 19.8816H118.626C118.727 20.339 118.887 20.7649 119.107 21.1591C119.532 21.8618 120.117 22.4048 120.862 22.7881C121.628 23.1501 122.522 23.3308 123.543 23.3308C124.458 23.3308 125.256 23.1925 125.937 22.9157C126.639 22.6389 127.277 22.2236 127.852 21.67L130.501 24.5447C129.713 25.439 128.724 26.1309 127.533 26.6207C126.341 27.0891 124.968 27.3236 123.415 27.3236C121.458 27.3236 119.734 26.9402 118.245 26.1737C116.777 25.4072 115.639 24.3635 114.83 23.0434C114.021 21.702 113.617 20.1794 113.617 18.476C113.617 16.7514 114.011 15.2292 114.798 13.9091C115.607 12.5677 116.702 11.524 118.085 10.7787C119.468 10.0122 121.032 9.62886 122.777 9.62886ZM122.809 13.3978C121.958 13.3978 121.202 13.5895 120.543 13.9727C119.905 14.3347 119.404 14.8564 119.043 15.5377C118.809 15.9636 118.652 16.4428 118.569 16.9751H127.024C126.943 16.4338 126.783 15.944 126.543 15.5059C126.182 14.8458 125.681 14.3347 125.043 13.9727C124.405 13.5895 123.66 13.3978 122.809 13.3978Z" fill="black" style="fill:rgb(0, 0, 0);stroke:none;color:rgb(11, 11, 11);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:anthropic-sans, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
19
|
+
<path d="M104.638 9.62886C105.862 9.62887 107.075 9.76756 108.277 10.0444C109.501 10.2999 110.51 10.6618 111.304 11.1302L109.63 14.6753C108.105 13.8237 106.441 13.3978 104.638 13.3978C103.565 13.3978 102.759 13.547 102.223 13.8451C101.686 14.1432 101.417 14.5266 101.417 14.995C101.417 15.5272 101.707 15.8997 102.287 16.1127C102.867 16.3256 103.79 16.5278 105.057 16.7194C106.474 16.9536 107.633 17.2092 108.535 17.486C109.436 17.7415 110.22 18.2207 110.886 18.9234C111.551 19.626 111.884 20.6055 111.884 21.8617C111.884 22.9263 111.562 23.8742 110.918 24.7046C110.274 25.5349 109.329 26.1844 108.084 26.6529C106.86 27.1 105.4 27.3232 103.704 27.3232C102.265 27.3232 100.859 27.153 99.4853 26.8123C98.1112 26.4503 97.0164 26.0031 96.2006 25.4708L97.8751 21.8939C98.648 22.3836 99.5819 22.788 100.677 23.1074C101.772 23.4055 102.845 23.5547 103.897 23.5547C106.022 23.5547 107.085 23.033 107.086 21.9897C107.086 21.5 106.796 21.1486 106.216 20.9356C105.636 20.7227 104.745 20.5416 103.543 20.3925C102.126 20.1796 100.956 19.9349 100.033 19.6581C99.1096 19.3813 98.3045 18.8915 97.6175 18.189C96.952 17.4863 96.6192 16.4854 96.6192 15.1866C96.6192 14.1007 96.9305 13.1423 97.5531 12.3119C98.1972 11.4603 99.1203 10.8003 100.323 10.3318C101.546 9.86338 102.985 9.62886 104.638 9.62886Z" fill="black" style="fill:rgb(0, 0, 0);stroke:none;color:rgb(11, 11, 11);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:anthropic-sans, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto"/>
|
|
20
|
+
</g>
|
|
21
|
+
</g>
|
|
22
|
+
</g>
|
|
23
|
+
<text x="158" y="27.2" font-size="24" letter-spacing="0.3" fill="#0D6EFD" style="fill:rgb(13, 110, 253);stroke:none;color:rgb(11, 11, 11);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:Poppins, Arial, Helvetica, sans-serif;font-size:24px;font-weight:700;text-anchor:start;dominant-baseline:auto">E2E</text>
|
|
24
|
+
</svg>
|
package/package.json
CHANGED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
Feature: Access assertions
|
|
2
|
+
A site picks its own way of saying no: HTTP 403, HTTP 404 to keep a route
|
|
3
|
+
unguessable, HTTP 200 with an access-denied page, or a redirect to the log-in
|
|
4
|
+
form. A permission scenario should assert "refused", not one of those four,
|
|
5
|
+
and it needs the positive half too — a role that can reach nothing passes
|
|
6
|
+
every refusal assertion on its own.
|
|
7
|
+
|
|
8
|
+
Background:
|
|
9
|
+
Given I am an anonymous user
|
|
10
|
+
|
|
11
|
+
# A 404 is the point of this scenario, so the browser console will carry the
|
|
12
|
+
# resource error. @js-off keeps that expected noise out of the run.
|
|
13
|
+
@js-off
|
|
14
|
+
Scenario: A path that does not answer at all is refused
|
|
15
|
+
Then I am denied access to "/no-such-admin-page.html"
|
|
16
|
+
And we should be refused "/admin/config"
|
|
17
|
+
|
|
18
|
+
Scenario: A path that answers 200 with an access-denied page is refused
|
|
19
|
+
Then I am denied access to "/access-denied.html"
|
|
20
|
+
|
|
21
|
+
Scenario: A path that answers with a log-in form is refused
|
|
22
|
+
Then I should be refused "/user-login.html"
|
|
23
|
+
|
|
24
|
+
Scenario: A path the visitor may open is allowed
|
|
25
|
+
Then I should be allowed "/about-us.html"
|
|
26
|
+
And we am granted access to "/index.html"
|
|
27
|
+
|
|
28
|
+
Scenario: The page already open can be asserted without navigating again
|
|
29
|
+
When I go to "/access-denied.html"
|
|
30
|
+
Then I should be denied access
|
|
31
|
+
And the page should be access restricted
|
|
32
|
+
When I go to "/user-login.html"
|
|
33
|
+
Then the page should be access restricted
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
Feature: Drimage Improved dynamic responsive images
|
|
2
|
+
Drimage Improved renders an image on an SVG placeholder and swaps it for a
|
|
3
|
+
derivative sized to where it is rendered, deferring anything below the fold.
|
|
4
|
+
Every attribute is already in place before the swap, so only the decoded
|
|
5
|
+
derivative proves the image really loaded. These steps name no selectors:
|
|
6
|
+
the pack knows the module's markup, and the budget defaults to 2 seconds
|
|
7
|
+
because the module exists to make images fast. The fixture mirrors the
|
|
8
|
+
markup the vartheme_bs5 dynamic-responsive-image component renders on
|
|
9
|
+
demo.varbase.vardot.com.
|
|
10
|
+
|
|
11
|
+
Background:
|
|
12
|
+
Given I am an anonymous user
|
|
13
|
+
When I go to "/drimage.html"
|
|
14
|
+
|
|
15
|
+
Scenario: The formatter rendered Drimage output with its fallbacks
|
|
16
|
+
Then the drimage images should be rendered
|
|
17
|
+
And the drimage images should offer webp
|
|
18
|
+
And the drimage images should have a noscript fallback
|
|
19
|
+
|
|
20
|
+
Scenario: The image in the viewport loaded its derivative
|
|
21
|
+
Then the drimage images should be loaded
|
|
22
|
+
And the drimage image "Team collaborating in a modern glass-walled office" should be loaded
|
|
23
|
+
And no drimage image should be broken
|
|
24
|
+
|
|
25
|
+
Scenario: Lazy loading defers the image below the fold until it is scrolled into view
|
|
26
|
+
Then the drimage images should use lazy loading
|
|
27
|
+
And the drimage image "Team meeting around a table" should still be a placeholder
|
|
28
|
+
When I scroll to the bottom of the page
|
|
29
|
+
Then the drimage image "Team meeting around a table" should be loaded within 2 seconds
|
|
30
|
+
|
|
31
|
+
Scenario: The derivative width follows the viewport
|
|
32
|
+
Then the drimage images should be sized for the viewport
|
|
33
|
+
When I set the viewport to the "xs" breakpoint
|
|
34
|
+
Then the drimage images should be sized for the viewport within 2 seconds
|
|
35
|
+
|
|
36
|
+
Scenario: One image can be named the way a person would, never by a selector
|
|
37
|
+
Then the first drimage image should be loaded
|
|
38
|
+
And the drimage image number 1 should be loaded
|
|
39
|
+
And the drimage image captioned "Our team in the new office" should be loaded
|
|
40
|
+
And the drimage image with the alt text "Team collaborating in a modern glass-walled office" should be loaded
|
|
41
|
+
And the last drimage image should still be a placeholder
|
|
42
|
+
And the drimage image titled "Vardot team" should not be loaded yet
|
|
43
|
+
And the drimage image "Vardot team" should not be loaded yet
|
|
44
|
+
|
|
45
|
+
Scenario: The figure, its caption, the alt text and the title reached the front end
|
|
46
|
+
Then the first drimage image should be in a figure
|
|
47
|
+
And the first drimage image should have a caption
|
|
48
|
+
And the first drimage image should have the caption "Our team in the new office"
|
|
49
|
+
And the drimage image captioned "Our team in the new office" should have the alt text "Team collaborating in a modern glass-walled office"
|
|
50
|
+
And the second drimage image should have the title "Vardot team"
|
|
51
|
+
And the drimage image "Team meeting around a table" should have the title "Vardot team"
|
|
52
|
+
And the last drimage image should be in a figure
|
|
53
|
+
|
|
54
|
+
Scenario: Every qualifier names the same images
|
|
55
|
+
Then the drimage improved images should be loaded
|
|
56
|
+
And the dynamic images should be loaded
|
|
57
|
+
And the dynamic responsive images should be loaded
|
|
58
|
+
And the responsive images should be loaded
|
|
59
|
+
And the images should be loaded
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
Feature: HTTP status assertions
|
|
2
|
+
The status a page returns is not always what it renders: a Drupal site can
|
|
3
|
+
answer 200 with an access-denied page, or 404 to keep a route unguessable.
|
|
4
|
+
Both phrasings of this assertion re-request the current URL through the
|
|
5
|
+
browser's own context, so the session cookies travel with it and redirects
|
|
6
|
+
are not followed.
|
|
7
|
+
|
|
8
|
+
Background:
|
|
9
|
+
Given I am an anonymous user
|
|
10
|
+
|
|
11
|
+
Scenario: A page that exists
|
|
12
|
+
When I go to "/about-us.html"
|
|
13
|
+
Then the page should return HTTP status 200
|
|
14
|
+
And the page should not return HTTP status 404
|
|
15
|
+
And the response status code should be 200
|
|
16
|
+
|
|
17
|
+
@js-off
|
|
18
|
+
Scenario: A page that does not exist
|
|
19
|
+
When I go to "/no-such-page.html"
|
|
20
|
+
Then the page should return HTTP status 404
|
|
21
|
+
And the response status code should not be 200
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
Feature: Page title assertions
|
|
2
|
+
The <title> element is the browser tab text, the bookmark name, the
|
|
3
|
+
search-result heading and the first thing a screen reader announces. On a
|
|
4
|
+
Drupal site it is the head title pattern, so asserting it proves the pattern
|
|
5
|
+
and the token that fills it both work.
|
|
6
|
+
|
|
7
|
+
Background:
|
|
8
|
+
Given I am an anonymous user
|
|
9
|
+
|
|
10
|
+
Scenario: The exact title
|
|
11
|
+
When I go to "/about-us.html"
|
|
12
|
+
Then the page title should be "About Us"
|
|
13
|
+
And the page title should not be "Contact Us"
|
|
14
|
+
|
|
15
|
+
Scenario: Part of the title, which is what a real head title pattern allows
|
|
16
|
+
When I go to "/about-us.html"
|
|
17
|
+
Then the page title should contain "About"
|
|
18
|
+
And the page title should not contain "Access denied"
|
|
19
|
+
|
|
20
|
+
Scenario: The title follows the page
|
|
21
|
+
When I go to "/element.html"
|
|
22
|
+
Then the page title should be "Element Demo"
|
|
23
|
+
When I go to "/about-us.html"
|
|
24
|
+
Then the page title should be "About Us"
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
// All page-level assertion step definitions live here:
|
|
4
|
-
// see / not see text, in element, in row, link href,
|
|
5
|
-
// status
|
|
4
|
+
// see / not see text, in element, in row, link href, page title, response
|
|
5
|
+
// body, HTTP status, element existence, CSS property, regex matching, count.
|
|
6
6
|
//
|
|
7
7
|
// Field-level (checkbox/radio/field-contains) assertions live in field.steps.js.
|
|
8
8
|
// URL/path assertions live in navigation.steps.js.
|
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
|
|
11
11
|
const { Then } = require('@cucumber/cucumber');
|
|
12
12
|
const assert = require('assert');
|
|
13
|
-
const axios = require('axios');
|
|
14
13
|
const { buildSelector, getLocatorText, friendly } = require('./varbase-e2e');
|
|
15
14
|
|
|
16
15
|
// ---------------------------------------------------------------------------
|
|
@@ -295,6 +294,63 @@ Then(/^(the )*"([^"]*)?" link should contain "([^"]*)?" by( its)*(?: "([^"]*)?")
|
|
|
295
294
|
assert.ok(href.includes(url), `Expected element href to contain "${url}" but got "${href}"`);
|
|
296
295
|
});
|
|
297
296
|
|
|
297
|
+
// ---------------------------------------------------------------------------
|
|
298
|
+
// Page title (<title>, the browser tab text)
|
|
299
|
+
// ---------------------------------------------------------------------------
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* Assert the page title is, or is not, exactly this text.
|
|
303
|
+
*
|
|
304
|
+
* The title is `document.title` — the `<title>` element, which is the browser
|
|
305
|
+
* tab text, the bookmark name, the search-result heading and what a screen
|
|
306
|
+
* reader announces first on a new page. On a Drupal site it is the head title
|
|
307
|
+
* pattern, so this is how a test proves the pattern and the token that fills
|
|
308
|
+
* it both work. Compared after trimming, because a title built from a template
|
|
309
|
+
* often carries stray whitespace around the separator.
|
|
310
|
+
*
|
|
311
|
+
* Example #1: Then the page title should be "About Us"
|
|
312
|
+
* Example #2: Then the page title should not be "Access denied"
|
|
313
|
+
* Example #3: And the page title should be "Contact Us | Example"
|
|
314
|
+
* Example #4: When I go to "/blog"
|
|
315
|
+
* Then the page title should be "Blog | Example"
|
|
316
|
+
* Example #5: Then the page title should not be "Page not found | Example"
|
|
317
|
+
*
|
|
318
|
+
*/
|
|
319
|
+
Then(/^(the )*page title should( not)* be "([^"]*)?"$/, async function (theCase, notCase, expected) {
|
|
320
|
+
const title = ((await this.page.title()) || '').trim();
|
|
321
|
+
const want = (expected || '').trim();
|
|
322
|
+
if (notCase) {
|
|
323
|
+
assert.ok(title !== want, `Page title should NOT be "${want}" but it is.`);
|
|
324
|
+
} else {
|
|
325
|
+
assert.strictEqual(title, want, `Expected the page title to be "${want}" but it is "${title}".`);
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Assert the page title contains, or does not contain, this text.
|
|
331
|
+
*
|
|
332
|
+
* The form to reach for on a real site: the head title carries the site name
|
|
333
|
+
* and a separator the test has no business hardcoding, so assert the part the
|
|
334
|
+
* page owns. Case-sensitive, compared after trimming.
|
|
335
|
+
*
|
|
336
|
+
* Example #1: Then the page title should contain "About"
|
|
337
|
+
* Example #2: Then the page title should not contain "Access denied"
|
|
338
|
+
* Example #3: And the page title should contain "Getting Started"
|
|
339
|
+
* Example #4: When I go to "/contact-us"
|
|
340
|
+
* Then the page title should contain "Contact"
|
|
341
|
+
* Example #5: Then the page title should not contain "Untitled"
|
|
342
|
+
*
|
|
343
|
+
*/
|
|
344
|
+
Then(/^(the )*page title should( not)* contain "([^"]*)?"$/, async function (theCase, notCase, expected) {
|
|
345
|
+
const title = ((await this.page.title()) || '').trim();
|
|
346
|
+
const want = (expected || '').trim();
|
|
347
|
+
if (notCase) {
|
|
348
|
+
assert.ok(!title.includes(want), `Page title should NOT contain "${want}" but it is "${title}".`);
|
|
349
|
+
} else {
|
|
350
|
+
assert.ok(title.includes(want), `Expected the page title to contain "${want}" but it is "${title}".`);
|
|
351
|
+
}
|
|
352
|
+
});
|
|
353
|
+
|
|
298
354
|
// ---------------------------------------------------------------------------
|
|
299
355
|
// Response body / status
|
|
300
356
|
// ---------------------------------------------------------------------------
|
|
@@ -323,30 +379,63 @@ Then(/^(the )*response should( not)* contain "([^"]*)?"$/, async function (theCa
|
|
|
323
379
|
}
|
|
324
380
|
});
|
|
325
381
|
|
|
382
|
+
// Re-request the page's own URL through the BROWSER context, so the request
|
|
383
|
+
// carries the session cookies the browser already has — an admin page checked
|
|
384
|
+
// with a cookie-less client answers 403 while the browser renders it fine.
|
|
385
|
+
// Redirects are not followed: a step asserting 301 means the redirect itself.
|
|
386
|
+
async function statusOfCurrentPage(page) {
|
|
387
|
+
const url = page.url();
|
|
388
|
+
const response = await page.context().request.get(url, { maxRedirects: 0 });
|
|
389
|
+
return response.status();
|
|
390
|
+
}
|
|
391
|
+
|
|
326
392
|
/**
|
|
327
393
|
* Assert that the current page's response status is or is not a given code.
|
|
328
394
|
*
|
|
395
|
+
* Re-requests the current URL through the browser's own context, so the check
|
|
396
|
+
* sees what this user sees: the session cookies travel with the request, and
|
|
397
|
+
* redirects are not followed, so a 3xx can actually be asserted.
|
|
398
|
+
*
|
|
329
399
|
* Example #1: Then the response status code should be 200
|
|
330
400
|
* Example #2: And the response status code should not be 404
|
|
331
401
|
* Example #3: Then the response status code should be 301
|
|
402
|
+
* Example #4: When I go to "/no-such-page"
|
|
403
|
+
* Then the response status code should be 404
|
|
404
|
+
* Example #5: Then the response status code should not be 500
|
|
405
|
+
*
|
|
406
|
+
*/
|
|
407
|
+
Then(/^(the )*response status code should( not)* be (\d+)$/, assertStatus);
|
|
408
|
+
|
|
409
|
+
/**
|
|
410
|
+
* Assert the page returns, or does not return, an HTTP status — the phrasing
|
|
411
|
+
* that reads as a sentence about the page rather than about a response object.
|
|
412
|
+
*
|
|
413
|
+
* The same assertion as `the response status code should be N`: one
|
|
414
|
+
* implementation, two phrasings, because a test about a 404 page reads better
|
|
415
|
+
* as "the page should return HTTP status 404" while a test about an API call
|
|
416
|
+
* reads better as "the response status code should be 404".
|
|
417
|
+
*
|
|
418
|
+
* Example #1: Then the page should return HTTP status 200
|
|
419
|
+
* Example #2: Then the page should not return HTTP status 404
|
|
420
|
+
* Example #3: And the page should return HTTP status 403
|
|
421
|
+
* Example #4: When I go to "/no-such-page"
|
|
422
|
+
* Then the page should return HTTP status 404
|
|
423
|
+
* Example #5: Then the page should return HTTP status 301
|
|
332
424
|
*
|
|
333
425
|
*/
|
|
334
|
-
Then(/^(the )*
|
|
335
|
-
|
|
426
|
+
Then(/^(the )*page should( not)* return HTTP status (\d+)$/, assertStatus);
|
|
427
|
+
|
|
428
|
+
async function assertStatus(theCase, notCase, expectedStatusCode) {
|
|
429
|
+
const want = parseInt(expectedStatusCode, 10);
|
|
430
|
+
let status;
|
|
336
431
|
try {
|
|
337
|
-
|
|
338
|
-
const status = response.status;
|
|
339
|
-
if (notCase) {
|
|
340
|
-
assert.notStrictEqual(status, parseInt(expectedStatusCode), `Status code should NOT be ${expectedStatusCode}`);
|
|
341
|
-
} else {
|
|
342
|
-
assert.strictEqual(status, parseInt(expectedStatusCode), `Expected status ${expectedStatusCode} but got ${status}`);
|
|
343
|
-
}
|
|
432
|
+
status = await statusOfCurrentPage(this.page);
|
|
344
433
|
} catch (error) {
|
|
345
|
-
|
|
346
|
-
if (notCase) {
|
|
347
|
-
if (status !== null) assert.notStrictEqual(status, parseInt(expectedStatusCode));
|
|
348
|
-
} else {
|
|
349
|
-
assert.strictEqual(status, parseInt(expectedStatusCode), `Expected status ${expectedStatusCode} but got ${status}`);
|
|
350
|
-
}
|
|
434
|
+
throw friendly(`Could not read the HTTP status of "${this.page.url()}"`, error);
|
|
351
435
|
}
|
|
352
|
-
|
|
436
|
+
if (notCase) {
|
|
437
|
+
assert.notStrictEqual(status, want, `The status should NOT be ${want} but it is.`);
|
|
438
|
+
} else {
|
|
439
|
+
assert.strictEqual(status, want, `Expected HTTP status ${want} from "${this.page.url()}" but got ${status}.`);
|
|
440
|
+
}
|
|
441
|
+
}
|