{% extends "base.html" %} {% block title %}Spec {{ spec.id }}{% endblock %} {% block content %}

{{ spec.id }} — {{ spec.title }} {{ spec.status }}

Priority: {{ spec.priority or '—' }}
Scope: {{ spec.scope or '—' }}
Section: {{ spec.section or '—' }}
{% if spec.handle %}
Handle: {{ spec.handle }}
{% endif %} {% if spec._tags_parsed %}
Tags: {% for tag in spec._tags_parsed %} {{ tag }} {% endfor %}
{% endif %}
Version: {{ spec.version }}
Last changed: {{ spec.changed_at }} by {{ spec.changed_by }}
Change reason: {{ spec.change_reason }}
{% if spec.description %}

Description

{{ spec.description }}
{% endif %} {% if children %}

Sub-items ({{ children|length }})

{% for child in children %} {% endfor %}
IDTitleStatus
{{ child.id }} {{ child.title }} {{ child.status }}
{% endif %} {% if assertion_run %}

Latest Assertion Run

{{ 'PASSED' if assertion_run.overall_passed else 'FAILED' }} — run at {{ assertion_run.run_at }} ({{ assertion_run.triggered_by }})
{% if assertion_run._results_parsed %} {% for r in assertion_run._results_parsed %} {% endfor %}
TypeDescriptionResultDetail
{{ r.type }} {{ r.description }} {{ 'PASS' if r.passed else 'FAIL' }} {{ r.detail }}
{% endif %} {% endif %} {% if spec._assertions_parsed %}

Assertion Definitions ({{ spec._assertions_parsed|length }})

{% for a in spec._assertions_parsed %} {% endfor %}
TypePatternFileDescription
{{ a.type }} {{ a.pattern }} {{ a.get('file', '') }} {{ a.description }}
{% endif %}

Version History ({{ history|length }} versions)

{% for h in history %} {% endfor %}
vStatusChanged atByReason
{{ h.version }} {{ h.status }} {{ h.changed_at }} {{ h.changed_by }} {{ h.change_reason }}
{% endblock %}