@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.
Files changed (281) hide show
  1. package/.playwright-mcp/console-2026-09-07T08-40-17-262Z.log +28 -0
  2. package/.playwright-mcp/console-2026-09-07T08-40-55-044Z.log +4 -0
  3. package/.playwright-mcp/console-2026-09-07T08-41-12-557Z.log +18 -0
  4. package/.playwright-mcp/console-2026-09-07T08-42-32-413Z.log +38 -0
  5. package/.playwright-mcp/console-2026-09-07T09-02-43-145Z.log +1 -0
  6. package/.playwright-mcp/console-2026-09-07T09-03-15-665Z.log +17 -0
  7. package/.playwright-mcp/page-2026-09-07T08-40-18-956Z.yml +261 -0
  8. package/.playwright-mcp/page-2026-09-07T08-40-55-673Z.yml +132 -0
  9. package/.playwright-mcp/page-2026-09-07T08-41-13-471Z.yml +386 -0
  10. package/.playwright-mcp/page-2026-09-07T08-42-33-250Z.yml +287 -0
  11. package/AGENTS.md +1 -1
  12. package/CLAUDE.md +6 -5
  13. package/README.md +2 -0
  14. package/docs/04-step-reference.md +15 -1
  15. package/docs/README.md +8 -5
  16. package/docs/install-varbase-e2e.md +0 -2
  17. package/docs/steps/README.md +6 -5
  18. package/docs/steps/assertion.md +90 -5
  19. package/docs/steps/drupal-drimage-improved.md +372 -0
  20. package/docs/steps/navigation.md +81 -1
  21. package/docs/steps/varbase.md +6 -65
  22. package/examples/access-denied.html +6 -0
  23. package/examples/drimage.html +55 -0
  24. package/examples/styles/drimage_improved_1000_667/public/sample.png +0 -0
  25. package/examples/styles/drimage_improved_1200_800/public/sample.png +0 -0
  26. package/examples/styles/drimage_improved_1400_933/public/sample.png +0 -0
  27. package/examples/styles/drimage_improved_1600_1067/public/sample.png +0 -0
  28. package/examples/styles/drimage_improved_1800_1200/public/sample.png +0 -0
  29. package/examples/styles/drimage_improved_2000_1333/public/sample.png +0 -0
  30. package/examples/styles/drimage_improved_200_133/public/sample.png +0 -0
  31. package/examples/styles/drimage_improved_2200_1467/public/sample.png +0 -0
  32. package/examples/styles/drimage_improved_2400_1600/public/sample.png +0 -0
  33. package/examples/styles/drimage_improved_2600_1734/public/sample.png +0 -0
  34. package/examples/styles/drimage_improved_2800_1867/public/sample.png +0 -0
  35. package/examples/styles/drimage_improved_3000_2000/public/sample.png +0 -0
  36. package/examples/styles/drimage_improved_3200_2134/public/sample.png +0 -0
  37. package/examples/styles/drimage_improved_3400_2267/public/sample.png +0 -0
  38. package/examples/styles/drimage_improved_3600_2400/public/sample.png +0 -0
  39. package/examples/styles/drimage_improved_3800_2534/public/sample.png +0 -0
  40. package/examples/styles/drimage_improved_4000_2667/public/sample.png +0 -0
  41. package/examples/styles/drimage_improved_400_267/public/sample.png +0 -0
  42. package/examples/styles/drimage_improved_600_400/public/sample.png +0 -0
  43. package/examples/styles/drimage_improved_800_533/public/sample.png +0 -0
  44. package/examples/user-login.html +12 -0
  45. package/images/varbase-e2e-logo.svg +24 -0
  46. package/package.json +1 -1
  47. package/tests/features/access.feature +33 -0
  48. package/tests/features/drupal-drimage-improved.feature +59 -0
  49. package/tests/features/http-status.feature +21 -0
  50. package/tests/features/page-title.feature +24 -0
  51. package/tests/step-definitions/assertion.steps.js +108 -19
  52. package/tests/step-definitions/drupal-drimage-improved.steps.js +486 -0
  53. package/tests/step-definitions/navigation.steps.js +101 -1
  54. package/tests/step-definitions/varbase.steps.js +0 -83
  55. package/.playwright-mcp/console-2026-08-09T19-48-04-420Z.log +0 -6
  56. package/.playwright-mcp/console-2026-08-09T19-48-21-910Z.log +0 -4
  57. package/.playwright-mcp/console-2026-08-09T19-48-37-544Z.log +0 -5
  58. package/.playwright-mcp/console-2026-08-09T20-02-58-240Z.log +0 -5
  59. package/.playwright-mcp/console-2026-08-09T20-15-05-487Z.log +0 -71
  60. package/.playwright-mcp/console-2026-08-09T20-31-11-228Z.log +0 -14
  61. package/.playwright-mcp/console-2026-08-09T20-34-03-115Z.log +0 -7
  62. package/.playwright-mcp/console-2026-08-09T20-34-34-018Z.log +0 -85
  63. package/.playwright-mcp/console-2026-08-09T20-34-34-740Z.log +0 -46
  64. package/.playwright-mcp/console-2026-08-09T20-34-35-618Z.log +0 -92
  65. package/.playwright-mcp/console-2026-08-09T22-57-59-606Z.log +0 -14
  66. package/.playwright-mcp/console-2026-08-09T23-09-53-902Z.log +0 -28
  67. package/.playwright-mcp/console-2026-08-09T23-09-55-918Z.log +0 -49
  68. package/.playwright-mcp/console-2026-08-09T23-09-57-522Z.log +0 -42
  69. package/.playwright-mcp/console-2026-08-09T23-40-26-847Z.log +0 -28
  70. package/.playwright-mcp/console-2026-08-10T00-05-53-423Z.log +0 -8
  71. package/.playwright-mcp/console-2026-08-10T08-51-59-747Z.log +0 -5
  72. package/.playwright-mcp/console-2026-08-10T09-00-26-735Z.log +0 -7
  73. package/.playwright-mcp/page-2026-08-09T19-48-23-422Z.yml +0 -288
  74. package/.playwright-mcp/page-2026-08-09T19-48-32-827Z.yml +0 -39
  75. package/.playwright-mcp/page-2026-08-09T19-48-39-150Z.yml +0 -39
  76. package/.playwright-mcp/page-2026-08-09T19-50-55-594Z.yml +0 -787
  77. package/.playwright-mcp/page-2026-08-09T19-51-28-160Z.yml +0 -391
  78. package/.playwright-mcp/page-2026-08-09T19-51-45-546Z.yml +0 -391
  79. package/.playwright-mcp/page-2026-08-09T19-51-46-085Z.yml +0 -391
  80. package/.playwright-mcp/page-2026-08-09T19-51-46-355Z.yml +0 -391
  81. package/.playwright-mcp/page-2026-08-09T19-51-49-918Z.yml +0 -391
  82. package/.playwright-mcp/page-2026-08-09T19-52-30-248Z.yml +0 -415
  83. package/.playwright-mcp/page-2026-08-09T19-52-42-510Z.yml +0 -415
  84. package/.playwright-mcp/page-2026-08-09T19-52-45-588Z.yml +0 -391
  85. package/.playwright-mcp/page-2026-08-09T19-52-54-615Z.yml +0 -391
  86. package/.playwright-mcp/page-2026-08-09T19-52-55-424Z.yml +0 -391
  87. package/.playwright-mcp/page-2026-08-09T19-52-55-553Z.yml +0 -391
  88. package/.playwright-mcp/page-2026-08-09T19-52-58-991Z.yml +0 -391
  89. package/.playwright-mcp/page-2026-08-09T19-53-29-261Z.yml +0 -415
  90. package/.playwright-mcp/page-2026-08-09T19-53-40-322Z.yml +0 -415
  91. package/.playwright-mcp/page-2026-08-09T19-53-44-146Z.yml +0 -391
  92. package/.playwright-mcp/page-2026-08-09T19-53-51-021Z.yml +0 -391
  93. package/.playwright-mcp/page-2026-08-09T19-53-51-565Z.yml +0 -391
  94. package/.playwright-mcp/page-2026-08-09T19-53-51-979Z.yml +0 -391
  95. package/.playwright-mcp/page-2026-08-09T19-53-54-883Z.yml +0 -391
  96. package/.playwright-mcp/page-2026-08-09T19-54-24-537Z.yml +0 -415
  97. package/.playwright-mcp/page-2026-08-09T20-01-07-921Z.yml +0 -404
  98. package/.playwright-mcp/page-2026-08-09T20-01-35-366Z.yml +0 -404
  99. package/.playwright-mcp/page-2026-08-09T20-01-54-083Z.yml +0 -404
  100. package/.playwright-mcp/page-2026-08-09T20-02-07-954Z.yml +0 -416
  101. package/.playwright-mcp/page-2026-08-09T20-02-24-800Z.yml +0 -404
  102. package/.playwright-mcp/page-2026-08-09T20-02-29-695Z.yml +0 -404
  103. package/.playwright-mcp/page-2026-08-09T20-02-33-819Z.yml +0 -404
  104. package/.playwright-mcp/page-2026-08-09T20-02-41-437Z.yml +0 -404
  105. package/.playwright-mcp/page-2026-08-09T20-02-53-232Z.yml +0 -416
  106. package/.playwright-mcp/page-2026-08-09T20-03-00-246Z.yml +0 -404
  107. package/.playwright-mcp/page-2026-08-09T20-03-03-297Z.yml +0 -404
  108. package/.playwright-mcp/page-2026-08-09T20-03-11-014Z.yml +0 -404
  109. package/.playwright-mcp/page-2026-08-09T20-03-21-049Z.yml +0 -416
  110. package/.playwright-mcp/page-2026-08-10T01-04-54-039Z.yml +0 -410
  111. package/.playwright-mcp/page-2026-08-10T01-05-06-967Z.png +0 -0
  112. package/.playwright-mcp/page-2026-08-10T01-05-52-136Z.yml +0 -720
  113. package/.playwright-mcp/page-2026-08-10T01-06-05-985Z.yml +0 -410
  114. package/.playwright-mcp/page-2026-08-10T01-06-25-942Z.yml +0 -726
  115. package/.playwright-mcp/page-2026-08-10T01-25-57-152Z.yml +0 -395
  116. package/.playwright-mcp/page-2026-08-10T01-26-48-853Z.yml +0 -395
  117. package/.playwright-mcp/page-2026-08-10T01-27-47-127Z.yml +0 -413
  118. package/.playwright-mcp/page-2026-08-10T01-27-57-349Z.yml +0 -413
  119. package/.playwright-mcp/page-2026-08-10T01-28-07-943Z.yml +0 -425
  120. package/.playwright-mcp/page-2026-08-10T01-28-30-462Z.yml +0 -369
  121. package/.playwright-mcp/page-2026-08-10T01-29-00-369Z.yml +0 -413
  122. package/.playwright-mcp/page-2026-08-10T01-29-08-988Z.yml +0 -413
  123. package/.playwright-mcp/page-2026-08-10T01-29-19-888Z.yml +0 -425
  124. package/.playwright-mcp/page-2026-08-10T01-29-30-189Z.yml +0 -369
  125. package/.playwright-mcp/page-2026-08-10T01-30-08-272Z.yml +0 -413
  126. package/.playwright-mcp/page-2026-08-10T01-30-16-955Z.yml +0 -413
  127. package/.playwright-mcp/page-2026-08-10T01-30-27-612Z.yml +0 -425
  128. package/.playwright-mcp/page-2026-08-10T01-30-37-943Z.yml +0 -465
  129. package/.playwright-mcp/page-2026-08-10T01-31-15-265Z.yml +0 -413
  130. package/.playwright-mcp/page-2026-08-10T01-31-24-328Z.yml +0 -413
  131. package/.playwright-mcp/page-2026-08-10T01-31-36-622Z.yml +0 -425
  132. package/.playwright-mcp/page-2026-08-10T01-31-45-965Z.yml +0 -470
  133. package/.playwright-mcp/page-2026-08-10T01-32-13-400Z.yml +0 -413
  134. package/.playwright-mcp/page-2026-08-10T01-32-23-469Z.yml +0 -413
  135. package/.playwright-mcp/page-2026-08-10T01-32-33-859Z.yml +0 -425
  136. package/.playwright-mcp/page-2026-08-10T01-32-43-461Z.yml +0 -513
  137. package/.playwright-mcp/page-2026-08-10T01-33-13-160Z.yml +0 -413
  138. package/.playwright-mcp/page-2026-08-10T01-33-23-937Z.yml +0 -413
  139. package/.playwright-mcp/page-2026-08-10T01-33-35-367Z.yml +0 -425
  140. package/.playwright-mcp/page-2026-08-10T01-33-47-266Z.yml +0 -459
  141. package/.playwright-mcp/page-2026-08-10T01-34-14-452Z.yml +0 -413
  142. package/.playwright-mcp/page-2026-08-10T01-34-26-042Z.yml +0 -413
  143. package/.playwright-mcp/page-2026-08-10T01-34-40-869Z.yml +0 -425
  144. package/.playwright-mcp/page-2026-08-10T01-34-49-587Z.yml +0 -391
  145. package/.playwright-mcp/page-2026-08-10T01-35-16-735Z.yml +0 -413
  146. package/.playwright-mcp/page-2026-08-10T01-35-24-882Z.yml +0 -413
  147. package/.playwright-mcp/page-2026-08-10T01-35-36-165Z.yml +0 -425
  148. package/.playwright-mcp/page-2026-08-10T01-35-45-644Z.yml +0 -455
  149. package/.playwright-mcp/page-2026-08-10T01-36-18-148Z.yml +0 -413
  150. package/.playwright-mcp/page-2026-08-10T01-36-26-751Z.yml +0 -413
  151. package/.playwright-mcp/page-2026-08-10T01-36-37-834Z.yml +0 -425
  152. package/.playwright-mcp/page-2026-08-10T01-36-48-078Z.yml +0 -370
  153. package/.playwright-mcp/page-2026-08-10T01-37-16-309Z.yml +0 -413
  154. package/.playwright-mcp/page-2026-08-10T01-37-28-723Z.yml +0 -413
  155. package/.playwright-mcp/page-2026-08-10T01-37-39-325Z.yml +0 -425
  156. package/.playwright-mcp/page-2026-08-10T01-37-48-278Z.yml +0 -409
  157. package/.playwright-mcp/page-2026-08-10T01-38-27-405Z.yml +0 -413
  158. package/.playwright-mcp/page-2026-08-10T01-38-36-994Z.yml +0 -413
  159. package/.playwright-mcp/page-2026-08-10T01-38-49-584Z.yml +0 -425
  160. package/.playwright-mcp/page-2026-08-10T01-38-59-289Z.yml +0 -396
  161. package/.playwright-mcp/page-2026-08-10T01-39-24-880Z.yml +0 -413
  162. package/.playwright-mcp/page-2026-08-10T01-39-35-551Z.yml +0 -413
  163. package/.playwright-mcp/page-2026-08-10T01-39-47-960Z.yml +0 -425
  164. package/.playwright-mcp/page-2026-08-10T01-39-56-844Z.yml +0 -549
  165. package/.playwright-mcp/page-2026-08-10T01-40-24-645Z.yml +0 -413
  166. package/.playwright-mcp/page-2026-08-10T01-40-33-806Z.yml +0 -413
  167. package/.playwright-mcp/page-2026-08-10T01-40-46-946Z.yml +0 -425
  168. package/.playwright-mcp/page-2026-08-10T01-40-56-503Z.yml +0 -443
  169. package/.playwright-mcp/page-2026-08-10T01-41-32-064Z.yml +0 -413
  170. package/.playwright-mcp/page-2026-08-10T01-41-40-666Z.yml +0 -413
  171. package/.playwright-mcp/page-2026-08-10T01-41-51-325Z.yml +0 -425
  172. package/.playwright-mcp/page-2026-08-10T01-41-58-790Z.yml +0 -368
  173. package/.playwright-mcp/page-2026-08-10T01-42-26-459Z.yml +0 -413
  174. package/.playwright-mcp/page-2026-08-10T01-42-38-306Z.yml +0 -413
  175. package/.playwright-mcp/page-2026-08-10T01-42-49-073Z.yml +0 -425
  176. package/.playwright-mcp/page-2026-08-10T01-42-57-453Z.yml +0 -443
  177. package/.playwright-mcp/page-2026-08-10T01-43-32-099Z.yml +0 -413
  178. package/.playwright-mcp/page-2026-08-10T01-43-42-882Z.yml +0 -413
  179. package/.playwright-mcp/page-2026-08-10T01-43-54-853Z.yml +0 -425
  180. package/.playwright-mcp/page-2026-08-10T01-44-04-373Z.yml +0 -399
  181. package/.playwright-mcp/page-2026-08-10T01-44-30-874Z.yml +0 -413
  182. package/.playwright-mcp/page-2026-08-10T01-44-39-830Z.yml +0 -413
  183. package/.playwright-mcp/page-2026-08-10T01-44-51-515Z.yml +0 -425
  184. package/.playwright-mcp/page-2026-08-10T01-44-59-974Z.yml +0 -503
  185. package/.playwright-mcp/page-2026-08-10T01-45-26-748Z.yml +0 -413
  186. package/.playwright-mcp/page-2026-08-10T01-45-36-685Z.yml +0 -413
  187. package/.playwright-mcp/page-2026-08-10T01-45-47-715Z.yml +0 -425
  188. package/.playwright-mcp/page-2026-08-10T01-45-57-895Z.yml +0 -469
  189. package/.playwright-mcp/page-2026-08-10T01-46-36-371Z.yml +0 -413
  190. package/.playwright-mcp/page-2026-08-10T01-46-49-906Z.yml +0 -413
  191. package/.playwright-mcp/page-2026-08-10T01-47-01-554Z.yml +0 -425
  192. package/.playwright-mcp/page-2026-08-10T01-47-12-712Z.yml +0 -581
  193. package/.playwright-mcp/page-2026-08-10T01-47-39-024Z.yml +0 -413
  194. package/.playwright-mcp/page-2026-08-10T01-47-49-714Z.yml +0 -413
  195. package/.playwright-mcp/page-2026-08-10T01-48-00-608Z.yml +0 -425
  196. package/.playwright-mcp/page-2026-08-10T01-48-09-739Z.yml +0 -604
  197. package/.playwright-mcp/page-2026-08-10T01-48-51-940Z.yml +0 -413
  198. package/.playwright-mcp/page-2026-08-10T01-49-01-562Z.yml +0 -413
  199. package/.playwright-mcp/page-2026-08-10T01-49-13-751Z.yml +0 -425
  200. package/.playwright-mcp/page-2026-08-10T01-49-22-503Z.yml +0 -400
  201. package/.playwright-mcp/page-2026-08-10T01-49-49-311Z.yml +0 -413
  202. package/.playwright-mcp/page-2026-08-10T01-50-00-769Z.yml +0 -413
  203. package/.playwright-mcp/page-2026-08-10T01-50-12-083Z.yml +0 -425
  204. package/.playwright-mcp/page-2026-08-10T01-50-23-765Z.yml +0 -458
  205. package/.playwright-mcp/page-2026-08-10T01-51-02-339Z.yml +0 -413
  206. package/.playwright-mcp/page-2026-08-10T01-51-12-711Z.yml +0 -413
  207. package/.playwright-mcp/page-2026-08-10T01-51-25-370Z.yml +0 -425
  208. package/.playwright-mcp/page-2026-08-10T01-51-33-936Z.yml +0 -368
  209. package/.playwright-mcp/page-2026-08-10T01-52-09-467Z.yml +0 -413
  210. package/.playwright-mcp/page-2026-08-10T01-52-21-616Z.yml +0 -413
  211. package/.playwright-mcp/page-2026-08-10T01-52-32-806Z.yml +0 -425
  212. package/.playwright-mcp/page-2026-08-10T01-52-42-382Z.yml +0 -407
  213. package/.playwright-mcp/page-2026-08-10T01-53-11-994Z.yml +0 -413
  214. package/.playwright-mcp/page-2026-08-10T01-53-21-669Z.yml +0 -413
  215. package/.playwright-mcp/page-2026-08-10T01-53-33-141Z.yml +0 -425
  216. package/.playwright-mcp/page-2026-08-10T01-53-43-582Z.yml +0 -443
  217. package/.playwright-mcp/page-2026-08-10T01-54-19-884Z.yml +0 -413
  218. package/.playwright-mcp/page-2026-08-10T01-54-32-359Z.yml +0 -413
  219. package/.playwright-mcp/page-2026-08-10T01-54-43-530Z.yml +0 -425
  220. package/.playwright-mcp/page-2026-08-10T01-54-53-891Z.yml +0 -474
  221. package/.playwright-mcp/page-2026-08-10T01-55-24-634Z.yml +0 -413
  222. package/.playwright-mcp/page-2026-08-10T01-55-35-283Z.yml +0 -413
  223. package/.playwright-mcp/page-2026-08-10T01-55-46-649Z.yml +0 -425
  224. package/.playwright-mcp/page-2026-08-10T01-55-56-585Z.yml +0 -431
  225. package/.playwright-mcp/page-2026-08-10T01-56-31-670Z.yml +0 -413
  226. package/.playwright-mcp/page-2026-08-10T01-56-40-782Z.yml +0 -413
  227. package/.playwright-mcp/page-2026-08-10T01-56-52-065Z.yml +0 -425
  228. package/.playwright-mcp/page-2026-08-10T01-57-03-705Z.yml +0 -445
  229. package/.playwright-mcp/page-2026-08-10T01-57-31-390Z.yml +0 -413
  230. package/.playwright-mcp/page-2026-08-10T01-57-44-756Z.yml +0 -413
  231. package/.playwright-mcp/page-2026-08-10T01-57-56-802Z.yml +0 -425
  232. package/.playwright-mcp/page-2026-08-10T01-58-06-937Z.yml +0 -468
  233. package/.playwright-mcp/page-2026-08-10T01-58-40-595Z.yml +0 -413
  234. package/.playwright-mcp/page-2026-08-10T01-58-51-715Z.yml +0 -413
  235. package/.playwright-mcp/page-2026-08-10T01-59-04-402Z.yml +0 -425
  236. package/.playwright-mcp/page-2026-08-10T01-59-15-638Z.yml +0 -472
  237. package/.playwright-mcp/page-2026-08-10T01-59-58-162Z.yml +0 -413
  238. package/.playwright-mcp/page-2026-08-10T02-00-09-962Z.yml +0 -413
  239. package/.playwright-mcp/page-2026-08-10T02-00-21-468Z.yml +0 -425
  240. package/.playwright-mcp/page-2026-08-10T02-00-33-248Z.yml +0 -451
  241. package/.playwright-mcp/page-2026-08-10T02-01-15-418Z.yml +0 -413
  242. package/.playwright-mcp/page-2026-08-10T02-01-27-182Z.yml +0 -413
  243. package/.playwright-mcp/page-2026-08-10T02-01-38-250Z.yml +0 -425
  244. package/.playwright-mcp/page-2026-08-10T04-20-27-979Z.yml +0 -513
  245. package/.playwright-mcp/page-2026-08-10T04-20-41-431Z.yml +0 -513
  246. package/.playwright-mcp/page-2026-08-10T04-21-46-133Z.yml +0 -406
  247. package/.playwright-mcp/page-2026-08-10T04-22-10-938Z.yml +0 -406
  248. package/.playwright-mcp/page-2026-08-10T04-23-00-626Z.yml +0 -406
  249. package/.playwright-mcp/page-2026-08-10T04-23-19-844Z.yml +0 -418
  250. package/.playwright-mcp/page-2026-08-10T04-25-00-732Z.yml +0 -455
  251. package/.playwright-mcp/page-2026-08-10T04-25-35-125Z.yml +0 -412
  252. package/.playwright-mcp/page-2026-08-10T04-25-46-640Z.yml +0 -412
  253. package/.playwright-mcp/page-2026-08-10T04-25-55-092Z.yml +0 -549
  254. package/.playwright-mcp/page-2026-08-10T04-26-26-403Z.yml +0 -406
  255. package/.playwright-mcp/page-2026-08-10T04-26-40-673Z.yml +0 -406
  256. package/.playwright-mcp/page-2026-08-10T04-26-48-427Z.yml +0 -604
  257. package/.playwright-mcp/page-2026-08-10T04-27-23-584Z.yml +0 -408
  258. package/.playwright-mcp/page-2026-08-10T04-27-34-294Z.yml +0 -408
  259. package/.playwright-mcp/page-2026-08-10T04-27-42-299Z.yml +0 -443
  260. package/.playwright-mcp/page-2026-08-10T04-28-20-032Z.yml +0 -406
  261. package/.playwright-mcp/page-2026-08-10T04-28-32-275Z.yml +0 -406
  262. package/.playwright-mcp/page-2026-08-10T04-28-41-592Z.yml +0 -581
  263. package/.playwright-mcp/page-2026-08-10T04-29-19-972Z.yml +0 -414
  264. package/.playwright-mcp/page-2026-08-10T04-29-30-961Z.yml +0 -414
  265. package/.playwright-mcp/page-2026-08-10T04-29-39-044Z.yml +0 -465
  266. package/.playwright-mcp/page-2026-08-10T04-30-13-196Z.yml +0 -402
  267. package/.playwright-mcp/page-2026-08-10T04-30-24-867Z.yml +0 -402
  268. package/.playwright-mcp/page-2026-08-10T04-30-32-372Z.yml +0 -409
  269. package/.playwright-mcp/page-2026-08-10T04-31-06-199Z.yml +0 -402
  270. package/.playwright-mcp/page-2026-08-10T04-31-17-733Z.yml +0 -402
  271. package/.playwright-mcp/page-2026-08-10T04-31-26-296Z.yml +0 -445
  272. package/.playwright-mcp/page-2026-08-10T04-32-02-456Z.yml +0 -402
  273. package/.playwright-mcp/page-2026-08-10T04-32-14-091Z.yml +0 -402
  274. package/.playwright-mcp/page-2026-08-10T04-32-23-437Z.yml +0 -396
  275. package/.playwright-mcp/page-2026-08-10T04-32-58-401Z.yml +0 -403
  276. package/.playwright-mcp/page-2026-08-10T04-33-09-818Z.yml +0 -403
  277. package/.playwright-mcp/page-2026-08-10T04-33-20-858Z.yml +0 -468
  278. package/.playwright-mcp/page-2026-08-10T04-33-53-074Z.yml +0 -407
  279. package/.playwright-mcp/page-2026-08-10T04-34-05-806Z.yml +0 -407
  280. package/.playwright-mcp/page-2026-08-10T08-52-00-165Z.yml +0 -0
  281. package/.playwright-mcp/page-2026-08-10T08-52-17-430Z.yml +0 -410
@@ -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, &quot;Segoe UI&quot;, 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, &quot;Segoe UI&quot;, 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, &quot;Segoe UI&quot;, 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, &quot;Segoe UI&quot;, 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, &quot;Segoe UI&quot;, 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, &quot;Segoe UI&quot;, 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, &quot;Segoe UI&quot;, 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, &quot;Segoe UI&quot;, 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, &quot;Segoe UI&quot;, 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, &quot;Segoe UI&quot;, 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, &quot;Segoe UI&quot;, 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, &quot;Segoe UI&quot;, 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, &quot;Segoe UI&quot;, 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, &quot;Segoe UI&quot;, 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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vardot/varbase-e2e",
3
- "version": "2.0.2",
3
+ "version": "2.0.4",
4
4
  "description": "Varbase E2E automated functional testing.",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -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, response body, response
5
- // status code, element existence, CSS property, regex matching, count.
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 )*response status code should( not)* be (\d+)$/, async function (theCase, notCase, expectedStatusCode) {
335
- const currentURL = this.page.url();
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
- const response = await axios.get(currentURL);
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
- const status = error.response ? error.response.status : null;
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
+ }