• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

kobotoolbox / kpi / 36734187808
83%
master: 76%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 30 Sep 2026 03:11PM UTC
Jobs 10
Files 920
Run time 4min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

30 Sep 2026 03:06PM UTC coverage: 83.083%. Remained the same
36734187808

push

github

web-flow
feat(frontend): profile details route blocker DEV-1850 (#7615)

### đŸ“Ŗ Summary

Required blank profile details cause a whole UI to be blocked until they
are filled in immediately after log in.

### 💭 Notes

An administrator can mark any of the `USER_METADATA_FIELDS` required.
Until now those were only ever collected at registration, and afterwards
only on instances that also had a Terms of Service announcement
configured.

They now get a "Complete your profile details" screen in the same visual
frame as the sign-in and registration screens.

Final of the four stacked PRs.

Changes here:
- A route blocker in the shape of the two existing ones:
`isProfileDetailsRouteBlockerActive()` in `routerUtils` plus a
component, chosen in `app.jsx` after `InvalidatedPassword` and
`TOSAgreement`. Terms first, details second
- The field collection is *moved* out of `tosForm.component.tsx`, not
duplicated
- No feature flag. Nothing here depends on the auth redesign
(`authRedesignEnabled` only gates the `/auth/*` routes), and since
`TOSForm` no longer collects the fields, flagging this off would leave
nothing collecting them at all
- `getBlankRequiredProfileFieldNames` mirrors
`CurrentUserSerializer.validate_extra_details` on purpose, including
Python truthiness for unticked checkboxes
- Unit tests in `profileDetails.tests.ts`, plus stories covering the MMO
member, the `organization_type: 'none'` skip, and the server rejecting a
save
- `stores/session.ts` gains an unrelated fix: `verifyLoginFailure` never
set `isAuthStateKnown`, so a failed `/me/` left `AllRoutes` spinning
forever
- `ProfileDetailsForm.tsx:120` has a cast and a TODO: Open API types are
incorrect DEV-2903

### 👀 Preview steps

1. â„šī¸ in Django admin, mark a few `USER_METADATA_FIELDS` required -
include `gender` and `newsletter_subscription`
2. â„šī¸ clear those fields on your account, then reload the app
3. đŸŸĸ notice the "Complete your profile details" scree - every configured
profile field with your current ... (continued)

10449 of 13809 branches covered (75.67%)

33338 of 40126 relevant lines covered (83.08%)

5.51 hits per line

Coverage Regressions

Lines Coverage ∆ File
4
87.74
-0.6% kobo/apps/openrosa/libs/utils/logger_tools.py
Jobs
ID Job ID Ran Files Coverage
1 36734187808.1 30 Sep 2026 03:11PM UTC 915
43.6
2 36734187808.2 30 Sep 2026 03:11PM UTC 915
49.65
3 36734187808.3 30 Sep 2026 03:12PM UTC 917
53.92
4 36734187808.4 30 Sep 2026 03:12PM UTC 915
52.67
5 36734187808.5 30 Sep 2026 03:15PM UTC 917
44.88
6 36734187808.6 30 Sep 2026 03:16PM UTC 917
59.56
7 36734187808.7 30 Sep 2026 03:19PM UTC 920
70.32
8 36734187808.8 30 Sep 2026 03:22PM UTC 917
50.9
9 36734187808.9 30 Sep 2026 03:23PM UTC 915
58.48
10 36734187808.10 30 Sep 2026 03:28PM UTC 918
67.99
Source Files on build 36734187808
  • Tree
  • List 920
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 0dc5112c on github
  • Prev Build on main (#36636413001)
  • Next Build on main (#36737726384)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc