{% extends "base.html" %} {% block content %}

Test Report : {{ report.title }}

{% if show_toc %}
    {% for suite in report %} {% for classname in suite.classes %}
  • {{classname}}
      {% for test in suite.classes[classname].cases %}
    • {{test.name}}{{test.display_suffix}} {% if test.properties %} {% set media_count = namespace(value=0) %} {% for prop in test.properties %} {% if prop.name.startswith("image_path-") or prop.name.startswith("video_path-") or prop.name.startswith("playwright_trace_path-") %} {% set media_count.value = media_count.value + 1 %} {% endif %} {% endfor %} {% if media_count.value > 0 %} ⬇️ media available ⬇️ {% endif %} {% endif %}
    • {% endfor %}
  • {% endfor %} {% endfor %}
    {% for suite in report %} {% for classname in suite.classes %} {% for test in suite.classes[classname].cases %} {% if test.failed() %}
  • {{test.prefix()}} {{test.fullname()}} {% if test.properties %} {% set media_count = namespace(value=0) %} {% for prop in test.properties %} {% if prop.name.startswith("image_path-") or prop.name.startswith("video_path-") or prop.name.startswith("playwright_trace_path-") %} {% set media_count.value = media_count.value + 1 %} {% endif %} {% endfor %} {% if media_count.value > 0 %} ⬇️ media available ⬇️ {% endif %} {% endif %}
  • {% endif %} {% endfor %} {% endfor %} {% endfor %}
{% endif %} {% for suite in report %}

Test Suite: {{ suite.name }}

{% if suite.package %} Package: {{suite.package}} {% endif %} {% if suite.properties %}

Suite Properties

{% for prop in suite.properties %} {% endfor %}
{{prop.name}}{{prop.value}}
{% endif %}

Results

Duration{{suite.duration |round(3)}} sec
Tests{{suite.all() |length}}
Failures{{suite.failed()| length}}

Tests

{% for classname in suite.classes %}

{{classname}}

{% for test in suite.classes[classname].cases %}
{% if test.failed() %} {% endif %} {% if test.skipped %} {% endif %}
Test case:{{test.name}}
Outcome:{{test.outcome().title()}}
Duration:{{test.duration|round(3)}} sec
Failed{{test.failure_msg}}
Skipped{{test.skipped_msg}}
{% if test.failed() %}
{{test.failure}}
{% endif %} {% if test.skipped %}
{{test.skipped}}
{% endif %} {% if test.properties %} {# Collect media properties for preview #} {% set media_items = [] %} {% for prop in test.properties %} {% if prop.name.startswith("image_path-") or prop.name.startswith("video_path-") %} {% set _ = media_items.append(prop) %} {% endif %} {% endfor %} {# Display media preview if we have any media #} {% if media_items %}
Media Artifacts
{% for media_prop in media_items %}
{% if media_prop.name.startswith("image_path-") %} {{media_prop.value}} {% elif media_prop.name.startswith("video_path-") %} {% endif %}
{{media_prop.value.split('/')[-1]}}
{% endfor %}
{% endif %} {% for prop in test.properties %} {# the naming convention here is matching that of `record_generated_files` fixture in sculptor/tests/integration/frontend/conftest.py the special properties are recorded relative to the test root directory that is available through the `file_access_url` injected here from `scripts/gitlab_ci/run_test.py`: #} {% if prop.name.startswith("test_results_path") %} {% elif prop.name.startswith("image_path-") %} {% elif prop.name.startswith("video_path-") %} {% elif prop.name.startswith("playwright_trace_path-") %} {% elif prop.name.startswith("directory_path-") %} {% else %} {% endif %} {% endfor %}
{{prop.name}}{{prop.value}}Browse All ArtifactsView ImageView VideoDownload Playwright TraceBrowse Subdirectory
{% endif %} {% if test.repro_command %}

Reproduction Command

{{test.repro_command}}
{% endif %} {% if test.stdout or test.stdout_link %}
Stdout
{{test.stdout}}
{% endif %} {% if test.stderr or test.stderr_link %}
Stderr
{{test.stderr}}
{% endif %}
{% endfor %}
{% endfor %}
{% if suite.stdout or suite.stderr %}

Suite stdout:

{{suite.stdout}}

Suite stderr:

{{suite.stderr}}
{% endif %} {% endfor %} {% endblock %}