-
Notifications
You must be signed in to change notification settings - Fork 130
Expand file tree
/
Copy pathclient-output.test.ts
More file actions
69 lines (63 loc) · 2.42 KB
/
client-output.test.ts
File metadata and controls
69 lines (63 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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
import { describe, expect, test } from 'vitest';
import { openCliOutput, recordCliOutput } from '../client-output.ts';
describe('openCliOutput', () => {
test('prints session state directory on a second line', () => {
const output = openCliOutput({
session: 'default',
sessionStateDir: '/tmp/agent-device/sessions/cwd_123_default',
identifiers: { session: 'default' },
});
expect(output.text).toBe(
['Opened: default', 'Session state: /tmp/agent-device/sessions/cwd_123_default'].join('\n'),
);
expect(output.data).toMatchObject({
session: 'default',
sessionStateDir: '/tmp/agent-device/sessions/cwd_123_default',
});
});
});
describe('recordCliOutput', () => {
test('prints session state directory for record-created sessions', () => {
const output = recordCliOutput({
recording: 'started',
outPath: '/tmp/recording.mp4',
sessionStateDir: '/tmp/agent-device/sessions/cwd_123_default',
});
expect(output.text).toBe(
['/tmp/recording.mp4', 'Session state: /tmp/agent-device/sessions/cwd_123_default'].join(
'\n',
),
);
});
test('prints chunked Android recording paths clearly for human stdout', () => {
const output = recordCliOutput({
recording: 'stopped',
outPath: '/tmp/recording.mp4',
telemetryPath: '/tmp/recording.gesture-telemetry.json',
warning:
'Android adb screenrecord is capped at 180s, so this recording was split into multiple MP4 chunks.',
overlayWarning:
'touch overlay burn-in is skipped for chunked Android recordings; returning raw chunks plus gesture telemetry',
chunks: [
{ index: 1, path: '/tmp/recording.mp4' },
{ index: 2, path: '/tmp/recording.part-002.mp4' },
],
});
expect(output.text).toBe(
[
'Recording chunks:',
' 1: /tmp/recording.mp4',
' 2: /tmp/recording.part-002.mp4',
'Telemetry: /tmp/recording.gesture-telemetry.json',
'Warning: Android adb screenrecord is capped at 180s, so this recording was split into multiple MP4 chunks.',
'Overlay warning: touch overlay burn-in is skipped for chunked Android recordings; returning raw chunks plus gesture telemetry',
].join('\n'),
);
expect(output.data).toMatchObject({
chunks: [
{ index: 1, path: '/tmp/recording.mp4' },
{ index: 2, path: '/tmp/recording.part-002.mp4' },
],
});
});
});