bumicerts-monorepo · beta-auth-bumicert-regression

Beta auth + Bumicert regression test

@Kzoeps

Agentic UI/E2E regression pass against beta.fund.gainforest.app, focused on email login, handle/password login, Bumicert creation, and cleanup.

Date: 2026-05-14 · Target: beta.fund.gainforest.app · Account: kzoeps.gainforest.id · Tool: agent-browser · pass


Headline result

4
Flows passed
0
Blocked
1
UX note
2
PDS cleanup checks

No blocking regressions found. Email-code login completed using a sandbox inbox; handle/password login completed for kzoeps.gainforest.id; the authenticated user created and published a temporary Bumicert; the Bumicert was deleted through the UI; and the temporary site boundary was removed from Manage sites.

PDS cleanup confirmed. Before deletion, gainforest.id returned one org.hypercerts.claim.activity record for Beta QA Bumicert 2026-05-14. After cleanup, both org.hypercerts.claim.activity and app.certified.location returned {"records":[]}.

Test matrix

FlowResultSteps performedEvidenceNotes
Email-code login passed Opened beta app, launched sign-in modal, submitted sandbox email, inspected received mail.tm code email, entered code, approved gainforest.id OAuth grant, selected Nature Steward. modal, code screen, OAuth, signed-in result Verification code is redacted from committed artifacts.
Handle/password login passed Opened a clean session, switched to Handle, entered kzoeps with the built-in .gainforest.id suffix, completed password login on gainforest.id, and returned authenticated to beta. handle tab, PDS password form, authenticated result Password was read from a local file and is not committed. The beta handle UI splits username and domain suffix.
Bumicert creation passed Filled cover details, uploaded a temporary cover image, filled impact story, uploaded a GeoJSON site, added the account DID as contributor, selected the site, reviewed all sections, and published. cover, impact, site/contributor, review, publish PDS saw org.hypercerts.claim.activity/3mltbmf3znc2x before cleanup.
Cleanup/deletion passed Deleted the temporary Bumicert through the detail-page modal, then removed the temporary site from Manage sites and confirmed empty PDS collections. delete confirmation, delete success, site before cleanup, empty sites Final getRecord for the activity rkey returned RecordNotFound.

Flow evidence

1. Email-based login

  1. Started signed out from beta Explore and opened the sign-in modal.
  2. Submitted a mail.tm sandbox email inbox address.
  3. Received a Bumicerts sign-in code from noreply@gainforest.id, entered the code, and approved the OAuth authorization.
  4. Selected Nature Steward and landed in organization onboarding, confirming authentication.
Email sign-in modal
03Email tab in the sign-in modal.
Email code screen
05After email submit, beta asks for a six-digit code.
OAuth authorize after email code
06Code verification routed to gainforest.id OAuth authorization.
Email login final result
08Final email-login state: authenticated as a new Nature Steward onboarding account.

2. Handle/password login

  1. Opened beta in a fresh browser session and selected Handle login.
  2. Used the domain-suffix UI to submit kzoeps.gainforest.id.
  3. Completed gainforest.id password authentication.
  4. Returned to beta Explore with Karma Yoezer in the authenticated header and Manage navigation enabled.
Handle tab
11Beta's handle login splits username from a selectable .gainforest.id suffix.
GainForest password form
15gainforest.id password form for kzoeps.gainforest.id.
Authenticated Explore
17Password accepted; the app returned authenticated to Explore.

3. Bumicert creation and publish

  1. Started a new application from Create a Bumicert.
  2. Completed Cover Details with Beta QA Bumicert 2026-05-14, a generated cover, and ecological restoration work type.
  3. Completed Impact Details with a temporary QA story and short description.
  4. Uploaded qa-test-site.geojson, added the account DID, selected the site, and accepted permissions.
  5. Published successfully and opened the resulting detail page.
Cover details filled
20Cover Details completed with test cover image.
Impact story filled
22Impact story and short description completed.
Contributor and site selected
29Site Details valid after contributor, site, and permissions.
Review all valid
30Review page shows all sections valid.
Publish success
32Publish action completed with success message.
Published detail page
33Published Bumicert detail page before cleanup.

4. Cleanup

  1. Opened the destructive delete modal from the published Bumicert detail page.
  2. Confirmed deletion and observed the success state.
  3. Opened Manage sites, found the temporary site, and deleted it.
  4. Confirmed PDS collections were empty after cleanup.
Delete confirmation
34Deletion required explicit confirmation.
Delete success
35UI reported the Bumicert was deleted successfully.
Manage sites before cleanup
37The temporary site remained as a reusable site after Bumicert deletion.
Manage sites empty after cleanup
39Manage sites empty after removing the temporary boundary.

PDS verification

Before deletion: com.atproto.repo.listRecords on gainforest.id returned the temporary activity record:

uri: at://did:plc:xiplbhvrekwbag7bwazaow4g/org.hypercerts.claim.activity/3mltbmf3znc2x
cid: bafyreibbktjajbdynz7b7nlkhjjme6fq6myed62a2gddm4tegkedn23jqm
title: Beta QA Bumicert 2026-05-14

After cleanup: getRecord for that rkey returned RecordNotFound; final list checks returned {"records":[]} for org.hypercerts.claim.activity and app.certified.location.

Notes / issues observed

Auth and publish paths passed

Both login methods completed end-to-end and the publish action wrote the expected PDS activity record.

Handle field uses a suffix selector

Beta's handle login uses a Username field plus a .gainforest.id suffix selector. This worked, but it is easy to paste the full handle into the username field; helper text could make the expected format clearer.

Reusable site records are separate cleanup

As on alpha, deleting the Bumicert does not delete the site boundary created during the wizard. I removed the temporary site from Manage sites after deleting the Bumicert.

Artifacts

Screenshotsassets/*.png (39 captured; selected screenshots embedded above) Inbox metadataemail-login-message-redacted.json GeoJSON uploadqa-test-site.geojson PDS before cleanuppds-listrecords-redacted.txt PDS after cleanuppds-after-full-cleanup-raw.jsonl Diagnosticsemail-flow-diagnostics.txt · handle-flow-diagnostics.txt