Summary
When if-fragments are nested three levels deep, the SVG renderer flattens the innermost nesting instead of preserving it. The HTML renderer handles this correctly.
Reproduction
DSL:
if(x) {
if(y) {
if(z) {
A.method()
}
}
}
Expected (HTML renderer behaviour): Three visually nested if-fragment boxes — if(z) inside if(y) inside if(x).
Actual (SVG renderer behaviour): if(z) is rendered at the same visual level as if(y) instead of being nested inside it.
Impact
Diagrams with triple-nested conditionals are rendered incorrectly in the SVG output path.
Environment
- Renderer: SVG only (HTML is correct)
- Reproducible via compare-case tool:
/e2e/tools/compare-case.html?case=edge-nested-if-triple
- Edge case key in
e2e/data/compare-cases.js: edge-nested-if-triple
Summary
When if-fragments are nested three levels deep, the SVG renderer flattens the innermost nesting instead of preserving it. The HTML renderer handles this correctly.
Reproduction
DSL:
Expected (HTML renderer behaviour): Three visually nested if-fragment boxes —
if(z)insideif(y)insideif(x).Actual (SVG renderer behaviour):
if(z)is rendered at the same visual level asif(y)instead of being nested inside it.Impact
Diagrams with triple-nested conditionals are rendered incorrectly in the SVG output path.
Environment
/e2e/tools/compare-case.html?case=edge-nested-if-triplee2e/data/compare-cases.js:edge-nested-if-triple