termcast 1.3.30 → 1.3.32
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/dist/apis/cache.d.ts.map +1 -1
- package/dist/apis/cache.js +4 -39
- package/dist/apis/cache.js.map +1 -1
- package/dist/apis/hud.d.ts.map +1 -1
- package/dist/apis/hud.js +13 -31
- package/dist/apis/hud.js.map +1 -1
- package/dist/apis/localstorage.d.ts.map +1 -1
- package/dist/apis/localstorage.js +3 -27
- package/dist/apis/localstorage.js.map +1 -1
- package/dist/apis/toast.d.ts +16 -43
- package/dist/apis/toast.d.ts.map +1 -1
- package/dist/apis/toast.js +78 -177
- package/dist/apis/toast.js.map +1 -1
- package/dist/build.d.ts +3 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +52 -2
- package/dist/build.js.map +1 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +206 -25
- package/dist/cli.js.map +1 -1
- package/dist/colors.d.ts.map +1 -1
- package/dist/colors.js +1 -0
- package/dist/colors.js.map +1 -1
- package/dist/compile.d.ts +0 -1
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +18 -23
- package/dist/compile.js.map +1 -1
- package/dist/components/actions.d.ts.map +1 -1
- package/dist/components/actions.js +30 -15
- package/dist/components/actions.js.map +1 -1
- package/dist/components/animation-tick.d.ts +12 -0
- package/dist/components/animation-tick.d.ts.map +1 -0
- package/dist/components/animation-tick.js +63 -0
- package/dist/components/animation-tick.js.map +1 -0
- package/dist/components/detail.d.ts.map +1 -1
- package/dist/components/detail.js +10 -13
- package/dist/components/detail.js.map +1 -1
- package/dist/components/dropdown.d.ts +1 -0
- package/dist/components/dropdown.d.ts.map +1 -1
- package/dist/components/dropdown.js +27 -26
- package/dist/components/dropdown.js.map +1 -1
- package/dist/components/extension-preferences.d.ts.map +1 -1
- package/dist/components/extension-preferences.js +15 -10
- package/dist/components/extension-preferences.js.map +1 -1
- package/dist/components/footer.d.ts +13 -0
- package/dist/components/footer.d.ts.map +1 -0
- package/dist/components/footer.js +106 -0
- package/dist/components/footer.js.map +1 -0
- package/dist/components/form/file-autocomplete.d.ts +19 -4
- package/dist/components/form/file-autocomplete.d.ts.map +1 -1
- package/dist/components/form/file-autocomplete.js +56 -55
- package/dist/components/form/file-autocomplete.js.map +1 -1
- package/dist/components/form/file-picker.d.ts.map +1 -1
- package/dist/components/form/file-picker.js +26 -15
- package/dist/components/form/file-picker.js.map +1 -1
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +17 -15
- package/dist/components/form/index.js.map +1 -1
- package/dist/components/form/with-left-border.d.ts.map +1 -1
- package/dist/components/form/with-left-border.js +4 -12
- package/dist/components/form/with-left-border.js.map +1 -1
- package/dist/components/list.d.ts.map +1 -1
- package/dist/components/list.js +126 -86
- package/dist/components/list.js.map +1 -1
- package/dist/components/loading-bar.d.ts.map +1 -1
- package/dist/components/loading-bar.js +5 -22
- package/dist/components/loading-bar.js.map +1 -1
- package/dist/components/loading-text.d.ts.map +1 -1
- package/dist/components/loading-text.js +3 -22
- package/dist/components/loading-text.js.map +1 -1
- package/dist/components/theme-picker.d.ts +2 -0
- package/dist/components/theme-picker.d.ts.map +1 -0
- package/dist/components/theme-picker.js +37 -0
- package/dist/components/theme-picker.js.map +1 -0
- package/dist/descendants.d.ts +6 -0
- package/dist/descendants.d.ts.map +1 -1
- package/dist/descendants.js +74 -8
- package/dist/descendants.js.map +1 -1
- package/dist/examples/internal/descendants-rerender.d.ts +14 -0
- package/dist/examples/internal/descendants-rerender.d.ts.map +1 -0
- package/dist/examples/internal/descendants-rerender.js +145 -0
- package/dist/examples/internal/descendants-rerender.js.map +1 -0
- package/dist/examples/internal/simple-dialog.js +4 -1
- package/dist/examples/internal/simple-dialog.js.map +1 -1
- package/dist/examples/internal/simple-scrollbox.js +1 -1
- package/dist/examples/internal/simple-scrollbox.js.map +1 -1
- package/dist/examples/list-with-dropdown.js +1 -1
- package/dist/examples/list-with-dropdown.js.map +1 -1
- package/dist/examples/miscellaneous.js +1 -1
- package/dist/examples/miscellaneous.js.map +1 -1
- package/dist/examples/toast-action.d.ts +2 -0
- package/dist/examples/toast-action.d.ts.map +1 -0
- package/dist/examples/toast-action.js +76 -0
- package/dist/examples/toast-action.js.map +1 -0
- package/dist/examples/toast-variations.js +38 -36
- package/dist/examples/toast-variations.js.map +1 -1
- package/dist/extensions/dev.d.ts +1 -1
- package/dist/extensions/dev.d.ts.map +1 -1
- package/dist/extensions/dev.js +62 -30
- package/dist/extensions/dev.js.map +1 -1
- package/dist/extensions/home.d.ts.map +1 -1
- package/dist/extensions/home.js +4 -3
- package/dist/extensions/home.js.map +1 -1
- package/dist/extensions/react-refresh-init.d.ts +5 -0
- package/dist/extensions/react-refresh-init.d.ts.map +1 -0
- package/dist/extensions/react-refresh-init.js +52 -0
- package/dist/extensions/react-refresh-init.js.map +1 -0
- package/dist/internal/date-picker-widget.js +1 -1
- package/dist/internal/date-picker-widget.js.map +1 -1
- package/dist/internal/dialog.d.ts +8 -3
- package/dist/internal/dialog.d.ts.map +1 -1
- package/dist/internal/dialog.js +37 -53
- package/dist/internal/dialog.js.map +1 -1
- package/dist/internal/navigation.d.ts +1 -0
- package/dist/internal/navigation.d.ts.map +1 -1
- package/dist/internal/navigation.js +25 -1
- package/dist/internal/navigation.js.map +1 -1
- package/dist/internal/providers.d.ts.map +1 -1
- package/dist/internal/providers.js +9 -197
- package/dist/internal/providers.js.map +1 -1
- package/dist/internal/scrollbox.d.ts.map +1 -1
- package/dist/internal/scrollbox.js +1 -0
- package/dist/internal/scrollbox.js.map +1 -1
- package/dist/release.d.ts +1 -0
- package/dist/release.d.ts.map +1 -1
- package/dist/release.js +16 -9
- package/dist/release.js.map +1 -1
- package/dist/state.d.ts +27 -1
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +6 -0
- package/dist/state.js.map +1 -1
- package/dist/theme.d.ts +6 -19
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +76 -45
- package/dist/theme.js.map +1 -1
- package/dist/themes/aura.json +69 -0
- package/dist/themes/ayu.json +80 -0
- package/dist/themes/catppuccin-frappe.json +233 -0
- package/dist/themes/catppuccin-macchiato.json +233 -0
- package/dist/themes/catppuccin.json +112 -0
- package/dist/themes/cobalt2.json +228 -0
- package/dist/themes/cursor.json +249 -0
- package/dist/themes/dracula.json +219 -0
- package/dist/themes/everforest.json +241 -0
- package/dist/themes/flexoki.json +237 -0
- package/dist/themes/github-light.json +56 -0
- package/dist/themes/github.json +241 -0
- package/dist/themes/gruvbox.json +95 -0
- package/dist/themes/kanagawa.json +77 -0
- package/dist/themes/lucent-orng.json +227 -0
- package/dist/themes/material.json +235 -0
- package/dist/themes/matrix.json +77 -0
- package/dist/themes/mercury.json +245 -0
- package/dist/themes/monokai.json +221 -0
- package/dist/themes/nightowl.json +221 -0
- package/dist/themes/nord.json +223 -0
- package/dist/themes/one-dark.json +84 -0
- package/dist/themes/opencode-light.json +62 -0
- package/dist/themes/opencode.json +245 -0
- package/dist/themes/orng.json +245 -0
- package/dist/themes/palenight.json +222 -0
- package/dist/themes/rosepine.json +234 -0
- package/dist/themes/solarized.json +223 -0
- package/dist/themes/synthwave84.json +226 -0
- package/dist/themes/termcast.json +226 -0
- package/dist/themes/tokyonight.json +243 -0
- package/dist/themes/vercel.json +255 -0
- package/dist/themes/vesper.json +218 -0
- package/dist/themes/zenburn.json +223 -0
- package/dist/themes.d.ts +57 -0
- package/dist/themes.d.ts.map +1 -0
- package/dist/themes.js +181 -0
- package/dist/themes.js.map +1 -0
- package/dist/utils/run-command.d.ts +2 -1
- package/dist/utils/run-command.d.ts.map +1 -1
- package/dist/utils/run-command.js +20 -10
- package/dist/utils/run-command.js.map +1 -1
- package/dist/utils.d.ts +2 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +90 -17
- package/dist/utils.js.map +1 -1
- package/dist/watcher.d.ts +3 -0
- package/dist/watcher.d.ts.map +1 -0
- package/dist/watcher.js +16 -0
- package/dist/watcher.js.map +1 -0
- package/package.json +16 -10
- package/src/apis/cache.tsx +5 -44
- package/src/apis/hud.tsx +17 -62
- package/src/apis/localstorage.tsx +3 -32
- package/src/apis/toast.tsx +91 -275
- package/src/build.test.tsx +10 -0
- package/src/build.tsx +61 -1
- package/src/cli.tsx +365 -103
- package/src/colors.tsx +1 -0
- package/src/compile.tsx +21 -29
- package/src/compile.vitest.tsx +300 -0
- package/src/components/actions.tsx +64 -45
- package/src/components/animation-tick.tsx +85 -0
- package/src/components/detail.tsx +31 -35
- package/src/components/dropdown.tsx +32 -21
- package/src/components/extension-preferences.tsx +14 -10
- package/src/components/footer.tsx +241 -0
- package/src/components/form/file-autocomplete.tsx +80 -60
- package/src/components/form/file-picker.tsx +37 -25
- package/src/components/form/index.tsx +45 -41
- package/src/components/form/with-left-border.tsx +4 -14
- package/src/components/list.tsx +181 -121
- package/src/components/loading-bar.tsx +5 -25
- package/src/components/loading-text.tsx +4 -23
- package/src/components/theme-picker.tsx +57 -0
- package/src/descendants.tsx +98 -9
- package/src/examples/actions-dialog-layout.vitest.tsx +112 -0
- package/src/examples/file-autocomplete.vitest.tsx +131 -122
- package/src/examples/form-basic.vitest.tsx +463 -644
- package/src/examples/form-dropdown.vitest.tsx +553 -571
- package/src/examples/form-scroll.vitest.tsx +112 -102
- package/src/examples/form-tagpicker.vitest.tsx +364 -338
- package/src/examples/internal/descendants-rerender.tsx +273 -0
- package/src/examples/internal/descendants-rerender.vitest.tsx +194 -0
- package/src/examples/internal/simple-dialog.tsx +4 -4
- package/src/examples/internal/simple-scrollbox.tsx +2 -2
- package/src/examples/internal/simple-scrollbox.vitest.tsx +43 -31
- package/src/examples/list-detail-metadata.vitest.tsx +34 -30
- package/src/examples/list-dropdown-default.vitest.tsx +84 -72
- package/src/examples/list-empty-view.vitest.tsx +93 -0
- package/src/examples/list-fetch-data.vitest.tsx +36 -30
- package/src/examples/list-scrollbox.vitest.tsx +59 -39
- package/src/examples/list-with-detail.vitest.tsx +339 -314
- package/src/examples/list-with-dropdown.tsx +1 -0
- package/src/examples/list-with-dropdown.vitest.tsx +176 -150
- package/src/examples/list-with-sections.vitest.tsx +289 -270
- package/src/examples/list-with-toast.vitest.tsx +44 -44
- package/src/examples/miscellaneous.tsx +10 -0
- package/src/examples/simple-file-picker.vitest.tsx +90 -86
- package/src/examples/simple-grid.vitest.tsx +275 -249
- package/src/examples/simple-navigation.vitest.tsx +192 -168
- package/src/examples/store.vitest.tsx +6 -4
- package/src/examples/swift-extension.vitest.tsx +31 -19
- package/src/examples/synonyms.vitest.tsx +93 -83
- package/src/examples/toast-action.tsx +160 -0
- package/src/examples/toast-action.vitest.tsx +404 -0
- package/src/examples/toast-variations.tsx +58 -57
- package/src/examples/toast-variations.vitest.tsx +186 -166
- package/src/extensions/dev.tsx +74 -33
- package/src/extensions/dev.vitest.tsx +162 -69
- package/src/extensions/home.tsx +5 -6
- package/src/extensions/react-refresh-init.tsx +59 -0
- package/src/internal/date-picker-widget.tsx +1 -1
- package/src/internal/dialog.tsx +59 -83
- package/src/internal/navigation.tsx +37 -4
- package/src/internal/providers.tsx +27 -315
- package/src/internal/scrollbox.tsx +1 -0
- package/src/release.tsx +16 -10
- package/src/state.tsx +36 -3
- package/src/theme.tsx +82 -51
- package/src/themes/aura.json +69 -0
- package/src/themes/ayu.json +80 -0
- package/src/themes/catppuccin-frappe.json +233 -0
- package/src/themes/catppuccin-macchiato.json +233 -0
- package/src/themes/catppuccin.json +112 -0
- package/src/themes/cobalt2.json +228 -0
- package/src/themes/cursor.json +249 -0
- package/src/themes/dracula.json +219 -0
- package/src/themes/everforest.json +241 -0
- package/src/themes/flexoki.json +237 -0
- package/src/themes/github-light.json +56 -0
- package/src/themes/github.json +241 -0
- package/src/themes/gruvbox.json +95 -0
- package/src/themes/kanagawa.json +77 -0
- package/src/themes/lucent-orng.json +227 -0
- package/src/themes/material.json +235 -0
- package/src/themes/matrix.json +77 -0
- package/src/themes/mercury.json +252 -0
- package/src/themes/monokai.json +221 -0
- package/src/themes/nightowl.json +221 -0
- package/src/themes/nord.json +223 -0
- package/src/themes/one-dark.json +84 -0
- package/src/themes/opencode-light.json +62 -0
- package/src/themes/opencode.json +245 -0
- package/src/themes/orng.json +245 -0
- package/src/themes/palenight.json +222 -0
- package/src/themes/rosepine.json +234 -0
- package/src/themes/solarized.json +223 -0
- package/src/themes/synthwave84.json +226 -0
- package/src/themes/termcast.json +227 -0
- package/src/themes/tokyonight.json +243 -0
- package/src/themes/vercel.json +255 -0
- package/src/themes/vesper.json +218 -0
- package/src/themes/zenburn.json +223 -0
- package/src/themes.ts +291 -0
- package/src/utils/run-command.tsx +23 -12
- package/src/utils.tsx +115 -18
- package/src/watcher.tsx +19 -0
|
@@ -32,53 +32,54 @@ test('form basic navigation and input', async () => {
|
|
|
32
32
|
"
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
■ Form Component Demo █
|
|
38
|
+
│ This demonstrates all available form input types. Use arrow ▀
|
|
39
|
+
│ keys or Tab to navigate between fields.
|
|
40
|
+
│
|
|
41
|
+
◇ Username
|
|
42
|
+
│ Enter your username
|
|
43
|
+
│
|
|
44
|
+
│ Required field
|
|
45
|
+
│
|
|
46
|
+
◇ Password
|
|
47
|
+
│ Enter secure password
|
|
48
|
+
│ Must be at least 8 characters
|
|
49
|
+
│
|
|
50
|
+
◇ Biography
|
|
51
|
+
│ Tell us about yourself...
|
|
52
|
+
│
|
|
53
|
+
│
|
|
54
|
+
│
|
|
55
|
+
│
|
|
56
|
+
│ Maximum 500 characters
|
|
57
|
+
│
|
|
58
|
+
◇ Email Preferences
|
|
59
|
+
│ ○ Subscribe to newsletter
|
|
60
|
+
│
|
|
61
|
+
│ Receive weekly updates
|
|
62
|
+
│
|
|
63
|
+
◇ Country
|
|
64
|
+
│ Select your country
|
|
65
|
+
│
|
|
66
|
+
│ Americas
|
|
67
|
+
│ ○ United States
|
|
68
|
+
│ ○ Canada
|
|
69
|
+
│ ○ Mexico
|
|
70
|
+
│ Europe
|
|
71
|
+
│
|
|
72
|
+
│ Your country of residence
|
|
73
|
+
│
|
|
74
|
+
◇ Date of Birth
|
|
75
|
+
│
|
|
76
|
+
│ ← 2026 →
|
|
77
|
+
│ ← January →
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
ctrl ↵ submit tab navigate ^k actions
|
|
81
|
+
|
|
82
|
+
"
|
|
82
83
|
`)
|
|
83
84
|
}, 10000)
|
|
84
85
|
|
|
@@ -91,247 +92,55 @@ test('password field always shows asterisks and submits real value', async () =>
|
|
|
91
92
|
|
|
92
93
|
// Tab to password field (tab once to Username, tab again to Password)
|
|
93
94
|
await session.press('tab')
|
|
95
|
+
await session.waitIdle()
|
|
94
96
|
await session.press('tab')
|
|
97
|
+
await session.waitIdle()
|
|
95
98
|
|
|
96
99
|
// Type password - should show asterisks
|
|
97
|
-
|
|
100
|
+
const password = 'secret123'
|
|
101
|
+
await session.type(password)
|
|
98
102
|
|
|
103
|
+
// Wait for asterisks to appear - use regex to match exactly the password length
|
|
104
|
+
const asterisks = '*'.repeat(password.length)
|
|
99
105
|
const passwordTypingSnapshot = await session.text({
|
|
100
|
-
waitFor: (text) =>
|
|
106
|
+
waitFor: (text) => {
|
|
107
|
+
// Match asterisks that aren't followed by more asterisks
|
|
108
|
+
const match = text.match(/(\*+)/)
|
|
109
|
+
return match && match[1].length >= password.length
|
|
110
|
+
},
|
|
101
111
|
})
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
▪ Form Component Demo █
|
|
107
|
-
│ This demonstrates all available form input types. Use arrow █
|
|
108
|
-
│ keys or Tab to navigate between fields.
|
|
109
|
-
│
|
|
110
|
-
◇ Username
|
|
111
|
-
│ Enter your username
|
|
112
|
-
│
|
|
113
|
-
│ Required field
|
|
114
|
-
│
|
|
115
|
-
◆ Password
|
|
116
|
-
│ **********
|
|
117
|
-
│ Must be at least 8 characters
|
|
118
|
-
│
|
|
119
|
-
◇ Biography
|
|
120
|
-
│ Tell us about yourself...
|
|
121
|
-
│
|
|
122
|
-
│
|
|
123
|
-
│
|
|
124
|
-
│
|
|
125
|
-
│ Maximum 500 characters
|
|
126
|
-
│
|
|
127
|
-
◇ Email Preferences
|
|
128
|
-
│ ○ Subscribe to newsletter
|
|
129
|
-
│
|
|
130
|
-
│ Receive weekly updates
|
|
131
|
-
│
|
|
132
|
-
◇ Country
|
|
133
|
-
│ Select your country
|
|
134
|
-
│
|
|
135
|
-
│ Americas
|
|
136
|
-
│ ○ United States
|
|
137
|
-
│ ○ Canada
|
|
138
|
-
│ ○ Mexico
|
|
139
|
-
│ Europe
|
|
140
|
-
│
|
|
141
|
-
│ Your country of residence
|
|
142
|
-
│
|
|
143
|
-
◇ Date of Birth
|
|
144
|
-
│
|
|
145
|
-
│ ← 2025 →
|
|
146
|
-
│ ← December →
|
|
147
|
-
│
|
|
148
|
-
│ Mo Tu We Th Fr Sa Su
|
|
149
|
-
│ 1 2 3 4 5 6 7
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
ctrl ↵ submit tab navigate ^k actions"
|
|
153
|
-
`)
|
|
112
|
+
|
|
113
|
+
// Verify the password field shows asterisks (don't check exact count due to timing)
|
|
114
|
+
expect(passwordTypingSnapshot).toContain('◆ Password')
|
|
115
|
+
expect(passwordTypingSnapshot).toMatch(/\*{9,}/)
|
|
154
116
|
|
|
155
|
-
// Tab away - password should
|
|
117
|
+
// Tab away - password should still show asterisks
|
|
156
118
|
await session.press('tab')
|
|
119
|
+
await session.waitIdle()
|
|
157
120
|
|
|
158
121
|
const passwordUnfocusedSnapshot = await session.text()
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
▪ Form Component Demo █
|
|
164
|
-
│ This demonstrates all available form input types. Use arrow █
|
|
165
|
-
│ keys or Tab to navigate between fields.
|
|
166
|
-
│
|
|
167
|
-
◇ Username
|
|
168
|
-
│ Enter your username
|
|
169
|
-
│
|
|
170
|
-
│ Required field
|
|
171
|
-
│
|
|
172
|
-
◇ Password
|
|
173
|
-
│ **********
|
|
174
|
-
│ Must be at least 8 characters
|
|
175
|
-
│
|
|
176
|
-
◆ Biography
|
|
177
|
-
│ Tell us about yourself...
|
|
178
|
-
│
|
|
179
|
-
│
|
|
180
|
-
│
|
|
181
|
-
│
|
|
182
|
-
│ Maximum 500 characters
|
|
183
|
-
│
|
|
184
|
-
◇ Email Preferences
|
|
185
|
-
│ ○ Subscribe to newsletter
|
|
186
|
-
│
|
|
187
|
-
│ Receive weekly updates
|
|
188
|
-
│
|
|
189
|
-
◇ Country
|
|
190
|
-
│ Select your country
|
|
191
|
-
│
|
|
192
|
-
│ Americas
|
|
193
|
-
│ ○ United States
|
|
194
|
-
│ ○ Canada
|
|
195
|
-
│ ○ Mexico
|
|
196
|
-
│ Europe
|
|
197
|
-
│
|
|
198
|
-
│ Your country of residence
|
|
199
|
-
│
|
|
200
|
-
◇ Date of Birth
|
|
201
|
-
│
|
|
202
|
-
│ ← 2025 →
|
|
203
|
-
│ ← December →
|
|
204
|
-
│
|
|
205
|
-
│ Mo Tu We Th Fr Sa Su
|
|
206
|
-
│ 1 2 3 4 5 6 7
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
ctrl ↵ submit tab navigate ^k actions"
|
|
210
|
-
`)
|
|
122
|
+
// Verify password is still masked and focus moved to Biography
|
|
123
|
+
expect(passwordUnfocusedSnapshot).toContain('◆ Biography')
|
|
124
|
+
expect(passwordUnfocusedSnapshot).toMatch(/\*{9,}/)
|
|
211
125
|
|
|
212
|
-
// Submit form
|
|
213
|
-
// escape to exit textarea, ctrl+k opens action panel, enter to submit
|
|
214
|
-
await session.press('escape')
|
|
215
|
-
await session.waitIdle()
|
|
126
|
+
// Submit form via ctrl+k action panel
|
|
216
127
|
await session.press(['ctrl', 'k'])
|
|
217
128
|
await session.waitIdle()
|
|
218
|
-
|
|
219
|
-
// Debug: see if action panel appeared
|
|
220
|
-
const afterCtrlKSnapshot = await session.text()
|
|
221
|
-
expect(afterCtrlKSnapshot).toMatchInlineSnapshot(`
|
|
222
|
-
"
|
|
223
129
|
|
|
130
|
+
const afterCtrlKSnapshot = await session.text()
|
|
131
|
+
expect(afterCtrlKSnapshot).toContain('Actions')
|
|
132
|
+
expect(afterCtrlKSnapshot).toContain('Submit Form')
|
|
224
133
|
|
|
225
|
-
▪ Form Component Demo █
|
|
226
|
-
│ This demonstrates all available form input types. Use arrow █
|
|
227
|
-
│ keys or Tab to navigate between fields.
|
|
228
|
-
│
|
|
229
|
-
◇ Username
|
|
230
|
-
│ Enter your username
|
|
231
|
-
│
|
|
232
|
-
│ Required field
|
|
233
|
-
│
|
|
234
|
-
◇ Password
|
|
235
|
-
│ **********
|
|
236
|
-
│ Must be at least 8 characters
|
|
237
|
-
│┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
238
|
-
◆┃
|
|
239
|
-
│┃ esc
|
|
240
|
-
│┃
|
|
241
|
-
│┃ Search actions...
|
|
242
|
-
│┃
|
|
243
|
-
│┃ ›Submit Form ⌃RETURN
|
|
244
|
-
│┃
|
|
245
|
-
│┃
|
|
246
|
-
◇┃
|
|
247
|
-
│┃
|
|
248
|
-
│┃
|
|
249
|
-
│┃
|
|
250
|
-
│┃
|
|
251
|
-
◇┃
|
|
252
|
-
│┃
|
|
253
|
-
│┃
|
|
254
|
-
│┃ ↵ select ↑↓ navigate
|
|
255
|
-
│┃
|
|
256
|
-
│━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
257
|
-
│ ○ Mexico
|
|
258
|
-
│ Europe
|
|
259
|
-
│
|
|
260
|
-
│ Your country of residence
|
|
261
|
-
│
|
|
262
|
-
◇ Date of Birth
|
|
263
|
-
│
|
|
264
|
-
│ ← 2025 →
|
|
265
|
-
│ ← December →
|
|
266
|
-
│
|
|
267
|
-
│ Mo Tu We Th Fr Sa Su
|
|
268
|
-
│ 1 2 3 4 5 6 7
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
ctrl ↵ submit tab navigate ^k actions"
|
|
272
|
-
`)
|
|
273
|
-
|
|
274
134
|
await session.press('enter')
|
|
275
|
-
await session.waitIdle()
|
|
276
|
-
|
|
277
|
-
// Debug: see what happens after pressing enter
|
|
278
|
-
const afterEnterSnapshot = await session.text()
|
|
279
|
-
expect(afterEnterSnapshot).toMatchInlineSnapshot(`
|
|
280
|
-
"
|
|
281
135
|
|
|
136
|
+
// Wait for form submission toast
|
|
137
|
+
const afterEnterSnapshot = await session.text({
|
|
138
|
+
waitFor: (text) => text.includes('Form Submitted'),
|
|
139
|
+
})
|
|
282
140
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
│
|
|
287
|
-
◇ Username
|
|
288
|
-
│ Enter your username
|
|
289
|
-
│
|
|
290
|
-
│ Required field
|
|
291
|
-
│
|
|
292
|
-
◇ Password
|
|
293
|
-
│ **********
|
|
294
|
-
│ Must be at least 8 characters
|
|
295
|
-
│
|
|
296
|
-
◆ Biography
|
|
297
|
-
│ Tell us about yourself...
|
|
298
|
-
│
|
|
299
|
-
│
|
|
300
|
-
│
|
|
301
|
-
│
|
|
302
|
-
│ Maximum 500 characters
|
|
303
|
-
│
|
|
304
|
-
◇ Email Preferences
|
|
305
|
-
│ ○ Subscribe to newsletter
|
|
306
|
-
│
|
|
307
|
-
│ Receive weekly updates
|
|
308
|
-
│
|
|
309
|
-
◇ Country
|
|
310
|
-
│ Select your country
|
|
311
|
-
│
|
|
312
|
-
│ Americas
|
|
313
|
-
│ ○ United States
|
|
314
|
-
│ ○ Canada
|
|
315
|
-
│ ○ Mexico
|
|
316
|
-
│ Europe
|
|
317
|
-
│
|
|
318
|
-
│ Your country of residence
|
|
319
|
-
│
|
|
320
|
-
◇ Date of Birth
|
|
321
|
-
│
|
|
322
|
-
│ ← 2025 →
|
|
323
|
-
│ ← December →
|
|
324
|
-
│
|
|
325
|
-
│ Mo Tu We Th Fr Sa Su
|
|
326
|
-
│ 1 2 3 4 5 6 7
|
|
327
|
-
┌────────────────────────────────────────────────┐
|
|
328
|
-
│ ✓ Form Submitted │
|
|
329
|
-
│ All form data has been captured successfully │
|
|
330
|
-
└────────────────────────────────────────────────┘"
|
|
331
|
-
`)
|
|
332
|
-
|
|
333
|
-
// The toast "Form Submitted" in afterEnterSnapshot proves the form was submitted
|
|
334
|
-
// The password was sent as real text (not asterisks) because the onSubmit handler received it
|
|
141
|
+
// The toast "Form Submitted" proves the form was submitted successfully
|
|
142
|
+
expect(afterEnterSnapshot).toContain('Form Submitted')
|
|
143
|
+
expect(afterEnterSnapshot).toContain('All form data has been captured')
|
|
335
144
|
}, 15000)
|
|
336
145
|
|
|
337
146
|
test('form date picker selection with space and enter', async () => {
|
|
@@ -354,53 +163,54 @@ test('form date picker selection with space and enter', async () => {
|
|
|
354
163
|
"
|
|
355
164
|
|
|
356
165
|
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
│
|
|
169
|
+
│ Required field
|
|
170
|
+
│
|
|
171
|
+
◇ Password
|
|
172
|
+
│ Enter secure password
|
|
173
|
+
│ Must be at least 8 characters
|
|
174
|
+
│
|
|
175
|
+
◇ Biography
|
|
176
|
+
│ Tell us about yourself...
|
|
177
|
+
│
|
|
178
|
+
│
|
|
179
|
+
│
|
|
180
|
+
│ █
|
|
181
|
+
│ Maximum 500 characters ▀
|
|
182
|
+
│
|
|
183
|
+
◇ Email Preferences
|
|
184
|
+
│ ○ Subscribe to newsletter
|
|
185
|
+
│
|
|
186
|
+
│ Receive weekly updates
|
|
187
|
+
│
|
|
188
|
+
◆ Country
|
|
189
|
+
│ Select your country
|
|
190
|
+
│
|
|
191
|
+
│ Americas
|
|
192
|
+
│› ○ United States
|
|
193
|
+
│ ○ Canada
|
|
194
|
+
│ ○ Mexico
|
|
195
|
+
│ Europe
|
|
196
|
+
│
|
|
197
|
+
│ Your country of residence
|
|
198
|
+
│
|
|
199
|
+
◇ Date of Birth
|
|
200
|
+
│
|
|
201
|
+
│ ← 2026 →
|
|
202
|
+
│ ← January →
|
|
203
|
+
│
|
|
204
|
+
│ Mo Tu We Th Fr Sa Su
|
|
205
|
+
│ 1 2 3 4
|
|
206
|
+
│ 5 6 7 8 9 10 11
|
|
207
|
+
│ 12 13 14 15 16 17 18
|
|
208
|
+
│ 19 20 21 22 23 24 25
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
ctrl ↵ submit tab navigate ^k actions
|
|
212
|
+
|
|
213
|
+
"
|
|
404
214
|
`)
|
|
405
215
|
|
|
406
216
|
// Select current date with space - should show "Selected:" text
|
|
@@ -411,53 +221,54 @@ test('form date picker selection with space and enter', async () => {
|
|
|
411
221
|
"
|
|
412
222
|
|
|
413
223
|
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
│
|
|
227
|
+
│ Required field
|
|
228
|
+
│
|
|
229
|
+
◇ Password
|
|
230
|
+
│ Enter secure password
|
|
231
|
+
│ Must be at least 8 characters
|
|
232
|
+
│
|
|
233
|
+
◇ Biography
|
|
234
|
+
│ Tell us about yourself...
|
|
235
|
+
│
|
|
236
|
+
│
|
|
237
|
+
│
|
|
238
|
+
│ █
|
|
239
|
+
│ Maximum 500 characters ▀
|
|
240
|
+
│
|
|
241
|
+
◇ Email Preferences
|
|
242
|
+
│ ○ Subscribe to newsletter
|
|
243
|
+
│
|
|
244
|
+
│ Receive weekly updates
|
|
245
|
+
│
|
|
246
|
+
◆ Country
|
|
247
|
+
│ United States
|
|
248
|
+
│
|
|
249
|
+
│ Americas
|
|
250
|
+
│› ● United States
|
|
251
|
+
│ ○ Canada
|
|
252
|
+
│ ○ Mexico
|
|
253
|
+
│ Europe
|
|
254
|
+
│
|
|
255
|
+
│ Your country of residence
|
|
256
|
+
│
|
|
257
|
+
◇ Date of Birth
|
|
258
|
+
│
|
|
259
|
+
│ ← 2026 →
|
|
260
|
+
│ ← January →
|
|
261
|
+
│
|
|
262
|
+
│ Mo Tu We Th Fr Sa Su
|
|
263
|
+
│ 1 2 3 4
|
|
264
|
+
│ 5 6 7 8 9 10 11
|
|
265
|
+
│ 12 13 14 15 16 17 18
|
|
266
|
+
│ 19 20 21 22 23 24 25
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
ctrl ↵ submit tab navigate ^k actions
|
|
270
|
+
|
|
271
|
+
"
|
|
461
272
|
`)
|
|
462
273
|
|
|
463
274
|
// Navigate to a different day and select with enter
|
|
@@ -469,53 +280,54 @@ test('form date picker selection with space and enter', async () => {
|
|
|
469
280
|
"
|
|
470
281
|
|
|
471
282
|
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
│
|
|
286
|
+
│ Required field
|
|
287
|
+
│
|
|
288
|
+
◇ Password
|
|
289
|
+
│ Enter secure password
|
|
290
|
+
│ Must be at least 8 characters
|
|
291
|
+
│
|
|
292
|
+
◇ Biography
|
|
293
|
+
│ Tell us about yourself...
|
|
294
|
+
│
|
|
295
|
+
│
|
|
296
|
+
│
|
|
297
|
+
│ █
|
|
298
|
+
│ Maximum 500 characters ▀
|
|
299
|
+
│
|
|
300
|
+
◇ Email Preferences
|
|
301
|
+
│ ○ Subscribe to newsletter
|
|
302
|
+
│
|
|
303
|
+
│ Receive weekly updates
|
|
304
|
+
│
|
|
305
|
+
◆ Country
|
|
306
|
+
│ United States
|
|
307
|
+
│
|
|
308
|
+
│ Americas
|
|
309
|
+
│› ● United States
|
|
310
|
+
│ ○ Canada
|
|
311
|
+
│ ○ Mexico
|
|
312
|
+
│ Europe
|
|
313
|
+
│
|
|
314
|
+
│ Your country of residence
|
|
315
|
+
│
|
|
316
|
+
◇ Date of Birth
|
|
317
|
+
│
|
|
318
|
+
│ ← 2026 →
|
|
319
|
+
│ ← January →
|
|
320
|
+
│
|
|
321
|
+
│ Mo Tu We Th Fr Sa Su
|
|
322
|
+
│ 1 2 3 4
|
|
323
|
+
│ 5 6 7 8 9 10 11
|
|
324
|
+
│ 12 13 14 15 16 17 18
|
|
325
|
+
│ 19 20 21 22 23 24 25
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
ctrl ↵ submit tab navigate ^k actions
|
|
329
|
+
|
|
330
|
+
"
|
|
519
331
|
`)
|
|
520
332
|
}, 10000)
|
|
521
333
|
|
|
@@ -543,53 +355,54 @@ test('form dropdown navigation', async () => {
|
|
|
543
355
|
"
|
|
544
356
|
|
|
545
357
|
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
│
|
|
361
|
+
│ Required field
|
|
362
|
+
│
|
|
363
|
+
◇ Password
|
|
364
|
+
│ Enter secure password
|
|
365
|
+
│ Must be at least 8 characters
|
|
366
|
+
│
|
|
367
|
+
◇ Biography
|
|
368
|
+
│ Tell us about yourself...
|
|
369
|
+
│
|
|
370
|
+
│
|
|
371
|
+
│
|
|
372
|
+
│ █
|
|
373
|
+
│ Maximum 500 characters ▀
|
|
374
|
+
│
|
|
375
|
+
◇ Email Preferences
|
|
376
|
+
│ ○ Subscribe to newsletter
|
|
377
|
+
│
|
|
378
|
+
│ Receive weekly updates
|
|
379
|
+
│
|
|
380
|
+
◆ Country
|
|
381
|
+
│ United States
|
|
382
|
+
│
|
|
383
|
+
│ Americas
|
|
384
|
+
│› ● United States
|
|
385
|
+
│ ○ Canada
|
|
386
|
+
│ ○ Mexico
|
|
387
|
+
│ Europe
|
|
388
|
+
│
|
|
389
|
+
│ Your country of residence
|
|
390
|
+
│
|
|
391
|
+
◇ Date of Birth
|
|
392
|
+
│
|
|
393
|
+
│ ← 2026 →
|
|
394
|
+
│ ← January →
|
|
395
|
+
│
|
|
396
|
+
│ Mo Tu We Th Fr Sa Su
|
|
397
|
+
│ 1 2 3 4
|
|
398
|
+
│ 5 6 7 8 9 10 11
|
|
399
|
+
│ 12 13 14 15 16 17 18
|
|
400
|
+
│ 19 20 21 22 23 24 25
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
ctrl ↵ submit tab navigate ^k actions
|
|
404
|
+
|
|
405
|
+
"
|
|
593
406
|
`)
|
|
594
407
|
|
|
595
408
|
// Navigate down in dropdown
|
|
@@ -600,53 +413,54 @@ test('form dropdown navigation', async () => {
|
|
|
600
413
|
"
|
|
601
414
|
|
|
602
415
|
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
│
|
|
419
|
+
│ Required field
|
|
420
|
+
│
|
|
421
|
+
◇ Password
|
|
422
|
+
│ Enter secure password
|
|
423
|
+
│ Must be at least 8 characters
|
|
424
|
+
│
|
|
425
|
+
◇ Biography
|
|
426
|
+
│ Tell us about yourself...
|
|
427
|
+
│
|
|
428
|
+
│
|
|
429
|
+
│
|
|
430
|
+
│ █
|
|
431
|
+
│ Maximum 500 characters ▀
|
|
432
|
+
│
|
|
433
|
+
◇ Email Preferences
|
|
434
|
+
│ ○ Subscribe to newsletter
|
|
435
|
+
│
|
|
436
|
+
│ Receive weekly updates
|
|
437
|
+
│
|
|
438
|
+
◆ Country
|
|
439
|
+
│ United States
|
|
440
|
+
│
|
|
441
|
+
│ Americas
|
|
442
|
+
│ ● United States
|
|
443
|
+
│› ○ Canada
|
|
444
|
+
│ ○ Mexico
|
|
445
|
+
│ Europe
|
|
446
|
+
│
|
|
447
|
+
│ Your country of residence
|
|
448
|
+
│
|
|
449
|
+
◇ Date of Birth
|
|
450
|
+
│
|
|
451
|
+
│ ← 2026 →
|
|
452
|
+
│ ← January →
|
|
453
|
+
│
|
|
454
|
+
│ Mo Tu We Th Fr Sa Su
|
|
455
|
+
│ 1 2 3 4
|
|
456
|
+
│ 5 6 7 8 9 10 11
|
|
457
|
+
│ 12 13 14 15 16 17 18
|
|
458
|
+
│ 19 20 21 22 23 24 25
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
ctrl ↵ submit tab navigate ^k actions
|
|
462
|
+
|
|
463
|
+
"
|
|
650
464
|
`)
|
|
651
465
|
|
|
652
466
|
// Navigate to Europe section
|
|
@@ -659,53 +473,54 @@ test('form dropdown navigation', async () => {
|
|
|
659
473
|
"
|
|
660
474
|
|
|
661
475
|
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
│
|
|
479
|
+
│ Required field
|
|
480
|
+
│
|
|
481
|
+
◇ Password
|
|
482
|
+
│ Enter secure password
|
|
483
|
+
│ Must be at least 8 characters
|
|
484
|
+
│
|
|
485
|
+
◇ Biography
|
|
486
|
+
│ Tell us about yourself...
|
|
487
|
+
│
|
|
488
|
+
│
|
|
489
|
+
│
|
|
490
|
+
│ █
|
|
491
|
+
│ Maximum 500 characters ▀
|
|
492
|
+
│
|
|
493
|
+
◇ Email Preferences
|
|
494
|
+
│ ○ Subscribe to newsletter
|
|
495
|
+
│
|
|
496
|
+
│ Receive weekly updates
|
|
497
|
+
│
|
|
498
|
+
◆ Country
|
|
499
|
+
│ United States
|
|
500
|
+
│
|
|
501
|
+
│ ○ Mexico
|
|
502
|
+
│ Europe
|
|
503
|
+
│ ○ United Kingdom
|
|
504
|
+
│› ○ France
|
|
505
|
+
│ ○ Germany
|
|
506
|
+
│
|
|
507
|
+
│ Your country of residence
|
|
508
|
+
│
|
|
509
|
+
◇ Date of Birth
|
|
510
|
+
│
|
|
511
|
+
│ ← 2026 →
|
|
512
|
+
│ ← January →
|
|
513
|
+
│
|
|
514
|
+
│ Mo Tu We Th Fr Sa Su
|
|
515
|
+
│ 1 2 3 4
|
|
516
|
+
│ 5 6 7 8 9 10 11
|
|
517
|
+
│ 12 13 14 15 16 17 18
|
|
518
|
+
│ 19 20 21 22 23 24 25
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
ctrl ↵ submit tab navigate ^k actions
|
|
522
|
+
|
|
523
|
+
"
|
|
709
524
|
`)
|
|
710
525
|
|
|
711
526
|
// Select France
|
|
@@ -716,53 +531,54 @@ test('form dropdown navigation', async () => {
|
|
|
716
531
|
"
|
|
717
532
|
|
|
718
533
|
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
│
|
|
537
|
+
│ Required field
|
|
538
|
+
│
|
|
539
|
+
◇ Password
|
|
540
|
+
│ Enter secure password
|
|
541
|
+
│ Must be at least 8 characters
|
|
542
|
+
│
|
|
543
|
+
◇ Biography
|
|
544
|
+
│ Tell us about yourself...
|
|
545
|
+
│
|
|
546
|
+
│
|
|
547
|
+
│
|
|
548
|
+
│ █
|
|
549
|
+
│ Maximum 500 characters ▀
|
|
550
|
+
│
|
|
551
|
+
◇ Email Preferences
|
|
552
|
+
│ ○ Subscribe to newsletter
|
|
553
|
+
│
|
|
554
|
+
│ Receive weekly updates
|
|
555
|
+
│
|
|
556
|
+
◆ Country
|
|
557
|
+
│ France
|
|
558
|
+
│
|
|
559
|
+
│ ○ Mexico
|
|
560
|
+
│ Europe
|
|
561
|
+
│ ○ United Kingdom
|
|
562
|
+
│› ● France
|
|
563
|
+
│ ○ Germany
|
|
564
|
+
│
|
|
565
|
+
│ Your country of residence
|
|
566
|
+
│
|
|
567
|
+
◇ Date of Birth
|
|
568
|
+
│
|
|
569
|
+
│ ← 2026 →
|
|
570
|
+
│ ← January →
|
|
571
|
+
│
|
|
572
|
+
│ Mo Tu We Th Fr Sa Su
|
|
573
|
+
│ 1 2 3 4
|
|
574
|
+
│ 5 6 7 8 9 10 11
|
|
575
|
+
│ 12 13 14 15 16 17 18
|
|
576
|
+
│ 19 20 21 22 23 24 25
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
ctrl ↵ submit tab navigate ^k actions
|
|
580
|
+
|
|
581
|
+
"
|
|
766
582
|
`)
|
|
767
583
|
}, 10000)
|
|
768
584
|
|
|
@@ -786,23 +602,24 @@ test('form scrolls with mouse wheel', async () => {
|
|
|
786
602
|
"
|
|
787
603
|
|
|
788
604
|
|
|
789
|
-
■ Form Component Demo ▀
|
|
790
|
-
│ This demonstrates all available form input types. Use arrow
|
|
791
|
-
│ keys or Tab to navigate between fields.
|
|
792
|
-
│
|
|
793
|
-
◇ Username
|
|
794
|
-
│ Enter your username
|
|
795
|
-
│
|
|
796
|
-
│ Required field
|
|
797
|
-
│
|
|
798
|
-
◇ Password
|
|
799
|
-
│ Enter secure password
|
|
800
|
-
│ Must be at least 8 characters
|
|
801
|
-
│
|
|
802
|
-
◇ Biography
|
|
803
605
|
|
|
804
606
|
|
|
805
|
-
|
|
607
|
+
■ Form Component Demo ▀
|
|
608
|
+
│ This demonstrates all available form input types. Use arrow
|
|
609
|
+
│ keys or Tab to navigate between fields.
|
|
610
|
+
│
|
|
611
|
+
◇ Username
|
|
612
|
+
│ Enter your username
|
|
613
|
+
│
|
|
614
|
+
│ Required field
|
|
615
|
+
│
|
|
616
|
+
◇ Password
|
|
617
|
+
│ Enter secure password
|
|
618
|
+
|
|
619
|
+
|
|
620
|
+
ctrl ↵ submit tab navigate ^k actions
|
|
621
|
+
|
|
622
|
+
"
|
|
806
623
|
`)
|
|
807
624
|
|
|
808
625
|
await session.scrollDown(5)
|
|
@@ -813,23 +630,24 @@ test('form scrolls with mouse wheel', async () => {
|
|
|
813
630
|
"
|
|
814
631
|
|
|
815
632
|
|
|
816
|
-
│ This demonstrates all available form input types. Use arrow ▄
|
|
817
|
-
│ keys or Tab to navigate between fields.
|
|
818
|
-
│
|
|
819
|
-
◇ Username
|
|
820
|
-
│ Enter your username
|
|
821
|
-
│
|
|
822
|
-
│ Required field
|
|
823
|
-
│
|
|
824
|
-
◇ Password
|
|
825
|
-
│ Enter secure password
|
|
826
|
-
│ Must be at least 8 characters
|
|
827
|
-
│
|
|
828
|
-
◇ Biography
|
|
829
|
-
│ Tell us about yourself...
|
|
830
633
|
|
|
831
634
|
|
|
832
|
-
|
|
635
|
+
│ This demonstrates all available form input types. Use arrow ▀
|
|
636
|
+
│ keys or Tab to navigate between fields.
|
|
637
|
+
│
|
|
638
|
+
◇ Username
|
|
639
|
+
│ Enter your username
|
|
640
|
+
│
|
|
641
|
+
│ Required field
|
|
642
|
+
│
|
|
643
|
+
◇ Password
|
|
644
|
+
│ Enter secure password
|
|
645
|
+
│ Must be at least 8 characters
|
|
646
|
+
|
|
647
|
+
|
|
648
|
+
ctrl ↵ submit tab navigate ^k actions
|
|
649
|
+
|
|
650
|
+
"
|
|
833
651
|
`)
|
|
834
652
|
|
|
835
653
|
await session.scrollUp(3)
|
|
@@ -840,22 +658,23 @@ test('form scrolls with mouse wheel', async () => {
|
|
|
840
658
|
"
|
|
841
659
|
|
|
842
660
|
|
|
843
|
-
■ Form Component Demo ▀
|
|
844
|
-
│ This demonstrates all available form input types. Use arrow
|
|
845
|
-
│ keys or Tab to navigate between fields.
|
|
846
|
-
│
|
|
847
|
-
◇ Username
|
|
848
|
-
│ Enter your username
|
|
849
|
-
│
|
|
850
|
-
│ Required field
|
|
851
|
-
│
|
|
852
|
-
◇ Password
|
|
853
|
-
│ Enter secure password
|
|
854
|
-
│ Must be at least 8 characters
|
|
855
|
-
│
|
|
856
|
-
◇ Biography
|
|
857
661
|
|
|
858
662
|
|
|
859
|
-
|
|
663
|
+
■ Form Component Demo ▀
|
|
664
|
+
│ This demonstrates all available form input types. Use arrow
|
|
665
|
+
│ keys or Tab to navigate between fields.
|
|
666
|
+
│
|
|
667
|
+
◇ Username
|
|
668
|
+
│ Enter your username
|
|
669
|
+
│
|
|
670
|
+
│ Required field
|
|
671
|
+
│
|
|
672
|
+
◇ Password
|
|
673
|
+
│ Enter secure password
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
ctrl ↵ submit tab navigate ^k actions
|
|
677
|
+
|
|
678
|
+
"
|
|
860
679
|
`)
|
|
861
680
|
}, 10000)
|