{{ session.suite_name or 'Test Suite' }} - Test Report

Generated {{ session.end_time.strftime('%Y-%m-%d %H:%M:%S') }}

Report Summary

Suite Name: {{ session.suite_name or 'Test Suite' }}
Date: {{ session.end_time.strftime('%d/%m/%Y') }}
Total Tests: {{ summary.total }}
Passed: {{ summary.passed }}
Failed: {{ summary.failed }}
Passed/Expected: {{ summary.passed }}/{{ summary.total }} ({{ "%.1f"|format(summary.pass_rate) }}%)
Duration: {{ "%.2f"|format(session.duration) }}s

Test Statistics

Total Pass Fail Skip Pass % Elapsed
{{ summary.total }} {{ summary.passed }} {{ summary.failed }} {{ summary.skipped }} {{ "%.1f"|format(summary.pass_rate) }}% {{ "%.2f"|format(session.duration) }}s
{% if session.features %}

Suite Statistics

{% for feature in features %} {% endfor %}
Suite Total Pass Fail Skip Pass % Logs Actions
{{ feature.name }} {{ feature.passed + feature.failed + feature.skipped }} {{ feature.passed }} {{ feature.failed }} {{ feature.skipped }} {% set total = feature.passed + feature.failed + feature.skipped %} {% if total > 0 %} {{ "%.1f"|format((feature.passed / total) * 100) }}% {% else %} 0.0% {% endif %} 📋 Suite Logs
📊 Details {% if feature.failed > 0 %} ❌ Failures {% endif %}
{% endif %} {% if session.tag_statistics %}

Tag Statistics

{% for tag, stats in session.tag_statistics.items() %} {% endfor %}
Tag Total Pass Fail Skip Pass %
{{ tag }} {{ stats.total }} {{ stats.passed }} {{ stats.failed }} {{ stats.skipped }} {% if stats.total > 0 %} {{ "%.1f"|format((stats.passed / stats.total) * 100) }}% {% else %} 0.0% {% endif %}
{% endif %}

Test Details

{% for scenario in scenarios %} {% endfor %}
Test Name Status Duration Suite Tags Start Time Logs Actions
{{ scenario.name }}
{% if scenario.error and scenario.status == 'failed' %}
{{ scenario.error.split('\n')[0][:80] }}{% if scenario.error.split('\n')[0]|length > 80 %}...{% endif %}
{% endif %}
{{ scenario.status|upper }} {% if scenario.is_overridden %}
OVERRIDE {% endif %} {% if scenario.bug_info %}
{{ scenario.bug_info.bug_id }} {% endif %}
{{ "%.3f"|format(scenario.duration) }}s {% if scenario.duration > 1.0 %}
SLOW {% elif scenario.duration < 0.01 %}
FAST {% endif %}
{{ scenario.feature or 'Unknown' }} {% if scenario.tags %} {% for tag in scenario.tags %} {{ tag }} {% endfor %} {% else %} No tags {% endif %} {{ scenario.start_time|timestamp_to_time }} {% if scenario.captured_output or scenario.captured_logs %} 📋 Logs {% else %} No logs {% endif %}
📄 Details {% if scenario.status == 'failed' %} 📋 Copy Error {% endif %}

Suite Details

{% for feature in features %}
{{ feature.name }} {{ feature.passed + feature.failed + feature.skipped }} tests, {{ feature.passed }} passed, {{ feature.failed }} failed {% if feature.skipped > 0 %}, {{ feature.skipped }} skipped{% endif %}
{% for scenario in feature.scenarios %}
{{ scenario.status|upper }} {{ scenario.name }}
Duration: {{ "%.3f"|format(scenario.duration) }}s | Start: {{ scenario.start_time|timestamp_to_time }} {% if scenario.tags %} | Tags: {% for tag in scenario.tags %}{{ tag }}{% if not loop.last %}, {% endif %}{% endfor %} {% endif %}
{% if scenario.error %}
{{ scenario.error }}
{% endif %}
{% endfor %}
{% endfor %}