@scenetest/scenes 0.1.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/LICENSE +21 -0
- package/dist/__tests__/devices.test.d.ts +2 -0
- package/dist/__tests__/devices.test.d.ts.map +1 -0
- package/dist/__tests__/devices.test.js +117 -0
- package/dist/__tests__/devices.test.js.map +1 -0
- package/dist/__tests__/dsl.test.d.ts +2 -0
- package/dist/__tests__/dsl.test.d.ts.map +1 -0
- package/dist/__tests__/dsl.test.js +385 -0
- package/dist/__tests__/dsl.test.js.map +1 -0
- package/dist/__tests__/markdown-scene.test.d.ts +2 -0
- package/dist/__tests__/markdown-scene.test.d.ts.map +1 -0
- package/dist/__tests__/markdown-scene.test.js +508 -0
- package/dist/__tests__/markdown-scene.test.js.map +1 -0
- package/dist/__tests__/reactive.test.d.ts +2 -0
- package/dist/__tests__/reactive.test.d.ts.map +1 -0
- package/dist/__tests__/reactive.test.js +383 -0
- package/dist/__tests__/reactive.test.js.map +1 -0
- package/dist/__tests__/swarm.test.d.ts +2 -0
- package/dist/__tests__/swarm.test.d.ts.map +1 -0
- package/dist/__tests__/swarm.test.js +214 -0
- package/dist/__tests__/swarm.test.js.map +1 -0
- package/dist/actor.d.ts +104 -0
- package/dist/actor.d.ts.map +1 -0
- package/dist/actor.js +527 -0
- package/dist/actor.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +273 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +21 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +120 -0
- package/dist/config.js.map +1 -0
- package/dist/devices.d.ts +55 -0
- package/dist/devices.d.ts.map +1 -0
- package/dist/devices.js +167 -0
- package/dist/devices.js.map +1 -0
- package/dist/dsl.d.ts +99 -0
- package/dist/dsl.d.ts.map +1 -0
- package/dist/dsl.js +247 -0
- package/dist/dsl.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +9 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +27 -0
- package/dist/init.js.map +1 -0
- package/dist/loader.d.ts +2 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +10 -0
- package/dist/loader.js.map +1 -0
- package/dist/markdown-scene.d.ts +120 -0
- package/dist/markdown-scene.d.ts.map +1 -0
- package/dist/markdown-scene.js +452 -0
- package/dist/markdown-scene.js.map +1 -0
- package/dist/message-bus.d.ts +31 -0
- package/dist/message-bus.d.ts.map +1 -0
- package/dist/message-bus.js +74 -0
- package/dist/message-bus.js.map +1 -0
- package/dist/reactive.d.ts +267 -0
- package/dist/reactive.d.ts.map +1 -0
- package/dist/reactive.js +779 -0
- package/dist/reactive.js.map +1 -0
- package/dist/runner.d.ts +51 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +306 -0
- package/dist/runner.js.map +1 -0
- package/dist/scene.d.ts +40 -0
- package/dist/scene.d.ts.map +1 -0
- package/dist/scene.js +110 -0
- package/dist/scene.js.map +1 -0
- package/dist/selectors.d.ts +57 -0
- package/dist/selectors.d.ts.map +1 -0
- package/dist/selectors.js +193 -0
- package/dist/selectors.js.map +1 -0
- package/dist/swarm.d.ts +64 -0
- package/dist/swarm.d.ts.map +1 -0
- package/dist/swarm.js +306 -0
- package/dist/swarm.js.map +1 -0
- package/dist/team-manager.d.ts +120 -0
- package/dist/team-manager.d.ts.map +1 -0
- package/dist/team-manager.js +267 -0
- package/dist/team-manager.js.map +1 -0
- package/dist/types.d.ts +653 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,508 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { parseMarkdownScenes } from '../markdown-scene.js';
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// Parser tests
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
describe('parseMarkdownScenes', () => {
|
|
7
|
+
it('parses a simple single-scene file with # heading', () => {
|
|
8
|
+
const content = `
|
|
9
|
+
# User logs in
|
|
10
|
+
|
|
11
|
+
user:
|
|
12
|
+
openTo /login
|
|
13
|
+
see login-form
|
|
14
|
+
typeInto email alice@test.com
|
|
15
|
+
click submit
|
|
16
|
+
see dashboard
|
|
17
|
+
`;
|
|
18
|
+
const scenes = parseMarkdownScenes(content, '/test/login.spec.md');
|
|
19
|
+
expect(scenes).toHaveLength(1);
|
|
20
|
+
expect(scenes[0].name).toBe('User logs in');
|
|
21
|
+
expect(scenes[0].group).toBeUndefined();
|
|
22
|
+
expect(scenes[0].blocks).toHaveLength(1);
|
|
23
|
+
expect(scenes[0].blocks[0].role).toBe('user');
|
|
24
|
+
expect(scenes[0].blocks[0].actions).toEqual([
|
|
25
|
+
{ type: 'action', line: 'openTo /login' },
|
|
26
|
+
{ type: 'action', line: 'see login-form' },
|
|
27
|
+
{ type: 'action', line: 'typeInto email alice@test.com' },
|
|
28
|
+
{ type: 'action', line: 'click submit' },
|
|
29
|
+
{ type: 'action', line: 'see dashboard' },
|
|
30
|
+
]);
|
|
31
|
+
});
|
|
32
|
+
it('parses ## scenes with # groups', () => {
|
|
33
|
+
const content = `
|
|
34
|
+
# Authentication flows
|
|
35
|
+
|
|
36
|
+
## user logs in successfully
|
|
37
|
+
|
|
38
|
+
user:
|
|
39
|
+
openTo /login
|
|
40
|
+
click submit
|
|
41
|
+
|
|
42
|
+
## user fails to log in
|
|
43
|
+
|
|
44
|
+
user:
|
|
45
|
+
openTo /login
|
|
46
|
+
see error-message
|
|
47
|
+
`;
|
|
48
|
+
const scenes = parseMarkdownScenes(content, '/test/auth.spec.md');
|
|
49
|
+
expect(scenes).toHaveLength(2);
|
|
50
|
+
expect(scenes[0].name).toBe('user logs in successfully');
|
|
51
|
+
expect(scenes[0].group).toBe('Authentication flows');
|
|
52
|
+
expect(scenes[0].blocks).toHaveLength(1);
|
|
53
|
+
expect(scenes[1].name).toBe('user fails to log in');
|
|
54
|
+
expect(scenes[1].group).toBe('Authentication flows');
|
|
55
|
+
expect(scenes[1].blocks).toHaveLength(1);
|
|
56
|
+
});
|
|
57
|
+
it('handles multiple actor blocks in one scene', () => {
|
|
58
|
+
const content = `
|
|
59
|
+
# two users chat
|
|
60
|
+
|
|
61
|
+
alice:
|
|
62
|
+
openTo /chat
|
|
63
|
+
see message-input
|
|
64
|
+
typeInto message-input Hello!
|
|
65
|
+
click send
|
|
66
|
+
|
|
67
|
+
bob:
|
|
68
|
+
openTo /chat
|
|
69
|
+
seeText Hello!
|
|
70
|
+
`;
|
|
71
|
+
const scenes = parseMarkdownScenes(content, '/test/chat.spec.md');
|
|
72
|
+
expect(scenes).toHaveLength(1);
|
|
73
|
+
expect(scenes[0].blocks).toHaveLength(2);
|
|
74
|
+
expect(scenes[0].blocks[0].role).toBe('alice');
|
|
75
|
+
expect(scenes[0].blocks[0].actions).toHaveLength(4);
|
|
76
|
+
expect(scenes[0].blocks[1].role).toBe('bob');
|
|
77
|
+
expect(scenes[0].blocks[1].actions).toHaveLength(2);
|
|
78
|
+
});
|
|
79
|
+
it('handles actor switching back to same actor', () => {
|
|
80
|
+
const content = `
|
|
81
|
+
# friend request
|
|
82
|
+
|
|
83
|
+
alice:
|
|
84
|
+
openTo /friends
|
|
85
|
+
click search
|
|
86
|
+
|
|
87
|
+
bob:
|
|
88
|
+
openTo /notifications
|
|
89
|
+
|
|
90
|
+
alice:
|
|
91
|
+
click send-request
|
|
92
|
+
`;
|
|
93
|
+
const scenes = parseMarkdownScenes(content, '/test/friends.spec.md');
|
|
94
|
+
expect(scenes).toHaveLength(1);
|
|
95
|
+
// Three blocks: alice, bob, alice again
|
|
96
|
+
expect(scenes[0].blocks).toHaveLength(3);
|
|
97
|
+
expect(scenes[0].blocks[0].role).toBe('alice');
|
|
98
|
+
expect(scenes[0].blocks[1].role).toBe('bob');
|
|
99
|
+
expect(scenes[0].blocks[2].role).toBe('alice');
|
|
100
|
+
});
|
|
101
|
+
it('strips leading dash prefix from action lines', () => {
|
|
102
|
+
const content = `
|
|
103
|
+
# test
|
|
104
|
+
|
|
105
|
+
user:
|
|
106
|
+
- openTo /login
|
|
107
|
+
- see login-form
|
|
108
|
+
- click submit
|
|
109
|
+
`;
|
|
110
|
+
const scenes = parseMarkdownScenes(content, '/test/dash.spec.md');
|
|
111
|
+
expect(scenes[0].blocks[0].actions).toEqual([
|
|
112
|
+
{ type: 'action', line: 'openTo /login' },
|
|
113
|
+
{ type: 'action', line: 'see login-form' },
|
|
114
|
+
{ type: 'action', line: 'click submit' },
|
|
115
|
+
]);
|
|
116
|
+
});
|
|
117
|
+
it('strips numbered list prefix from action lines', () => {
|
|
118
|
+
const content = `
|
|
119
|
+
# test
|
|
120
|
+
|
|
121
|
+
user:
|
|
122
|
+
1. openTo /login
|
|
123
|
+
2. see login-form
|
|
124
|
+
3. typeInto email alice@test.com
|
|
125
|
+
4. click submit
|
|
126
|
+
`;
|
|
127
|
+
const scenes = parseMarkdownScenes(content, '/test/numbered.spec.md');
|
|
128
|
+
expect(scenes[0].blocks[0].actions).toEqual([
|
|
129
|
+
{ type: 'action', line: 'openTo /login' },
|
|
130
|
+
{ type: 'action', line: 'see login-form' },
|
|
131
|
+
{ type: 'action', line: 'typeInto email alice@test.com' },
|
|
132
|
+
{ type: 'action', line: 'click submit' },
|
|
133
|
+
]);
|
|
134
|
+
});
|
|
135
|
+
it('handles mixed list formats (plain, dash, numbered)', () => {
|
|
136
|
+
const content = `
|
|
137
|
+
# test
|
|
138
|
+
|
|
139
|
+
user:
|
|
140
|
+
openTo /login
|
|
141
|
+
- see login-form
|
|
142
|
+
1. typeInto email alice@test.com
|
|
143
|
+
2. click submit
|
|
144
|
+
see dashboard
|
|
145
|
+
`;
|
|
146
|
+
const scenes = parseMarkdownScenes(content, '/test/mixed.spec.md');
|
|
147
|
+
expect(scenes[0].blocks[0].actions).toEqual([
|
|
148
|
+
{ type: 'action', line: 'openTo /login' },
|
|
149
|
+
{ type: 'action', line: 'see login-form' },
|
|
150
|
+
{ type: 'action', line: 'typeInto email alice@test.com' },
|
|
151
|
+
{ type: 'action', line: 'click submit' },
|
|
152
|
+
{ type: 'action', line: 'see dashboard' },
|
|
153
|
+
]);
|
|
154
|
+
});
|
|
155
|
+
it('parses comments', () => {
|
|
156
|
+
const content = `
|
|
157
|
+
# test
|
|
158
|
+
|
|
159
|
+
user:
|
|
160
|
+
openTo /login
|
|
161
|
+
// Fill in credentials
|
|
162
|
+
typeInto email test@test.com
|
|
163
|
+
`;
|
|
164
|
+
const scenes = parseMarkdownScenes(content, '/test/comments.spec.md');
|
|
165
|
+
const actions = scenes[0].blocks[0].actions;
|
|
166
|
+
expect(actions).toHaveLength(3);
|
|
167
|
+
expect(actions[0]).toEqual({ type: 'action', line: 'openTo /login' });
|
|
168
|
+
expect(actions[1]).toEqual({ type: 'comment', text: 'Fill in credentials' });
|
|
169
|
+
expect(actions[2]).toEqual({ type: 'action', line: 'typeInto email test@test.com' });
|
|
170
|
+
});
|
|
171
|
+
it('skips empty comments', () => {
|
|
172
|
+
const content = `
|
|
173
|
+
# test
|
|
174
|
+
|
|
175
|
+
user:
|
|
176
|
+
openTo /
|
|
177
|
+
//
|
|
178
|
+
see dashboard
|
|
179
|
+
`;
|
|
180
|
+
const scenes = parseMarkdownScenes(content, '/test/empty-comment.spec.md');
|
|
181
|
+
const actions = scenes[0].blocks[0].actions;
|
|
182
|
+
expect(actions).toHaveLength(2);
|
|
183
|
+
});
|
|
184
|
+
it('parses if blocks with indented sub-actions', () => {
|
|
185
|
+
const content = `
|
|
186
|
+
# test
|
|
187
|
+
|
|
188
|
+
user:
|
|
189
|
+
openTo /app
|
|
190
|
+
if welcome-modal
|
|
191
|
+
click dismiss-button
|
|
192
|
+
see dashboard
|
|
193
|
+
see main-content
|
|
194
|
+
`;
|
|
195
|
+
const scenes = parseMarkdownScenes(content, '/test/if.spec.md');
|
|
196
|
+
const actions = scenes[0].blocks[0].actions;
|
|
197
|
+
expect(actions).toHaveLength(3);
|
|
198
|
+
expect(actions[0]).toEqual({ type: 'action', line: 'openTo /app' });
|
|
199
|
+
expect(actions[1]).toEqual({
|
|
200
|
+
type: 'if',
|
|
201
|
+
selector: 'welcome-modal',
|
|
202
|
+
actions: ['click dismiss-button', 'see dashboard'],
|
|
203
|
+
});
|
|
204
|
+
expect(actions[2]).toEqual({ type: 'action', line: 'see main-content' });
|
|
205
|
+
});
|
|
206
|
+
it('strips dash prefix inside if blocks', () => {
|
|
207
|
+
const content = `
|
|
208
|
+
# test
|
|
209
|
+
|
|
210
|
+
user:
|
|
211
|
+
if modal
|
|
212
|
+
- click close
|
|
213
|
+
- see content
|
|
214
|
+
see page
|
|
215
|
+
`;
|
|
216
|
+
const scenes = parseMarkdownScenes(content, '/test/if-dash.spec.md');
|
|
217
|
+
const ifAction = scenes[0].blocks[0].actions[0];
|
|
218
|
+
expect(ifAction).toEqual({
|
|
219
|
+
type: 'if',
|
|
220
|
+
selector: 'modal',
|
|
221
|
+
actions: ['click close', 'see content'],
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
it('parses macro invocations (no args)', () => {
|
|
225
|
+
const content = `
|
|
226
|
+
# test
|
|
227
|
+
|
|
228
|
+
user:
|
|
229
|
+
login
|
|
230
|
+
see dashboard
|
|
231
|
+
`;
|
|
232
|
+
const scenes = parseMarkdownScenes(content, '/test/macro.spec.md');
|
|
233
|
+
const actions = scenes[0].blocks[0].actions;
|
|
234
|
+
expect(actions).toHaveLength(2);
|
|
235
|
+
expect(actions[0]).toEqual({ type: 'macro', name: 'login', args: [] });
|
|
236
|
+
expect(actions[1]).toEqual({ type: 'action', line: 'see dashboard' });
|
|
237
|
+
});
|
|
238
|
+
it('parses macro invocations with alias=role mapping', () => {
|
|
239
|
+
const content = `
|
|
240
|
+
# test
|
|
241
|
+
|
|
242
|
+
primary-user:
|
|
243
|
+
searchForFriend target=new-user
|
|
244
|
+
`;
|
|
245
|
+
const scenes = parseMarkdownScenes(content, '/test/macro-args.spec.md');
|
|
246
|
+
const actions = scenes[0].blocks[0].actions;
|
|
247
|
+
expect(actions[0]).toEqual({
|
|
248
|
+
type: 'macro',
|
|
249
|
+
name: 'searchForFriend',
|
|
250
|
+
args: [{ type: 'mapping', alias: 'target', role: 'new-user' }],
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
it('parses macro invocations with multiple alias mappings', () => {
|
|
254
|
+
const content = `
|
|
255
|
+
# test
|
|
256
|
+
|
|
257
|
+
admin:
|
|
258
|
+
setupFriendship user1=alice user2=bob
|
|
259
|
+
`;
|
|
260
|
+
const scenes = parseMarkdownScenes(content, '/test/macro-multi.spec.md');
|
|
261
|
+
const actions = scenes[0].blocks[0].actions;
|
|
262
|
+
expect(actions[0]).toEqual({
|
|
263
|
+
type: 'macro',
|
|
264
|
+
name: 'setupFriendship',
|
|
265
|
+
args: [
|
|
266
|
+
{ type: 'mapping', alias: 'user1', role: 'alice' },
|
|
267
|
+
{ type: 'mapping', alias: 'user2', role: 'bob' },
|
|
268
|
+
],
|
|
269
|
+
});
|
|
270
|
+
});
|
|
271
|
+
it('parses macro invocations with mixed mappings and literals', () => {
|
|
272
|
+
const content = `
|
|
273
|
+
# test
|
|
274
|
+
|
|
275
|
+
admin:
|
|
276
|
+
setupEnv target=new-user some-literal-value
|
|
277
|
+
`;
|
|
278
|
+
const scenes = parseMarkdownScenes(content, '/test/macro-mixed.spec.md');
|
|
279
|
+
const actions = scenes[0].blocks[0].actions;
|
|
280
|
+
expect(actions[0]).toEqual({
|
|
281
|
+
type: 'macro',
|
|
282
|
+
name: 'setupEnv',
|
|
283
|
+
args: [
|
|
284
|
+
{ type: 'mapping', alias: 'target', role: 'new-user' },
|
|
285
|
+
{ type: 'literal', value: 'some-literal-value' },
|
|
286
|
+
],
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
it('parses bare click (no selector)', () => {
|
|
290
|
+
const content = `
|
|
291
|
+
# test
|
|
292
|
+
|
|
293
|
+
user:
|
|
294
|
+
see notifications-badge
|
|
295
|
+
click
|
|
296
|
+
`;
|
|
297
|
+
const scenes = parseMarkdownScenes(content, '/test/bare-click.spec.md');
|
|
298
|
+
const actions = scenes[0].blocks[0].actions;
|
|
299
|
+
expect(actions[1]).toEqual({ type: 'action', line: 'click' });
|
|
300
|
+
});
|
|
301
|
+
it('parses seeInView action', () => {
|
|
302
|
+
const content = `
|
|
303
|
+
# test
|
|
304
|
+
|
|
305
|
+
user:
|
|
306
|
+
openTo /
|
|
307
|
+
seeInView hero-banner
|
|
308
|
+
click get-started
|
|
309
|
+
`;
|
|
310
|
+
const scenes = parseMarkdownScenes(content, '/test/seeInView.spec.md');
|
|
311
|
+
const actions = scenes[0].blocks[0].actions;
|
|
312
|
+
expect(actions[1]).toEqual({ type: 'action', line: 'seeInView hero-banner' });
|
|
313
|
+
});
|
|
314
|
+
it('parses bare up (no selector)', () => {
|
|
315
|
+
const content = `
|
|
316
|
+
# test
|
|
317
|
+
|
|
318
|
+
user:
|
|
319
|
+
see sidebar menu-item
|
|
320
|
+
click
|
|
321
|
+
up
|
|
322
|
+
see main-content
|
|
323
|
+
`;
|
|
324
|
+
const scenes = parseMarkdownScenes(content, '/test/bare-up.spec.md');
|
|
325
|
+
const actions = scenes[0].blocks[0].actions;
|
|
326
|
+
expect(actions[2]).toEqual({ type: 'action', line: 'up' });
|
|
327
|
+
});
|
|
328
|
+
it('parses waitFor actions', () => {
|
|
329
|
+
const content = `
|
|
330
|
+
# test
|
|
331
|
+
|
|
332
|
+
alice:
|
|
333
|
+
emit setup-done
|
|
334
|
+
|
|
335
|
+
bob:
|
|
336
|
+
waitFor setup-done
|
|
337
|
+
see dashboard
|
|
338
|
+
`;
|
|
339
|
+
const scenes = parseMarkdownScenes(content, '/test/waitfor.spec.md');
|
|
340
|
+
const bobActions = scenes[0].blocks[1].actions;
|
|
341
|
+
expect(bobActions[0]).toEqual({ type: 'action', line: 'waitFor setup-done' });
|
|
342
|
+
});
|
|
343
|
+
it('auto-creates scene if content appears before any heading', () => {
|
|
344
|
+
const content = `
|
|
345
|
+
user:
|
|
346
|
+
openTo /
|
|
347
|
+
see dashboard
|
|
348
|
+
`;
|
|
349
|
+
const scenes = parseMarkdownScenes(content, '/test/no-heading.spec.md');
|
|
350
|
+
expect(scenes).toHaveLength(1);
|
|
351
|
+
expect(scenes[0].name).toBe('no-heading');
|
|
352
|
+
expect(scenes[0].blocks).toHaveLength(1);
|
|
353
|
+
});
|
|
354
|
+
it('handles multiple # headings as separate scenes when no ## exists', () => {
|
|
355
|
+
const content = `
|
|
356
|
+
# Scene one
|
|
357
|
+
|
|
358
|
+
user:
|
|
359
|
+
openTo /one
|
|
360
|
+
|
|
361
|
+
# Scene two
|
|
362
|
+
|
|
363
|
+
user:
|
|
364
|
+
openTo /two
|
|
365
|
+
`;
|
|
366
|
+
const scenes = parseMarkdownScenes(content, '/test/multi.spec.md');
|
|
367
|
+
expect(scenes).toHaveLength(2);
|
|
368
|
+
expect(scenes[0].name).toBe('Scene one');
|
|
369
|
+
expect(scenes[1].name).toBe('Scene two');
|
|
370
|
+
});
|
|
371
|
+
it('handles groups changing between scenes', () => {
|
|
372
|
+
const content = `
|
|
373
|
+
# Auth flows
|
|
374
|
+
|
|
375
|
+
## login
|
|
376
|
+
|
|
377
|
+
user:
|
|
378
|
+
openTo /login
|
|
379
|
+
|
|
380
|
+
# Dashboard flows
|
|
381
|
+
|
|
382
|
+
## view dashboard
|
|
383
|
+
|
|
384
|
+
user:
|
|
385
|
+
openTo /dashboard
|
|
386
|
+
`;
|
|
387
|
+
const scenes = parseMarkdownScenes(content, '/test/groups.spec.md');
|
|
388
|
+
expect(scenes).toHaveLength(2);
|
|
389
|
+
expect(scenes[0].group).toBe('Auth flows');
|
|
390
|
+
expect(scenes[1].group).toBe('Dashboard flows');
|
|
391
|
+
});
|
|
392
|
+
it('ignores lines before first actor declaration', () => {
|
|
393
|
+
const content = `
|
|
394
|
+
# test
|
|
395
|
+
|
|
396
|
+
some random text that is not an action
|
|
397
|
+
more text
|
|
398
|
+
|
|
399
|
+
user:
|
|
400
|
+
openTo /
|
|
401
|
+
`;
|
|
402
|
+
const scenes = parseMarkdownScenes(content, '/test/preamble.spec.md');
|
|
403
|
+
expect(scenes[0].blocks).toHaveLength(1);
|
|
404
|
+
expect(scenes[0].blocks[0].actions).toHaveLength(1);
|
|
405
|
+
});
|
|
406
|
+
it('supports inline actor declaration with action', () => {
|
|
407
|
+
const content = `
|
|
408
|
+
# user completes onboarding
|
|
409
|
+
new-user: openTo /
|
|
410
|
+
- see welcome-box
|
|
411
|
+
- click continue-button
|
|
412
|
+
- see onboarding-step
|
|
413
|
+
`;
|
|
414
|
+
const scenes = parseMarkdownScenes(content, '/test/inline.spec.md');
|
|
415
|
+
expect(scenes).toHaveLength(1);
|
|
416
|
+
expect(scenes[0].name).toBe('user completes onboarding');
|
|
417
|
+
expect(scenes[0].blocks).toHaveLength(1);
|
|
418
|
+
expect(scenes[0].blocks[0].role).toBe('new-user');
|
|
419
|
+
expect(scenes[0].blocks[0].actions).toEqual([
|
|
420
|
+
{ type: 'action', line: 'openTo /' },
|
|
421
|
+
{ type: 'action', line: 'see welcome-box' },
|
|
422
|
+
{ type: 'action', line: 'click continue-button' },
|
|
423
|
+
{ type: 'action', line: 'see onboarding-step' },
|
|
424
|
+
]);
|
|
425
|
+
});
|
|
426
|
+
it('supports block actor declaration (role-name:)', () => {
|
|
427
|
+
const content = `
|
|
428
|
+
# test
|
|
429
|
+
primary-user:
|
|
430
|
+
- openTo /
|
|
431
|
+
`;
|
|
432
|
+
const scenes = parseMarkdownScenes(content, '/test/block-decl.spec.md');
|
|
433
|
+
expect(scenes[0].blocks[0].role).toBe('primary-user');
|
|
434
|
+
});
|
|
435
|
+
it('auto-creates scene for role: syntax before any heading', () => {
|
|
436
|
+
const content = `
|
|
437
|
+
user:
|
|
438
|
+
- openTo /
|
|
439
|
+
- see dashboard
|
|
440
|
+
`;
|
|
441
|
+
const scenes = parseMarkdownScenes(content, '/test/role-no-heading.spec.md');
|
|
442
|
+
expect(scenes).toHaveLength(1);
|
|
443
|
+
expect(scenes[0].name).toBe('role-no-heading');
|
|
444
|
+
expect(scenes[0].blocks[0].role).toBe('user');
|
|
445
|
+
});
|
|
446
|
+
it('handles blank lines and whitespace gracefully', () => {
|
|
447
|
+
const content = `
|
|
448
|
+
|
|
449
|
+
# test
|
|
450
|
+
|
|
451
|
+
|
|
452
|
+
user:
|
|
453
|
+
|
|
454
|
+
openTo /login
|
|
455
|
+
|
|
456
|
+
see form
|
|
457
|
+
|
|
458
|
+
`;
|
|
459
|
+
const scenes = parseMarkdownScenes(content, '/test/whitespace.spec.md');
|
|
460
|
+
expect(scenes).toHaveLength(1);
|
|
461
|
+
expect(scenes[0].blocks[0].actions).toHaveLength(2);
|
|
462
|
+
});
|
|
463
|
+
it('handles complex multi-actor multi-scene file', () => {
|
|
464
|
+
const content = `
|
|
465
|
+
# User interactions
|
|
466
|
+
|
|
467
|
+
## new user gets friend request
|
|
468
|
+
|
|
469
|
+
new-user:
|
|
470
|
+
openTo /
|
|
471
|
+
see welcome-box
|
|
472
|
+
click continue-button
|
|
473
|
+
|
|
474
|
+
primary-user:
|
|
475
|
+
openTo /friends
|
|
476
|
+
click search
|
|
477
|
+
typeInto search-input query
|
|
478
|
+
|
|
479
|
+
new-user:
|
|
480
|
+
seeToast friend-request
|
|
481
|
+
see navbar notifications-badge
|
|
482
|
+
click
|
|
483
|
+
|
|
484
|
+
## old user re-activates
|
|
485
|
+
|
|
486
|
+
returning-user:
|
|
487
|
+
openTo /login
|
|
488
|
+
see login-form
|
|
489
|
+
`;
|
|
490
|
+
const scenes = parseMarkdownScenes(content, '/test/complex.spec.md');
|
|
491
|
+
expect(scenes).toHaveLength(2);
|
|
492
|
+
// First scene
|
|
493
|
+
expect(scenes[0].name).toBe('new user gets friend request');
|
|
494
|
+
expect(scenes[0].group).toBe('User interactions');
|
|
495
|
+
expect(scenes[0].blocks).toHaveLength(3);
|
|
496
|
+
expect(scenes[0].blocks[0].role).toBe('new-user');
|
|
497
|
+
expect(scenes[0].blocks[0].actions).toHaveLength(3);
|
|
498
|
+
expect(scenes[0].blocks[1].role).toBe('primary-user');
|
|
499
|
+
expect(scenes[0].blocks[1].actions).toHaveLength(3);
|
|
500
|
+
expect(scenes[0].blocks[2].role).toBe('new-user');
|
|
501
|
+
expect(scenes[0].blocks[2].actions).toHaveLength(3);
|
|
502
|
+
// Second scene
|
|
503
|
+
expect(scenes[1].name).toBe('old user re-activates');
|
|
504
|
+
expect(scenes[1].blocks).toHaveLength(1);
|
|
505
|
+
expect(scenes[1].blocks[0].role).toBe('returning-user');
|
|
506
|
+
});
|
|
507
|
+
});
|
|
508
|
+
//# sourceMappingURL=markdown-scene.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-scene.test.js","sourceRoot":"","sources":["../../src/__tests__/markdown-scene.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactive.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/reactive.test.ts"],"names":[],"mappings":""}
|