3.4 KiB
3.4 KiB
Manual PDF Interoperability QA
Run this checklist before tagging a public release.
Test Files
Use at least:
- A selectable-text journal article.
- A scanned/image-only course reading.
- A long PDF near or above 500 pages.
- A PDF that already contains annotations from Preview or Acrobat.
- A PDF with bookmarks or an outline.
App Workflow
- Open the PDF in I Hate PDFs.
- Select text and add a highlight.
- Add a comment to the highlight.
- Add an underline with a comment.
- Select text, right-click, and add a comment from the context menu.
- Add free text directly on the page.
- Open the comments sidebar and verify count, grouping, search, filters, edit, delete, reply, and click-to-navigate.
- Quit and reopen the same PDF at the same approximate window width and verify the app restores that PDF's sidebar state; then open a different PDF and verify it starts in focused single-pane reading unless that document has its own saved state.
- Add at least one reply and verify the comments sidebar presents the thread like a clean review/chat stream, with a visible connector line from the parent comment to the reply.
- Hover a comment row and verify the corresponding PDF text is highlighted; click both the parent comment text and the reply text in the sidebar and verify the PDF view navigates to and selects the corresponding annotation.
- Verify highlights, comment markers, reply icons, and selected sidebar rows use muted native-feeling colors in light mode and do not visually overpower the document.
- Switch the app to dark mode and verify the reading background, comments sidebar, editor popover, connector lines, selected rows, text fields, and annotation markers remain legible and restrained.
- Save As an annotated copy.
- Reopen the annotated copy in I Hate PDFs and verify the annotations and comments remain.
- Save over a disposable original and verify the overwrite warning appears.
External Readers
Before manual reader checks, run the automated PDF structure checks:
swift scripts/verify-sample-pdf.swift
swift scripts/verify-pdf-annotations.swift
These checks generate an annotated PDF, reopen it with PDFKit, and inspect the raw PDF annotation dictionaries for standard /Highlight, /Underline, /Text, /FreeText, /Popup, /Contents, /QuadPoints, /IRT, /RT, and /Parent entries.
Open the saved annotated copy in:
- macOS Preview
- Adobe Acrobat Reader
- Safari, Chrome, and Firefox PDF viewers where annotations are supported
Verify:
- Highlighted text remains highlighted.
- Underlined text remains underlined.
- Selected-text comments remain attached to the referenced text.
- Highlight and selected-text comments can be opened.
- Free text remains visible on the page.
- Existing text, images, layout, bookmarks, and prior annotations remain intact.
Visual QA Screenshots
Capture current screenshots in docs/screenshots for:
no-document.pngdefault-reading.pnghighlight-comment-popover.pngselected-text-comment-popover.pngcomments-sidebar.png, including at least one reply thread with a visible connector linedark-mode-reading.png
Known Version 1 Limitation
PDFKit rejects object-valued /IRT reply relationships through its public API. Replies created in this app are saved as visible standard /Text annotations, while full cross-reader reply-thread presentation must be verified and improved with a lower-level PDF writer if needed.