{% macro finding(f) %}
{% if f.marker %}{{ f.marker }}{% endif %} {{ f.message }} {% if f.details.source == "llm" %}AI{% endif %}
{% if f.selector %}
{{ f.selector }}
{% endif %} {% if f.details.other %}
and {{ f.details.other }}
{% endif %} {% if f.details.url %}
{{ f.details.url }}
{% endif %} {% if f.details.href %}
{{ f.details.href }}
{% endif %} {% if f.details.src %}
{{ f.details.src }}
{% endif %} {% if f.details.review %}
AI {{ verdict_labels.get(f.details.review.verdict, f.details.review.verdict) }}{% if f.details.review.reason %}: {{ f.details.review.reason }}{% endif %}
{% endif %} {% if f.details.help_url %}
{{ f.details.rule }}{% if f.details.total_nodes > 1 %} · {{ f.details.total_nodes }} elements on the page{% endif %}
{% endif %}
{% endmacro %} PagePatrol report · {{ report.results[0].page_title or report.target }}

{{ report.results[0].page_title or "Untitled page" }}

{{ report.url }}

{{ totals.error }}errors
{{ totals.warning }}warnings
{{ totals.info }}notes
{% if report.results | length > 1 %} {% endif %} {% for r in report.results %}

{{ r.viewport.name }} {{ r.viewport.width }}×{{ r.viewport.height }}

{% if r.annotated_screenshot %}
Screenshot at {{ r.viewport.name }} with findings marked {% elif r.screenshot %} Screenshot at {{ r.viewport.name }} {% endif %}
{% if r.review_summary %}

AI {{ r.review_summary }}

{% endif %} {% if r.review_error %}

AI review failed: {{ r.review_error }}

{% endif %} {% if r.findings %}
{% for g in group_by_check(r.findings) %}
{{ g.check }} {{ g.count }}
{% for f in g.findings[:5] %}{{ finding(f) }}{% endfor %} {% if g.count > 5 %}
{{ g.count - 5 }} more {% for f in g.findings[5:] %}{{ finding(f) }}{% endfor %}
{% endif %}
{% endfor %}
{% else %}
No issues found at this size.
{% endif %} {% if r.console %}
Console output ({{ r.console | length }})
    {% for m in r.console %}
  • [{{ m.type }}] {{ m.text }}{% if m.location %} {{ m.location }}{% endif %}
  • {% endfor %}
{% endif %}
{% endfor %}