Stand up a parent/child E2E account matrix in the live spikersoft realm for testing parent↔child interactions (chat visibility, permission masking, family isolation, approval states), and extend the tooling so tests can select any persona.
Accounts created (prod, via the real register + child-account-approve flow)
e2e-parent1, e2e-parent2 — adults (now IsParent); Family A / Family B heads.
e2e-childpending — request submitted, left unapproved (pending-review state).
Note: the register endpoint rejects dots in usernames, so these use hyphens (e2e-parent1), unlike the hand-made e2e.staff / e2e.student.
Credentials
All five usable personas stored in OpenBao secret/ci/angular/e2e as <persona>_username / <persona>_password, alongside the existing staff_* / student_* (merge-patched — existing fields untouched).
spikersoft-infrastructure: openbao/provision-angular-secrets.sh now covers all 7 personas via a read-merge (also fixes a latent bug where its kv put blanked any password not re-entered).
Follow-up
e2e-childskew — a child with IsMinor=false + IsChildAccount=true to reproduce the parent-couldn't-see-child asymmetry (GetChildrenQueryHandler filters on IsMinor only). Needs setting an adult birthdate on a child via the normal profile update. Optional.
## What
Stand up a parent/child E2E account matrix in the live `spikersoft` realm for testing parent↔child interactions (chat visibility, permission masking, family isolation, approval states), and extend the tooling so tests can select any persona.
## Accounts created (prod, via the real register + child-account-approve flow)
- `e2e-parent1`, `e2e-parent2` — adults (now `IsParent`); Family A / Family B heads.
- `e2e-child1` (approved, permissive), `e2e-child2` (approved, restrictive), `e2e-child3` (approved, moderate) — real Keycloak users + child profiles + parent links.
- `e2e-childpending` — request submitted, left **unapproved** (pending-review state).
Note: the register endpoint rejects dots in usernames, so these use hyphens (`e2e-parent1`), unlike the hand-made `e2e.staff` / `e2e.student`.
## Credentials
All five usable personas stored in OpenBao `secret/ci/angular/e2e` as `<persona>_username` / `<persona>_password`, alongside the existing `staff_*` / `student_*` (merge-patched — existing fields untouched).
## Tooling changes (this issue's PRs)
- **spikersoft-angular**: `hydrate-env-from-bao.mjs` gains persona selection — `pnpm e2e:secrets -- --identity <name>` (or shorthand `--child1`), keeping `--staff` / default-student.
- **spikersoft-infrastructure**: `openbao/provision-angular-secrets.sh` now covers all 7 personas via a read-merge (also fixes a latent bug where its `kv put` blanked any password not re-entered).
## Follow-up
`e2e-childskew` — a child with `IsMinor=false` + `IsChildAccount=true` to reproduce the parent-couldn't-see-child asymmetry (`GetChildrenQueryHandler` filters on `IsMinor` only). Needs setting an adult birthdate on a child via the normal profile update. Optional.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Done. The parent/child E2E account matrix is live in the spikersoft realm (2 parents + 3 approved children with distinct permission profiles + 1 pending request), all credentials are in OpenBao secret/ci/angular/e2e (verified — 14 fields, existing staff_*/student_* untouched), and the tooling shipped:
spikersoft-infrastructure #137 (merged) — provision-angular-secrets.sh covers all 7 personas via a read-merge (also fixed the latent password-blanking bug).
Closing. The optional e2e-childskew account (child with IsMinor=false + IsChildAccount=true to reproduce the GetChildrenQueryHandlerIsMinor-only asymmetry) is not built — file a separate issue if it's wanted.
Done. The parent/child E2E account matrix is live in the `spikersoft` realm (2 parents + 3 approved children with distinct permission profiles + 1 pending request), all credentials are in OpenBao `secret/ci/angular/e2e` (verified — 14 fields, existing `staff_*`/`student_*` untouched), and the tooling shipped:
- spikersoft-angular **#514** (merged) — `pnpm e2e:secrets -- --identity <persona>` / shorthand `--child1`.
- spikersoft-infrastructure **#137** (merged) — `provision-angular-secrets.sh` covers all 7 personas via a read-merge (also fixed the latent password-blanking bug).
Closing. The optional `e2e-childskew` account (child with `IsMinor=false` + `IsChildAccount=true` to reproduce the `GetChildrenQueryHandler` `IsMinor`-only asymmetry) is not built — file a separate issue if it's wanted.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What
Stand up a parent/child E2E account matrix in the live
spikersoftrealm for testing parent↔child interactions (chat visibility, permission masking, family isolation, approval states), and extend the tooling so tests can select any persona.Accounts created (prod, via the real register + child-account-approve flow)
e2e-parent1,e2e-parent2— adults (nowIsParent); Family A / Family B heads.e2e-child1(approved, permissive),e2e-child2(approved, restrictive),e2e-child3(approved, moderate) — real Keycloak users + child profiles + parent links.e2e-childpending— request submitted, left unapproved (pending-review state).Note: the register endpoint rejects dots in usernames, so these use hyphens (
e2e-parent1), unlike the hand-madee2e.staff/e2e.student.Credentials
All five usable personas stored in OpenBao
secret/ci/angular/e2eas<persona>_username/<persona>_password, alongside the existingstaff_*/student_*(merge-patched — existing fields untouched).Tooling changes (this issue's PRs)
hydrate-env-from-bao.mjsgains persona selection —pnpm e2e:secrets -- --identity <name>(or shorthand--child1), keeping--staff/ default-student.openbao/provision-angular-secrets.shnow covers all 7 personas via a read-merge (also fixes a latent bug where itskv putblanked any password not re-entered).Follow-up
e2e-childskew— a child withIsMinor=false+IsChildAccount=trueto reproduce the parent-couldn't-see-child asymmetry (GetChildrenQueryHandlerfilters onIsMinoronly). Needs setting an adult birthdate on a child via the normal profile update. Optional.🤖 Generated with Claude Code
Done. The parent/child E2E account matrix is live in the
spikersoftrealm (2 parents + 3 approved children with distinct permission profiles + 1 pending request), all credentials are in OpenBaosecret/ci/angular/e2e(verified — 14 fields, existingstaff_*/student_*untouched), and the tooling shipped:pnpm e2e:secrets -- --identity <persona>/ shorthand--child1.provision-angular-secrets.shcovers all 7 personas via a read-merge (also fixed the latent password-blanking bug).Closing. The optional
e2e-childskewaccount (child withIsMinor=false+IsChildAccount=trueto reproduce theGetChildrenQueryHandlerIsMinor-only asymmetry) is not built — file a separate issue if it's wanted.