Problem
Surfaced via PR #93 verify (#93 verify report — Codex + Devil's Advocate findings, 2026-05-25)
NoteHTMLConvertTests.testNoteToHTMLSmoke() now asserts media/ directory contents + a 750 KB index.html size floor (PR #93, refs #86) — but those assertions do not actually run in clean clone / GitHub Actions CI:
test-files/ is .gitignored (.gitignore:103) — no .note fixture ships with the repo
CLITestHelper.noteFixture() (Tests/MacDocCLITests/CLITestHelper.swift:75-113) returns XCTSkip when no .note is found
- CI therefore silently passes the test via skip, and the strengthened assertions never fire against real renderer output
The original motivation of #86 (catch byte-minimal HTML stub regressions) is only protected on the maintainer's local machine where the 33 MB fixture 筆記 2026-03-20 15_25_20.note exists.
Type
enhancement (test infrastructure)
Priority
P2 — silent CI skip is a known gap, not blocking, but defeats the regression detection that motivated #86
Expected
A small committable .note fixture (target < 100 KB) that:
- Lives under
Tests/MacDocCLITests/Fixtures/ (or similar in-tree path) so it ships with the repo
- Contains at least 1 stroke (for index.html JSON content), 1 image (for media/ assets), and ideally 1 short audio recording (for media/ audio assets)
- Lets
testNoteToHTMLSmoke() actually exercise the strengthened assertions in CI
- Rebaselines the 750 KB index.html size floor to match the new fixture's reference render
CLITestHelper.noteFixture() should then prefer the committed fixture over the .gitignore'd fallback, falling back to local user fixtures only when explicitly requested.
Strategy
Related
Acceptance
CI logs show testNoteToHTMLSmoke actually running (no XCTSkip) and asserting media/ + 750 KB (or rebaselined) floor against a real fixture render.
Current Status
Phase: verified
Last updated: 2026-05-25 by /idd-diagnose
Problem
NoteHTMLConvertTests.testNoteToHTMLSmoke()now assertsmedia/directory contents + a 750 KBindex.htmlsize floor (PR #93, refs #86) — but those assertions do not actually run in clean clone / GitHub Actions CI:test-files/is.gitignored (.gitignore:103) — no.notefixture ships with the repoCLITestHelper.noteFixture()(Tests/MacDocCLITests/CLITestHelper.swift:75-113) returnsXCTSkipwhen no.noteis foundThe original motivation of #86 (catch byte-minimal HTML stub regressions) is only protected on the maintainer's local machine where the 33 MB fixture
筆記 2026-03-20 15_25_20.noteexists.Type
enhancement (test infrastructure)
Priority
P2 — silent CI skip is a known gap, not blocking, but defeats the regression detection that motivated #86
Expected
A small committable
.notefixture (target < 100 KB) that:Tests/MacDocCLITests/Fixtures/(or similar in-tree path) so it ships with the repotestNoteToHTMLSmoke()actually exercise the strengthened assertions in CICLITestHelper.noteFixture()should then prefer the committed fixture over the .gitignore'd fallback, falling back to local user fixtures only when explicitly requested.Strategy
.notefixture.noteZIP structure programmatically — possibly via a one-off Swift test helper that constructs a ProtoBuf payload (heavier engineering)Tests/MacDocCLITests/Fixtures/minimal.noteor similar)CLITestHelper.noteFixture()to prefer in-tree fixtureNoteHTMLConvertTests750 KB floor to a new floor calibrated against the in-tree fixture's reference renderNotePDFConvertTestsif it also depends on the same fixtureXCTSkip)Related
#81discussion (committable fixture direction)CLITestHelper.swift:80-83comments acknowledge "Phase 1 走 Option B,未來 follow-up 會改成 committable 小 fixture"Acceptance
CI logs show
testNoteToHTMLSmokeactually running (no XCTSkip) and assertingmedia/+ 750 KB (or rebaselined) floor against a real fixture render.Current Status
Phase: verified
Last updated: 2026-05-25 by /idd-diagnose