Skip to content

Commit 580f03b

Browse files
committed
Stabilize release browser suites
1 parent c1150f3 commit 580f03b

4 files changed

Lines changed: 57 additions & 5 deletions

File tree

src/PrompterOne.Core/AI/Services/ScriptKnowledgeGraphSourceRanges.cs

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ namespace PrompterOne.Core.AI.Services;
44

55
internal static class ScriptKnowledgeGraphSourceRanges
66
{
7-
public static void AddRangeIfFound(
7+
public static bool AddRangeIfFound(
88
string content,
99
string nodeId,
1010
string label,
@@ -13,10 +13,50 @@ public static void AddRangeIfFound(
1313
var start = content.IndexOf(label, StringComparison.OrdinalIgnoreCase);
1414
if (start < 0)
1515
{
16-
return;
16+
return false;
1717
}
1818

1919
ranges.TryAdd(nodeId, CreateSourceRange(nodeId, content, start, start + label.Length));
20+
return true;
21+
}
22+
23+
public static bool AddSequentialTokenRangeIfFound(
24+
string content,
25+
string nodeId,
26+
string displayText,
27+
IDictionary<string, ScriptKnowledgeGraphSourceRange> ranges)
28+
{
29+
var tokens = displayText
30+
.Split([' ', '\t', '\r', '\n'], StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries)
31+
.Where(static token => token.Length > 0)
32+
.ToArray();
33+
if (tokens.Length == 0)
34+
{
35+
return false;
36+
}
37+
38+
var sourceStart = -1;
39+
var sourceEnd = -1;
40+
var searchStart = 0;
41+
foreach (var token in tokens)
42+
{
43+
var next = content.IndexOf(token, searchStart, StringComparison.OrdinalIgnoreCase);
44+
if (next < 0)
45+
{
46+
return false;
47+
}
48+
49+
if (sourceStart < 0)
50+
{
51+
sourceStart = next;
52+
}
53+
54+
sourceEnd = next + token.Length;
55+
searchStart = sourceEnd;
56+
}
57+
58+
ranges.TryAdd(nodeId, CreateSourceRange(nodeId, content, sourceStart, sourceEnd));
59+
return true;
2060
}
2161

2262
public static ScriptKnowledgeGraphSourceRange CreateSourceRange(

src/PrompterOne.Core/AI/Services/ScriptKnowledgeGraphTokenizerSimilarityExtractor.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,10 @@ private static IReadOnlyDictionary<string, ScriptKnowledgeGraphNode> AddTokenize
7272

7373
nodes.TryAdd(node.Id, node);
7474
added[node.Id] = node;
75-
ScriptKnowledgeGraphSourceRanges.AddRangeIfFound(content, node.Id, node.Label, ranges);
75+
if (!ScriptKnowledgeGraphSourceRanges.AddRangeIfFound(content, node.Id, entity.Label, ranges))
76+
{
77+
ScriptKnowledgeGraphSourceRanges.AddSequentialTokenRangeIfFound(content, node.Id, entity.Label, ranges);
78+
}
7679
}
7780

7881
return added;

tests/PrompterOne.Web.UITests.Editor/Editor/EditorLocalHistoryFlowTests.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ await EditorIsolatedDraftDriver.CreateSeededDraftAsync(
8787
await Expect(page.GetByTestId(UiTestIds.Settings.FileAutoSave))
8888
.ToHaveAttributeAsync(BrowserTestConstants.State.EnabledAttribute, BrowserTestConstants.State.DisabledValue);
8989

90-
await page.GotoAsync(draftUrl);
90+
await OpenDraftRouteAsync(page, draftUrl, "editor-local-history-open-autosave-disabled");
9191
await EditorMonacoDriver.WaitUntilReadyAsync(page);
9292
await page.GetByTestId(UiTestIds.Editor.ToolsTab).ClickAsync();
9393
await Expect(page.GetByTestId(UiTestIds.Editor.ToolsPanel)).ToBeVisibleAsync();
@@ -116,7 +116,7 @@ await BrowserRouteDriver.ReloadPageAsync(
116116
await Expect(page.GetByTestId(UiTestIds.Settings.FileAutoSave))
117117
.ToHaveAttributeAsync(BrowserTestConstants.State.EnabledAttribute, BrowserTestConstants.State.EnabledValue);
118118

119-
await page.GotoAsync(draftUrl);
119+
await OpenDraftRouteAsync(page, draftUrl, "editor-local-history-open-autosave-enabled");
120120
await EditorMonacoDriver.WaitUntilReadyAsync(page);
121121
await page.GetByTestId(UiTestIds.Editor.ToolsTab).ClickAsync();
122122
await Expect(page.GetByTestId(UiTestIds.Editor.ToolsPanel)).ToBeVisibleAsync();
@@ -145,4 +145,10 @@ await BrowserRouteDriver.ReloadPageAsync(
145145

146146
private static string CurrentRoute(IPage page) =>
147147
new Uri(page.Url).PathAndQuery;
148+
149+
private static async Task OpenDraftRouteAsync(IPage page, string draftUrl, string failureLabel)
150+
{
151+
var route = new Uri(draftUrl).PathAndQuery;
152+
await BrowserRouteDriver.OpenPageAsync(page, route, UiTestIds.Editor.Page, failureLabel);
153+
}
148154
}

tests/PrompterOne.Web.UITests.Shell/Localization/LocalizationFlowTests.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ await UiInteractionDriver.ClickAndContinueAsync(
4444
UiTestIds.Settings.LanguageSelect,
4545
BrowserTestConstants.Localization.FrenchCultureName)));
4646
await page.WaitForLoadStateAsync(LoadState.DOMContentLoaded);
47+
await ShellRouteDriver.OpenSettingsAsync(page);
48+
await UiInteractionDriver.ClickAndContinueAsync(page.GetByTestId(UiTestIds.Settings.NavLanguage));
49+
await SettingsCardDriver.EnsureExpandedAsync(page, UiTestIds.Settings.LanguagePreferencesCard);
4750

4851
await Expect(page.GetByTestId(UiTestIds.Settings.LanguageSelect))
4952
.ToContainTextAsync(BrowserTestConstants.Localization.FrenchLanguageLabel);

0 commit comments

Comments
 (0)