Skip to content

Revert "Build a TYPO3 v13 extension: “Frontend QA – Visual Diff”. Backend module accepts two base URLs and a sitemap or manual list. A Scheduler task crawls pages, renders screenshots (before/after) per viewport using Imagick, computes pixel diff with toleranc..." - #2

Closed
priebera1 wants to merge 1 commit into
mainfrom
revert-1-copilot/fix-21d55d7b-8dfe-427b-8887-0bfa023860e4

Conversation

@priebera1

Copy link
Copy Markdown
Owner

Reverts #1

…kend module accepts two base URLs and a sitemap or manual list. A Scheduler task crawls pages, renders screenshots (before/after) per viewport using Imagick, computes pixel diff with toleranc..."
@priebera1

Copy link
Copy Markdown
Owner Author

Build a TYPO3 v13 extension “devsk_visualdiff” (issues-only, Scheduler-first). Goal: compare two bases (A,B) and show ONLY pages with broken frontend.

Constraints:

  • NO Chromium/Node. Render HTML→PNG via wkhtmltoimage; compute diff via PHP Imagick/GD.
  • Store outputs under var/visual-diff/job-/run-// (before.png, after.png, diff.png, meta.json).

Implement:

  • DB: tx_visualdiff_job (bases, sitemap/manual URLs, filters, viewports, tolerance, concurrency, headers/cookies, stabilizers, storage_path, keep_history_runs, active), tx_visualdiff_run (status, stats), tx_visualdiff_issue (run/job, url, viewport, percent_changed, bbox_count, max_box_area, before/after/diff paths, bbox_json, resolved, error_message).
  • Scheduler: RunVisualDiffJobTask (crawl+render+diff), Resume task, Purge history. CLI: bin/typo3 lia-visualdiff:run --job=.
  • Rendering: wkhtmltoimage with --javascript-delay and optional --user-style-sheet (qa-freeze.css disables animations & hides dynamic UI). Headers/cookies injection supported.
  • Diff: Imagick compare (AE metric) + fuzz tolerance; produce heatmap diff.png; binarize+morphology to get connected components → bbox_json. Heuristics “broken”: percent≥1.5% OR maxBoxArea≥2% OR bboxCount≥5 (configurable).
  • Cache/skip by HTML hash A/B; sitemap chunking; concurrency control; retries/timeouts; SSRF guard/host whitelist.
  • BE module: default view lists ONLY issues (unresolved first) with URL, viewport, badges (%, bbox), thumb of diff.png; filters (URL regex, viewport, percent range, status); detail view with before/after slider + diff overlay; AJAX toggle resolved; export CSV/JSON honoring filters.
  • Files: ext_emconf.php, composer.json (require ext-imagick), ext_tables.sql, TCA for 3 tables, Services.yaml (RendererInterface=WkhtmltoimageRenderer), Scheduler registrations, Repositories, Controllers, Fluid templates, minimal ES6 for grid/slider (optional Pixelmatch in-browser preview only).

Deliver: full skeleton + key classes, configs, and QA freeze CSS.

@priebera1 priebera1 closed this Oct 4, 2025
@priebera1
priebera1 deleted the revert-1-copilot/fix-21d55d7b-8dfe-427b-8887-0bfa023860e4 branch October 4, 2025 12:21
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