@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.
Files changed (90) hide show
  1. package/LICENSE +21 -0
  2. package/dist/__tests__/devices.test.d.ts +2 -0
  3. package/dist/__tests__/devices.test.d.ts.map +1 -0
  4. package/dist/__tests__/devices.test.js +117 -0
  5. package/dist/__tests__/devices.test.js.map +1 -0
  6. package/dist/__tests__/dsl.test.d.ts +2 -0
  7. package/dist/__tests__/dsl.test.d.ts.map +1 -0
  8. package/dist/__tests__/dsl.test.js +385 -0
  9. package/dist/__tests__/dsl.test.js.map +1 -0
  10. package/dist/__tests__/markdown-scene.test.d.ts +2 -0
  11. package/dist/__tests__/markdown-scene.test.d.ts.map +1 -0
  12. package/dist/__tests__/markdown-scene.test.js +508 -0
  13. package/dist/__tests__/markdown-scene.test.js.map +1 -0
  14. package/dist/__tests__/reactive.test.d.ts +2 -0
  15. package/dist/__tests__/reactive.test.d.ts.map +1 -0
  16. package/dist/__tests__/reactive.test.js +383 -0
  17. package/dist/__tests__/reactive.test.js.map +1 -0
  18. package/dist/__tests__/swarm.test.d.ts +2 -0
  19. package/dist/__tests__/swarm.test.d.ts.map +1 -0
  20. package/dist/__tests__/swarm.test.js +214 -0
  21. package/dist/__tests__/swarm.test.js.map +1 -0
  22. package/dist/actor.d.ts +104 -0
  23. package/dist/actor.d.ts.map +1 -0
  24. package/dist/actor.js +527 -0
  25. package/dist/actor.js.map +1 -0
  26. package/dist/cli.d.ts +3 -0
  27. package/dist/cli.d.ts.map +1 -0
  28. package/dist/cli.js +273 -0
  29. package/dist/cli.js.map +1 -0
  30. package/dist/config.d.ts +21 -0
  31. package/dist/config.d.ts.map +1 -0
  32. package/dist/config.js +120 -0
  33. package/dist/config.js.map +1 -0
  34. package/dist/devices.d.ts +55 -0
  35. package/dist/devices.d.ts.map +1 -0
  36. package/dist/devices.js +167 -0
  37. package/dist/devices.js.map +1 -0
  38. package/dist/dsl.d.ts +99 -0
  39. package/dist/dsl.d.ts.map +1 -0
  40. package/dist/dsl.js +247 -0
  41. package/dist/dsl.js.map +1 -0
  42. package/dist/index.d.ts +13 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +16 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/init.d.ts +9 -0
  47. package/dist/init.d.ts.map +1 -0
  48. package/dist/init.js +27 -0
  49. package/dist/init.js.map +1 -0
  50. package/dist/loader.d.ts +2 -0
  51. package/dist/loader.d.ts.map +1 -0
  52. package/dist/loader.js +10 -0
  53. package/dist/loader.js.map +1 -0
  54. package/dist/markdown-scene.d.ts +120 -0
  55. package/dist/markdown-scene.d.ts.map +1 -0
  56. package/dist/markdown-scene.js +452 -0
  57. package/dist/markdown-scene.js.map +1 -0
  58. package/dist/message-bus.d.ts +31 -0
  59. package/dist/message-bus.d.ts.map +1 -0
  60. package/dist/message-bus.js +74 -0
  61. package/dist/message-bus.js.map +1 -0
  62. package/dist/reactive.d.ts +267 -0
  63. package/dist/reactive.d.ts.map +1 -0
  64. package/dist/reactive.js +779 -0
  65. package/dist/reactive.js.map +1 -0
  66. package/dist/runner.d.ts +51 -0
  67. package/dist/runner.d.ts.map +1 -0
  68. package/dist/runner.js +306 -0
  69. package/dist/runner.js.map +1 -0
  70. package/dist/scene.d.ts +40 -0
  71. package/dist/scene.d.ts.map +1 -0
  72. package/dist/scene.js +110 -0
  73. package/dist/scene.js.map +1 -0
  74. package/dist/selectors.d.ts +57 -0
  75. package/dist/selectors.d.ts.map +1 -0
  76. package/dist/selectors.js +193 -0
  77. package/dist/selectors.js.map +1 -0
  78. package/dist/swarm.d.ts +64 -0
  79. package/dist/swarm.d.ts.map +1 -0
  80. package/dist/swarm.js +306 -0
  81. package/dist/swarm.js.map +1 -0
  82. package/dist/team-manager.d.ts +120 -0
  83. package/dist/team-manager.d.ts.map +1 -0
  84. package/dist/team-manager.js +267 -0
  85. package/dist/team-manager.js.map +1 -0
  86. package/dist/types.d.ts +653 -0
  87. package/dist/types.d.ts.map +1 -0
  88. package/dist/types.js +2 -0
  89. package/dist/types.js.map +1 -0
  90. package/package.json +61 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive.js","sourceRoot":"","sources":["../src/reactive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { ScenetestConfig, TeamConfig, RunReport } from './types.js';
2
+ /**
3
+ * Main scene runner
4
+ */
5
+ export declare class SceneRunner {
6
+ private config;
7
+ private browser;
8
+ private teamManager;
9
+ private swarmTrigger;
10
+ constructor(config: ScenetestConfig, teams: TeamConfig[]);
11
+ /**
12
+ * Initialize the browser
13
+ */
14
+ init(): Promise<void>;
15
+ /**
16
+ * Discover scene files (.spec.ts and .spec.md)
17
+ */
18
+ discoverScenes(): Promise<string[]>;
19
+ /**
20
+ * Load scene files and populate registry
21
+ */
22
+ loadScenes(files: string[]): Promise<void>;
23
+ /**
24
+ * Run all loaded scenes
25
+ */
26
+ runAll(): Promise<RunReport>;
27
+ /**
28
+ * Check if swarm mode should be auto-triggered based on failure history.
29
+ * Returns the scene names that triggered it, or empty array if no trigger.
30
+ */
31
+ checkSwarmTrigger(): string[];
32
+ /**
33
+ * Run swarm mode on specified scenes (or all if none specified).
34
+ * Executes every scene against every team with multiple repeats
35
+ * to classify failures as broken, flaky, or seed-data edge cases.
36
+ */
37
+ runSwarmMode(trigger: 'auto' | 'manual', sceneNames?: string[]): Promise<RunReport>;
38
+ /**
39
+ * Run specific scene files
40
+ */
41
+ run(files?: string[]): Promise<RunReport>;
42
+ /**
43
+ * Close the browser
44
+ */
45
+ close(): Promise<void>;
46
+ }
47
+ /**
48
+ * Print a summary of the run report
49
+ */
50
+ export declare function printSummary(report: RunReport): void;
51
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAe,MAAM,YAAY,CAAA;AASrF;;GAEG;AACH,qBAAa,WAAW;IAKV,OAAO,CAAC,MAAM;IAJ1B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,YAAY,CAA4B;gBAE5B,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE;IAoBhE;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAuBzC;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBhD;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;IA6GlC;;;OAGG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAI7B;;;;OAIG;IACG,YAAY,CAChB,OAAO,EAAE,MAAM,GAAG,QAAQ,EAC1B,UAAU,CAAC,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,SAAS,CAAC;IAqDrB;;OAEG;IACG,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IA4B/C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAM7B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwCpD"}
package/dist/runner.js ADDED
@@ -0,0 +1,306 @@
1
+ import { chromium, firefox, webkit } from 'playwright';
2
+ import { glob } from 'glob';
3
+ import path from 'path';
4
+ import { TeamManager } from './team-manager.js';
5
+ import { DeviceRotation } from './devices.js';
6
+ import { sceneRegistry, setCurrentFile, runScene } from './scene.js';
7
+ import { setAliases } from './selectors.js';
8
+ import { importFile } from './loader.js';
9
+ import { loadMarkdownScene } from './markdown-scene.js';
10
+ import { SwarmTrigger, runSwarm } from './swarm.js';
11
+ /**
12
+ * Main scene runner
13
+ */
14
+ export class SceneRunner {
15
+ config;
16
+ browser = null;
17
+ teamManager;
18
+ swarmTrigger = null;
19
+ constructor(config, teams) {
20
+ this.config = config;
21
+ this.teamManager = new TeamManager(teams);
22
+ // Apply aliases from config
23
+ if (config.aliases) {
24
+ setAliases(config.aliases);
25
+ }
26
+ // Set up device rotation if configured
27
+ if (config.devices) {
28
+ const devices = Array.isArray(config.devices) ? config.devices : undefined;
29
+ this.teamManager.setDeviceRotation(new DeviceRotation(devices));
30
+ }
31
+ // Set up swarm trigger if configured
32
+ if (config.swarm) {
33
+ this.swarmTrigger = new SwarmTrigger(config.swarm);
34
+ }
35
+ }
36
+ /**
37
+ * Initialize the browser
38
+ */
39
+ async init() {
40
+ const browserType = this.config.browser || 'chromium';
41
+ const launcher = browserType === 'firefox' ? firefox : browserType === 'webkit' ? webkit : chromium;
42
+ this.browser = await launcher.launch({
43
+ headless: !this.config.headed,
44
+ slowMo: this.config.slowMo,
45
+ });
46
+ this.teamManager.setBrowser(this.browser);
47
+ }
48
+ /**
49
+ * Discover scene files (.spec.ts and .spec.md)
50
+ */
51
+ async discoverScenes() {
52
+ const scenes = this.config.scenes || './scenes';
53
+ // If pointing at a specific file, use it directly
54
+ if (scenes.endsWith('.spec.ts') || scenes.endsWith('.spec.md')) {
55
+ const files = await glob(scenes, {
56
+ ignore: this.config.ignore || [],
57
+ absolute: true,
58
+ });
59
+ return files.sort();
60
+ }
61
+ // Otherwise discover both .spec.ts and .spec.md files
62
+ const pattern = path.join(scenes, '**/*.spec.{ts,md}');
63
+ const files = await glob(pattern, {
64
+ ignore: this.config.ignore || [],
65
+ absolute: true,
66
+ });
67
+ // Sort alphabetically
68
+ return files.sort();
69
+ }
70
+ /**
71
+ * Load scene files and populate registry
72
+ */
73
+ async loadScenes(files) {
74
+ // Clear registry
75
+ sceneRegistry.length = 0;
76
+ for (const file of files) {
77
+ if (file.endsWith('.spec.md')) {
78
+ // Parse markdown scene and register as flow
79
+ await loadMarkdownScene(file);
80
+ }
81
+ else {
82
+ setCurrentFile(file);
83
+ // Dynamic import of scene file
84
+ await importFile(file);
85
+ }
86
+ }
87
+ }
88
+ /**
89
+ * Run all loaded scenes
90
+ */
91
+ async runAll() {
92
+ const start = Date.now();
93
+ const sceneReports = [];
94
+ // Run hooks
95
+ if (this.config.beforeAll) {
96
+ await this.config.beforeAll();
97
+ }
98
+ const timeout = this.config.timeout || 30000;
99
+ const actionTimeout = this.config.actionTimeout || 5000;
100
+ const warnAfter = this.config.warnAfter || 500;
101
+ // Log device rotation status
102
+ const rotation = this.teamManager.getDeviceRotation();
103
+ if (rotation) {
104
+ console.log(` Device rotation: ON (${rotation.devices.length} devices in pool)\n`);
105
+ }
106
+ for (const registered of sceneRegistry) {
107
+ // Run beforeEach hook
108
+ if (this.config.beforeEach) {
109
+ await this.config.beforeEach({ name: registered.name, file: registered.file });
110
+ }
111
+ // Acquire a team
112
+ const teamIndex = await this.teamManager.acquireWait();
113
+ try {
114
+ // Create session
115
+ const session = await this.teamManager.createSession(teamIndex, actionTimeout, warnAfter, this.config.baseUrl);
116
+ try {
117
+ // Run the scene
118
+ const report = await runScene(registered, session, timeout);
119
+ // Enrich actor info with device assignments
120
+ for (const [role, actor] of session.getActors()) {
121
+ const device = session.getActorDevice(role);
122
+ report.actors[role] = {
123
+ id: actor.id,
124
+ username: actor.username,
125
+ ...(device ? { device: device.name } : {}),
126
+ };
127
+ }
128
+ sceneReports.push(report);
129
+ // Run afterEach hook
130
+ if (this.config.afterEach) {
131
+ await this.config.afterEach({ name: registered.name, file: registered.file }, report);
132
+ }
133
+ // Log progress
134
+ const statusIcon = report.status === 'completed' ? '✓' : report.status === 'timeout' ? '⏱' : '✗';
135
+ console.log(` ${statusIcon} ${registered.name} (${report.duration}ms)`);
136
+ if (report.error) {
137
+ console.log(` Error: ${report.error}`);
138
+ }
139
+ }
140
+ finally {
141
+ // Close session
142
+ await session.close();
143
+ }
144
+ }
145
+ finally {
146
+ // Release team
147
+ this.teamManager.release(teamIndex);
148
+ }
149
+ }
150
+ // Run afterAll hook
151
+ if (this.config.afterAll) {
152
+ await this.config.afterAll();
153
+ }
154
+ // Build summary
155
+ const totalAssertions = sceneReports.reduce((sum, r) => sum + r.assertions.length, 0);
156
+ const passedAssertions = sceneReports.reduce((sum, r) => sum + r.assertions.filter((a) => a.result).length, 0);
157
+ const failedAssertions = totalAssertions - passedAssertions;
158
+ const totalWarnings = sceneReports.reduce((sum, r) => sum + r.warnings.length, 0);
159
+ const report = {
160
+ timestamp: new Date().toISOString(),
161
+ duration: Date.now() - start,
162
+ scenes: sceneReports,
163
+ summary: {
164
+ scenes: sceneReports.length,
165
+ completed: sceneReports.filter((r) => r.status === 'completed').length,
166
+ failed: sceneReports.filter((r) => r.status !== 'completed').length,
167
+ assertions: {
168
+ total: totalAssertions,
169
+ passed: passedAssertions,
170
+ failed: failedAssertions,
171
+ },
172
+ warnings: totalWarnings,
173
+ },
174
+ };
175
+ // Record run for swarm trigger evaluation
176
+ if (this.swarmTrigger) {
177
+ this.swarmTrigger.recordRun(report);
178
+ }
179
+ return report;
180
+ }
181
+ /**
182
+ * Check if swarm mode should be auto-triggered based on failure history.
183
+ * Returns the scene names that triggered it, or empty array if no trigger.
184
+ */
185
+ checkSwarmTrigger() {
186
+ return this.swarmTrigger?.shouldTrigger() ?? [];
187
+ }
188
+ /**
189
+ * Run swarm mode on specified scenes (or all if none specified).
190
+ * Executes every scene against every team with multiple repeats
191
+ * to classify failures as broken, flaky, or seed-data edge cases.
192
+ */
193
+ async runSwarmMode(trigger, sceneNames) {
194
+ const timeout = this.config.timeout || 30000;
195
+ const actionTimeout = this.config.actionTimeout || 5000;
196
+ const warnAfter = this.config.warnAfter || 500;
197
+ // Filter scenes to swarm
198
+ const scenes = sceneNames
199
+ ? sceneRegistry.filter((s) => sceneNames.includes(s.name))
200
+ : [...sceneRegistry];
201
+ if (scenes.length === 0) {
202
+ console.log('No scenes to swarm.');
203
+ return {
204
+ timestamp: new Date().toISOString(),
205
+ duration: 0,
206
+ scenes: [],
207
+ summary: {
208
+ scenes: 0,
209
+ completed: 0,
210
+ failed: 0,
211
+ assertions: { total: 0, passed: 0, failed: 0 },
212
+ warnings: 0,
213
+ },
214
+ };
215
+ }
216
+ const swarmReport = await runSwarm(scenes, this.teamManager, this.config.swarm, timeout, actionTimeout, warnAfter, this.config.baseUrl, trigger);
217
+ // Build a RunReport that includes the swarm results
218
+ return {
219
+ timestamp: new Date().toISOString(),
220
+ duration: 0, // swarm report is supplementary
221
+ scenes: [], // individual scene reports are in swarmReport.results
222
+ summary: {
223
+ scenes: swarmReport.results.length,
224
+ completed: swarmReport.summary.healthy,
225
+ failed: swarmReport.summary.broken + swarmReport.summary.flaky + swarmReport.summary.seedDataEdgeCase,
226
+ assertions: { total: 0, passed: 0, failed: 0 },
227
+ warnings: 0,
228
+ },
229
+ swarm: swarmReport,
230
+ };
231
+ }
232
+ /**
233
+ * Run specific scene files
234
+ */
235
+ async run(files) {
236
+ const sceneFiles = files || (await this.discoverScenes());
237
+ if (sceneFiles.length === 0) {
238
+ console.log('No scene files found.');
239
+ return {
240
+ timestamp: new Date().toISOString(),
241
+ duration: 0,
242
+ scenes: [],
243
+ summary: {
244
+ scenes: 0,
245
+ completed: 0,
246
+ failed: 0,
247
+ assertions: { total: 0, passed: 0, failed: 0 },
248
+ warnings: 0,
249
+ },
250
+ };
251
+ }
252
+ console.log(`\nRunning ${sceneFiles.length} scene file(s)...\n`);
253
+ await this.loadScenes(sceneFiles);
254
+ console.log(`Found ${sceneRegistry.length} scene(s)\n`);
255
+ return this.runAll();
256
+ }
257
+ /**
258
+ * Close the browser
259
+ */
260
+ async close() {
261
+ if (this.browser) {
262
+ await this.browser.close();
263
+ this.browser = null;
264
+ }
265
+ }
266
+ }
267
+ /**
268
+ * Print a summary of the run report
269
+ */
270
+ export function printSummary(report) {
271
+ console.log('\n' + '─'.repeat(50));
272
+ console.log('Summary');
273
+ console.log('─'.repeat(50));
274
+ console.log(` Scenes: ${report.summary.completed}/${report.summary.scenes} completed`);
275
+ console.log(` Assertions: ${report.summary.assertions.passed}/${report.summary.assertions.total} passed`);
276
+ console.log(` Duration: ${report.duration}ms`);
277
+ if (report.summary.warnings > 0) {
278
+ console.log(`\n ⚡ ${report.summary.warnings} script warning(s)`);
279
+ // Print details of each warning
280
+ for (const scene of report.scenes) {
281
+ for (const warning of scene.warnings) {
282
+ console.log(` └─ [${warning.actor}] ${warning.selector}: ${warning.message}`);
283
+ if (warning.duringAction) {
284
+ console.log(` during: ${warning.duringAction}`);
285
+ }
286
+ }
287
+ }
288
+ }
289
+ if (report.summary.assertions.failed > 0) {
290
+ console.log(`\n ⚠ ${report.summary.assertions.failed} assertion(s) failed`);
291
+ }
292
+ if (report.summary.failed > 0) {
293
+ console.log(`\n ✗ ${report.summary.failed} scene(s) failed`);
294
+ }
295
+ // Device rotation info
296
+ for (const scene of report.scenes) {
297
+ const devicesUsed = Object.entries(scene.actors)
298
+ .filter(([, a]) => a.device)
299
+ .map(([role, a]) => `${role}→${a.device}`);
300
+ if (devicesUsed.length > 0) {
301
+ console.log(` ${scene.name}: ${devicesUsed.join(', ')}`);
302
+ }
303
+ }
304
+ console.log('');
305
+ }
306
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { SceneFn, RegisteredScene, SceneReport } from './types.js';
2
+ import { TeamSession } from './team-manager.js';
3
+ /**
4
+ * Global registry of scenes.
5
+ * Populated when scene files are imported.
6
+ */
7
+ export declare const sceneRegistry: RegisteredScene[];
8
+ /**
9
+ * Set the current file being loaded
10
+ */
11
+ export declare function setCurrentFile(file: string): void;
12
+ /**
13
+ * Define a scene spec.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * import { scene } from '@scenetest/scenes'
18
+ *
19
+ * scene('user updates their profile', async ({ actor }) => {
20
+ * const user = await actor('primary-user')
21
+ * await user.openTo('/settings/profile')
22
+ * await user.see('profile-form')
23
+ * })
24
+ * ```
25
+ */
26
+ export declare function scene(name: string, fn: SceneFn): void;
27
+ /**
28
+ * Set the current session for scene execution
29
+ */
30
+ export declare function setCurrentSession(session: TeamSession | null): void;
31
+ /**
32
+ * Get the current session. Used by flow() to access session internals
33
+ * during reactive scene execution.
34
+ */
35
+ export declare function getCurrentSession(): TeamSession | null;
36
+ /**
37
+ * Run a single scene with the given session
38
+ */
39
+ export declare function runScene(registered: RegisteredScene, session: TeamSession, timeout: number): Promise<SceneReport>;
40
+ //# sourceMappingURL=scene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../src/scene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAgB,WAAW,EAAE,MAAM,YAAY,CAAA;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,eAAe,EAAO,CAAA;AAOlD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEjD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI,CAMrD;AAOD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAEnE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,GAAG,IAAI,CAEtD;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,UAAU,EAAE,eAAe,EAC3B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,CAAC,CAyDtB"}
package/dist/scene.js ADDED
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Global registry of scenes.
3
+ * Populated when scene files are imported.
4
+ */
5
+ export const sceneRegistry = [];
6
+ /**
7
+ * Current file being loaded (set by the runner before importing)
8
+ */
9
+ let currentFile = '';
10
+ /**
11
+ * Set the current file being loaded
12
+ */
13
+ export function setCurrentFile(file) {
14
+ currentFile = file;
15
+ }
16
+ /**
17
+ * Define a scene spec.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * import { scene } from '@scenetest/scenes'
22
+ *
23
+ * scene('user updates their profile', async ({ actor }) => {
24
+ * const user = await actor('primary-user')
25
+ * await user.openTo('/settings/profile')
26
+ * await user.see('profile-form')
27
+ * })
28
+ * ```
29
+ */
30
+ export function scene(name, fn) {
31
+ sceneRegistry.push({
32
+ name,
33
+ fn,
34
+ file: currentFile,
35
+ });
36
+ }
37
+ /**
38
+ * Current session for scene execution
39
+ */
40
+ let currentSession = null;
41
+ /**
42
+ * Set the current session for scene execution
43
+ */
44
+ export function setCurrentSession(session) {
45
+ currentSession = session;
46
+ }
47
+ /**
48
+ * Get the current session. Used by flow() to access session internals
49
+ * during reactive scene execution.
50
+ */
51
+ export function getCurrentSession() {
52
+ return currentSession;
53
+ }
54
+ /**
55
+ * Run a single scene with the given session
56
+ */
57
+ export async function runScene(registered, session, timeout) {
58
+ const start = Date.now();
59
+ // Create scene context
60
+ const context = {
61
+ actor: async (role) => {
62
+ return session.getActor(role);
63
+ },
64
+ teamIndex: session.teamIndex,
65
+ };
66
+ // Set current session for when() calls
67
+ setCurrentSession(session);
68
+ let status = 'completed';
69
+ let error;
70
+ try {
71
+ // Run with timeout
72
+ await Promise.race([
73
+ registered.fn(context),
74
+ new Promise((_, reject) => setTimeout(() => reject(new Error(`Scene timeout after ${timeout}ms`)), timeout)),
75
+ ]);
76
+ }
77
+ catch (err) {
78
+ if (err instanceof Error && err.message.includes('timeout')) {
79
+ status = 'timeout';
80
+ }
81
+ else {
82
+ status = 'failed';
83
+ }
84
+ error = err instanceof Error ? err.message : String(err);
85
+ }
86
+ finally {
87
+ setCurrentSession(null);
88
+ }
89
+ // Build actor map for report
90
+ const actors = {};
91
+ for (const [role, actor] of session.getActors()) {
92
+ actors[role] = {
93
+ id: actor.id,
94
+ username: actor.username,
95
+ };
96
+ }
97
+ return {
98
+ name: registered.name,
99
+ file: registered.file,
100
+ status,
101
+ teamIndex: session.teamIndex,
102
+ actors,
103
+ assertions: session.assertions,
104
+ warnings: session.warnings,
105
+ timeline: session.timeline,
106
+ duration: Date.now() - start,
107
+ error,
108
+ };
109
+ }
110
+ //# sourceMappingURL=scene.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene.js","sourceRoot":"","sources":["../src/scene.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { Page, Locator } from 'playwright';
2
+ /**
3
+ * Selector alias configuration
4
+ */
5
+ export type SelectorAliases = Record<string, string>;
6
+ /**
7
+ * Set the global selector aliases
8
+ */
9
+ export declare function setAliases(aliases: SelectorAliases): void;
10
+ /**
11
+ * Get the current aliases
12
+ */
13
+ export declare function getAliases(): SelectorAliases;
14
+ /**
15
+ * Clear all aliases
16
+ */
17
+ export declare function clearAliases(): void;
18
+ /**
19
+ * Resolve a space-separated selector string.
20
+ *
21
+ * Algorithm:
22
+ * 1. Split into tokens
23
+ * 2. For each token, find matching element
24
+ * 3. After matching, check if SAME element has data-key matching NEXT token
25
+ * - If yes: consume that token (it's a key match), continue with token after
26
+ * - If no: descend into children for next token
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * // Simple
31
+ * resolveSelector(page, 'button')
32
+ *
33
+ * // Nested
34
+ * resolveSelector(page, 'modal form submit-button')
35
+ *
36
+ * // With implicit key matching
37
+ * resolveSelector(page, 'playlist-row 12345 like-button')
38
+ * // Finds playlist-row, checks if it has data-key="12345",
39
+ * // if yes stays on same element, then finds like-button child
40
+ * ```
41
+ */
42
+ export declare function resolveSelector(base: Page | Locator, selector: string): Locator;
43
+ /**
44
+ * Get debugging info about what a selector would match.
45
+ * Useful for the debug selector explorer.
46
+ */
47
+ export declare function explainSelector(page: Page, selector: string): Promise<{
48
+ found: boolean;
49
+ count: number;
50
+ matches: Array<{
51
+ tag: string;
52
+ attributes: Record<string, string>;
53
+ text: string;
54
+ }>;
55
+ suggestions: string[];
56
+ }>;
57
+ //# sourceMappingURL=selectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectors.d.ts","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE/C;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAOpD;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAEzD;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,eAAe,CAE5C;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAiDD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAmE/E;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IACT,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,KAAK,CAAC;QACb,GAAG,EAAE,MAAM,CAAA;QACX,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAClC,IAAI,EAAE,MAAM,CAAA;KACb,CAAC,CAAA;IACF,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB,CAAC,CAmDD"}