@vardot/varbase-e2e 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/AGENTS.md +148 -0
  2. package/CLAUDE.md +544 -0
  3. package/README.md +22 -0
  4. package/bin/generate-reports.js +363 -0
  5. package/bin/init-varbase-e2e.js +330 -0
  6. package/bin/postinstall.js +26 -0
  7. package/cucumber.js +125 -0
  8. package/docs/00-quick-start.md +102 -0
  9. package/docs/01-getting-started.md +102 -0
  10. package/docs/02-bbr-smart-waits.md +77 -0
  11. package/docs/03-selector-registry.md +95 -0
  12. package/docs/04-step-reference.md +801 -0
  13. package/docs/05-web-first-assertions.md +91 -0
  14. package/docs/06-network-and-dialogs.md +83 -0
  15. package/docs/07-auth-state.md +75 -0
  16. package/docs/08-clock-mocking.md +59 -0
  17. package/docs/09-api-testing.md +114 -0
  18. package/docs/10-accessibility.md +167 -0
  19. package/docs/11-debugging.md +129 -0
  20. package/docs/12-ai-agent-guide.md +338 -0
  21. package/docs/13-faq.md +236 -0
  22. package/docs/14-recipes-cookbook.md +255 -0
  23. package/docs/15-tag-conventions.md +76 -0
  24. package/docs/16-ci-cd.md +90 -0
  25. package/docs/README.md +125 -0
  26. package/docs/advanced-screenshots/then-i-save-fullscreen-screenshot.md +36 -0
  27. package/docs/advanced-screenshots/then-i-save-width-x-height-screenshot.md +34 -0
  28. package/docs/advanced-screenshots/when-i-save-screenshot-name-filename.md +45 -0
  29. package/docs/advanced-screenshots.md +52 -0
  30. package/docs/advanced-selectors.md +18 -0
  31. package/docs/api-step-definitions.md +45 -0
  32. package/docs/global-settings.md +267 -0
  33. package/docs/install-varbase-e2e/ddev-varbase-e2e.md +52 -0
  34. package/docs/install-varbase-e2e.md +34 -0
  35. package/docs/overview.md +40 -0
  36. package/docs/step-definitions/given-i-am-anonymous-user.md +67 -0
  37. package/docs/step-definitions/given-i-am-homepage.md +68 -0
  38. package/docs/step-definitions/given-i-am-specific-page.md +72 -0
  39. package/docs/step-definitions/then-i-should-be.md +56 -0
  40. package/docs/step-definitions/then-i-should-see.md +62 -0
  41. package/docs/step-definitions/then-item-checkbox.md +54 -0
  42. package/docs/step-definitions/then-item-link-should-contain-url.md +84 -0
  43. package/docs/step-definitions/then-item-should-contain.md +67 -0
  44. package/docs/step-definitions/then-radio-button-value-should-be-selected.md +68 -0
  45. package/docs/step-definitions/then-response-status-code-should-be-number.md +69 -0
  46. package/docs/step-definitions/then-value-radio-button-selected.md +62 -0
  47. package/docs/step-definitions/when-i-attach-file-file-name-element.md +71 -0
  48. package/docs/step-definitions/when-i-check-checkbox.md +60 -0
  49. package/docs/step-definitions/when-i-click-link.md +51 -0
  50. package/docs/step-definitions/when-i-click-operation-text-row.md +71 -0
  51. package/docs/step-definitions/when-i-fill.md +59 -0
  52. package/docs/step-definitions/when-i-go-homepage.md +60 -0
  53. package/docs/step-definitions/when-i-go-specific-page.md +67 -0
  54. package/docs/step-definitions/when-i-move-backward-one-page.md +49 -0
  55. package/docs/step-definitions/when-i-move-forward-one-page.md +58 -0
  56. package/docs/step-definitions/when-i-press-button.md +58 -0
  57. package/docs/step-definitions/when-i-reload-page.md +51 -0
  58. package/docs/step-definitions/when-i-scroll.md +73 -0
  59. package/docs/step-definitions/when-i-select-option-select-list.md +53 -0
  60. package/docs/step-definitions/when-i-select-radio-button-value.md +62 -0
  61. package/docs/step-definitions/when-i-uncheck-checkbox.md +57 -0
  62. package/docs/step-definitions/when-i-wait-ajax-finish.md +64 -0
  63. package/docs/step-definitions/when-i-wait.md +62 -0
  64. package/docs/step-definitions.md +82 -0
  65. package/docs/steps/README.md +137 -0
  66. package/docs/steps/a11y.md +731 -0
  67. package/docs/steps/action.md +181 -0
  68. package/docs/steps/api.md +679 -0
  69. package/docs/steps/assertion.md +328 -0
  70. package/docs/steps/auth.md +108 -0
  71. package/docs/steps/clock.md +171 -0
  72. package/docs/steps/cookie.md +293 -0
  73. package/docs/steps/debug.md +52 -0
  74. package/docs/steps/dialog.md +226 -0
  75. package/docs/steps/drupal-canvas.md +414 -0
  76. package/docs/steps/drupal-ckeditor.md +118 -0
  77. package/docs/steps/drupal-core.md +688 -0
  78. package/docs/steps/drupal-layout-builder.md +437 -0
  79. package/docs/steps/drupal-media.md +107 -0
  80. package/docs/steps/drupal-moderation.md +81 -0
  81. package/docs/steps/drupal-paragraphs.md +36 -0
  82. package/docs/steps/element.md +455 -0
  83. package/docs/steps/field.md +648 -0
  84. package/docs/steps/file-download.md +235 -0
  85. package/docs/steps/form.md +344 -0
  86. package/docs/steps/iframe.md +248 -0
  87. package/docs/steps/input.md +220 -0
  88. package/docs/steps/javascript.md +111 -0
  89. package/docs/steps/keyboard.md +107 -0
  90. package/docs/steps/link.md +217 -0
  91. package/docs/steps/metatag.md +99 -0
  92. package/docs/steps/modal.md +232 -0
  93. package/docs/steps/navigation.md +275 -0
  94. package/docs/steps/network.md +284 -0
  95. package/docs/steps/path.md +203 -0
  96. package/docs/steps/response.md +102 -0
  97. package/docs/steps/responsive.md +139 -0
  98. package/docs/steps/rest.md +140 -0
  99. package/docs/steps/screenshot.md +211 -0
  100. package/docs/steps/scroll.md +266 -0
  101. package/docs/steps/selectors.md +848 -0
  102. package/docs/steps/storage.md +254 -0
  103. package/docs/steps/table.md +216 -0
  104. package/docs/steps/varbase.md +391 -0
  105. package/docs/steps/video.md +111 -0
  106. package/docs/steps/wait.md +553 -0
  107. package/docs/steps/web-first.md +289 -0
  108. package/docs/steps/xml.md +505 -0
  109. package/docs/steps/yaml.md +951 -0
  110. package/examples/a11y.html +31 -0
  111. package/examples/about-us.html +11 -0
  112. package/examples/account.html +32 -0
  113. package/examples/ajax-wait-examples.html +147 -0
  114. package/examples/contact-us.html +10 -0
  115. package/examples/cookies.html +10 -0
  116. package/examples/date.html +12 -0
  117. package/examples/dynamic-examples.html +498 -0
  118. package/examples/element.html +11 -0
  119. package/examples/example-api.json +28 -0
  120. package/examples/existing-page.html +11 -0
  121. package/examples/field.html +24 -0
  122. package/examples/index.html +37 -0
  123. package/examples/keyboard.html +11 -0
  124. package/examples/links.html +9 -0
  125. package/examples/modal.html +14 -0
  126. package/examples/path.html +3 -0
  127. package/examples/table.html +13 -0
  128. package/examples/test--modal-dialogs.html +252 -0
  129. package/examples/test--then--i-should--not--see-text-in-element.html +48 -0
  130. package/examples/test--then--i-should--see-text-in-element.html +48 -0
  131. package/examples/test--then--i-should--see-text-matching-pattern.html +31 -0
  132. package/examples/test--then--i-should-see-text-in-table-row.html +232 -0
  133. package/examples/test--then--the-checkbox-checked.html +68 -0
  134. package/examples/test--then--the-element-should_not-contain-cssproperty.html +47 -0
  135. package/examples/test--then--the-link-should-contain.html +21 -0
  136. package/examples/test--when--i-additionally-select.html +27 -0
  137. package/examples/test--when--i-attach-file-to-feild.html +50 -0
  138. package/examples/test--when--i-check-uncheck-checkbox.html +47 -0
  139. package/examples/test--when--i-click-link.html +18 -0
  140. package/examples/test--when--i-click-text-in-table-row.html +178 -0
  141. package/examples/test--when--i-fill-in.html +48 -0
  142. package/examples/test--when--i-press-button.html +31 -0
  143. package/examples/test--when--i-reload-page.html +27 -0
  144. package/examples/test--when--i-scroll-functionality.html +177 -0
  145. package/examples/test--when--i-scroll-left-right-functionality.html +149 -0
  146. package/examples/test--when--i-select-option-from-dropdownlist.html +35 -0
  147. package/examples/test--when--i-select-radio-button.html +95 -0
  148. package/examples/test--when-i-wait-max-of-time.html +39 -0
  149. package/examples/test--when-i-wait-page-until-is-loaded.html +47 -0
  150. package/examples/test--when-i-wait-specific-time.html +39 -0
  151. package/examples/test-acceptable-url-path.html +11 -0
  152. package/examples/video-demo.html +43 -0
  153. package/package.json +56 -0
  154. package/playwright.config.ts +39 -0
  155. package/tests/assets/test-document.pdf +14 -0
  156. package/tests/assets/vardot.png +0 -0
  157. package/tests/features/a11y.feature +39 -0
  158. package/tests/features/ajax-wait-examples.feature +24 -0
  159. package/tests/features/api-step-definitions-individual.feature +185 -0
  160. package/tests/features/complete-api-testing-examples.feature +205 -0
  161. package/tests/features/cookie.feature +13 -0
  162. package/tests/features/date.feature +11 -0
  163. package/tests/features/dynamic-content-examples.feature +156 -0
  164. package/tests/features/element.feature +16 -0
  165. package/tests/features/field.feature +25 -0
  166. package/tests/features/keyboard.feature +10 -0
  167. package/tests/features/link.feature +11 -0
  168. package/tests/features/modal-advanced-example.feature +54 -0
  169. package/tests/features/modal-basic-example.feature +42 -0
  170. package/tests/features/modal-error-handling-example.feature +37 -0
  171. package/tests/features/modal.feature +11 -0
  172. package/tests/features/path.feature +16 -0
  173. package/tests/features/response.feature +8 -0
  174. package/tests/features/responsive.feature +10 -0
  175. package/tests/features/table.feature +18 -0
  176. package/tests/features/test--given--i-am-an-anonymous-user.feature +10 -0
  177. package/tests/features/test--given--i-am-on-homepage.feature +16 -0
  178. package/tests/features/test--then--i-save-screenshot.feature +33 -0
  179. package/tests/features/test--then--i-see-locator.feature +320 -0
  180. package/tests/features/test--then--i-should--not--see-text-in-element.feature +13 -0
  181. package/tests/features/test--then--i-should--see-text-in-element-by-attr.feature +10 -0
  182. package/tests/features/test--then--i-should--see-text-in-element.feature +10 -0
  183. package/tests/features/test--then--i-should--see-text-matching-pattern-in-element.feature +13 -0
  184. package/tests/features/test--then--i-should--see-text-matching-pattern.feature +18 -0
  185. package/tests/features/test--then--i-should-be-on-page.feature +10 -0
  186. package/tests/features/test--then--i-should-be-on-the-homepage.feature +10 -0
  187. package/tests/features/test--then--i-should-not-see-an-element-by-attr.feature +8 -0
  188. package/tests/features/test--then--i-should-not-see-an-element.feature +8 -0
  189. package/tests/features/test--then--i-should-see-an-element-by-attr.feature +8 -0
  190. package/tests/features/test--then--i-should-see-an-element.feature +8 -0
  191. package/tests/features/test--then--i-should-see-n-elements.feature +24 -0
  192. package/tests/features/test--then--i-should-see-text-in-table-row.feature +96 -0
  193. package/tests/features/test--then--print-current-url-and-response.feature +21 -0
  194. package/tests/features/test--then--the-checkbox-is-checked.feature +18 -0
  195. package/tests/features/test--then--the-checkbox-should-be-checked.feature +16 -0
  196. package/tests/features/test--then--the-element-should-contain-cssproperty.feature +9 -0
  197. package/tests/features/test--then--the-element-should-not-contain-cssproperty.feature +10 -0
  198. package/tests/features/test--then--the-field-should-contain-value.feature +11 -0
  199. package/tests/features/test--then--the-response-should-contain.feature +11 -0
  200. package/tests/features/test--then--the-response-status-code-should-be.feature +31 -0
  201. package/tests/features/test--then--the-url-should-match.feature +7 -0
  202. package/tests/features/test--then-the-link-should-contain-by-attribute.feature +18 -0
  203. package/tests/features/test--then-the-link-should-contain.feature +7 -0
  204. package/tests/features/test--when--i-additionally-select.feature +30 -0
  205. package/tests/features/test--when--i-attach-file-to-feild.feature +9 -0
  206. package/tests/features/test--when--i-check-checkbox.feature +21 -0
  207. package/tests/features/test--when--i-click-link-by-attribute.feature +21 -0
  208. package/tests/features/test--when--i-click-link.feature +9 -0
  209. package/tests/features/test--when--i-click-text-in-table-row.feature +37 -0
  210. package/tests/features/test--when--i-fill-in-by-attr.feature +31 -0
  211. package/tests/features/test--when--i-fill-in-table-by-attr.feature +19 -0
  212. package/tests/features/test--when--i-fill-in.feature +32 -0
  213. package/tests/features/test--when--i-follow.feature +22 -0
  214. package/tests/features/test--when--i-go-to-homepage.feature +9 -0
  215. package/tests/features/test--when--i-move-forward-backward-one-page.feature +14 -0
  216. package/tests/features/test--when--i-press-button-by-attribute.feature +18 -0
  217. package/tests/features/test--when--i-press-button.feature +13 -0
  218. package/tests/features/test--when--i-reload-page.feature +11 -0
  219. package/tests/features/test--when--i-scroll-left-right.feature +48 -0
  220. package/tests/features/test--when--i-scroll.feature +48 -0
  221. package/tests/features/test--when--i-select-option-from-dropdownlist.feature +21 -0
  222. package/tests/features/test--when--i-select-radio-button.feature +37 -0
  223. package/tests/features/test--when--i-wait-page-is-loaded.feature +8 -0
  224. package/tests/features/test--when--i-wait-time.feature +21 -0
  225. package/tests/features/video.feature +18 -0
  226. package/tests/features/wait.feature +7 -0
  227. package/tests/features/yaml.feature +102 -0
  228. package/tests/selectors/_canonical-keys.json +113 -0
  229. package/tests/selectors/back-end-selectors.json +19 -0
  230. package/tests/selectors/cms-contentful-admin.json +35 -0
  231. package/tests/selectors/cms-craft-admin.json +39 -0
  232. package/tests/selectors/cms-drupal-cms-gin.json +56 -0
  233. package/tests/selectors/cms-drupal-core-claro.json +50 -0
  234. package/tests/selectors/cms-generic-admin.json +34 -0
  235. package/tests/selectors/cms-ghost-admin.json +34 -0
  236. package/tests/selectors/cms-joomla-admin.json +41 -0
  237. package/tests/selectors/cms-magento2-admin.json +32 -0
  238. package/tests/selectors/cms-prestashop-admin.json +38 -0
  239. package/tests/selectors/cms-shopify-admin.json +25 -0
  240. package/tests/selectors/cms-strapi-admin.json +42 -0
  241. package/tests/selectors/cms-typo3-admin.json +41 -0
  242. package/tests/selectors/cms-woocommerce-front.json +50 -0
  243. package/tests/selectors/cms-wordpress-admin.json +31 -0
  244. package/tests/selectors/framework-ant-design.json +80 -0
  245. package/tests/selectors/framework-bootstrap.json +86 -0
  246. package/tests/selectors/framework-bulma.json +74 -0
  247. package/tests/selectors/framework-chakra.json +58 -0
  248. package/tests/selectors/framework-foundation.json +51 -0
  249. package/tests/selectors/framework-material-ui.json +72 -0
  250. package/tests/selectors/framework-shadcn.json +51 -0
  251. package/tests/selectors/framework-tailwind.json +40 -0
  252. package/tests/selectors/framework-vuetify.json +61 -0
  253. package/tests/selectors/front-end-selectors.json +16 -0
  254. package/tests/selectors/homepage-selectors.json +13 -0
  255. package/tests/step-definitions/a11y.steps.js +800 -0
  256. package/tests/step-definitions/action.steps.js +167 -0
  257. package/tests/step-definitions/api.steps.js +732 -0
  258. package/tests/step-definitions/assertion.steps.js +352 -0
  259. package/tests/step-definitions/auth.steps.js +126 -0
  260. package/tests/step-definitions/clock.steps.js +128 -0
  261. package/tests/step-definitions/cookie.steps.js +216 -0
  262. package/tests/step-definitions/debug.steps.js +39 -0
  263. package/tests/step-definitions/dialog.steps.js +193 -0
  264. package/tests/step-definitions/drupal-canvas.steps.js +764 -0
  265. package/tests/step-definitions/drupal-ckeditor.steps.js +108 -0
  266. package/tests/step-definitions/drupal-core.steps.js +665 -0
  267. package/tests/step-definitions/drupal-helpers.js +371 -0
  268. package/tests/step-definitions/drupal-layout-builder.steps.js +466 -0
  269. package/tests/step-definitions/drupal-media.steps.js +99 -0
  270. package/tests/step-definitions/drupal-moderation.steps.js +71 -0
  271. package/tests/step-definitions/drupal-paragraphs.steps.js +50 -0
  272. package/tests/step-definitions/element.steps.js +356 -0
  273. package/tests/step-definitions/field.steps.js +653 -0
  274. package/tests/step-definitions/file-download.steps.js +211 -0
  275. package/tests/step-definitions/form.steps.js +333 -0
  276. package/tests/step-definitions/iframe.steps.js +228 -0
  277. package/tests/step-definitions/input.steps.js +202 -0
  278. package/tests/step-definitions/javascript.steps.js +232 -0
  279. package/tests/step-definitions/keyboard.steps.js +112 -0
  280. package/tests/step-definitions/link.steps.js +142 -0
  281. package/tests/step-definitions/metatag.steps.js +91 -0
  282. package/tests/step-definitions/modal.steps.js +244 -0
  283. package/tests/step-definitions/navigation.steps.js +218 -0
  284. package/tests/step-definitions/network.steps.js +280 -0
  285. package/tests/step-definitions/path.steps.js +141 -0
  286. package/tests/step-definitions/response.steps.js +98 -0
  287. package/tests/step-definitions/responsive.steps.js +125 -0
  288. package/tests/step-definitions/rest.steps.js +111 -0
  289. package/tests/step-definitions/screenshot.steps.js +423 -0
  290. package/tests/step-definitions/scroll.steps.js +189 -0
  291. package/tests/step-definitions/selectors.steps.js +1003 -0
  292. package/tests/step-definitions/storage.steps.js +194 -0
  293. package/tests/step-definitions/table.steps.js +181 -0
  294. package/tests/step-definitions/varbase-e2e.js +897 -0
  295. package/tests/step-definitions/varbase.steps.js +458 -0
  296. package/tests/step-definitions/video.steps.js +178 -0
  297. package/tests/step-definitions/wait.steps.js +400 -0
  298. package/tests/step-definitions/web-first.steps.js +298 -0
  299. package/tests/step-definitions/xml.steps.js +411 -0
  300. package/tests/step-definitions/yaml.steps.js +913 -0
  301. package/tsconfig.json +26 -0
@@ -0,0 +1,10 @@
1
+ Feature: An example to ensure that you are on a specific page
2
+ As an anonymous user,
3
+ I want to ensure that I am on a specific page
4
+
5
+ Scenario: Ensure that you are on a specific page
6
+ Given I am on the homepage
7
+ When I go to "/about-us.html"
8
+ Then I should be on "/about-us.html"
9
+ When I move backward one page
10
+ Then I should be on homepage
@@ -0,0 +1,10 @@
1
+ Feature: An example to ensure that you are on the homepage
2
+ As an anonymous user,
3
+ I want to ensure that I am on the homepage
4
+
5
+ Scenario: Ensure that you are on the homepage
6
+ Given I am on the homepage
7
+ When I go to "/about-us.html"
8
+ And I move backward one page
9
+ And I wait max of 3 seconds
10
+ Then I should be on the homepage
@@ -0,0 +1,8 @@
1
+ Feature: An example to ensure that a specific element is not visible on the current page by its attribute
2
+ As a user,
3
+ I want to ensure that when I'm on a particular page, I do not see a specific element identified by its attribute
4
+
5
+ Scenario: Ensure that a specific element is not visible based on its attribute
6
+ Given I am on "/test--then--i-should--see-text-in-element.html"
7
+ Then I should not see an "emailId" element by its "id" attr
8
+ And I should not see a "countryCss" element by attr
@@ -0,0 +1,8 @@
1
+ Feature: An example to ensure that a specific element is not visible on the current page by its label
2
+ As a user,
3
+ I want to ensure that when I'm on a particular page, I do not see a specific element by its label
4
+
5
+ Scenario: Ensure to test that a specific element is not visible by its label
6
+ Given I am on "/test--then--i-should--see-text-in-element.html"
7
+ Then I should not see an "Eamil" element
8
+ And I should not see a "Country" element
@@ -0,0 +1,8 @@
1
+ Feature: An example to ensure visibility of a specific element on the current page by its attributes
2
+ As a user,
3
+ I want to make sure that when I'm on a particular page, I can see a specific element by its attributes
4
+
5
+ Scenario: Ensure visibility of a specific element by its attributes
6
+ Given I am on "/test--then--i-should--see-text-in-element.html"
7
+ Then I should see a "uname" element by its "id" attr
8
+ And I should see a "pwordcss" element by attr
@@ -0,0 +1,8 @@
1
+ Feature: An example to ensure that a specific element is visible on the current page by its label
2
+ As a user,
3
+ I want to ensure that when I'm on a particular page, I can see a specific element by its label
4
+
5
+ Scenario: Check to test seeing for a specific element by its label
6
+ Given I am on "/test--then--i-should--see-text-in-element.html"
7
+ Then I should see a "Username" element
8
+ And I should see a "Password" element
@@ -0,0 +1,24 @@
1
+ Feature: Assert the exact number of elements matching a selector
2
+ As a tester,
3
+ I want to assert how many elements match a CSS selector
4
+ so that I can catch regressions in list lengths, card counts, and nav items.
5
+
6
+ Scenario: Count h1 headings on the homepage
7
+ Given I am on homepage
8
+ Then I should see 1 "h1" element
9
+
10
+ Scenario: Count list items inside the first list on the homepage
11
+ Given I am on homepage
12
+ Then I should see 13 "ul:first-of-type li" elements
13
+
14
+ Scenario: Expect zero matches for a missing selector
15
+ Given I am on homepage
16
+ Then I should see 0 ".does-not-exist" elements
17
+
18
+ Scenario: Pronoun variant — "we"
19
+ Given I am on homepage
20
+ Then we should see 1 "h1" element
21
+
22
+ Scenario: No pronoun
23
+ Given I am on homepage
24
+ Then should see 1 "h1" element
@@ -0,0 +1,96 @@
1
+ Feature: Assert text visibility in table rows
2
+ As a test automation engineer
3
+ I want to verify text content within specific table rows
4
+ So that I can validate data accuracy and proper display in tables
5
+
6
+ Background:
7
+ Given I am on "/test--then--i-should-see-text-in-table-row.html"
8
+
9
+ Scenario: Verify employee information is displayed correctly
10
+ Then I should see "Admin" in the "John Smith" row
11
+ And I should see "john.smith@company.com" in the "John Smith" row
12
+ And I should see "Engineering" in the "John Smith" row
13
+ And I should see "Active" in the "John Smith" row
14
+ And I should see "$85,000" in the "John Smith" row
15
+
16
+ Scenario: Verify different employee roles are displayed
17
+ Then I should see "User" in the "Jane Doe" row
18
+ And I should see "Manager" in the "Bob Johnson" row
19
+ And I should see "User" in the "Alice Cooper" row
20
+ And I should not see "Admin" in the "Jane Doe" row
21
+ And I should not see "Admin" in the "Bob Johnson" row
22
+
23
+ Scenario: Verify employee status visibility
24
+ Then I should see "Active" in the "John Smith" row
25
+ And I should see "Active" in the "Jane Doe" row
26
+ And I should see "On Leave" in the "Bob Johnson" row
27
+ And I should see "Inactive" in the "Alice Cooper" row
28
+ And I should not see "Inactive" in the "John Smith" row
29
+ And I should not see "Active" in the "Alice Cooper" row
30
+
31
+ Scenario: Verify product inventory information
32
+ Then I should see "Wireless Headphones" in the "WH-2024-001" row
33
+ And I should see "$199.99" in the "Wireless Headphones" row
34
+ And I should see "150" in the "Wireless Headphones" row
35
+ And I should see "In Stock" in the "Wireless Headphones" row
36
+ And I should not see "Out of Stock" in the "Wireless Headphones" row
37
+
38
+ Scenario: Verify low stock and out of stock products
39
+ Then I should see "Low Stock" in the "Gaming Mouse" row
40
+ And I should see "5" in the "Gaming Mouse" row
41
+ And I should see "Out of Stock" in the "Office Chair" row
42
+ And I should see "0" in the "Office Chair" row
43
+ And I should not see "In Stock" in the "Gaming Mouse" row
44
+ And I should not see "In Stock" in the "Office Chair" row
45
+
46
+ Scenario: Verify order status information
47
+ Then I should see "Completed" in the "ORD-2024-001" row
48
+ And I should see "Michael Chen" in the "ORD-2024-001" row
49
+ And I should see "Processing" in the "ORD-2024-002" row
50
+ And I should see "Sarah Wilson" in the "ORD-2024-002" row
51
+ And I should see "Cancelled" in the "ORD-2024-003" row
52
+ And I should see "Shipped" in the "ORD-2024-004" row
53
+
54
+ Scenario: Verify negative assertions for order status
55
+ Then I should not see "Processing" in the "ORD-2024-001" row
56
+ And I should not see "Completed" in the "ORD-2024-002" row
57
+ And I should not see "Shipped" in the "ORD-2024-003" row
58
+ And I should not see "Cancelled" in the "ORD-2024-004" row
59
+
60
+ Scenario: Verify project information
61
+ Then I should see "Website Redesign" in the "John Smith" row
62
+ And I should see "75%" in the "Website Redesign" row
63
+ And I should see "High" in the "Website Redesign" row
64
+ And I should see "Mobile App" in the "Jane Doe" row
65
+ And I should see "45%" in the "Mobile App" row
66
+ And I should see "Medium" in the "Mobile App" row
67
+
68
+ Scenario: Verify project progress and priorities
69
+ Then I should see "90%" in the "API Integration" row
70
+ And I should see "High" in the "API Integration" row
71
+ And I should see "3 members" in the "API Integration" row
72
+ And I should not see "Low" in the "API Integration" row
73
+ And I should not see "100%" in the "API Integration" row
74
+
75
+ Scenario: Cross-table data verification
76
+ Then I should see "John Smith" in the "john.smith@company.com" row
77
+ And I should see "John Smith" in the "Website Redesign" row
78
+ And I should see "Jane Doe" in the "jane.doe@company.com" row
79
+ And I should see "Jane Doe" in the "Mobile App" row
80
+ And I should not see "Bob Johnson" in the "Website Redesign" row
81
+ And I should not see "Alice Cooper" in the "Mobile App" row
82
+
83
+ Scenario: Verify currency and numeric data
84
+ Then I should see "$199.99" in the "Wireless Headphones" row
85
+ And I should see "$79.99" in the "Gaming Mouse" row
86
+ And I should see "$299.99" in the "Office Chair" row
87
+ And I should see "$49.99" in the "Laptop Stand" row
88
+ And I should not see "$0.00" in the "Wireless Headphones" row
89
+ And I should not see "$999.99" in the "Gaming Mouse" row
90
+
91
+ Scenario: Verify date and timestamp information
92
+ Then I should see "2024-08-15" in the "ORD-2024-001" row
93
+ And I should see "2024-08-16" in the "ORD-2024-002" row
94
+ And I should see "2024-09-15" in the "Website Redesign" row
95
+ And I should see "2024-10-30" in the "Mobile App" row
96
+ And I should not see "2023-01-01" in the "ORD-2024-001" row
@@ -0,0 +1,21 @@
1
+ Feature: Debug helpers — print current URL and last response HTML
2
+ As a tester,
3
+ I want to dump the current URL and page HTML to the console
4
+ so that I can diagnose failures without attaching a debugger.
5
+
6
+ Scenario: Print current URL
7
+ Given I am on homepage
8
+ Then print current URL
9
+
10
+ Scenario: Print last response HTML
11
+ Given I am on homepage
12
+ Then print last response
13
+
14
+ Scenario: Print both in the same scenario
15
+ Given I am on homepage
16
+ Then print current URL
17
+ And print last response
18
+
19
+ Scenario: Print current URL after navigating
20
+ Given I am on "/about-us.html"
21
+ Then print current URL
@@ -0,0 +1,18 @@
1
+ Feature: An example of a test case for selecting a checkbox
2
+ As a tester,
3
+ I want to be able to check that the checkbox is checked or not
4
+
5
+ Scenario: Verify that the checkbox is checked
6
+ Given I am on "/test--then--the-checkbox-checked.html"
7
+ When I check "rememberMe"
8
+ And I check "PrivacyPolicy"
9
+ And I press "Register" by attr
10
+ Then the checkbox "#rememberMe" is checked
11
+ And I should see "Registration Done Successfully"
12
+
13
+ Scenario: Verify that the checkbox is not checked
14
+ Given I am on "/test--then--the-checkbox-checked.html"
15
+ When I check "PrivacyPolicy"
16
+ And I press "Register" by attr
17
+ Then the checkbox "#rememberMe" is not checked
18
+ Then I should see "Registration Done Successfully"
@@ -0,0 +1,16 @@
1
+ Feature: An example to assert the selection of a checkbox
2
+ As an anonymous user,
3
+ I want to ensure that a specific checkbox is checked before submitting a particular action
4
+
5
+ Scenario: Ensure that the checkbox is checked
6
+ Given I am on "/test--then--the-checkbox-checked.html"
7
+ When I check "PrivacyPolicy"
8
+ And I press "Register" by attr
9
+ Then the checkbox "#PrivacyPolicy" should be checked
10
+ And I should see "Registration Done Successfully"
11
+
12
+ Scenario: Ensure that the checkbox is not checked
13
+ Given I am on "/test--then--the-checkbox-checked.html"
14
+ When I press "Register" by attr
15
+ Then the "#PrivacyPolicy" checkbox should not be checked
16
+ And I should see "Please check Agree to Privacy Policy"
@@ -0,0 +1,9 @@
1
+ Feature: An example to verify whether the element contains a specific expected CSS property.
2
+ As a developer,
3
+ I want to verify whether the element contains a specific expected CSS property.
4
+
5
+ Scenario: Verify whether the element contains a specific expected CSS property
6
+ Given I am on "/test--then--the-element-should_not-contain-cssproperty.html"
7
+ Then I should see a "body" element by attr
8
+ When I press "Submit"
9
+ Then the "body" element should contain "background-color:white;"
@@ -0,0 +1,10 @@
1
+ Feature: An example to verify whether the element does not contain a specific expected CSS property.
2
+ As a developer,
3
+ I want to verify whether the element does not contain a specific expected CSS property.
4
+
5
+ Scenario: Verify whether the element does not contain a certain CSS property
6
+ Given I am on "/test--then--the-element-should_not-contain-cssproperty.html"
7
+ Then I should see a "body" element by attr
8
+ When I press "Submit"
9
+ Then the "#uname" element should not contain "border:solid 5px red;"
10
+ And the "pword" element should not contain "font-size: 28px;"
@@ -0,0 +1,11 @@
1
+ Feature: An example to verify whether the field contains a specific value identified by its element label
2
+ As a tester,
3
+ I want to verify whether the field has a specific value based on its element label
4
+
5
+ Scenario: Verify that the field has a particular value based on its element label
6
+ Given I am on "/test--then--i-should--not--see-text-in-element.html"
7
+ And I fill in "Username" with "user1"
8
+ Then the "Username" field should contain "user1"
9
+ When I press "Reset" by attr
10
+ And I fill in "Username" with "user2"
11
+ Then the "Username" field should contain "user2"
@@ -0,0 +1,11 @@
1
+ Feature: An example to ensure that the response page contains specific text
2
+ As a tester,
3
+ I want to navigate to a page to verify whether it contains specific text
4
+
5
+ Scenario: Ensure that the response page contains specific text
6
+ Given I am on the homepage
7
+ Then the response should contain "Welcome to the homepage"
8
+
9
+ Scenario: Ensure that the response page does not contain specific text
10
+ Given I am on the homepage
11
+ Then the response should not contain "Access denied"
@@ -0,0 +1,31 @@
1
+ Feature: An example to check the status code of a page response
2
+ As a tester,
3
+ I want to be able to check the status code of a page response
4
+
5
+ Scenario: Check the response status code for a non-existing page
6
+ Given I am on the homepage
7
+ When I go to "/not-existing-page.html"
8
+ And I wait max of 2 seconds
9
+ Then the response status code should be 404
10
+ And the response status code should not be 200
11
+
12
+ Scenario: Check the response status code for an existing page
13
+ Given I am on the homepage
14
+ When I go to "/existing-page.html"
15
+ And I wait max of 2 seconds
16
+ Then the response status code should not be 404
17
+ And the response status code should be 200
18
+
19
+ Scenario: Check the response status code for an API that returns a JSON format
20
+ Given I am on the homepage
21
+ When I go to "/example-api.json"
22
+ And I wait max of 2 seconds
23
+ Then the response status code should not be 404
24
+ And the response status code should be 200
25
+
26
+ Scenario: Check the response status code for a parameter in the API that returns JSON format
27
+ Given I am on the homepage
28
+ When I go to "/example-api.json?include=author"
29
+ And I wait max of 2 seconds
30
+ Then the response status code should not be 404
31
+ And the response status code should be 200
@@ -0,0 +1,7 @@
1
+ Feature: An example of checking for matching URLs based on a specific pattern
2
+ As a tester,
3
+ I want to ensure that the current page path matches a specific pattern
4
+
5
+ Scenario: Ensure that the current page path matches the URL pattern that uses dashes between words
6
+ Given I am on "/test-acceptable-url-path.html"
7
+ Then the url should match "(https?:\/\/)?([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.[a-zA-Z]{2,}(:\d+)?(\/[^?#\s_]+)?(\?[^#\s_]+)?(#.*)?"
@@ -0,0 +1,18 @@
1
+ Feature: An example of checking the href attribute of a link element to see if it contains a specific URL, which is found by its attributes.
2
+ As a tester,
3
+ I want to be able to check link href if contain a specific URL found by its attributes
4
+
5
+ Scenario: Verify that the link contains "about" by its direct id, class attribute
6
+ Given I am on "/test--then--the-link-should-contain.html"
7
+ Then the "#aboutUsid" link should contain "about" by attr
8
+ And the ".contactUs" link should contain "/contact-" by attr
9
+
10
+ Scenario: Verify that the link contains "contact-" by its id, class attribute
11
+ Given I am on "/test--then--the-link-should-contain.html"
12
+ Then the "contactUsid" link should contain "/contact-" by its "id" attribute
13
+ And the "aboutUs" link should contain "about" by its "class" attribute
14
+
15
+ Scenario: Verify that the link contains "about" by its "Title" attribute
16
+ Given I am on "/test--then--the-link-should-contain.html"
17
+ Then the "aboutUsTitle" link should contain "about-us" by attr
18
+ And the "aboutUsTitle" link should contain "about-us" by its "title" attribute
@@ -0,0 +1,7 @@
1
+ Feature: An example of checking the href attribute of a link element to see if it contains a specific text.
2
+ As a tester,
3
+ I want to be able to check link href if contain a specific text
4
+
5
+ Scenario: Verify that the link contains "about"
6
+ Given I am on "/test--then--the-link-should-contain.html"
7
+ Then the "About us" link should contain "about"
@@ -0,0 +1,30 @@
1
+ Feature: Add an option to a multi-select without clearing existing selection
2
+ As a tester,
3
+ I want to build up a multi-select selection across multiple steps
4
+ so that I can test <select multiple> workflows one option at a time.
5
+
6
+ Scenario: Add two colors to an empty Colors multi-select
7
+ Given I am on "/test--when--i-additionally-select.html"
8
+ When I additionally select "Red" from "Colors"
9
+ And I additionally select "Blue" from "Colors"
10
+
11
+ Scenario: Start with one, then add two more
12
+ Given I am on "/test--when--i-additionally-select.html"
13
+ When I select "Red" from "Colors"
14
+ And I additionally select "Blue" from "Colors"
15
+ And I additionally select "Green" from "Colors"
16
+
17
+ Scenario: Pronoun variant — "we"
18
+ Given I am on "/test--when--i-additionally-select.html"
19
+ When we additionally select "Red" from "Colors"
20
+ And we additionally select "Yellow" from "Colors"
21
+
22
+ Scenario: No pronoun
23
+ Given I am on "/test--when--i-additionally-select.html"
24
+ When additionally select "Admin" from "Roles"
25
+ And additionally select "Editor" from "Roles"
26
+
27
+ Scenario: Multi-select on a second select on the same page
28
+ Given I am on "/test--when--i-additionally-select.html"
29
+ When I additionally select "Admin" from "Roles"
30
+ And I additionally select "Viewer" from "Roles"
@@ -0,0 +1,9 @@
1
+ Feature: An example of checking the attachment of a file to a field
2
+ As a tester,
3
+ I want to be able to attach a file (e.g., images) to a field
4
+
5
+ Scenario: Checking the attachment of an image to a field
6
+ Given I am on "/test--when--i-attach-file-to-feild.html"
7
+ When I attach the file "vardot.png" to "#fileUpload"
8
+ And I press "Submit" by attr
9
+ And I wait 2 second
@@ -0,0 +1,21 @@
1
+ Feature: An example of checking and unchecking a checkbox
2
+ As a tester,
3
+ I want to be able to check and uncheck a checkbox
4
+
5
+ Scenario: Implementing the ability to check and uncheck a checkbox
6
+ Given I am on "/test--when--i-check-uncheck-checkbox.html"
7
+ When I check "bike"
8
+ And I check "car"
9
+ And I press "Submit" by "value" attr
10
+ Then I should see "You have a Bike Car"
11
+ When I check "van"
12
+ And I press "Submit" by "value" attr
13
+ Then I should see "You have a Bike Car Van"
14
+ When I uncheck "bike"
15
+ And I press "Submit" by "value" attr
16
+ Then I should see "You have a Car Van"
17
+ When I uncheck "car"
18
+ When I uncheck "van"
19
+ And I press "Submit" by "value" attr
20
+ Then I should see "You have a"
21
+
@@ -0,0 +1,21 @@
1
+ Feature: An example of clicking a link by its attribute
2
+ As a tester,
3
+ I want to be able to click a link by its attribute
4
+
5
+ Scenario: Verify the action of clicking a link by targeting its ID attribute
6
+ Given I am on "/test--when--i-click-link.html"
7
+ When I click "#aboutUsid" by attr
8
+ And I wait max of 2 seconds
9
+ Then I should see "About Us"
10
+
11
+ Scenario: Verify the action of clicking a link by its ID attribute
12
+ Given I am on "/test--when--i-click-link.html"
13
+ When I click "aboutUsid" by its "id" attribute
14
+ And I wait max of 2 seconds
15
+ Then I should see "About Us"
16
+
17
+ Scenario: Verify the action of clicking a link by its class attribute
18
+ Given I am on "/test--when--i-click-link.html"
19
+ When I click "aboutUs" by "class" attr
20
+ And I wait max of 2 seconds
21
+ Then I should see "About Us"
@@ -0,0 +1,9 @@
1
+ Feature: An example of clicking a link by its text
2
+ As a tester,
3
+ I want to be able to click a link based on its text
4
+
5
+ Scenario: Verify clicking a link by its text
6
+ Given I am on "/test--when--i-click-link.html"
7
+ When I click "About us link"
8
+ And I wait max of 2 seconds
9
+ Then I should see "About Us"
@@ -0,0 +1,37 @@
1
+ Feature: Click specific text in table rows
2
+ As a test automation engineer
3
+ I want to be able to click on specific text within table rows
4
+ So that I can interact with table actions based on row content
5
+
6
+ Background:
7
+ Given I am on "/test--when--i-click-text-in-table-row.html"
8
+
9
+ Scenario: Click Edit button in John Smith row
10
+ When I click "Edit" in the "John Smith" row
11
+ Then I should see "Performed (edit) action on (John Smith)" in the "#action-message" element by attr
12
+
13
+ Scenario: Click View Details button in Jane Doe row
14
+ When I click "View Details" in the "Jane Doe" row
15
+ Then I should see "Performed (view) action on (Jane Doe)" in the "#action-message" element by attr
16
+
17
+ Scenario: Click Delete button in Bob Johnson row
18
+ When I click "Delete" in the "Bob Johnson" row
19
+ Then I should see "Performed (delete) action on (Bob Johnson)" in the "#action-message" element by attr
20
+
21
+ Scenario: Click Download link in Product A row
22
+ When I click "Download" in the "Product A" row
23
+ Then I should see "Performed (download) action on (Product A)" in the "#action-message" element by attr
24
+
25
+ Scenario: Click View Details in Order #12345 row
26
+ When I click "View Details" in the "Order #12345" row
27
+ Then I should see "Performed (view) action on (Order #12345)" in the "#action-message" element by attr
28
+
29
+ Scenario: Click Track in Order #67890 row
30
+ When I click "Track" in the "Order #67890" row
31
+ Then I should see "Performed (track) action on (Order #67890)" in the "#action-message" element by attr
32
+
33
+ Scenario: Multiple table interaction
34
+ When I click "Edit" in the "John Smith" row
35
+ And I wait 1 second
36
+ And I click "Download" in the "Product B" row
37
+ Then I should see "Performed (download) action on (Product B)" in the "#action-message" element by attr
@@ -0,0 +1,31 @@
1
+ Feature: An example of filling an input textbox with a value using its attributes.
2
+ As a tester,
3
+ I want to fill an input field with a value using its attributes.
4
+
5
+ Scenario: Fill in the input field using its ID and class attributes.
6
+ Given I am on "/test--when--i-fill-in.html"
7
+ When I fill in "#uname" with "John Smith" by attr
8
+ And I fill in "pwordcss" with "1234" by its "class" attr
9
+ When I press "Login"
10
+ Then I should see "You enter Username: John Smith and Password: 1234"
11
+
12
+ Scenario: Fill in the input field using its placeholder attribute.
13
+ Given I am on "/test--when--i-fill-in.html"
14
+ When I fill in "Your full name" with "John Smith" by its "placeholder" attr
15
+ And I fill in "Your Password" with "1234" by attr
16
+ When I press "Login"
17
+ Then I should see "You enter Username: John Smith and Password: 1234"
18
+
19
+ Scenario: Specify a value, then identify and use the field's attribute to fill in the input field.
20
+ Given I am on "/test--when--i-fill-in.html"
21
+ When I fill in "John Smith" for "#uname" by attr
22
+ When I fill in "1234" for "pwordcss" by attr
23
+ When I press "Login"
24
+ Then I should see "You enter Username: John Smith and Password: 1234"
25
+
26
+ Scenario: Fill in the input field with an empty value using its attribute.
27
+ Given I am on "/test--when--i-fill-in.html"
28
+ When I fill in "#uname" with: by attribute
29
+ And I fill in "password" with: by attr
30
+ When I press "Login" by attr
31
+ Then I should see "You enter Username: and Password:"
@@ -0,0 +1,19 @@
1
+ Feature: An example of populating a table of input fields with values using their attributes.
2
+ As a tester,
3
+ I want to be able to fill input text fields with values using their attributes.
4
+
5
+ Scenario: Check the filling of a table of input fields using different attributes.
6
+ Given I am on "/test--when--i-fill-in.html"
7
+ When I fill in the following: by attr
8
+ | #uname | John Smith |
9
+ | pwordcss | 1234 |
10
+ When I press "Login"
11
+ Then I should see "You enter Username: John Smith and Password: 1234"
12
+
13
+ Scenario: Check the filling of a table of input fields using the placeholder attribute.
14
+ Given I am on "/test--when--i-fill-in.html"
15
+ When I fill in the following: by its "placeholder" attribute
16
+ | Your full name | John Smith |
17
+ | Your Password | 1234 |
18
+ When I press "Login"
19
+ Then I should see "You enter Username: John Smith and Password: 1234"
@@ -0,0 +1,32 @@
1
+ Feature: An example of filling an input textbox with a value using its label.
2
+ As a tester,
3
+ I want to be able to fill input text fields with values using their labels.
4
+
5
+ Scenario: Check filling an input field with a value using its label.
6
+ Given I am on "/test--when--i-fill-in.html"
7
+ When I fill in "Username" with "John Smith"
8
+ When I fill in "Password" with "1234"
9
+ When I press "Login"
10
+ Then I should see "You enter Username: John Smith and Password: 1234"
11
+
12
+ Scenario: Check filling in a value for an input field using its label.
13
+ Given I am on "/test--when--i-fill-in.html"
14
+ When I fill in "John Smith" for "Username"
15
+ When I fill in "1234" for "Password"
16
+ When I press "Login"
17
+ Then I should see "You enter Username: John Smith and Password: 1234"
18
+
19
+ Scenario: Check filling an input field with an empty value using its label.
20
+ Given I am on "/test--when--i-fill-in.html"
21
+ When I fill in "Username" with:
22
+ And I fill in "Password" with:
23
+ When I press "Login"
24
+ Then I should see "You enter Username: and Password:"
25
+
26
+ Scenario: Check filling a table of input fields using their labels.
27
+ Given I am on "/test--when--i-fill-in.html"
28
+ When I fill in the following:
29
+ | Username | John Smith |
30
+ | Password | 1234 |
31
+ When I press "Login"
32
+ Then I should see "You enter Username: John Smith and Password: 1234"
@@ -0,0 +1,22 @@
1
+ Feature: Follow a link by its visible text
2
+ As a tester,
3
+ I want to follow a link by its visible anchor text
4
+ so that scenarios read like a user journey.
5
+
6
+ Scenario: Follow a link by its visible text
7
+ Given I am on "/test--when--i-click-link.html"
8
+ When I follow "About us link"
9
+ And I wait max of 2 seconds
10
+ Then I should see "About Us"
11
+
12
+ Scenario: Follow a link using the "we" pronoun
13
+ Given I am on "/test--when--i-click-link.html"
14
+ When we follow "About us link"
15
+ And I wait max of 2 seconds
16
+ Then I should see "About Us"
17
+
18
+ Scenario: Follow a link with no pronoun
19
+ Given I am on "/test--when--i-click-link.html"
20
+ When follow "About us link"
21
+ And I wait max of 2 seconds
22
+ Then I should see "About Us"
@@ -0,0 +1,9 @@
1
+ Feature: An example of testing whether the user is on any page and then navigating to the homepage.
2
+ As a user,
3
+ I want to be able to navigate to the homepage from another page.
4
+ So that I can check the welcome message on the homepage.
5
+
6
+ Scenario: Check if on the About Us page, then navigate to the homepage.
7
+ Given I am on "/about-us.html"
8
+ When I go to the homepage
9
+ Then I should see "Welcome to the homepage of the Varbase E2E Examples"
@@ -0,0 +1,14 @@
1
+ Feature: An example of navigating forward and backward by one page.
2
+ As a tester,
3
+ I want to be able to navigate forward and backward by one page.
4
+
5
+ Scenario: Check to navigate forward and backward one page
6
+ Given I am on the homepage
7
+ When I go to "/about-us.html"
8
+ Then I should see "About Us"
9
+ When I move backward one page
10
+ And I wait max of 3 seconds
11
+ Then I should see "Welcome to the homepage of the Varbase E2E Examples"
12
+ When I move forward one page
13
+ And I wait max of 3 seconds
14
+ Then I should see "About Us"