test(qa): verify exact long timeline content preservation

This commit is contained in:
cesnimda
2026-10-23 02:57:04 +02:00
parent d518d471f9
commit a4cf429fb3
4 changed files with 11 additions and 8 deletions
+2
View File
@@ -2,6 +2,8 @@
The final separate Phase9 diagnostic lane completed **18/18**, zero failures/skips/flaky/retries, on the frozen825-input manifest (`phase9-frozen`, exit0 at20:25:16UTC). It includes12 route/theme/locale/width cases, four settled accessibility cases, one RD21 characterization and one bounded workload. **A passing characterization does not qualify the unsafe behavior it records.** The earlier18-case run and the later16pass/2fail transition observation remain superseded raw evidence.
That diagnostic snapshot is retained as [source-manifest-before-admin-fixture.json](../p9-00/source-manifest-before-admin-fixture.json). The final ordinary-run snapshot changes only the locale-sensitive Admin test locator; [exact delta](../p9-00/admin-fixture-delta.json) proves product/build/diagnostic/core inputs are unchanged. No diagnostic result is claimed to execute an ordinary fixture it does not load.
## Native documents
Fresh real preview and native exported PDF bytes from the retained corpus passed **16/16 fixtures /36 pages** under the unchanged oracle: exact page count/membership, physical dimensions ±0.5mm, marker positions ±2mm, font sizes ±0.5pt and original RGB tolerance. Nine defaults, long EN/NB, 8mm Letter, 28mm roomy, grid/bubbles, long sidebar and unbreakable boundary fixtures are included. No renderer geometry or tolerance changed.
@@ -9,7 +9,7 @@
{
"status": "passed",
"retry": 0,
"durationMs": 6435,
"durationMs": 1966,
"errors": [],
"attachments": [
{
@@ -32,7 +32,7 @@
{
"status": "passed",
"retry": 0,
"durationMs": 5520,
"durationMs": 1623,
"errors": [],
"attachments": [
{
@@ -55,7 +55,7 @@
{
"status": "passed",
"retry": 0,
"durationMs": 51407,
"durationMs": 16460,
"errors": [],
"attachments": [
{
+1 -1
View File
@@ -1,6 +1,6 @@
# Bounded volume supplement
**3/3 passed**, zero failures/skips/flaky/retries, `volume-qualified`, exit0 at20:46:29UTC on22October. Full TypeScript checking also passed. The initial runtime pass used an incorrect type-only import; that import was corrected and the complete three-case successor passed on the final source. Neither run changes product code.
**3/3 passed**, zero failures/skips/flaky/retries, `volume-complete`, exit0 at00:27:14 UTC on23October. Full TypeScript checking also passed. An initial type-only import error was corrected; review then strengthened timeline preservation from a prefix check to exact content-by-ID comparison. The complete three-case successor passed on the final source. Earlier passes are retained as superseded evidence; no product code changed.
| Scenario | Actual native result | Limit |
|---|---|---|
@@ -55,14 +55,15 @@ test('P9 volume: 100 manual timeline messages retain exact membership and foreig
expect(company.status()).toBe(201);
const job = await api.post(`${base}/jobapplications`, { headers, data: { companyId: (await company.json()).id, jobTitle: 'Volume timeline fixture', status: 'Saved' } });
expect(job.status()).toBe(201); const jobId = (await job.json()).id;
const ids: number[] = [];
const ids: number[] = []; const expectedContent = new Map<number, string>();
for (let index = 0; index < 100; index++) {
const response = await api.post(`${base}/correspondence`, { headers, data: { jobApplicationId: jobId, from: 'Synthetic manual note', content: `Timeline evidence ${index} ${'Documented progress. '.repeat(20)}`, channel: 'manual', direction: 'incoming' } });
expect(response.status()).toBe(201); ids.push((await response.json()).id);
const content = `Timeline evidence ${index} ${'Documented progress. '.repeat(20)}`.trimEnd();
const response = await api.post(`${base}/correspondence`, { headers, data: { jobApplicationId: jobId, from: 'Synthetic manual note', content, channel: 'manual', direction: 'incoming' } });
expect(response.status()).toBe(201); const id = (await response.json()).id; ids.push(id); expectedContent.set(id, content);
}
const response = await api.get(`${base}/correspondence/${jobId}`); expect(response.status()).toBe(200);
const rows = await response.json(); expect(rows.map((row: { id: number }) => row.id).sort((a: number, b: number) => a - b)).toEqual([...ids].sort((a, b) => a - b));
expect(rows.every((row: { content: string }) => row.content.startsWith('Timeline evidence '))).toBe(true);
for (const row of rows) expect(row.content).toBe(expectedContent.get(row.id));
expect((await other.api.get(`${base}/correspondence/${jobId}`)).status()).toBe(404);
await info.attach('phase9-volume-timeline', { body: JSON.stringify({ messages: rows.length, exactMembership: true, foreignRead: 404, limits: 'Native persisted manual correspondence; no external mail delivery or100-message browser rendering claim.' }), contentType: 'application/json' });
} finally { await account.api.dispose(); await other.api.dispose(); }