create-auto-app 0.12.0 → 0.13.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/package.json +2 -2
- package/templates/kanban-todo/narratives/homepage.narrative.ts +99 -118
- package/templates/kanban-todo/narratives/structure.narrative.ts +111 -137
- package/templates/kanban-todo/narratives/todo-list.narrative.ts +46 -45
- package/templates/questionnaires/narratives/homepage.narrative.ts +89 -147
- package/templates/questionnaires/narratives/questionnaires.narrative.ts +29 -28
- package/templates/questionnaires/narratives/structure.narrative.ts +14 -18
- package/dist/index.d.ts +0 -14
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -464
- package/dist/index.js.map +0 -1
- package/dist/index.specs.d.ts +0 -2
- package/dist/index.specs.d.ts.map +0 -1
- package/dist/index.specs.js +0 -267
- package/dist/index.specs.js.map +0 -1
- package/dist/index.test.d.ts +0 -2
- package/dist/index.test.d.ts.map +0 -1
- package/dist/index.test.js +0 -187
- package/dist/index.test.js.map +0 -1
- package/templates/kanban-todo/.context/auto-ia-scheme.json +0 -414
- package/templates/kanban-todo/.context/schema.graphql +0 -60
- package/templates/kanban-todo/.context/schema.json +0 -1134
- package/templates/kanban-todo/client/.gitignore +0 -24
|
@@ -6,7 +6,8 @@ import {
|
|
|
6
6
|
narrative,
|
|
7
7
|
query,
|
|
8
8
|
rule,
|
|
9
|
-
|
|
9
|
+
describe,
|
|
10
|
+
it,
|
|
10
11
|
sink,
|
|
11
12
|
source,
|
|
12
13
|
specs,
|
|
@@ -74,15 +75,15 @@ type TodoListSummary = State<
|
|
|
74
75
|
completionPercentage: number;
|
|
75
76
|
}
|
|
76
77
|
>;
|
|
77
|
-
narrative('Todo List', '
|
|
78
|
-
command('adds a new todo', '
|
|
78
|
+
narrative('Todo List', 'T8dL3k9Xw', () => {
|
|
79
|
+
command('adds a new todo', 'A1c4Mn7Bz')
|
|
79
80
|
.client(() => {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
81
|
+
describe('Add Todo', () => {
|
|
82
|
+
it('display a quick-add input field with floating action button');
|
|
83
|
+
it('show success animation when todo is added');
|
|
84
|
+
it('automatically place new todo in "To Do" column');
|
|
85
|
+
it('clear input field after successful addition');
|
|
86
|
+
it('focus back to input for quick consecutive additions');
|
|
86
87
|
});
|
|
87
88
|
})
|
|
88
89
|
.request(
|
|
@@ -99,7 +100,7 @@ narrative('Todo List', 'AUTO-T8dL3k9Xw', () => {
|
|
|
99
100
|
.server(() => {
|
|
100
101
|
data([sink().event('TodoAdded').toStream('todos')]);
|
|
101
102
|
specs(() => {
|
|
102
|
-
rule('todos can be added to the list', '
|
|
103
|
+
rule('todos can be added to the list', 'r1B2Cp8Y', () => {
|
|
103
104
|
example('adds a new todo successfully')
|
|
104
105
|
.when<AddTodo>({ todoId: 'todo-001', description: 'Buy groceries' })
|
|
105
106
|
.then<TodoAdded>({
|
|
@@ -111,13 +112,13 @@ narrative('Todo List', 'AUTO-T8dL3k9Xw', () => {
|
|
|
111
112
|
});
|
|
112
113
|
});
|
|
113
114
|
});
|
|
114
|
-
command('moves todo to in progress', '
|
|
115
|
+
command('moves todo to in progress', 'M2d5No8Cz')
|
|
115
116
|
.client(() => {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
117
|
+
describe('Move to In Progress', () => {
|
|
118
|
+
it('support drag-and-drop from "To Do" to "In Progress" column');
|
|
119
|
+
it('animate smooth transition between columns');
|
|
120
|
+
it('update column count badges in real-time');
|
|
121
|
+
it('show visual feedback during drag operation');
|
|
121
122
|
});
|
|
122
123
|
})
|
|
123
124
|
.request(
|
|
@@ -134,7 +135,7 @@ narrative('Todo List', 'AUTO-T8dL3k9Xw', () => {
|
|
|
134
135
|
.server(() => {
|
|
135
136
|
data([sink().event('TodoMarkedInProgress').toStream('todos')]);
|
|
136
137
|
specs(() => {
|
|
137
|
-
rule('todos can be moved to in progress', '
|
|
138
|
+
rule('todos can be moved to in progress', 'r2C3Dq9Z', () => {
|
|
138
139
|
example('moves a pending todo to in progress')
|
|
139
140
|
.given<TodoAdded>({
|
|
140
141
|
todoId: 'todo-001',
|
|
@@ -147,15 +148,15 @@ narrative('Todo List', 'AUTO-T8dL3k9Xw', () => {
|
|
|
147
148
|
});
|
|
148
149
|
});
|
|
149
150
|
});
|
|
150
|
-
command('marks todo as complete', '
|
|
151
|
+
command('marks todo as complete', 'C3e6Op9Dz')
|
|
151
152
|
.client(() => {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
153
|
+
describe('Complete Todo', () => {
|
|
154
|
+
it('support drag-and-drop to "Done" column');
|
|
155
|
+
it('show celebration animation on completion');
|
|
156
|
+
it('display visual confetti effect for milestone completions');
|
|
157
|
+
it('update completion percentage progress ring');
|
|
158
|
+
it('strike-through completed todo text with smooth animation');
|
|
159
|
+
it('show completion timestamp on hover');
|
|
159
160
|
});
|
|
160
161
|
})
|
|
161
162
|
.request(
|
|
@@ -172,7 +173,7 @@ narrative('Todo List', 'AUTO-T8dL3k9Xw', () => {
|
|
|
172
173
|
.server(() => {
|
|
173
174
|
data([sink().event('TodoMarkedComplete').toStream('todos')]);
|
|
174
175
|
specs(() => {
|
|
175
|
-
rule('todos can be marked as complete', '
|
|
176
|
+
rule('todos can be marked as complete', 'r3D4Eq0A', () => {
|
|
176
177
|
example('marks an in-progress todo as complete')
|
|
177
178
|
.given<TodoAdded>({
|
|
178
179
|
todoId: 'todo-001',
|
|
@@ -195,16 +196,16 @@ narrative('Todo List', 'AUTO-T8dL3k9Xw', () => {
|
|
|
195
196
|
});
|
|
196
197
|
});
|
|
197
198
|
});
|
|
198
|
-
query('views all todos', '
|
|
199
|
+
query('views all todos', 'V4f7Pq0Ez')
|
|
199
200
|
.client(() => {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
201
|
+
describe('Todo List View', () => {
|
|
202
|
+
it('display todos organized in three columns: To Do, In Progress, Done');
|
|
203
|
+
it('show count badges on each column header');
|
|
204
|
+
it('support drag-and-drop between columns');
|
|
205
|
+
it('display empty state illustrations for empty columns');
|
|
206
|
+
it('show todo cards with glass morphism effect');
|
|
207
|
+
it('display subtle hover effects on todo cards');
|
|
208
|
+
it('support keyboard navigation between todos');
|
|
208
209
|
});
|
|
209
210
|
})
|
|
210
211
|
.request(
|
|
@@ -221,7 +222,7 @@ narrative('Todo List', 'AUTO-T8dL3k9Xw', () => {
|
|
|
221
222
|
.server(() => {
|
|
222
223
|
data([source().state('TodoState').fromProjection('Todos', 'todoId')]);
|
|
223
224
|
specs(() => {
|
|
224
|
-
rule('all todos are displayed with their current status', '
|
|
225
|
+
rule('all todos are displayed with their current status', 'r4E5Fr1B', () => {
|
|
225
226
|
example('shows multiple todos in different states')
|
|
226
227
|
.given<TodoAdded>({
|
|
227
228
|
todoId: 'todo-001',
|
|
@@ -247,15 +248,15 @@ narrative('Todo List', 'AUTO-T8dL3k9Xw', () => {
|
|
|
247
248
|
});
|
|
248
249
|
});
|
|
249
250
|
});
|
|
250
|
-
query('views completion summary', '
|
|
251
|
+
query('views completion summary', 'S5g8Qr1Fz')
|
|
251
252
|
.client(() => {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
253
|
+
describe('Completion Summary', () => {
|
|
254
|
+
it('display circular progress ring showing completion percentage');
|
|
255
|
+
it('show total task count in center of progress ring');
|
|
256
|
+
it('display breakdown of pending, in-progress, and completed counts');
|
|
257
|
+
it('update progress ring with smooth animation on status changes');
|
|
258
|
+
it('use gradient colors for progress ring');
|
|
259
|
+
it('show daily completion goal progress');
|
|
259
260
|
});
|
|
260
261
|
})
|
|
261
262
|
.request(
|
|
@@ -272,7 +273,7 @@ narrative('Todo List', 'AUTO-T8dL3k9Xw', () => {
|
|
|
272
273
|
.server(() => {
|
|
273
274
|
data([source().state('TodoListSummary').fromSingletonProjection('TodoSummary')]);
|
|
274
275
|
specs(() => {
|
|
275
|
-
rule('summary shows overall todo list statistics', '
|
|
276
|
+
rule('summary shows overall todo list statistics', 'r5F6Gs2C', () => {
|
|
276
277
|
example('calculates summary from multiple todos')
|
|
277
278
|
.given<TodoAdded>({
|
|
278
279
|
todoId: 'todo-001',
|
|
@@ -1,161 +1,103 @@
|
|
|
1
|
-
import { experience, narrative,
|
|
2
|
-
narrative('Home Screen', '
|
|
3
|
-
experience('Active Surveys Summary', '
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
specs(() => {
|
|
15
|
-
should('show visual progress of completion rate goals');
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
experience('Quick Access Actions', 'AUTO-D4iH7m1Zl').client(() => {
|
|
19
|
-
specs(() => {
|
|
20
|
-
should('show quick access buttons for Create Survey, Analytics, Templates');
|
|
21
|
-
});
|
|
1
|
+
import { experience, narrative, it } from '@auto-engineer/narrative';
|
|
2
|
+
narrative('Home Screen', 'cDAZP41Kb', () => {
|
|
3
|
+
experience('Active Surveys Summary', 'aifPcU3hw').client(() => {
|
|
4
|
+
it('show active surveys summary and response rate overview');
|
|
5
|
+
});
|
|
6
|
+
experience('Recent Survey Responses', 'B2gF5k9Xj').client(() => {
|
|
7
|
+
it('display recent survey responses list');
|
|
8
|
+
});
|
|
9
|
+
experience('Completion Rate Progress', 'C3hG6l0Yk').client(() => {
|
|
10
|
+
it('show visual progress of completion rate goals');
|
|
11
|
+
});
|
|
12
|
+
experience('Quick Access Actions', 'D4iH7m1Zl').client(() => {
|
|
13
|
+
it('show quick access buttons for Create Survey, Analytics, Templates');
|
|
22
14
|
});
|
|
23
15
|
});
|
|
24
|
-
narrative('Create Survey', '
|
|
25
|
-
experience('Create Survey Form', '
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
specs(() => {
|
|
37
|
-
should('display confirmation toast after creating survey');
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
experience('Real-time Dashboard Updates', 'AUTO-G7lK0p4Co').client(() => {
|
|
41
|
-
specs(() => {
|
|
42
|
-
should('update survey dashboard and analytics in real-time');
|
|
43
|
-
});
|
|
16
|
+
narrative('Create Survey', 'OnuAvj45V', () => {
|
|
17
|
+
experience('Create Survey Form', 'MPviTMrQC').client(() => {
|
|
18
|
+
it('allow entering survey title, description, and question types');
|
|
19
|
+
});
|
|
20
|
+
experience('Question Templates Selection', 'E5jI8n2Am').client(() => {
|
|
21
|
+
it('show recent/frequent question templates for quick selection');
|
|
22
|
+
});
|
|
23
|
+
experience('Survey Creation Confirmation', 'F6kJ9o3Bn').client(() => {
|
|
24
|
+
it('display confirmation toast after creating survey');
|
|
25
|
+
});
|
|
26
|
+
experience('Real-time Dashboard Updates', 'G7lK0p4Co').client(() => {
|
|
27
|
+
it('update survey dashboard and analytics in real-time');
|
|
44
28
|
});
|
|
45
29
|
});
|
|
46
|
-
narrative('Response Analytics', '
|
|
47
|
-
experience('Response Rate Charts', '
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
specs(() => {
|
|
60
|
-
should('allow filtering by survey type or date range');
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
experience('Real-time Analytics Updates', 'AUTO-J0oN3s7Fr').client(() => {
|
|
64
|
-
specs(() => {
|
|
65
|
-
should('update dynamically when new responses are received');
|
|
66
|
-
});
|
|
30
|
+
narrative('Response Analytics', 'dRYuxORz0', () => {
|
|
31
|
+
experience('Response Rate Charts', 'eME978Euk').client(() => {
|
|
32
|
+
it('show daily response rate charts');
|
|
33
|
+
it('show weekly response rate charts');
|
|
34
|
+
});
|
|
35
|
+
experience('High Engagement Survey Highlights', 'H8mL1q5Dp').client(() => {
|
|
36
|
+
it('highlight surveys with highest engagement');
|
|
37
|
+
});
|
|
38
|
+
experience('Analytics Filtering', 'I9nM2r6Eq').client(() => {
|
|
39
|
+
it('allow filtering by survey type or date range');
|
|
40
|
+
});
|
|
41
|
+
experience('Real-time Analytics Updates', 'J0oN3s7Fr').client(() => {
|
|
42
|
+
it('update dynamically when new responses are received');
|
|
67
43
|
});
|
|
68
44
|
});
|
|
69
|
-
narrative('Manage Templates', '
|
|
70
|
-
experience('Templates List View', '
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
specs(() => {
|
|
82
|
-
should('show monthly summary of template usage statistics');
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
experience('Popular Templates Highlights', 'AUTO-M3rQ6v0Iu').client(() => {
|
|
86
|
-
specs(() => {
|
|
87
|
-
should('highlight most popular and recently used templates');
|
|
88
|
-
});
|
|
45
|
+
narrative('Manage Templates', 'KFxx8k1ul', () => {
|
|
46
|
+
experience('Templates List View', 'TRJBgM1JS').client(() => {
|
|
47
|
+
it('list all survey templates with usage count and last modified date');
|
|
48
|
+
});
|
|
49
|
+
experience('Template Management Actions', 'K1pO4t8Gs').client(() => {
|
|
50
|
+
it('allow creating, editing, and deleting survey templates');
|
|
51
|
+
});
|
|
52
|
+
experience('Template Usage Statistics', 'L2qP5u9Ht').client(() => {
|
|
53
|
+
it('show monthly summary of template usage statistics');
|
|
54
|
+
});
|
|
55
|
+
experience('Popular Templates Highlights', 'M3rQ6v0Iu').client(() => {
|
|
56
|
+
it('highlight most popular and recently used templates');
|
|
89
57
|
});
|
|
90
58
|
});
|
|
91
|
-
narrative('Survey Completion Tracker', '
|
|
92
|
-
experience('Completion Rate Progress View', '
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
specs(() => {
|
|
104
|
-
should('automatically track new survey completions');
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
experience('Shell Progress Bar Display', 'AUTO-P6uT9y3Lx').client(() => {
|
|
108
|
-
specs(() => {
|
|
109
|
-
should('display visual completion progress bar consistently in shell');
|
|
110
|
-
});
|
|
59
|
+
narrative('Survey Completion Tracker', 'wXdtfGpFr', () => {
|
|
60
|
+
experience('Completion Rate Progress View', 'oDBBOUNzr').client(() => {
|
|
61
|
+
it('show current completion rate and target progress');
|
|
62
|
+
});
|
|
63
|
+
experience('Target Setting Interface', 'N4sR7w1Jv').client(() => {
|
|
64
|
+
it('allow setting completion rate targets');
|
|
65
|
+
});
|
|
66
|
+
experience('Automatic Completion Tracking', 'O5tS8x2Kw').client(() => {
|
|
67
|
+
it('automatically track new survey completions');
|
|
68
|
+
});
|
|
69
|
+
experience('Shell Progress Bar Display', 'P6uT9y3Lx').client(() => {
|
|
70
|
+
it('display visual completion progress bar consistently in shell');
|
|
111
71
|
});
|
|
112
72
|
});
|
|
113
|
-
narrative('Response Goals Tracker', '
|
|
114
|
-
experience('Response Target Setting', '
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
specs(() => {
|
|
126
|
-
should('highlight underperforming surveys');
|
|
127
|
-
});
|
|
128
|
-
});
|
|
129
|
-
experience('Real-time Goals Updates', 'AUTO-S9xW2b6Oa').client(() => {
|
|
130
|
-
specs(() => {
|
|
131
|
-
should('update in real-time when responses are received');
|
|
132
|
-
});
|
|
73
|
+
narrative('Response Goals Tracker', 'W8dytm3oC', () => {
|
|
74
|
+
experience('Response Target Setting', 'Idmim68Yf').client(() => {
|
|
75
|
+
it('allow setting monthly/weekly response targets');
|
|
76
|
+
});
|
|
77
|
+
experience('Response Target Progress Bar', 'Q7vU0z4My').client(() => {
|
|
78
|
+
it('show remaining response targets as a progress bar');
|
|
79
|
+
});
|
|
80
|
+
experience('Underperforming Survey Highlights', 'R8wV1a5Nz').client(() => {
|
|
81
|
+
it('highlight underperforming surveys');
|
|
82
|
+
});
|
|
83
|
+
experience('Real-time Goals Updates', 'S9xW2b6Oa').client(() => {
|
|
84
|
+
it('update in real-time when responses are received');
|
|
133
85
|
});
|
|
134
86
|
});
|
|
135
|
-
narrative('Response History', '
|
|
136
|
-
experience('Response History List', '
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
});
|
|
151
|
-
experience('Response Export Functionality', 'AUTO-V2aZ5e9Rd').client(() => {
|
|
152
|
-
specs(() => {
|
|
153
|
-
should('export individual responses');
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
experience('Response Engagement Contribution', 'AUTO-W3ba6f0Se').client(() => {
|
|
157
|
-
specs(() => {
|
|
158
|
-
should('show contribution of each response to daily/weekly/monthly engagement totals');
|
|
159
|
-
});
|
|
87
|
+
narrative('Response History', 'JizW21yrr', () => {
|
|
88
|
+
experience('Response History List', 'cIpwPlqRq').client(() => {
|
|
89
|
+
it('allow viewing full response history');
|
|
90
|
+
});
|
|
91
|
+
experience('Response History Filtering', 'T0yX3c7Pb').client(() => {
|
|
92
|
+
it('filter by survey type, date, or completion status');
|
|
93
|
+
});
|
|
94
|
+
experience('Detailed Response View', 'U1zY4d8Qc').client(() => {
|
|
95
|
+
it('view detailed response data and export individual responses');
|
|
96
|
+
});
|
|
97
|
+
experience('Response Export Functionality', 'V2aZ5e9Rd').client(() => {
|
|
98
|
+
it('export individual responses');
|
|
99
|
+
});
|
|
100
|
+
experience('Response Engagement Contribution', 'W3ba6f0Se').client(() => {
|
|
101
|
+
it('show contribution of each response to daily/weekly/monthly engagement totals');
|
|
160
102
|
});
|
|
161
103
|
});
|
|
@@ -3,7 +3,8 @@ import {
|
|
|
3
3
|
query,
|
|
4
4
|
experience,
|
|
5
5
|
narrative,
|
|
6
|
-
|
|
6
|
+
describe,
|
|
7
|
+
it,
|
|
7
8
|
specs,
|
|
8
9
|
rule,
|
|
9
10
|
example,
|
|
@@ -102,11 +103,11 @@ type QuestionnaireProgress = State<
|
|
|
102
103
|
}
|
|
103
104
|
>;
|
|
104
105
|
|
|
105
|
-
narrative('Questionnaires', '
|
|
106
|
-
command('sends the questionnaire link', '
|
|
106
|
+
narrative('Questionnaires', 'Q9m2Kp4Lx', () => {
|
|
107
|
+
command('sends the questionnaire link', 'S2b5Cp7Dz')
|
|
107
108
|
.server(() => {
|
|
108
109
|
specs(() => {
|
|
109
|
-
rule('questionnaire link is sent to participant', '
|
|
110
|
+
rule('questionnaire link is sent to participant', 'r0A1Bo8X', () => {
|
|
110
111
|
example('sends the questionnaire link successfully')
|
|
111
112
|
.when<SendQuestionnaireLink>({
|
|
112
113
|
questionnaireId: 'q-001',
|
|
@@ -130,15 +131,15 @@ narrative('Questionnaires', 'AUTO-Q9m2Kp4Lx', () => {
|
|
|
130
131
|
}
|
|
131
132
|
`)
|
|
132
133
|
.client(() => {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
134
|
+
describe('Questionnaire Link', () => {
|
|
135
|
+
it('display a confirmation message when the link is sent');
|
|
136
|
+
it('handle errors when the link cannot be sent');
|
|
136
137
|
});
|
|
137
138
|
});
|
|
138
|
-
query('views the questionnaire', '
|
|
139
|
+
query('views the questionnaire', 'V7n8Rq5M')
|
|
139
140
|
.server(() => {
|
|
140
141
|
specs(() => {
|
|
141
|
-
rule('questionnaires show current progress', '
|
|
142
|
+
rule('questionnaires show current progress', 'r1A3Bp9W', () => {
|
|
142
143
|
example('a question has already been answered')
|
|
143
144
|
.given<QuestionnaireLinkSent>({
|
|
144
145
|
questionnaireId: 'q-001',
|
|
@@ -197,18 +198,18 @@ narrative('Questionnaires', 'AUTO-Q9m2Kp4Lx', () => {
|
|
|
197
198
|
}
|
|
198
199
|
`)
|
|
199
200
|
.client(() => {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
201
|
+
describe('Questionnaire Progress', () => {
|
|
202
|
+
it('focus on the current question based on the progress state');
|
|
203
|
+
it('display the list of answered questions');
|
|
204
|
+
it('display the list of remaining questions');
|
|
205
|
+
it('show a progress indicator that is always visible as the user scrolls');
|
|
205
206
|
});
|
|
206
207
|
});
|
|
207
208
|
|
|
208
|
-
command('submits a questionnaire answer', '
|
|
209
|
+
command('submits a questionnaire answer', 'S4j6Nt8Z')
|
|
209
210
|
.server(() => {
|
|
210
211
|
specs(() => {
|
|
211
|
-
rule('answers are allowed while the questionnaire has not been submitted', '
|
|
212
|
+
rule('answers are allowed while the questionnaire has not been submitted', 'r2D5Eq0Y', () => {
|
|
212
213
|
example('no questions have been answered yet')
|
|
213
214
|
.when<AnswerQuestion>({
|
|
214
215
|
questionnaireId: 'q-001',
|
|
@@ -257,16 +258,16 @@ narrative('Questionnaires', 'AUTO-Q9m2Kp4Lx', () => {
|
|
|
257
258
|
}
|
|
258
259
|
`)
|
|
259
260
|
.client(() => {
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
261
|
+
describe('Submissions', () => {
|
|
262
|
+
it('displays a success message when the answer is submitted');
|
|
263
|
+
it('display an error message when the answer submission is rejected');
|
|
263
264
|
});
|
|
264
265
|
});
|
|
265
266
|
|
|
266
|
-
query('questionnaire ready for submission', '
|
|
267
|
+
query('questionnaire ready for submission', 'R3f7Hu1X')
|
|
267
268
|
.server(() => {
|
|
268
269
|
specs(() => {
|
|
269
|
-
rule('questionnaire is ready for submission when all questions are answered', '
|
|
270
|
+
rule('questionnaire is ready for submission when all questions are answered', 'r3G8Iv2W', () => {
|
|
270
271
|
example('all questions have been answered')
|
|
271
272
|
.given<QuestionnaireConfig>({
|
|
272
273
|
questionnaireId: 'q-001',
|
|
@@ -349,16 +350,16 @@ narrative('Questionnaires', 'AUTO-Q9m2Kp4Lx', () => {
|
|
|
349
350
|
}
|
|
350
351
|
`)
|
|
351
352
|
.client(() => {
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
353
|
+
describe('Submission Readiness', () => {
|
|
354
|
+
it('enable the submit button when all questions are answered');
|
|
355
|
+
it('disable the submit button when all questions have not been answered');
|
|
355
356
|
});
|
|
356
357
|
});
|
|
357
358
|
|
|
358
|
-
command('submits the questionnaire', '
|
|
359
|
+
command('submits the questionnaire', 'T5k9Jw3V')
|
|
359
360
|
.server(() => {
|
|
360
361
|
specs(() => {
|
|
361
|
-
rule('questionnaire allowed to be submitted when all questions are answered', '
|
|
362
|
+
rule('questionnaire allowed to be submitted when all questions are answered', 'r4H0Lx4U', () => {
|
|
362
363
|
example('submits the questionnaire successfully')
|
|
363
364
|
.when<SubmitQuestionnaire>({
|
|
364
365
|
questionnaireId: 'q-001',
|
|
@@ -381,8 +382,8 @@ narrative('Questionnaires', 'AUTO-Q9m2Kp4Lx', () => {
|
|
|
381
382
|
}
|
|
382
383
|
`)
|
|
383
384
|
.client(() => {
|
|
384
|
-
|
|
385
|
-
|
|
385
|
+
describe('Submission Confirmation', () => {
|
|
386
|
+
it('display a confirmation message upon successful submission');
|
|
386
387
|
});
|
|
387
388
|
});
|
|
388
389
|
});
|
|
@@ -1,20 +1,16 @@
|
|
|
1
|
-
import { experience, narrative,
|
|
2
|
-
narrative('App Structure', '
|
|
3
|
-
experience('App Structure', '
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
should('content area changes dynamically based on selected navigation link');
|
|
16
|
-
should('maintain layout consistency across all screens');
|
|
17
|
-
should('support responsive design with sidebar collapsing into hamburger menu on mobile');
|
|
18
|
-
});
|
|
1
|
+
import { experience, narrative, it } from '@auto-engineer/narrative';
|
|
2
|
+
narrative('App Structure', 'vLkxrmhz6', () => {
|
|
3
|
+
experience('App Structure', 'k6JkQZQnc').client(() => {
|
|
4
|
+
it('display persistent sidebar on left for navigation');
|
|
5
|
+
it(
|
|
6
|
+
'sidebar includes links: Home, Create Survey, Analytics, Templates, Completion Tracker, Response Goals, Response History',
|
|
7
|
+
);
|
|
8
|
+
it('highlight current active link in sidebar');
|
|
9
|
+
it('sidebar collapsible for smaller screens');
|
|
10
|
+
it('top bar includes app logo, profile menu, and notifications icon');
|
|
11
|
+
it('bottom or top persistent bar shows global widgets: total responses, active surveys, completion rate progress');
|
|
12
|
+
it('content area changes dynamically based on selected navigation link');
|
|
13
|
+
it('maintain layout consistency across all screens');
|
|
14
|
+
it('support responsive design with sidebar collapsing into hamburger menu on mobile');
|
|
19
15
|
});
|
|
20
16
|
});
|
package/dist/index.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
interface TemplateMetadata {
|
|
3
|
-
name: string;
|
|
4
|
-
displayName: string;
|
|
5
|
-
description: string;
|
|
6
|
-
type: 'template';
|
|
7
|
-
preset: 'minimal' | 'full';
|
|
8
|
-
}
|
|
9
|
-
declare function detectPackageManager(): Promise<'npm' | 'pnpm' | 'yarn'>;
|
|
10
|
-
declare function replaceBogusFileIds(targetDir: string): Promise<void>;
|
|
11
|
-
declare function createFromTemplate(templatePath: string, targetDir: string, projectName: string, templateName: string): Promise<void>;
|
|
12
|
-
declare function getAvailableTemplates(): Promise<TemplateMetadata[]>;
|
|
13
|
-
export { getAvailableTemplates, createFromTemplate, detectPackageManager, replaceBogusFileIds };
|
|
14
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAsBA,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;CAC5B;AAiBD,iBAAe,oBAAoB,IAAI,OAAO,CAAC,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC,CAYtE;AAyGD,iBAAe,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCnE;AAED,iBAAe,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,iBAyBnH;AA4CD,iBAAe,qBAAqB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA0BlE;AA6PD,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,CAAC"}
|