diff --git a/docs/pubky-profile-manual-e2e.md b/docs/pubky-profile-manual-e2e.md index 2a9b524b..0dceb624 100644 --- a/docs/pubky-profile-manual-e2e.md +++ b/docs/pubky-profile-manual-e2e.md @@ -219,6 +219,7 @@ Use this table to verify persistence expectations. Fill in observed behavior if - `@pubky_profile_2` — create → copy/verify pubky → update profile → add one staging contact → `launchFreshApp`, verify profile + contact → **wait for backup, restore wallet from seed**, verify profile + pubky + contact → remove link and tag → delete profile → create profile again, same pubky. - `@pubky_profile_3` — invalid pubky and self-add validation → add both staging contacts → delete both contacts and verify rows are absent. - `@pubky_profile_4` — Wallet A profile edited as a contact on Wallet B remains a local contact edit; restoring Wallet A verifies its own profile was not changed. + - `@pubky_profile_5` — after create, home-scan `pubkyauth://direct_signup` and expect **Already signed in** (Send/manual does not process signup). - **Known gaps in automation**: Ring import, avatar add/remove, scan-QR contact add, paste-from-clipboard contact add, duplicate-add behavior, contacts list header/My Profile row/empty copy, contact refresh behavior, profile/contact field-boundary behavior, and network/error paths. - **Tags**: suite `@pubky_profile`; tests `@pubky_profile_1`, `@pubky_profile_2`, …; reserve e.g. `@pubky_ring_required` if you add Ring-specific specs later. - **Use `ciIt()`** instead of `it()` in this suite so it matches the repo’s `ci_run_*` / lockfile retry pattern when you wire runs up. diff --git a/test/specs/pubky-profile.e2e.ts b/test/specs/pubky-profile.e2e.ts index cbdaa422..7a62cdd1 100644 --- a/test/specs/pubky-profile.e2e.ts +++ b/test/specs/pubky-profile.e2e.ts @@ -261,4 +261,22 @@ describe('@pubky @pubky_profile - Pubky profile', () => { } ); }); + + // Scanner signup from #1224 / #724. Same @pubky_profile suite; needs BACKEND=regtest + // (staging Homegate). Send/manual ignores pubkyauth:// — only the home scanner handles it. + // Ring QR (`pubkyring://signup`) and Import-with-Ring stay manual (charter C). + describe('Scanner signup (no Ring)', () => { + ciIt('@pubky_profile_5 - After profile, home scanner signup says already signed in', async () => { + const directSignupUrl = + 'pubkyauth://direct_signup?hs=ufibwbmed6jeq9k4p583go95wofakh9fwpp4k734trq79pd9u1uy'; + + await createProfile({ name: 'Signup Scanner' }); + await doNavigationClose(); + + await enterAddressViaScanPrompt(directSignupUrl, { acceptCameraPermission: true }); + await elementByText('Already signed in', 'exact').waitForDisplayed({ timeout: 15_000 }); + await expect(elementById('CreateProfileUsername')).not.toBeDisplayed(); + await expect(elementById('PubkyAuthAuthorize')).not.toBeDisplayed(); + }); + }); });