📊 Test Results Analytics Dashboard

Execution Time: {{ summary.time }}s

{% set sorted_tests = test_cases|sort(attribute='time', reverse=true) %} {% set slowest_tests = sorted_tests[:10] if sorted_tests|length >= 10 else sorted_tests %} {% set fastest_tests_all = sorted_tests|reverse|sort(attribute='time')|list %} {% set fastest_tests = fastest_tests_all[:10] if fastest_tests_all|length >= 10 else fastest_tests_all %}

📈 Performance by Test Class

{% set sorted_tests = test_cases|sort(attribute='time', reverse=true) %} {% set classes = {} %} {% for test in test_cases %} {% if test.classname not in classes %} {% set _ = classes.update({test.classname: {'tests': [], 'total_time': 0, 'passed': 0, 'failed': 0, 'errors': 0, 'skipped': 0}}) %} {% endif %} {% set _ = classes[test.classname]['tests'].append(test) %} {% set _ = classes[test.classname].update({'total_time': classes[test.classname]['total_time'] + test.time|float}) %} {% if test.status == 'passed' %} {% set _ = classes[test.classname].update({'passed': classes[test.classname]['passed'] + 1}) %} {% elif test.status == 'failed' %} {% set _ = classes[test.classname].update({'failed': classes[test.classname]['failed'] + 1}) %} {% elif test.status == 'error' %} {% set _ = classes[test.classname].update({'errors': classes[test.classname]['errors'] + 1}) %} {% elif test.status == 'skipped' %} {% set _ = classes[test.classname].update({'skipped': classes[test.classname]['skipped'] + 1}) %} {% endif %} {% endfor %}
{% for classname in classes|sort %} {% set class_info = classes[classname] %}

{{ classname }}

{{ class_info.total_time|round(2) }}s total
{{ class_info.tests|length }} Total Tests
{{ class_info.passed }} Passed
{{ class_info.failed }} Failed
{{ class_info.errors }} Errors
{{ class_info.skipped }} Skipped
{{ (class_info.total_time / class_info.tests|length)|round(3) }}s Avg/Test
{% endfor %}

🔍 Error Analysis

{% set error_messages = {} %} {% for test in test_cases %} {% if test.message %} {% if test.message not in error_messages %} {% set _ = error_messages.update({test.message: {'count': 0, 'tests': []}}) %} {% endif %} {% set _ = error_messages[test.message].update({'count': error_messages[test.message]['count'] + 1}) %} {% set _ = error_messages[test.message]['tests'].append(test.name) %} {% endif %} {% endfor %}
{% if error_messages %} {% for message in error_messages|sort %}
{{ message }} {{ error_messages[message].count }}x
Tests affected: {{ error_messages[message].tests|join(', ') }}
{% endfor %} {% else %}

✓ No errors found!

{% endif %}

⏱️ Slowest Tests (Top 10)

{% for test in slowest_tests %} {% endfor %}
Test Name Class Execution Time Status
{{ test.name }} {{ test.classname }} {{ test.time }}s {{ test.status }}

⚡ Fastest Tests (Top 10)

{% for test in fastest_tests %} {% endfor %}
Test Name Class Execution Time Status
{{ test.name }} {{ test.classname }} {{ test.time }}s {{ test.status }}