The feed doesn't flash "Empty" while the persona is switched to
LoadSession said the session was loaded before SwitchPersona had set the persona, so a render in between (any CascadingState change) showed the feed a loaded session without a persona, and it said "Empty" until the persona came. The session counts as loaded once the persona is known, or couldn't be used. StreamingTests took that flash for the feed and, on a slower start, posted before the stream was open; it now waits until the app has subscribed to the home stream. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LsXgEaXee4GCU1hwYgPJXw
This commit is contained in:
1 parent
a3461c3ece
commit
eade4e399a
2 files changed
+20
-3
No files matched your search
@@ -17,6 +17,18 @@ namespace decePubClient.E2E.Actions
|
||||
var text = $"streamed {Guid.NewGuid():N}"[..21];
|
||||
await using var session = await SignIn.As(browser, persona);
|
||||
var page = session.Page;
|
||||
// the stream counts once the app has subscribed to the home feed on it (it opens after the first page is read,
|
||||
// later on a busy page)
|
||||
var subscribed = new TaskCompletionSource();
|
||||
page.WebSocket += (_, socket) =>
|
||||
{
|
||||
if (socket.Url.Contains("/api/v1/streaming"))
|
||||
socket.FrameSent += (_, frame) =>
|
||||
{
|
||||
if (frame.Text?.Contains("\"subscribe\"") == true && frame.Text.Contains("\"user\""))
|
||||
subscribed.TrySetResult();
|
||||
};
|
||||
};
|
||||
JsonNode post = null;
|
||||
try
|
||||
{
|
||||
@@ -24,10 +36,12 @@ namespace decePubClient.E2E.Actions
|
||||
{
|
||||
await page.GotoAsync($"{Pasture.Site}/");
|
||||
await page.EvaluateAsync("() => localStorage.removeItem('FeedFilter')");
|
||||
subscribed = new();
|
||||
await page.GotoAsync($"{Pasture.Site}/");
|
||||
await page.Locator("article[data-uri], [data-feed-empty]").First.WaitForAsync(new() { Timeout = 30000 });
|
||||
// the stream opens once the first page is shown
|
||||
await Task.Delay(1500);
|
||||
await subscribed.Task.WaitAsync(TimeSpan.FromSeconds(30));
|
||||
// (and the server has taken the subscription in)
|
||||
await Task.Delay(500);
|
||||
|
||||
post = await PersonaApi.Call(persona, "/api/v1/statuses", HttpMethod.Post, new JsonObject { ["status"] = text, ["visibility"] = "unlisted" });
|
||||
var fresh = page.GetByRole(AriaRole.Button, new() { Name = "1 new" });
|
||||
|
||||
Reference in new issue
Block a user