Settings: change the login's password, or delete the login
A Login section in Settings changes the root's password (the current one given) and deletes the whole login, every persona with it, after its password and an explicit "I understand"; the client then signs out. Both use PrivaPub's existing /clientapi/user routes. The e2e signs up a login of its own, changes its password and deletes it, checking each against PrivaPub's login. Signing in now waits for either the feed or an enabled persona chooser, so a login with one persona (which goes on by itself) and a new persona's empty feed both sign in. 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
0bbab720a5
commit
228708c328
11 files changed
+258
-6
No files matched your search
@@ -52,12 +52,25 @@ namespace decePubClient.E2E.Support
|
||||
await page.Locator("input[autocomplete=username]").FillAsync(persona.Root);
|
||||
await page.Locator("input[autocomplete=current-password]").FillAsync(persona.Password);
|
||||
await page.Locator("button[type=submit]").ClickAsync();
|
||||
// a root with several personas picks one; with one it goes straight on
|
||||
var chooser = page.Locator("section button").Filter(new() { HasText = persona.UserName + "@privapub.test" });
|
||||
await chooser.Or(page.Locator("article[data-uri]")).First.WaitForAsync(new() { Timeout = 30000 });
|
||||
if (await chooser.CountAsync() > 0)
|
||||
await chooser.First.ClickAsync();
|
||||
// a root with several personas picks one; one with a single persona goes on by itself, its button disabled while it
|
||||
// does. Only the login page's chooser is clicked: the feed's persona switcher names the persona too
|
||||
var chooser = page.Locator("section button:enabled").Filter(new() { HasText = persona.UserName + "@privapub.test" });
|
||||
var until = DateTime.UtcNow.AddSeconds(30);
|
||||
while (new Uri(page.Url).AbsolutePath != "/" && DateTime.UtcNow < until)
|
||||
{
|
||||
if (await chooser.CountAsync() > 0)
|
||||
try
|
||||
{
|
||||
await chooser.First.ClickAsync(new() { Timeout = 2000 });
|
||||
}
|
||||
catch (TimeoutException)
|
||||
{
|
||||
}
|
||||
await page.WaitForTimeoutAsync(250);
|
||||
}
|
||||
await page.WaitForURLAsync(url => new Uri(url).AbsolutePath == "/", new() { Timeout = 30000 });
|
||||
// (a new persona's feed is empty)
|
||||
await page.Locator("article[data-uri], [data-feed-empty]").First.WaitForAsync(new() { Timeout = 30000 });
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user