Skip to content

test(corpus): reproducer fixtures for section-drop bugs (#95/#96/#97) - #98

Merged
s-annam merged 1 commit into
mainfrom
test/corpus-section-drop-fixtures
Jun 15, 2026
Merged

test(corpus): reproducer fixtures for section-drop bugs (#95/#96/#97)#98
s-annam merged 1 commit into
mainfrom
test/corpus-section-drop-fixtures

Conversation

@s-annam

@s-annam s-annam commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

What

Adds two PII-free synthetic PDF fixtures (+ baked *.expected.json snapshots) under tests/fixtures/pdfs/unknown/ that reproduce the parser regressions tracked by the children of epic #94. No parser changes — this lands the reproducers first so the fixes in #95/#96/#97 have a regression target.

Fixture Layout Reproduces
student-projects-activities-singlecol 1-col, Education → Projects → Experience → Activities #95 projects dropped, #96 Activities dropped, #97 education end-date dropped
two-column-achievements-sidebar 2-col, ACHIEVEMENTS/STRENGTHS sidebar #96 sidebar variant + two-column boundary

Evidence (today's buggy output, captured in the snapshots)

⚠️ The corpus snapshot is keys/counts-only (PII policy), so it cannot assert the #97 end-date drop directly — only educationCount. When implementing #97, add the value-level assertion (start_date/end_date on the Kwansei entry) to extract-fields.test.ts. This fixture supplies the input; the unit test is the guard.

Method & PII

Hand-authored HTML → headless Chrome --print-to-pdf (Skia/PDF), same path as the existing chromium-two-column-sidebar fixture. Synthetic personas (Maya Lin / Jordan Avery), @example.com, reserved (408) 555-0123/0145 phones (valid NANP area code + 555 exchange + 01000199 subscriber → pass libphonenumber-js, never ring). Verified clean across all four layers — body text, Info dict, full-binary strings, and the counts-only snapshots. Source numbers absent everywhere.

When #94/#95/#96/#97 land, npm run bake-fixtures re-bake diff proves each fix.

Refs #94
Refs #95
Refs #96
Refs #97

Two PII-free synthetic fixtures under tests/fixtures/pdfs/unknown/ that
reproduce the parsing regressions tracked in #95, #96, and #97 (children
of section-extraction epic #94). Both rendered from hand-authored HTML
via headless Chrome (Skia/PDF), same method as the existing chromium
two-column fixture; synthetic personas, @example.com, reserved
(408) 555-01xx phones.

- student-projects-activities-singlecol.pdf — single-column resume,
  section order Education -> Projects -> Experience -> Activities.
  Reproduces all three children: no projects field (#95), no
  achievements/activities field (#96), and an education range
  "Sep 2024 - July 2025" that parses to year:"2024" only, dropping the
  end date (#97). Baked snapshot shows experienceCount:2 (only the real
  Experience entries) with projects/activities absent.
- two-column-achievements-sidebar.pdf — two-column resume with an
  ACHIEVEMENTS / STRENGTHS sidebar. two_column trigger fires, no
  achievements field, 4 clean Experience entries (sidebar not bleeding):
  the two-column boundary variant of #96. No education section, so
  educationCount:0 is correct (this fixture does not exercise #97).

Snapshots are keys/counts-only (no field values) per PII policy; they
capture today's buggy output, so the bake-fixtures diff will prove the
fix once #94/#95/#96/#97 land.

Refs #94
Refs #95
Refs #96
Refs #97
@s-annam
s-annam merged commit c3570ed into main Jun 15, 2026
2 checks passed
@s-annam
s-annam deleted the test/corpus-section-drop-fixtures branch June 15, 2026 23:40
s-annam added a commit that referenced this pull request Jun 25, 2026
…gs (#98)

Two PII-free synthetic fixtures under tests/fixtures/pdfs/unknown/ that
reproduce the parsing regressions tracked in #95, #96, and #97 (children
of section-extraction epic #94). Both rendered from hand-authored HTML
via headless Chrome (Skia/PDF), same method as the existing chromium
two-column fixture; synthetic personas, @example.com, reserved
(408) 555-01xx phones.

- student-projects-activities-singlecol.pdf — single-column resume,
  section order Education -> Projects -> Experience -> Activities.
  Reproduces all three children: no projects field (#95), no
  achievements/activities field (#96), and an education range
  "Sep 2024 - July 2025" that parses to year:"2024" only, dropping the
  end date (#97). Baked snapshot shows experienceCount:2 (only the real
  Experience entries) with projects/activities absent.
- two-column-achievements-sidebar.pdf — two-column resume with an
  ACHIEVEMENTS / STRENGTHS sidebar. two_column trigger fires, no
  achievements field, 4 clean Experience entries (sidebar not bleeding):
  the two-column boundary variant of #96. No education section, so
  educationCount:0 is correct (this fixture does not exercise #97).

Snapshots are keys/counts-only (no field values) per PII policy; they
capture today's buggy output, so the bake-fixtures diff will prove the
fix once #94/#95/#96/#97 land.

Refs #94
Refs #95
Refs #96
Refs #97
s-annam added a commit that referenced this pull request Jun 28, 2026
…gs (#98)

Two PII-free synthetic fixtures under tests/fixtures/pdfs/unknown/ that
reproduce the parsing regressions tracked in #95, #96, and #97 (children
of section-extraction epic #94). Both rendered from hand-authored HTML
via headless Chrome (Skia/PDF), same method as the existing chromium
two-column fixture; synthetic personas, @example.com, reserved
(408) 555-01xx phones.

- student-projects-activities-singlecol.pdf — single-column resume,
  section order Education -> Projects -> Experience -> Activities.
  Reproduces all three children: no projects field (#95), no
  achievements/activities field (#96), and an education range
  "Sep 2024 - July 2025" that parses to year:"2024" only, dropping the
  end date (#97). Baked snapshot shows experienceCount:2 (only the real
  Experience entries) with projects/activities absent.
- two-column-achievements-sidebar.pdf — two-column resume with an
  ACHIEVEMENTS / STRENGTHS sidebar. two_column trigger fires, no
  achievements field, 4 clean Experience entries (sidebar not bleeding):
  the two-column boundary variant of #96. No education section, so
  educationCount:0 is correct (this fixture does not exercise #97).

Snapshots are keys/counts-only (no field values) per PII policy; they
capture today's buggy output, so the bake-fixtures diff will prove the
fix once #94/#95/#96/#97 land.

Refs #94
Refs #95
Refs #96
Refs #97
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant