{% extends "base.html" %} {% block title %}Website Audit: {{ test.target_domain }} - Hermetic Suite{% endblock %} {% block content %}

Status

{% if test.status == 'completed' %} Completed {% elif test.status == 'running' %} Running {% elif test.status == 'failed' %} Failed {% else %} {{ test.status }} {% endif %}

Summary

{{ test.results_passed }} passed {{ test.results_failed }} failed {{ test.results_warnings }} warnings

Crawled

{{ test.pages_crawled }} pages, {{ test.forms_found }} forms

Duration

{{ test.duration_seconds or 0 }} seconds

{% if report and report.server_comparison %} {% endif %}
{% if results %}
{% for result in results %} {% endfor %}
Status Category Test Message Severity
{% if result.status == 'pass' %} PASS {% elif result.status == 'fail' %} FAIL {% elif result.status == 'warning' %} WARN {% elif result.status == 'error' %} ERROR {% else %} INFO {% endif %} {{ result.category }} {{ result.name }} {{ result.message }} {% if result.url %}
{{ result.url }} {% endif %}
{{ result.severity }}
{% else %}

No test results available.

{% endif %}
{% if report and report.crawled_urls %}
    {% for url in report.crawled_urls %}
  • {{ url }}
  • {% endfor %}
{% else %}

No pages crawled.

{% endif %}
{% if report and report.form_test_results %} {% for form in report.form_test_results %}

{{ form.action }}

Method: {{ form.method }}

Found on: {{ form.found_on }}

{% if form.inputs %}
Fields ({{ form.inputs|length }})
    {% for input in form.inputs %}
  • {{ input.name }} ({{ input.type }}) {% if input.required %}required{% endif %} {% if input.value %}= "{{ input.value[:30] }}{% if input.value|length > 30 %}...{% endif %}"{% endif %} {% if input.values %}
    Options: {% for val in input.values[:5] %}{{ val }} {% endfor %} {% if input.values|length > 5 %}... +{{ input.values|length - 5 }} more{% endif %} {% endif %}
  • {% endfor %}
{% endif %} {% if form.submit_buttons %}

Submit Buttons: {% for btn in form.submit_buttons %} {{ btn.name }}={{ btn.value }}{% if not loop.last %}, {% endif %} {% endfor %}

{% endif %} {% if form.tests %}
Test Results:
{% for test in form.tests %}
{% if test.mode == 'valid' %}✓ Valid{% elif test.mode == 'missing' %}⊘ Missing{% else %}✗ Invalid{% endif %}
{% if test.unexpected %} Issue {{ test.issue }} {% elif test.error %} Error {{ test.error }} {% elif test.mode == 'valid' %} {% if test.showed_error %} Rejected {{ test.error_messages|join(', ') or 'Form showed error' }} {% elif test.redirected_to %} Accepted → {{ test.redirected_to|truncate(50) }} {% else %} Submitted {% endif %} {% else %} {# For missing/invalid tests, not redirecting is expected (rejected) #} {% if test.showed_error %} Rejected {{ test.error_messages|join(', ') or 'Validation triggered' }} {% elif test.redirected_to %} Accepted (no validation) {% else %} Rejected (stayed on page) {% endif %} {% endif %}
Data sent
{% if test.data_submitted %}{% for k, v in test.data_submitted.items() %}{{ k }}: {{ v }}
{% endfor %}{% else %}(no data){% endif %}
{% endfor %}
{% endif %}
{% endfor %} {% elif report and report.forms_found %} {% for form in report.forms_found %}

Action: {{ form.action }}

Method: {{ form.method }}

Found on: {{ form.found_on }}

{% if form.inputs %}

Fields:

    {% for input in form.inputs %}
  • {{ input.name }} ({{ input.type }}) {% if input.required %}required{% endif %} {% if input.value %}= "{{ input.value }}"{% endif %}
  • {% endfor %}
{% endif %} {% if form.submit_buttons %}

Submit Buttons:

    {% for btn in form.submit_buttons %}
  • {{ btn.name }} = {{ btn.value }}
  • {% endfor %}
{% endif %}

Form testing was not enabled for this scan.

{% endfor %} {% else %}

No forms found.

{% endif %}
{% if report and report.server_comparison %}

Files on Server: {{ report.server_comparison.files_on_disk|length }}

Files Crawled: {{ report.server_comparison.files_accessible|length }}

{% if report.server_comparison.potential_concerns %}

⚠️ Potentially Sensitive Unlinked Files

These files exist on the server but were not found in the crawl. They may or may not be publicly accessible.

    {% for path in report.server_comparison.potential_concerns %}
  • {{ path }}
  • {% endfor %}
{% endif %} {% if report.server_comparison.files_unlinked %}
All Unlinked Files ({{ report.server_comparison.files_unlinked|length }})
    {% for path in report.server_comparison.files_unlinked %}
  • {{ path }}
  • {% endfor %}
{% endif %}
{% endif %}

Test Configuration

Tests Enabled

  • {% if test.test_ssl %}✓{% else %}✗{% endif %} SSL/TLS
  • {% if test.test_headers %}✓{% else %}✗{% endif %} Security Headers
  • {% if test.test_exposure %}✓{% else %}✗{% endif %} File Exposure
  • {% if test.test_traversal %}✓{% else %}✗{% endif %} Path Traversal

Form Testing

  • {% if test.test_forms_valid %}✓{% else %}✗{% endif %} Valid Data
  • {% if test.test_forms_missing %}✓{% else %}✗{% endif %} Partial Data
  • {% if test.test_forms_invalid %}✓{% else %}✗{% endif %} Invalid Data

Crawling

{% if test.crawl_enabled %}Enabled{% else %}Disabled{% endif %}

Max pages: {{ test.max_pages }}

Rate limit: {{ test.rate_limit }}s

Run Info

By: {{ test.created_by or 'Unknown' }}

Started: {{ test.started_at.strftime('%Y-%m-%d %H:%M:%S') if test.started_at else '-' }}

Completed: {{ test.completed_at.strftime('%Y-%m-%d %H:%M:%S') if test.completed_at else '-' }}

{% endblock %}