Skip to content

Commit 8ba8708

Browse files
committed
Stabilize editor browser regressions
1 parent 525159f commit 8ba8708

4 files changed

Lines changed: 37 additions & 4 deletions

File tree

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,13 @@ public async Task EditorScreen_LargeDraftPasteKeepsFollowupTypingResponsive()
2424
EditorLargeDraftPerformanceTestData.GetVisibleDraftLength(draft) +
2525
EditorLargeDraftPerformanceTestData.FollowupTypingText.Length;
2626

27+
await EditorFileStorageTestSeeder.SeedAutoSaveDisabledAsync(page);
2728
await page.GotoAsync(BrowserTestConstants.Routes.Editor);
2829
await EditorMonacoDriver.WaitUntilReadyAsync(page);
2930

3031
await page.EvaluateAsync(
3132
"""
32-
(args) => {
33+
async (args) => {
3334
const input = document.querySelector(`[data-test="${args.inputTestId}"]`);
3435
const overlay = document.querySelector(`[data-test="${args.overlayTestId}"]`);
3536
const harness = window[args.harnessGlobalName];
@@ -56,9 +57,9 @@ await page.EvaluateAsync(
5657
});
5758
}, { passive: true });
5859
59-
harness.setText(args.stageTestId, args.draftText);
60+
await harness.setText(args.stageTestId, args.draftText);
6061
harness.focus(args.stageTestId);
61-
harness.setSelection(args.stageTestId, input.value.length, input.value.length, true);
62+
await harness.setSelection(args.stageTestId, input.value.length, input.value.length, true);
6263
6364
window.__editorLargeDraftProbe = { longTasks, observer, samples };
6465
}
@@ -128,6 +129,7 @@ public async Task EditorScreen_LargeDraftSegmentNavigationMovesCaretAndTargetEpi
128129
var targetSegmentLabel = EditorLargeDraftPerformanceTestData.GetSegmentLabel(targetSegmentNumber);
129130
var targetSegment = page.GetByTestId(UiTestIds.Editor.SegmentNavigation(targetSegmentNumber - 1));
130131

132+
await EditorFileStorageTestSeeder.SeedAutoSaveDisabledAsync(page);
131133
await page.GotoAsync(BrowserTestConstants.Routes.EditorLargeDraft);
132134
await EditorMonacoDriver.WaitUntilReadyAsync(page);
133135

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public sealed class EditorSelectionRenderRegressionTests(StandaloneAppFixture fi
1313
public Task EditorScreen_SetTextThenSelectStillRendersFloatingBar() =>
1414
RunPageAsync(async page =>
1515
{
16+
await EditorFileStorageTestSeeder.SeedAutoSaveDisabledAsync(page);
1617
await page.GotoAsync(BrowserTestConstants.Routes.EditorDemo);
1718
await Expect(page.GetByTestId(UiTestIds.Editor.Page)).ToBeVisibleAsync();
1819
await EditorMonacoDriver.WaitUntilReadyAsync(page);
@@ -28,6 +29,7 @@ await Expect(page.GetByTestId(UiTestIds.Editor.FloatingBar))
2829
public Task EditorScreen_BackwardSelection_SelectsExpectedTrailingCharactersFromWordEnd() =>
2930
RunPageAsync(async page =>
3031
{
32+
await EditorFileStorageTestSeeder.SeedAutoSaveDisabledAsync(page);
3133
await page.GotoAsync(BrowserTestConstants.Routes.EditorDemo);
3234
await Expect(page.GetByTestId(UiTestIds.Editor.Page)).ToBeVisibleAsync();
3335
await EditorMonacoDriver.WaitUntilReadyAsync(page);
@@ -48,6 +50,7 @@ await EditorMonacoDriver.SetBackwardSelectionFromTextEndAsync(
4850
public Task EditorScreen_BackwardSelection_CanExtendAcrossLineBreaks() =>
4951
RunPageAsync(async page =>
5052
{
53+
await EditorFileStorageTestSeeder.SeedAutoSaveDisabledAsync(page);
5154
await page.GotoAsync(BrowserTestConstants.Routes.EditorDemo);
5255
await Expect(page.GetByTestId(UiTestIds.Editor.Page)).ToBeVisibleAsync();
5356
await EditorMonacoDriver.WaitUntilReadyAsync(page);

tests/PrompterOne.Web.UITests/Support/BrowserTestConstants.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ public static class Editor
286286
public const double MinimumContentLeftWithLineNumbersPx = 36;
287287
public const double MaximumLayoutViewportRightGapPx = 2;
288288
public const double MinimumMainPanelGrowthOnCollapsePx = 96;
289-
public const double MaximumCollapsedMetadataRailWidthPx = 64;
289+
public const double MaximumCollapsedMetadataRailWidthPx = 72;
290290
public const double MetadataRailDockGapPx = 10;
291291
public const double MetadataRailDockTolerancePx = 2;
292292
public const string GutterFirstLineNumberText = "1";
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using System.Text.Json;
2+
using Microsoft.Playwright;
3+
using PrompterOne.Shared.Services;
4+
using PrompterOne.Shared.Settings.Models;
5+
6+
namespace PrompterOne.Web.UITests;
7+
8+
internal static class EditorFileStorageTestSeeder
9+
{
10+
private static readonly JsonSerializerOptions JsonOptions = new(JsonSerializerDefaults.Web);
11+
private static readonly string BrowserFileStorageSettingsKey =
12+
string.Concat(BrowserStorageKeys.SettingsPrefix, BrowserFileStorageSettings.StorageKey);
13+
14+
internal static Task SeedAutoSaveDisabledAsync(IPage page)
15+
{
16+
var settingsJson = JsonSerializer.Serialize(
17+
BrowserFileStorageSettings.Default with { FileAutoSaveEnabled = false },
18+
JsonOptions);
19+
20+
return page.EvaluateAsync(
21+
BrowserTestConstants.Localization.SetLocalStorageScript,
22+
new object[]
23+
{
24+
BrowserFileStorageSettingsKey,
25+
settingsJson
26+
});
27+
}
28+
}

0 commit comments

Comments
 (0)