{% if options.logo_b64 %} {% endif %}

{{ run.title or "Behave Modern Report" }}

{% if run.project_name %}

{{ run.project_name }}

{% endif %}
Started: {{ run.start_time }}
Duration: {{ run.duration | format_duration }}
Scenarios: {{ run.total_scenarios }}
Passed: {{ run.passed }}
Failed: {{ run.failed }}
Skipped: {{ run.skipped }}
Pass rate: {{ (run.pass_rate * 100) | round(1) }}%

Table of contents

Executive summary

{{ run.total_scenarios }} Scenarios
{{ run.passed }} Passed
{{ run.failed }} Failed
{{ run.skipped }} Skipped
{% if run.features %} {% for feature in run.features %} {% endfor %}
Feature Scenarios Passed Failed Skipped Pass rate Duration
{{ feature.name }} {{ feature.total_scenarios }} {{ feature.passed }} {{ feature.failed }} {{ feature.skipped }} {{ (feature.pass_rate * 100) | round(1) }}% {{ feature.duration | format_duration }}
{% endif %}

Environment

Python{{ run.environment.python_version }}
Behave{{ run.environment.behave_version }}
Platform{{ run.environment.platform }}
Hostname{{ run.environment.hostname }}
Working directory{{ run.environment.cwd }}
Command{{ run.environment.command }}
User{{ run.environment.user }}
Git branch{{ run.environment.git_branch }}
Git commit{{ run.environment.git_commit }}
{% for feature in run.features %}

{{ feature.name }}

{{ feature.derive_status() }}
{% if feature.location %}

{{ feature.location }}

{% endif %} {% if feature.description %}

{{ feature.description }}

{% endif %} {% if feature.tags %}
{{ feature.tags | join(' @') }}
{% endif %}
Total Passed Failed Skipped Undefined Pass rate Duration
{{ feature.total_scenarios }} {{ feature.passed }} {{ feature.failed }} {{ feature.skipped }} {{ feature.undefined }} {{ (feature.pass_rate * 100) | round(1) }}% {{ feature.duration | format_duration }}
{% if feature.background %}

Background: {{ feature.background.name }}

{% for step in feature.background.steps %} {% endfor %}
Status Step Duration
{{ step.status | status_icon }} {{ step.keyword.rstrip() }} {{ step.name }} {{ step.duration | format_duration }}
{% endif %} {% for scenario in feature.scenarios %}

{{ scenario.name }}{% if scenario.is_outline %} [OUTLINE]{% endif %}

{{ scenario.status }}
{% if scenario.location %} Location: {{ scenario.location }} {% endif %} {% if scenario.rule_name %} Rule: {{ scenario.rule_name }} {% endif %} Duration: {{ scenario.duration | format_duration }} {% if scenario.tags %} {{ scenario.tags | join(' @') }} {% endif %}
{% if scenario.background %}

Background: {{ scenario.background.name }}

{% for step in scenario.background.steps %} {% endfor %}
Status Step Duration
{{ step.status | status_icon }} {{ step.keyword.rstrip() }} {{ step.name }} {{ step.duration | format_duration }}
{% endif %} {% for step in scenario.steps %} {% endfor %}
Status Step Duration
{{ step.status | status_icon }} {{ step.keyword.rstrip() }} {{ step.name }} {{ step.duration | format_duration }}
{% if scenario.error %}

Failure

{% if scenario.error.exception_type %}

Type: {{ scenario.error.exception_type }}

{% endif %}

Message: {{ scenario.error.message }}

{% if scenario.error.traceback %}

Traceback:

{{ scenario.error.traceback }}
{% endif %}
{% endif %} {% set scenario_attachments = [] %} {% for step in scenario.steps %} {% for attachment in step.attachments %} {% if scenario_attachments.append(attachment) %}{% endif %} {% endfor %} {% endfor %} {% if scenario_attachments %}

Attachments

    {% for attachment in scenario_attachments %}
  • {% if attachment.is_image and options.include_attachments %}
    {{ attachment.name }}
    {{ attachment.name }}
    {% else %} {{ attachment.name }} {% if attachment.text %}
    {{ attachment.text }}
    {% endif %} {% endif %}
  • {% endfor %}
{% endif %} {% set scenario_logs = [] %} {% for step in scenario.steps %} {% for log_line in step.logs %} {% if scenario_logs.append(log_line) %}{% endif %} {% endfor %} {% endfor %} {% if scenario_logs %}

Logs

{% for line in scenario_logs %}{{ line }}
{% endfor %}
{% endif %}
{% endfor %}
{% endfor %}