67 lines
6.3 KiB
XML
67 lines
6.3 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="800" viewBox="0 0 1200 800" role="img" aria-labelledby="title desc">
|
|
<title id="title">Четыре контракта ожидания в e2e-тесте</title>
|
|
<desc id="desc">Горизонтальная схема разделяет selector, actionability, readiness condition и retry. Под ними evidence привязан к попытке. Подписи показывают, что каждый слой не доказывает следующий.</desc>
|
|
<defs>
|
|
<marker id="arrow" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto"><path d="M0,0 L12,6 L0,12 Z" fill="#486581"/></marker>
|
|
<marker id="down" markerWidth="10" markerHeight="10" refX="5" refY="8" orient="auto"><path d="M0,0 L10,0 L5,10 Z" fill="#9fb3c8"/></marker>
|
|
</defs>
|
|
<rect width="1200" height="800" fill="#f8fafc"/>
|
|
<rect x="50" y="42" width="1100" height="88" rx="18" fill="#102a43"/>
|
|
<text x="84" y="91" fill="#ffffff" font-family="Arial, sans-serif" font-size="34" font-weight="700">Ожидание e2e: четыре разных контракта</text>
|
|
<text x="84" y="115" fill="#d9e2ec" font-family="Arial, sans-serif" font-size="17">Верхняя полоса — действие и результат. Нижняя — политика исполнения и evidence.</text>
|
|
|
|
<path d="M303 292 L335 292" stroke="#486581" stroke-width="5" marker-end="url(#arrow)"/>
|
|
<path d="M574 292 L606 292" stroke="#486581" stroke-width="5" marker-end="url(#arrow)"/>
|
|
<path d="M845 292 L877 292" stroke="#486581" stroke-width="5" marker-end="url(#arrow)"/>
|
|
|
|
<g>
|
|
<rect x="70" y="190" width="230" height="205" rx="18" fill="#e0f2fe" stroke="#0284c7" stroke-width="3"/>
|
|
<text x="96" y="236" fill="#075985" font-family="Arial, sans-serif" font-size="25" font-weight="700">1. Selector</text>
|
|
<text x="96" y="272" fill="#102a43" font-family="Arial, sans-serif" font-size="19">Где действие?</text>
|
|
<text x="96" y="300" fill="#334e68" font-family="Arial, sans-serif" font-size="17">role/name или</text>
|
|
<text x="96" y="324" fill="#334e68" font-family="Arial, sans-serif" font-size="17">явный test id</text>
|
|
<text x="96" y="365" fill="#9f1239" font-family="Arial, sans-serif" font-size="16" font-weight="700">Не доказывает:</text>
|
|
<text x="96" y="385" fill="#9f1239" font-family="Arial, sans-serif" font-size="15">успех операции</text>
|
|
</g>
|
|
<g>
|
|
<rect x="340" y="190" width="230" height="205" rx="18" fill="#ecfdf5" stroke="#059669" stroke-width="3"/>
|
|
<text x="366" y="236" fill="#047857" font-family="Arial, sans-serif" font-size="25" font-weight="700">2. Actionability</text>
|
|
<text x="366" y="272" fill="#102a43" font-family="Arial, sans-serif" font-size="19">Можно click?</text>
|
|
<text x="366" y="300" fill="#334e68" font-family="Arial, sans-serif" font-size="17">visible, stable,</text>
|
|
<text x="366" y="324" fill="#334e68" font-family="Arial, sans-serif" font-size="17">enabled, events</text>
|
|
<text x="366" y="365" fill="#9f1239" font-family="Arial, sans-serif" font-size="16" font-weight="700">Не доказывает:</text>
|
|
<text x="366" y="385" fill="#9f1239" font-family="Arial, sans-serif" font-size="15">product-ready</text>
|
|
</g>
|
|
<g>
|
|
<rect x="610" y="190" width="230" height="205" rx="18" fill="#fff7ed" stroke="#ea580c" stroke-width="3"/>
|
|
<text x="636" y="236" fill="#9a3412" font-family="Arial, sans-serif" font-size="25" font-weight="700">3. Readiness</text>
|
|
<text x="636" y="272" fill="#102a43" font-family="Arial, sans-serif" font-size="19">Что увидел user?</text>
|
|
<text x="636" y="300" fill="#334e68" font-family="Arial, sans-serif" font-size="17">terminal state,</text>
|
|
<text x="636" y="324" fill="#334e68" font-family="Arial, sans-serif" font-size="17">status, итог</text>
|
|
<text x="636" y="365" fill="#9f1239" font-family="Arial, sans-serif" font-size="16" font-weight="700">Не доказывает:</text>
|
|
<text x="636" y="385" fill="#9f1239" font-family="Arial, sans-serif" font-size="15">selector was valid</text>
|
|
</g>
|
|
<g>
|
|
<rect x="880" y="190" width="230" height="205" rx="18" fill="#eef2ff" stroke="#4f46e5" stroke-width="3"/>
|
|
<text x="906" y="236" fill="#3730a3" font-family="Arial, sans-serif" font-size="25" font-weight="700">4. Retry</text>
|
|
<text x="906" y="272" fill="#102a43" font-family="Arial, sans-serif" font-size="19">Что сделал runner?</text>
|
|
<text x="906" y="300" fill="#334e68" font-family="Arial, sans-serif" font-size="17">initial / retry</text>
|
|
<text x="906" y="324" fill="#334e68" font-family="Arial, sans-serif" font-size="17">outcome, worker</text>
|
|
<text x="906" y="365" fill="#9f1239" font-family="Arial, sans-serif" font-size="16" font-weight="700">Не доказывает:</text>
|
|
<text x="906" y="385" fill="#9f1239" font-family="Arial, sans-serif" font-size="15">root cause</text>
|
|
</g>
|
|
|
|
<path d="M185 414 L185 477" stroke="#9fb3c8" stroke-width="4" stroke-dasharray="8 8" marker-end="url(#down)"/>
|
|
<path d="M455 414 L455 477" stroke="#9fb3c8" stroke-width="4" stroke-dasharray="8 8" marker-end="url(#down)"/>
|
|
<path d="M725 414 L725 477" stroke="#9fb3c8" stroke-width="4" stroke-dasharray="8 8" marker-end="url(#down)"/>
|
|
<path d="M995 414 L995 477" stroke="#9fb3c8" stroke-width="4" stroke-dasharray="8 8" marker-end="url(#down)"/>
|
|
|
|
<rect x="70" y="493" width="1040" height="132" rx="18" fill="#f5f3ff" stroke="#7c3aed" stroke-width="3"/>
|
|
<text x="102" y="538" fill="#5b21b6" font-family="Arial, sans-serif" font-size="26" font-weight="700">Evidence принадлежит попытке, а не всей истории</text>
|
|
<text x="102" y="574" fill="#334e68" font-family="Arial, sans-serif" font-size="20">Trace, snapshot и action log отвечают на один вопрос конкретного запуска.</text>
|
|
<text x="102" y="602" fill="#334e68" font-family="Arial, sans-serif" font-size="20">Если evidence записан on-first-retry, он не заменяет контекст initial failure.</text>
|
|
|
|
<rect x="70" y="671" width="1040" height="72" rx="16" fill="#102a43"/>
|
|
<text x="103" y="715" fill="#ffffff" font-family="Arial, sans-serif" font-size="23" font-weight="700">Правка меняет один слой: locator, readiness, test data или evidence policy. Не все сразу.</text>
|
|
</svg>
|