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

33 lines
1.4 KiB
TypeScript

import assert from 'node:assert/strict';
import { test } from 'vitest';
import {
assertInvalidShallowRuleFails,
assertSafeFullRulePasses,
deepButtonFixtureEvidence,
readDeepButtonFixtureArtifact,
} from './deep-button.ts';
test('the checked-in fixture has a real 72-level ancestor chain', () => {
const artifact = readDeepButtonFixtureArtifact();
assert.equal(artifact.depth, 72);
assert.equal(artifact.nodes.length, 73);
assert.equal(artifact.before.changedNode.depth, 72);
assert.equal(artifact.after.changedNode.depth, 72);
assert.notDeepEqual(artifact.before.changedNode, artifact.after.changedNode);
});
test('the shallow control observes no change while the full tree changes', () => {
const evidence = deepButtonFixtureEvidence();
assert.equal(evidence.artifact, 'deep-button-fixture.v1.json');
assert.equal(evidence.depth, 72);
assert.equal(evidence.before.surfaceDigest, evidence.after.surfaceDigest);
assert.notEqual(evidence.before.fullDigest, evidence.after.fullDigest);
assert.ok(!evidence.after.surfaceNodeIds.includes(evidence.changedDescendant));
assert.ok(evidence.after.fullNodeIds.includes(evidence.changedDescendant));
});
test('the planted invalid rule is red and the full rule is green', () => {
assert.throws(assertInvalidShallowRuleFails, /changed descendant was omitted/);
assert.doesNotThrow(assertSafeFullRulePasses);
});