@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.
- package/AGENTS.md +148 -0
- package/CLAUDE.md +544 -0
- package/README.md +22 -0
- package/bin/generate-reports.js +363 -0
- package/bin/init-varbase-e2e.js +330 -0
- package/bin/postinstall.js +26 -0
- package/cucumber.js +125 -0
- package/docs/00-quick-start.md +102 -0
- package/docs/01-getting-started.md +102 -0
- package/docs/02-bbr-smart-waits.md +77 -0
- package/docs/03-selector-registry.md +95 -0
- package/docs/04-step-reference.md +801 -0
- package/docs/05-web-first-assertions.md +91 -0
- package/docs/06-network-and-dialogs.md +83 -0
- package/docs/07-auth-state.md +75 -0
- package/docs/08-clock-mocking.md +59 -0
- package/docs/09-api-testing.md +114 -0
- package/docs/10-accessibility.md +167 -0
- package/docs/11-debugging.md +129 -0
- package/docs/12-ai-agent-guide.md +338 -0
- package/docs/13-faq.md +236 -0
- package/docs/14-recipes-cookbook.md +255 -0
- package/docs/15-tag-conventions.md +76 -0
- package/docs/16-ci-cd.md +90 -0
- package/docs/README.md +125 -0
- package/docs/advanced-screenshots/then-i-save-fullscreen-screenshot.md +36 -0
- package/docs/advanced-screenshots/then-i-save-width-x-height-screenshot.md +34 -0
- package/docs/advanced-screenshots/when-i-save-screenshot-name-filename.md +45 -0
- package/docs/advanced-screenshots.md +52 -0
- package/docs/advanced-selectors.md +18 -0
- package/docs/api-step-definitions.md +45 -0
- package/docs/global-settings.md +267 -0
- package/docs/install-varbase-e2e/ddev-varbase-e2e.md +52 -0
- package/docs/install-varbase-e2e.md +34 -0
- package/docs/overview.md +40 -0
- package/docs/step-definitions/given-i-am-anonymous-user.md +67 -0
- package/docs/step-definitions/given-i-am-homepage.md +68 -0
- package/docs/step-definitions/given-i-am-specific-page.md +72 -0
- package/docs/step-definitions/then-i-should-be.md +56 -0
- package/docs/step-definitions/then-i-should-see.md +62 -0
- package/docs/step-definitions/then-item-checkbox.md +54 -0
- package/docs/step-definitions/then-item-link-should-contain-url.md +84 -0
- package/docs/step-definitions/then-item-should-contain.md +67 -0
- package/docs/step-definitions/then-radio-button-value-should-be-selected.md +68 -0
- package/docs/step-definitions/then-response-status-code-should-be-number.md +69 -0
- package/docs/step-definitions/then-value-radio-button-selected.md +62 -0
- package/docs/step-definitions/when-i-attach-file-file-name-element.md +71 -0
- package/docs/step-definitions/when-i-check-checkbox.md +60 -0
- package/docs/step-definitions/when-i-click-link.md +51 -0
- package/docs/step-definitions/when-i-click-operation-text-row.md +71 -0
- package/docs/step-definitions/when-i-fill.md +59 -0
- package/docs/step-definitions/when-i-go-homepage.md +60 -0
- package/docs/step-definitions/when-i-go-specific-page.md +67 -0
- package/docs/step-definitions/when-i-move-backward-one-page.md +49 -0
- package/docs/step-definitions/when-i-move-forward-one-page.md +58 -0
- package/docs/step-definitions/when-i-press-button.md +58 -0
- package/docs/step-definitions/when-i-reload-page.md +51 -0
- package/docs/step-definitions/when-i-scroll.md +73 -0
- package/docs/step-definitions/when-i-select-option-select-list.md +53 -0
- package/docs/step-definitions/when-i-select-radio-button-value.md +62 -0
- package/docs/step-definitions/when-i-uncheck-checkbox.md +57 -0
- package/docs/step-definitions/when-i-wait-ajax-finish.md +64 -0
- package/docs/step-definitions/when-i-wait.md +62 -0
- package/docs/step-definitions.md +82 -0
- package/docs/steps/README.md +137 -0
- package/docs/steps/a11y.md +731 -0
- package/docs/steps/action.md +181 -0
- package/docs/steps/api.md +679 -0
- package/docs/steps/assertion.md +328 -0
- package/docs/steps/auth.md +108 -0
- package/docs/steps/clock.md +171 -0
- package/docs/steps/cookie.md +293 -0
- package/docs/steps/debug.md +52 -0
- package/docs/steps/dialog.md +226 -0
- package/docs/steps/drupal-canvas.md +414 -0
- package/docs/steps/drupal-ckeditor.md +118 -0
- package/docs/steps/drupal-core.md +688 -0
- package/docs/steps/drupal-layout-builder.md +437 -0
- package/docs/steps/drupal-media.md +107 -0
- package/docs/steps/drupal-moderation.md +81 -0
- package/docs/steps/drupal-paragraphs.md +36 -0
- package/docs/steps/element.md +455 -0
- package/docs/steps/field.md +648 -0
- package/docs/steps/file-download.md +235 -0
- package/docs/steps/form.md +344 -0
- package/docs/steps/iframe.md +248 -0
- package/docs/steps/input.md +220 -0
- package/docs/steps/javascript.md +111 -0
- package/docs/steps/keyboard.md +107 -0
- package/docs/steps/link.md +217 -0
- package/docs/steps/metatag.md +99 -0
- package/docs/steps/modal.md +232 -0
- package/docs/steps/navigation.md +275 -0
- package/docs/steps/network.md +284 -0
- package/docs/steps/path.md +203 -0
- package/docs/steps/response.md +102 -0
- package/docs/steps/responsive.md +139 -0
- package/docs/steps/rest.md +140 -0
- package/docs/steps/screenshot.md +211 -0
- package/docs/steps/scroll.md +266 -0
- package/docs/steps/selectors.md +848 -0
- package/docs/steps/storage.md +254 -0
- package/docs/steps/table.md +216 -0
- package/docs/steps/varbase.md +391 -0
- package/docs/steps/video.md +111 -0
- package/docs/steps/wait.md +553 -0
- package/docs/steps/web-first.md +289 -0
- package/docs/steps/xml.md +505 -0
- package/docs/steps/yaml.md +951 -0
- package/examples/a11y.html +31 -0
- package/examples/about-us.html +11 -0
- package/examples/account.html +32 -0
- package/examples/ajax-wait-examples.html +147 -0
- package/examples/contact-us.html +10 -0
- package/examples/cookies.html +10 -0
- package/examples/date.html +12 -0
- package/examples/dynamic-examples.html +498 -0
- package/examples/element.html +11 -0
- package/examples/example-api.json +28 -0
- package/examples/existing-page.html +11 -0
- package/examples/field.html +24 -0
- package/examples/index.html +37 -0
- package/examples/keyboard.html +11 -0
- package/examples/links.html +9 -0
- package/examples/modal.html +14 -0
- package/examples/path.html +3 -0
- package/examples/table.html +13 -0
- package/examples/test--modal-dialogs.html +252 -0
- package/examples/test--then--i-should--not--see-text-in-element.html +48 -0
- package/examples/test--then--i-should--see-text-in-element.html +48 -0
- package/examples/test--then--i-should--see-text-matching-pattern.html +31 -0
- package/examples/test--then--i-should-see-text-in-table-row.html +232 -0
- package/examples/test--then--the-checkbox-checked.html +68 -0
- package/examples/test--then--the-element-should_not-contain-cssproperty.html +47 -0
- package/examples/test--then--the-link-should-contain.html +21 -0
- package/examples/test--when--i-additionally-select.html +27 -0
- package/examples/test--when--i-attach-file-to-feild.html +50 -0
- package/examples/test--when--i-check-uncheck-checkbox.html +47 -0
- package/examples/test--when--i-click-link.html +18 -0
- package/examples/test--when--i-click-text-in-table-row.html +178 -0
- package/examples/test--when--i-fill-in.html +48 -0
- package/examples/test--when--i-press-button.html +31 -0
- package/examples/test--when--i-reload-page.html +27 -0
- package/examples/test--when--i-scroll-functionality.html +177 -0
- package/examples/test--when--i-scroll-left-right-functionality.html +149 -0
- package/examples/test--when--i-select-option-from-dropdownlist.html +35 -0
- package/examples/test--when--i-select-radio-button.html +95 -0
- package/examples/test--when-i-wait-max-of-time.html +39 -0
- package/examples/test--when-i-wait-page-until-is-loaded.html +47 -0
- package/examples/test--when-i-wait-specific-time.html +39 -0
- package/examples/test-acceptable-url-path.html +11 -0
- package/examples/video-demo.html +43 -0
- package/package.json +56 -0
- package/playwright.config.ts +39 -0
- package/tests/assets/test-document.pdf +14 -0
- package/tests/assets/vardot.png +0 -0
- package/tests/features/a11y.feature +39 -0
- package/tests/features/ajax-wait-examples.feature +24 -0
- package/tests/features/api-step-definitions-individual.feature +185 -0
- package/tests/features/complete-api-testing-examples.feature +205 -0
- package/tests/features/cookie.feature +13 -0
- package/tests/features/date.feature +11 -0
- package/tests/features/dynamic-content-examples.feature +156 -0
- package/tests/features/element.feature +16 -0
- package/tests/features/field.feature +25 -0
- package/tests/features/keyboard.feature +10 -0
- package/tests/features/link.feature +11 -0
- package/tests/features/modal-advanced-example.feature +54 -0
- package/tests/features/modal-basic-example.feature +42 -0
- package/tests/features/modal-error-handling-example.feature +37 -0
- package/tests/features/modal.feature +11 -0
- package/tests/features/path.feature +16 -0
- package/tests/features/response.feature +8 -0
- package/tests/features/responsive.feature +10 -0
- package/tests/features/table.feature +18 -0
- package/tests/features/test--given--i-am-an-anonymous-user.feature +10 -0
- package/tests/features/test--given--i-am-on-homepage.feature +16 -0
- package/tests/features/test--then--i-save-screenshot.feature +33 -0
- package/tests/features/test--then--i-see-locator.feature +320 -0
- package/tests/features/test--then--i-should--not--see-text-in-element.feature +13 -0
- package/tests/features/test--then--i-should--see-text-in-element-by-attr.feature +10 -0
- package/tests/features/test--then--i-should--see-text-in-element.feature +10 -0
- package/tests/features/test--then--i-should--see-text-matching-pattern-in-element.feature +13 -0
- package/tests/features/test--then--i-should--see-text-matching-pattern.feature +18 -0
- package/tests/features/test--then--i-should-be-on-page.feature +10 -0
- package/tests/features/test--then--i-should-be-on-the-homepage.feature +10 -0
- package/tests/features/test--then--i-should-not-see-an-element-by-attr.feature +8 -0
- package/tests/features/test--then--i-should-not-see-an-element.feature +8 -0
- package/tests/features/test--then--i-should-see-an-element-by-attr.feature +8 -0
- package/tests/features/test--then--i-should-see-an-element.feature +8 -0
- package/tests/features/test--then--i-should-see-n-elements.feature +24 -0
- package/tests/features/test--then--i-should-see-text-in-table-row.feature +96 -0
- package/tests/features/test--then--print-current-url-and-response.feature +21 -0
- package/tests/features/test--then--the-checkbox-is-checked.feature +18 -0
- package/tests/features/test--then--the-checkbox-should-be-checked.feature +16 -0
- package/tests/features/test--then--the-element-should-contain-cssproperty.feature +9 -0
- package/tests/features/test--then--the-element-should-not-contain-cssproperty.feature +10 -0
- package/tests/features/test--then--the-field-should-contain-value.feature +11 -0
- package/tests/features/test--then--the-response-should-contain.feature +11 -0
- package/tests/features/test--then--the-response-status-code-should-be.feature +31 -0
- package/tests/features/test--then--the-url-should-match.feature +7 -0
- package/tests/features/test--then-the-link-should-contain-by-attribute.feature +18 -0
- package/tests/features/test--then-the-link-should-contain.feature +7 -0
- package/tests/features/test--when--i-additionally-select.feature +30 -0
- package/tests/features/test--when--i-attach-file-to-feild.feature +9 -0
- package/tests/features/test--when--i-check-checkbox.feature +21 -0
- package/tests/features/test--when--i-click-link-by-attribute.feature +21 -0
- package/tests/features/test--when--i-click-link.feature +9 -0
- package/tests/features/test--when--i-click-text-in-table-row.feature +37 -0
- package/tests/features/test--when--i-fill-in-by-attr.feature +31 -0
- package/tests/features/test--when--i-fill-in-table-by-attr.feature +19 -0
- package/tests/features/test--when--i-fill-in.feature +32 -0
- package/tests/features/test--when--i-follow.feature +22 -0
- package/tests/features/test--when--i-go-to-homepage.feature +9 -0
- package/tests/features/test--when--i-move-forward-backward-one-page.feature +14 -0
- package/tests/features/test--when--i-press-button-by-attribute.feature +18 -0
- package/tests/features/test--when--i-press-button.feature +13 -0
- package/tests/features/test--when--i-reload-page.feature +11 -0
- package/tests/features/test--when--i-scroll-left-right.feature +48 -0
- package/tests/features/test--when--i-scroll.feature +48 -0
- package/tests/features/test--when--i-select-option-from-dropdownlist.feature +21 -0
- package/tests/features/test--when--i-select-radio-button.feature +37 -0
- package/tests/features/test--when--i-wait-page-is-loaded.feature +8 -0
- package/tests/features/test--when--i-wait-time.feature +21 -0
- package/tests/features/video.feature +18 -0
- package/tests/features/wait.feature +7 -0
- package/tests/features/yaml.feature +102 -0
- package/tests/selectors/_canonical-keys.json +113 -0
- package/tests/selectors/back-end-selectors.json +19 -0
- package/tests/selectors/cms-contentful-admin.json +35 -0
- package/tests/selectors/cms-craft-admin.json +39 -0
- package/tests/selectors/cms-drupal-cms-gin.json +56 -0
- package/tests/selectors/cms-drupal-core-claro.json +50 -0
- package/tests/selectors/cms-generic-admin.json +34 -0
- package/tests/selectors/cms-ghost-admin.json +34 -0
- package/tests/selectors/cms-joomla-admin.json +41 -0
- package/tests/selectors/cms-magento2-admin.json +32 -0
- package/tests/selectors/cms-prestashop-admin.json +38 -0
- package/tests/selectors/cms-shopify-admin.json +25 -0
- package/tests/selectors/cms-strapi-admin.json +42 -0
- package/tests/selectors/cms-typo3-admin.json +41 -0
- package/tests/selectors/cms-woocommerce-front.json +50 -0
- package/tests/selectors/cms-wordpress-admin.json +31 -0
- package/tests/selectors/framework-ant-design.json +80 -0
- package/tests/selectors/framework-bootstrap.json +86 -0
- package/tests/selectors/framework-bulma.json +74 -0
- package/tests/selectors/framework-chakra.json +58 -0
- package/tests/selectors/framework-foundation.json +51 -0
- package/tests/selectors/framework-material-ui.json +72 -0
- package/tests/selectors/framework-shadcn.json +51 -0
- package/tests/selectors/framework-tailwind.json +40 -0
- package/tests/selectors/framework-vuetify.json +61 -0
- package/tests/selectors/front-end-selectors.json +16 -0
- package/tests/selectors/homepage-selectors.json +13 -0
- package/tests/step-definitions/a11y.steps.js +800 -0
- package/tests/step-definitions/action.steps.js +167 -0
- package/tests/step-definitions/api.steps.js +732 -0
- package/tests/step-definitions/assertion.steps.js +352 -0
- package/tests/step-definitions/auth.steps.js +126 -0
- package/tests/step-definitions/clock.steps.js +128 -0
- package/tests/step-definitions/cookie.steps.js +216 -0
- package/tests/step-definitions/debug.steps.js +39 -0
- package/tests/step-definitions/dialog.steps.js +193 -0
- package/tests/step-definitions/drupal-canvas.steps.js +764 -0
- package/tests/step-definitions/drupal-ckeditor.steps.js +108 -0
- package/tests/step-definitions/drupal-core.steps.js +665 -0
- package/tests/step-definitions/drupal-helpers.js +371 -0
- package/tests/step-definitions/drupal-layout-builder.steps.js +466 -0
- package/tests/step-definitions/drupal-media.steps.js +99 -0
- package/tests/step-definitions/drupal-moderation.steps.js +71 -0
- package/tests/step-definitions/drupal-paragraphs.steps.js +50 -0
- package/tests/step-definitions/element.steps.js +356 -0
- package/tests/step-definitions/field.steps.js +653 -0
- package/tests/step-definitions/file-download.steps.js +211 -0
- package/tests/step-definitions/form.steps.js +333 -0
- package/tests/step-definitions/iframe.steps.js +228 -0
- package/tests/step-definitions/input.steps.js +202 -0
- package/tests/step-definitions/javascript.steps.js +232 -0
- package/tests/step-definitions/keyboard.steps.js +112 -0
- package/tests/step-definitions/link.steps.js +142 -0
- package/tests/step-definitions/metatag.steps.js +91 -0
- package/tests/step-definitions/modal.steps.js +244 -0
- package/tests/step-definitions/navigation.steps.js +218 -0
- package/tests/step-definitions/network.steps.js +280 -0
- package/tests/step-definitions/path.steps.js +141 -0
- package/tests/step-definitions/response.steps.js +98 -0
- package/tests/step-definitions/responsive.steps.js +125 -0
- package/tests/step-definitions/rest.steps.js +111 -0
- package/tests/step-definitions/screenshot.steps.js +423 -0
- package/tests/step-definitions/scroll.steps.js +189 -0
- package/tests/step-definitions/selectors.steps.js +1003 -0
- package/tests/step-definitions/storage.steps.js +194 -0
- package/tests/step-definitions/table.steps.js +181 -0
- package/tests/step-definitions/varbase-e2e.js +897 -0
- package/tests/step-definitions/varbase.steps.js +458 -0
- package/tests/step-definitions/video.steps.js +178 -0
- package/tests/step-definitions/wait.steps.js +400 -0
- package/tests/step-definitions/web-first.steps.js +298 -0
- package/tests/step-definitions/xml.steps.js +411 -0
- package/tests/step-definitions/yaml.steps.js +913 -0
- package/tsconfig.json +26 -0
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
# Storage steps
|
|
2
|
+
|
|
3
|
+
9 steps, defined in `tests/step-definitions/storage.steps.js`.
|
|
4
|
+
|
|
5
|
+
Cucumber-js loads every `*.steps.js` in that directory automatically — you never `require()` a step file from a feature.
|
|
6
|
+
|
|
7
|
+
| # | Step |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| 1 | `Given the cookie "session" is set to "abc123"` |
|
|
10
|
+
| 2 | `Given the cookie "session" is removed` |
|
|
11
|
+
| 3 | `Given all cookies are cleared` |
|
|
12
|
+
| 4 | `Given the local storage "user" is set to "Alice"` |
|
|
13
|
+
| 5 | `Given the local storage "user" is removed` |
|
|
14
|
+
| 6 | `Given local storage is cleared` |
|
|
15
|
+
| 7 | `Given the session storage "checkout step" is set to "2"` |
|
|
16
|
+
| 8 | `Given the session storage "checkout step" is removed` |
|
|
17
|
+
| 9 | `Given session storage is cleared` |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 1. Given the cookie "session" is set to "abc123"
|
|
22
|
+
|
|
23
|
+
Set a cookie on the current browser context.
|
|
24
|
+
|
|
25
|
+
**Keyword**: `Given`
|
|
26
|
+
|
|
27
|
+
**Pattern**
|
|
28
|
+
|
|
29
|
+
```js
|
|
30
|
+
/^(?:the cookie|cookie) "([^"]*)" is set to "([^"]*)"$/
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Examples**
|
|
34
|
+
|
|
35
|
+
```gherkin
|
|
36
|
+
Given the cookie "session" is set to "abc123"
|
|
37
|
+
Given the cookie "lang" is set to "en"
|
|
38
|
+
Given cookie "ab_bucket" is set to "variant-b"
|
|
39
|
+
Given the cookie "consent" is set to "accepted"
|
|
40
|
+
And I am on the homepage
|
|
41
|
+
Given the cookie "feature_flag" is set to "enabled"
|
|
42
|
+
And I am on "/dashboard"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 2. Given the cookie "session" is removed
|
|
46
|
+
|
|
47
|
+
Remove a single cookie by name (other cookies preserved).
|
|
48
|
+
|
|
49
|
+
**Keyword**: `Given`
|
|
50
|
+
|
|
51
|
+
**Pattern**
|
|
52
|
+
|
|
53
|
+
```js
|
|
54
|
+
/^the cookie "([^"]*)" is removed$/
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Examples**
|
|
58
|
+
|
|
59
|
+
```gherkin
|
|
60
|
+
Given the cookie "session" is removed
|
|
61
|
+
Given the cookie "consent" is removed
|
|
62
|
+
When I reload the page
|
|
63
|
+
Then I should see "Accept cookies"
|
|
64
|
+
Given the cookie "ab_bucket" is removed
|
|
65
|
+
Given the cookie "lang" is removed
|
|
66
|
+
And I am on the homepage
|
|
67
|
+
Given the cookie "feature_flag" is removed
|
|
68
|
+
When I follow "Pricing"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 3. Given all cookies are cleared
|
|
72
|
+
|
|
73
|
+
Wipe every cookie on the browser context.
|
|
74
|
+
|
|
75
|
+
**Keyword**: `Given`
|
|
76
|
+
|
|
77
|
+
**Pattern**
|
|
78
|
+
|
|
79
|
+
```js
|
|
80
|
+
/^all cookies are cleared$/
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Examples**
|
|
84
|
+
|
|
85
|
+
```gherkin
|
|
86
|
+
Given all cookies are cleared
|
|
87
|
+
Given all cookies are cleared
|
|
88
|
+
When I am on the homepage
|
|
89
|
+
Then I should see "Sign in"
|
|
90
|
+
Given all cookies are cleared
|
|
91
|
+
And I am an anonymous user
|
|
92
|
+
Given all cookies are cleared
|
|
93
|
+
And localStorage is cleared
|
|
94
|
+
And sessionStorage is cleared
|
|
95
|
+
Given all cookies are cleared
|
|
96
|
+
When I follow "Login"
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## 4. Given the local storage "user" is set to "Alice"
|
|
100
|
+
|
|
101
|
+
Set a local storage entry on the current page.
|
|
102
|
+
|
|
103
|
+
The page must be loaded first (local storage is per-origin). Stored value
|
|
104
|
+
is always a string — JSON-encode complex objects manually.
|
|
105
|
+
|
|
106
|
+
**Keyword**: `Given`
|
|
107
|
+
|
|
108
|
+
**Pattern**
|
|
109
|
+
|
|
110
|
+
```js
|
|
111
|
+
/^(?:the )?local storage "([^"]*)" is set to "([^"]*)"$/
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Examples**
|
|
115
|
+
|
|
116
|
+
```gherkin
|
|
117
|
+
Given the local storage "user" is set to "Alice"
|
|
118
|
+
Given I am on the homepage
|
|
119
|
+
And the local storage "theme" is set to "dark"
|
|
120
|
+
When I reload the page
|
|
121
|
+
Then "<body>" should have class "theme-dark"
|
|
122
|
+
Given local storage "lang" is set to "fr"
|
|
123
|
+
Given the local storage "onboarding_complete" is set to "true"
|
|
124
|
+
And I am on "/dashboard"
|
|
125
|
+
Then I should not see "Welcome tour"
|
|
126
|
+
Given the local storage "feature_flag" is set to "enabled"
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## 5. Given the local storage "user" is removed
|
|
130
|
+
|
|
131
|
+
Remove a single local storage entry.
|
|
132
|
+
|
|
133
|
+
**Keyword**: `Given`
|
|
134
|
+
|
|
135
|
+
**Pattern**
|
|
136
|
+
|
|
137
|
+
```js
|
|
138
|
+
/^(?:the )?local storage "([^"]*)" is removed$/
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**Examples**
|
|
142
|
+
|
|
143
|
+
```gherkin
|
|
144
|
+
Given the local storage "user" is removed
|
|
145
|
+
Given local storage "theme" is removed
|
|
146
|
+
When I reload the page
|
|
147
|
+
Then "<body>" should not have class "theme-dark"
|
|
148
|
+
Given the local storage "onboarding_complete" is removed
|
|
149
|
+
Given the local storage "cart" is removed
|
|
150
|
+
And I am on "/cart"
|
|
151
|
+
Then I should see "Your cart is empty"
|
|
152
|
+
Given the local storage "auth_token" is removed
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## 6. Given local storage is cleared
|
|
156
|
+
|
|
157
|
+
Wipe local storage for the current origin.
|
|
158
|
+
|
|
159
|
+
**Keyword**: `Given`
|
|
160
|
+
|
|
161
|
+
**Pattern**
|
|
162
|
+
|
|
163
|
+
```js
|
|
164
|
+
/^local storage is cleared$/
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**Examples**
|
|
168
|
+
|
|
169
|
+
```gherkin
|
|
170
|
+
Given local storage is cleared
|
|
171
|
+
Given I am on the homepage
|
|
172
|
+
And local storage is cleared
|
|
173
|
+
When I reload the page
|
|
174
|
+
Given local storage is cleared
|
|
175
|
+
And all cookies are cleared
|
|
176
|
+
Given local storage is cleared
|
|
177
|
+
And session storage is cleared
|
|
178
|
+
Given local storage is cleared
|
|
179
|
+
Then I should see "First-time visitor"
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## 7. Given the session storage "checkout step" is set to "2"
|
|
183
|
+
|
|
184
|
+
Set a session storage entry on the current page.
|
|
185
|
+
|
|
186
|
+
**Keyword**: `Given`
|
|
187
|
+
|
|
188
|
+
**Pattern**
|
|
189
|
+
|
|
190
|
+
```js
|
|
191
|
+
/^(?:the )?session storage "([^"]*)" is set to "([^"]*)"$/
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**Examples**
|
|
195
|
+
|
|
196
|
+
```gherkin
|
|
197
|
+
Given the session storage "checkout step" is set to "2"
|
|
198
|
+
Given the session storage "temp form" is set to "draft"
|
|
199
|
+
Given session storage "tab id" is set to "tab-1"
|
|
200
|
+
Given the session storage "wizard progress" is set to "3/5"
|
|
201
|
+
And I am on "/wizard"
|
|
202
|
+
Given the session storage "from checkout" is set to "true"
|
|
203
|
+
And I am on "/cart"
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
## 8. Given the session storage "checkout step" is removed
|
|
207
|
+
|
|
208
|
+
Remove a single session storage entry.
|
|
209
|
+
|
|
210
|
+
**Keyword**: `Given`
|
|
211
|
+
|
|
212
|
+
**Pattern**
|
|
213
|
+
|
|
214
|
+
```js
|
|
215
|
+
/^(?:the )?session storage "([^"]*)" is removed$/
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
**Examples**
|
|
219
|
+
|
|
220
|
+
```gherkin
|
|
221
|
+
Given the session storage "checkout step" is removed
|
|
222
|
+
Given session storage "temp form" is removed
|
|
223
|
+
Given the session storage "wizard progress" is removed
|
|
224
|
+
When I reload the page
|
|
225
|
+
Then I should see "Step 1"
|
|
226
|
+
Given the session storage "tab id" is removed
|
|
227
|
+
Given the session storage "from checkout" is removed
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
## 9. Given session storage is cleared
|
|
231
|
+
|
|
232
|
+
Wipe session storage for the current origin.
|
|
233
|
+
|
|
234
|
+
**Keyword**: `Given`
|
|
235
|
+
|
|
236
|
+
**Pattern**
|
|
237
|
+
|
|
238
|
+
```js
|
|
239
|
+
/^session storage is cleared$/
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
**Examples**
|
|
243
|
+
|
|
244
|
+
```gherkin
|
|
245
|
+
Given session storage is cleared
|
|
246
|
+
Given session storage is cleared
|
|
247
|
+
And local storage is cleared
|
|
248
|
+
Given session storage is cleared
|
|
249
|
+
And all cookies are cleared
|
|
250
|
+
Given session storage is cleared
|
|
251
|
+
When I reload the page
|
|
252
|
+
Given session storage is cleared
|
|
253
|
+
And I am an anonymous user
|
|
254
|
+
```
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
# Tables steps
|
|
2
|
+
|
|
3
|
+
8 steps, defined in `tests/step-definitions/table.steps.js`.
|
|
4
|
+
|
|
5
|
+
Cucumber-js loads every `*.steps.js` in that directory automatically — you never `require()` a step file from a feature.
|
|
6
|
+
|
|
7
|
+
| # | Step |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| 1 | `Then the table "#users" should have 5 rows` |
|
|
10
|
+
| 2 | `Then the table "#users" should have 4 columns` |
|
|
11
|
+
| 3 | `Then the table "#users" should contain the following columns:` |
|
|
12
|
+
| 4 | `Then the table "#users" should be empty` |
|
|
13
|
+
| 5 | `Then the table "#users" should not be empty` |
|
|
14
|
+
| 6 | `Then the table "#users" should be sorted by "Name" in "ascending" order` |
|
|
15
|
+
| 7 | `Then the table "#users" should contain the following rows:` |
|
|
16
|
+
| 8 | `Then the "Alice" row should contain the following:` |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 1. Then the table "#users" should have 5 rows
|
|
21
|
+
|
|
22
|
+
Assert a table has exactly N body rows.
|
|
23
|
+
|
|
24
|
+
**Keyword**: `Then`
|
|
25
|
+
|
|
26
|
+
**Pattern**
|
|
27
|
+
|
|
28
|
+
```js
|
|
29
|
+
'the table {string} should have {int} row(s)'
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Examples**
|
|
33
|
+
|
|
34
|
+
```gherkin
|
|
35
|
+
Then the table "#users" should have 5 rows
|
|
36
|
+
Then the table "table.orders" should have 1 row
|
|
37
|
+
And the table "[data-testid=products]" should have 12 rows
|
|
38
|
+
Then the table "#audit-log" should have 0 rows
|
|
39
|
+
Then the table "table.responsive" should have 20 rows
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 2. Then the table "#users" should have 4 columns
|
|
43
|
+
|
|
44
|
+
Assert a table has exactly N columns.
|
|
45
|
+
|
|
46
|
+
**Keyword**: `Then`
|
|
47
|
+
|
|
48
|
+
**Pattern**
|
|
49
|
+
|
|
50
|
+
```js
|
|
51
|
+
'the table {string} should have {int} column(s)'
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Examples**
|
|
55
|
+
|
|
56
|
+
```gherkin
|
|
57
|
+
Then the table "#users" should have 4 columns
|
|
58
|
+
Then the table "table.orders" should have 6 columns
|
|
59
|
+
And the table "[data-testid=products]" should have 5 columns
|
|
60
|
+
Then the table "#summary" should have 2 columns
|
|
61
|
+
Then the table "table.responsive" should have 8 columns
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## 3. Then the table "#users" should contain the following columns:
|
|
65
|
+
|
|
66
|
+
Assert the table header contains every column listed in the table.
|
|
67
|
+
|
|
68
|
+
**Keyword**: `Then`
|
|
69
|
+
|
|
70
|
+
**Pattern**
|
|
71
|
+
|
|
72
|
+
```js
|
|
73
|
+
'the table {string} should contain the following columns:'
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Examples**
|
|
77
|
+
|
|
78
|
+
```gherkin
|
|
79
|
+
Then the table "#users" should contain the following columns:
|
|
80
|
+
| Name |
|
|
81
|
+
| Email |
|
|
82
|
+
Then the table "table.orders" should contain the following columns:
|
|
83
|
+
| Order ID | Status | Total |
|
|
84
|
+
And the table "[data-testid=products]" should contain the following columns:
|
|
85
|
+
| Title | Price | Stock |
|
|
86
|
+
Then the table "#audit-log" should contain the following columns:
|
|
87
|
+
| Timestamp | Actor | Action |
|
|
88
|
+
Then the table ".grid" should contain the following columns:
|
|
89
|
+
| Country | Population | Capital |
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## 4. Then the table "#users" should be empty
|
|
93
|
+
|
|
94
|
+
Assert a table has zero body rows.
|
|
95
|
+
|
|
96
|
+
**Keyword**: `Then`
|
|
97
|
+
|
|
98
|
+
**Pattern**
|
|
99
|
+
|
|
100
|
+
```js
|
|
101
|
+
'the table {string} should be empty'
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**Examples**
|
|
105
|
+
|
|
106
|
+
```gherkin
|
|
107
|
+
Then the table "#users" should be empty
|
|
108
|
+
Then the table "table.orders" should be empty
|
|
109
|
+
And the table "[data-testid=products]" should be empty
|
|
110
|
+
Then the table "#audit-log" should be empty
|
|
111
|
+
Then the table ".grid" should be empty
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## 5. Then the table "#users" should not be empty
|
|
115
|
+
|
|
116
|
+
Assert a table has at least one body row.
|
|
117
|
+
|
|
118
|
+
**Keyword**: `Then`
|
|
119
|
+
|
|
120
|
+
**Pattern**
|
|
121
|
+
|
|
122
|
+
```js
|
|
123
|
+
'the table {string} should not be empty'
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Examples**
|
|
127
|
+
|
|
128
|
+
```gherkin
|
|
129
|
+
Then the table "#users" should not be empty
|
|
130
|
+
Then the table "table.orders" should not be empty
|
|
131
|
+
And the table "[data-testid=products]" should not be empty
|
|
132
|
+
Then the table "#audit-log" should not be empty
|
|
133
|
+
Then the table ".grid" should not be empty
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## 6. Then the table "#users" should be sorted by "Name" in "ascending" order
|
|
137
|
+
|
|
138
|
+
Assert a table is sorted ascending or descending by a header.
|
|
139
|
+
|
|
140
|
+
Direction accepts `ascending` / `asc` / `descending` / `desc`.
|
|
141
|
+
|
|
142
|
+
**Keyword**: `Then`
|
|
143
|
+
|
|
144
|
+
**Pattern**
|
|
145
|
+
|
|
146
|
+
```js
|
|
147
|
+
'the table {string} should be sorted by {string} in {string} order'
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**Examples**
|
|
151
|
+
|
|
152
|
+
```gherkin
|
|
153
|
+
Then the table "#users" should be sorted by "Name" in "ascending" order
|
|
154
|
+
Then the table "table.orders" should be sorted by "Total" in "descending" order
|
|
155
|
+
And the table "[data-testid=products]" should be sorted by "Price" in "asc" order
|
|
156
|
+
Then the table "#audit-log" should be sorted by "Timestamp" in "desc" order
|
|
157
|
+
Then the table ".grid" should be sorted by "Country" in "ascending" order
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## 7. Then the table "#users" should contain the following rows:
|
|
161
|
+
|
|
162
|
+
Assert a table contains every row described by the data table (substring match per cell).
|
|
163
|
+
|
|
164
|
+
**Keyword**: `Then`
|
|
165
|
+
|
|
166
|
+
**Pattern**
|
|
167
|
+
|
|
168
|
+
```js
|
|
169
|
+
'the table {string} should contain the following rows:'
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**Examples**
|
|
173
|
+
|
|
174
|
+
```gherkin
|
|
175
|
+
Then the table "#users" should contain the following rows:
|
|
176
|
+
| Alice | Editor |
|
|
177
|
+
| Bob | Admin |
|
|
178
|
+
Then the table "table.orders" should contain the following rows:
|
|
179
|
+
| 1234 | Shipped |
|
|
180
|
+
| 5678 | Cancelled |
|
|
181
|
+
And the table "[data-testid=products]" should contain the following rows:
|
|
182
|
+
| Laptop | $999.00 |
|
|
183
|
+
Then the table "#audit-log" should contain the following rows:
|
|
184
|
+
| login |
|
|
185
|
+
Then the table ".grid" should contain the following rows:
|
|
186
|
+
| Jordan | Amman |
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## 8. Then the "Alice" row should contain the following:
|
|
190
|
+
|
|
191
|
+
Assert a row containing a given text fragment also contains every listed cell value.
|
|
192
|
+
|
|
193
|
+
**Keyword**: `Then`
|
|
194
|
+
|
|
195
|
+
**Pattern**
|
|
196
|
+
|
|
197
|
+
```js
|
|
198
|
+
'the {string} row should contain the following:'
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
**Examples**
|
|
202
|
+
|
|
203
|
+
```gherkin
|
|
204
|
+
Then the "Alice" row should contain the following:
|
|
205
|
+
| Editor |
|
|
206
|
+
| Active |
|
|
207
|
+
Then the "Order #1234" row should contain the following:
|
|
208
|
+
| Shipped |
|
|
209
|
+
And the "Project Alpha" row should contain the following:
|
|
210
|
+
| Open |
|
|
211
|
+
| High |
|
|
212
|
+
Then the "alice@example.com" row should contain the following:
|
|
213
|
+
| Admin |
|
|
214
|
+
Then the "Premium" row should contain the following:
|
|
215
|
+
| $99 |
|
|
216
|
+
```
|