Files
Michał Pierzchała b15121ffc8 test(ios): establish snapshot convergence baselines and permanent evidence (#2204)
* test(ios): add snapshot convergence evidence harness

* fix(ios): satisfy benchmark CI guards

* fix(ios): constrain benchmark proxy routes

* fix(ios-benchmark): enforce cell admission evidence

* fix(ios-benchmark): protect benchmark state ownership

* fix(ios-benchmark): use proxy port flag

* fix(ios-benchmark): let proxy choose an ephemeral port

* test(ios-benchmark): keep CLI process seam local

* fix(ios-benchmark): parse proxy startup envelope

* fix(ios-benchmark): bind proxy lease to simulator

* fix(ios-benchmark): keep fresh proxy CLI sessions isolated

* fix(ios-benchmark): preserve async timeout evidence

* docs(ios-benchmark): retain exact-head evidence

* test(ios): reveal offscreen alert fixture controls

* test(ios): reset alert between relaunch samples

* test(ios): admit native alert snapshots

* docs(ios): publish snapshot convergence corpus

* chore(ios): format benchmark evidence

* fix(ios-benchmark): admit proxy fixture anchors

* docs(ios): republish exact-head benchmark corpus

* fix(size): make publish asset evidence hermetic

* style(size): format package evidence test

* test(size): update publish preparation contracts

* fix: retire stale utils layering zone

* test: pin shared publish asset owner

* test: verify preserved size reporter closure

* fix: move mutation ownership to snapshot module

* test(ios): add snapshot convergence evidence harness

* fix(ios): satisfy benchmark CI guards

* fix(ios): constrain benchmark proxy routes

* fix(ios-benchmark): enforce cell admission evidence

* fix(ios-benchmark): protect benchmark state ownership

* fix(ios-benchmark): use proxy port flag

* fix(ios-benchmark): let proxy choose an ephemeral port

* test(ios-benchmark): keep CLI process seam local

* fix(ios-benchmark): parse proxy startup envelope

* fix(ios-benchmark): bind proxy lease to simulator

* fix(ios-benchmark): keep fresh proxy CLI sessions isolated

* fix(ios-benchmark): preserve async timeout evidence

* docs(ios-benchmark): retain exact-head evidence

* test(ios): reveal offscreen alert fixture controls

* test(ios): reset alert between relaunch samples

* test(ios): admit native alert snapshots

* docs(ios): publish snapshot convergence corpus

* chore(ios): format benchmark evidence

* fix(ios-benchmark): admit proxy fixture anchors

* docs(ios): republish exact-head benchmark corpus

* fix(size): make publish asset evidence hermetic

* test(size): update publish preparation contracts

* fix: keep git-state gates out of mutation sandboxes
2026-09-01 21:39:05 +02:00

54 lines
1.7 KiB
TypeScript

import assert from 'node:assert/strict';
import { execFileSync } from 'node:child_process';
import fs from 'node:fs';
import path from 'node:path';
import { test } from 'vitest';
import { mkdtempForTest } from '../../src/__tests__/test-utils/tmp-dir.ts';
import { resolveRepoRoot } from './host.ts';
test('CLI refuses an unmarked existing root before any descendant can be cleared', async () => {
const repoRoot = resolveRepoRoot();
const stateDir = await mkdtempForTest('agent-device-ios-benchmark-cli-');
const derivedPath = path.join(stateDir, 'derived-data', 'cell');
const sentinel = path.join(derivedPath, 'must-survive');
fs.mkdirSync(derivedPath, { recursive: true });
fs.writeFileSync(sentinel, 'keep');
let exitCode = 0;
let stderr = '';
try {
execFileSync(
process.execPath,
[
'--experimental-strip-types',
path.join(repoRoot, 'scripts/ios-snapshot-benchmark/run.ts'),
'--udid',
'unavailable-simulator',
'--state-dir',
stateDir,
'--derived-path',
derivedPath,
'--skip-package-size',
],
{
cwd: repoRoot,
encoding: 'utf8',
maxBuffer: 64 * 1024,
timeout: 60_000,
},
);
} catch (error) {
const failure = error as { status?: unknown; stderr?: unknown };
exitCode = typeof failure.status === 'number' ? failure.status : -1;
stderr = Buffer.isBuffer(failure.stderr)
? failure.stderr.toString('utf8')
: typeof failure.stderr === 'string'
? failure.stderr
: '';
}
assert.notEqual(exitCode, 0);
assert.match(stderr, /benchmark-owned/);
assert.equal(fs.readFileSync(sentinel, 'utf8'), 'keep');
});