Skip to content

Add a bounded CSV screenshot report example - #2

Merged
site-shot merged 1 commit into
mainfrom
codex/growth-tutorial-pilots
Sep 10, 2026
Merged

site-shot merged 1 commit into
mainfrom
codex/growth-tutorial-pilots

Conversation

@site-shot

Copy link
Copy Markdown
Owner

Summary

Add an opt-in CSV-to-local-HTML screenshot report example. The SDK itself remains standard-library-only; the examples extra supplies Pillow for complete PNG decoding.

  • Validate the entire bounded public-URL CSV before submitting captures; default to one worker and zero client retries.
  • Save each run in a separate directory with PNG files, per-row outcomes, UTC timings, hashes, a manifest and an escaped, script-free HTML gallery.
  • Keep failures visible and redact upstream exception text. No replacement images, automatic retries, format degradation or automatic publication.
  • Document paid API prerequisites, quota limits, interruption behaviour and mandatory visual inspection. Include five owned public demo URLs; those inputs are not evidence of a live run.
  • Run the example's tests in the existing Python 3.9–3.13 CI matrix and mypy job.

Verification

  • Local: 111 unittest cases passed.
  • Local: mypy passed for all 7 source files; focused Ruff and git diff --check passed.
  • Independent review fixes for URL hostname normalization and cancellation of queued captures are included and retested.
  • A credential file and generated reports are ignored and not included in this PR.

Draft gate

No live API capture was performed for this example. Before marking ready: run the five owned URLs once with an explicitly supplied demo key and approved quota, inspect every saved image and the report, and record the result. A decoded PNG is not proof of correct page content. No package release or public tutorial deployment is implied by this draft.

@site-shot

Copy link
Copy Markdown
Owner Author

Release verification for cc026ae:

  • All six PR checks passed (Python 3.9–3.13 tests plus typecheck); local SDK suite: 111 tests, mypy and focused Ruff passed.
  • One explicitly authorized live run used the five owned public URLs, one worker and zero client retries: 5 decoded PNGs, 0 failed rows. No repeat requests were needed for the browser checks. This is not a reconciled billing count or reliability benchmark.
  • All five original images were inspected by two reviewers: expected readable public pages, no blank/login/challenge/error page. Homepage, blog and scheduling hit the documented 4000-pixel cap; Quickstart and pricing include their footers. We do not claim five complete-page captures.
  • After explicit owner approval, the actual generated report was served from a temporary loopback-only server scoped to its output folder. Browser checks at 1280×900, 390×844 and 320×740 passed: images load, no horizontal page overflow, original PNG and manifest navigation works, and settings expand/collapse using the keyboard. Expanded settings fit at 320 px.
  • Independent HTTP checks matched every PNG's bytes, decoded dimensions and SHA-256 with the manifest. All local output links return 200; there are no automatic external loads. Repository source and the key file are outside the served directory (404).
  • One harmless preview-only favicon.ico 404 was observed; no missing report assets or script errors. Producer manifest stays visual_review=required rather than being rewritten after review.

This releases a repository example only; no package/PyPI release or automatic report publication is implied.

@site-shot
site-shot marked this pull request as ready for review September 10, 2026 19:18
@site-shot
site-shot merged commit 1cb6991 into main Sep 10, 2026
6 checks passed
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.

2 participants