Files
callstack__agent-device/scripts/ios-snapshot-benchmark/size-install.test.ts
T
Michał Pierzchała 0dfd65f6a2 perf(ios): speed up deep snapshots and keep first taps reliable (#2414)
* perf(ios): recover deep snapshots and isolate optional tap probes

* chore(gates): enforce snapshot assets and optional probe lifecycle

* fix(ios): preserve capture bounds and local probe recovery

* chore(gates): validate base package assets with its own policy

* chore(gates): verify recovery failures respect launch observation policy

* fix(ios): fail closed on unknown snapshot frontier completeness
2026-09-09 18:24:15 +02:00

69 lines
2.9 KiB
TypeScript

import assert from 'node:assert/strict';
import { execFileSync } from 'node:child_process';
import fs from 'node:fs';
import { mkdir, rm, writeFile } from 'node:fs/promises';
import { join } from 'node:path';
import { test, vi } from 'vitest';
import { mkdtempForTest } from '../../src/__tests__/test-utils/tmp-dir.ts';
import {
assertInstalledSnapshotBridge,
measureCleanInstalledPackage,
measureDirectory,
} from '../size-report-install.mjs';
vi.mock('node:child_process', () => ({ execFileSync: vi.fn() }));
test('clean install includes hoisted, scoped, and nested dependencies but excludes consumer and cache files', () => {
vi.mocked(execFileSync).mockImplementation((_command, args) => {
const argv = args as string[];
const consumer = argv[argv.indexOf('--prefix') + 1]!;
const files = {
'node_modules/agent-device/index.js': '1234',
'node_modules/agent-device/node_modules/nested/index.js': '123',
'node_modules/hoisted/index.js': '123456',
'node_modules/@scope/dependency/index.js': '12345',
'package.json': 'consumer metadata',
'../npm-cache/download': 'cached tarball',
};
for (const [relative, content] of Object.entries(files)) {
const file = join(consumer, relative);
fs.mkdirSync(join(file, '..'), { recursive: true });
fs.writeFileSync(file, content);
}
return '';
});
assert.deepEqual(measureCleanInstalledPackage('fixture.tgz', 'agent-device'), {
packageBytes: 7,
files: 2,
totalBytes: 18,
});
});
test('measures the clean-installed package tree without counting the consumer', async () => {
const root = await mkdtempForTest('agent-device-size-tree-');
await mkdir(join(root, 'nested'));
await writeFile(join(root, 'index.js'), '1234');
await writeFile(join(root, 'nested', 'data.json'), '{}');
assert.deepEqual(measureDirectory(root), { packageBytes: 6, files: 2 });
});
test('clean-installed snapshot bridge validates all native assets when present', async () => {
const root = await mkdtempForTest('agent-device-size-bridge-');
const bridge = join(root, 'apple', 'snapshot-bridge');
try {
assert.doesNotThrow(() => assertInstalledSnapshotBridge(root));
await mkdir(bridge, { recursive: true });
await writeFile(join(bridge, 'SnapshotBridge.m'), 'native source');
await writeFile(join(bridge, 'SnapshotBridgeRuntime.m'), 'native runtime');
await writeFile(join(bridge, 'SnapshotBridgeRuntime.h'), 'native header');
await writeFile(join(bridge, 'SnapshotBridgeCapture.h'), 'capture header');
await writeFile(join(bridge, 'SnapshotBridgeCapture.m'), 'capture source');
assert.doesNotThrow(() => assertInstalledSnapshotBridge(root));
await rm(join(bridge, 'SnapshotBridgeRuntime.h'));
assert.throws(() => assertInstalledSnapshotBridge(root), /SnapshotBridgeRuntime\.h/);
} finally {
await rm(root, { recursive: true, force: true });
}
});