diff --git a/PlotLine.Tests/Program.cs b/PlotLine.Tests/Program.cs index 8e5fb3c..bf5179f 100644 --- a/PlotLine.Tests/Program.cs +++ b/PlotLine.Tests/Program.cs @@ -941,12 +941,23 @@ static void StoryIntelligenceReviewModulePagesOmitWizardChrome() Assert(view.Contains("
Story Intelligence
", StringComparison.Ordinal), $"{viewName} should use a simple module header eyebrow."); Assert(view.Contains("StoryIntelligenceReviewCentre", StringComparison.Ordinal), $"{viewName} should return to Review Centre."); Assert(view.Contains($">{title}", StringComparison.Ordinal), $"{viewName} should keep its focused module title."); + Assert(view.Contains("summary class=\"story-review-card-header\"", StringComparison.Ordinal), $"{viewName} should give each candidate panel a clear shared header."); Assert(!view.Contains("StoryIntelligenceComplete", StringComparison.Ordinal), $"{viewName} should not route to the old final wizard step."); foreach (var marker in forbidden) { Assert(!view.Contains(marker, StringComparison.OrdinalIgnoreCase), $"{viewName} should not render obsolete wizard chrome: {marker}."); } } + + var stylesheet = File.ReadAllText(Path.Combine(root, "wwwroot/css/onboarding.css")); + Assert(stylesheet.Contains(".story-review-card-header", StringComparison.Ordinal), "Shared review candidate header CSS should be present."); + Assert(stylesheet.Contains("justify-content: space-between;", StringComparison.Ordinal), "Review candidate headers should align title and status consistently."); + Assert(stylesheet.Contains("border-bottom: 1px solid rgba(31, 42, 68, .1);", StringComparison.Ordinal), "Review candidate headers should be visually separated from card bodies."); + + var knowledgeView = File.ReadAllText(Path.Combine(root, "Views/Onboarding/StoryIntelligenceKnowledge.cshtml")); + var relationshipsView = File.ReadAllText(Path.Combine(root, "Views/Onboarding/StoryIntelligenceRelationships.cshtml")); + Assert(knowledgeView.Contains("@candidate.KnowledgeStatement", StringComparison.Ordinal), "Knowledge review headers should foreground the knowledge item."); + Assert(relationshipsView.Contains("@candidate.CharacterAName / @candidate.CharacterBName", StringComparison.Ordinal), "Relationship review headers should foreground both participants."); } static void StoryIntelligenceDownstreamReviewUsesCompletedSceneAnalysis() diff --git a/PlotLine/Views/Onboarding/StoryIntelligenceAssets.cshtml b/PlotLine/Views/Onboarding/StoryIntelligenceAssets.cshtml index 5a4fbb3..9562b64 100644 --- a/PlotLine/Views/Onboarding/StoryIntelligenceAssets.cshtml +++ b/PlotLine/Views/Onboarding/StoryIntelligenceAssets.cshtml @@ -55,7 +55,7 @@ { var candidate = assetCandidates[i];