mirror of
https://github.com/callstack/agent-device.git
synced 2026-09-14 20:06:34 +08:00
b15121ffc8
* 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
83 lines
2.2 KiB
TypeScript
83 lines
2.2 KiB
TypeScript
import assert from 'node:assert/strict';
|
|
import { test } from 'vitest';
|
|
import { BenchmarkCellAdmissionError } from './lifecycle.ts';
|
|
import { openClientFixture, type AgentClient } from './proxy-client-support.ts';
|
|
import type { ScreenFixture } from './types.ts';
|
|
|
|
const alertFixture: ScreenFixture = {
|
|
id: 'alert',
|
|
label: 'Native alert',
|
|
app: 'com.callstack.agentdevicelab',
|
|
anchorText: 'Automation lab',
|
|
postSetupAnchorText: 'Automation confirmation',
|
|
setupAction: 'open-alert',
|
|
};
|
|
|
|
function clientWithSnapshots(anchors: string[], calls: string[]): AgentClient {
|
|
return {
|
|
apps: {
|
|
open: async () => {
|
|
calls.push('open');
|
|
return {};
|
|
},
|
|
},
|
|
interactions: {
|
|
scroll: async () => {
|
|
calls.push('scroll');
|
|
return {};
|
|
},
|
|
click: async () => {
|
|
calls.push('click');
|
|
return {};
|
|
},
|
|
},
|
|
batch: {
|
|
run: async () => {
|
|
calls.push('snapshot');
|
|
return {
|
|
results: [
|
|
{
|
|
step: 1,
|
|
command: 'snapshot',
|
|
ok: true,
|
|
data: { snapshot: { nodes: [{ label: anchors.shift() ?? '' }] } },
|
|
durationMs: 1,
|
|
},
|
|
],
|
|
total: 1,
|
|
executed: 1,
|
|
totalDurationMs: 1,
|
|
};
|
|
},
|
|
},
|
|
sessions: { close: async () => ({}) },
|
|
leases: {
|
|
allocate: async () => ({}),
|
|
release: async () => ({}),
|
|
},
|
|
};
|
|
}
|
|
|
|
test('persistent-client fixture setup admits both opened and prepared anchors', async () => {
|
|
const calls: string[] = [];
|
|
await openClientFixture(
|
|
clientWithSnapshots(['Automation lab', 'Automation confirmation'], calls),
|
|
alertFixture,
|
|
'simulator',
|
|
);
|
|
assert.deepEqual(calls, ['open', 'snapshot', 'scroll', 'click', 'snapshot']);
|
|
});
|
|
|
|
test('persistent-client setup rejects a wrong prepared screen as fixture-anchor', async () => {
|
|
await assert.rejects(
|
|
() =>
|
|
openClientFixture(
|
|
clientWithSnapshots(['Automation lab', 'Settings'], []),
|
|
alertFixture,
|
|
'simulator',
|
|
),
|
|
(error: unknown) =>
|
|
error instanceof BenchmarkCellAdmissionError && error.reason === 'fixture-anchor',
|
|
);
|
|
});
|