Learning
-
Evolved the Graph Layout Algorithm Through Iterative Specification:
- Started with a Multi-Pass Anchoring strategy (3 passes: anchor to Output, Input, then Islands)
- Simplified to Single Pass Sink-Anchored strategy after recognizing the complexity was unnecessary
-
Defined Comprehensive Test Cases for Invalid Graphs:
- Expanded from 2 test cases to 10 distinct scenarios covering edge cases:
- Invalid Source Direction (backward Output edge)
- Missing Output (Input Chain) / Missing Input (Output Chain)
- Isolated Chain (no Input, no Output - “Islands”)
- Mixed scenarios: Valid Chain + Missing Output/Input/Isolated Chain
- Input-Input and Output-Output connections
- Input-Only Graph (degenerate case)
- Each test case now has explicit, testable assertions for both layer indices and visual coordinates
- Expanded from 2 test cases to 10 distinct scenarios covering edge cases:
-
Established Two-Layer Testing Strategy:
- Layer 1 (Algorithm Logic): Use
data-layerattribute on nodes for E2E tests to verify computed layer indices - Layer 2 (Visual Rendering): Assert relative X-coordinates to verify correct rendering
- Benefits: Decouples logic verification from pixel-perfect rendering; failures indicate which layer failed
- Layer 1 (Algorithm Logic): Use