Skip to main content

Onboarding paths & starter seeding — Manual Test Checklist

Everything here is done by clicking in the app. You do not need code, a database tool, or a browser developer console. Anything that does need one is in Engineer checks at the end — skip those and say so in your report.

What this verifies. After signing in, the app asks two short questions and uses the answers for three things: whether it asks to connect Google, which tab you land on, and which starter documents appear in your sidebar. This checklist confirms each path does what it promises, that nobody lands in an empty app, and that one account never inherits another's answers.

Companion checklist: Free-first trial and claim. The trial offer appears at the same two moments — first load and arriving from a template link — so run that one alongside this.


Before you start

BuildThe staging desktop build. The QA panel used below does not exist in the production app.
AccountsOne Google account is enough. Reset it between cases as described below — you do not need a collection of them.
Also usefulA personal @gmail.com account, for case 4 — prod only, since staging accepts company-workspace accounts only.

Two ways to start over. They are not the same:

  • Deleting and re-signing-in — the only way to see the questions and get a new sidebar seeded. Use this wherever a case says "fresh account".

    A "fresh account" below does not mean a new Google address. Reset the one you have: if you ever set a plan through QA → Entitlements, put it back to Basic and Apply first (a QA-set plan blocks deletion), then Settings → Account → Delete account → type DELETE ACCOUNT → confirm. Quit and reopen the app before signing in again, or it will skip onboarding. On the web app use a private window instead — the "onboarding done" marker is stored per browser, so a browser you have used before skips onboarding whatever the account. Also remove the app at myaccount.google.com/connections — otherwise Google re-grants silently and you never see the consent screen or the calendar prompt, which several cases below depend on.

  • QA → Surfaces → Onboarding → Replay ("Replay onboarding (keep auth)") — walks the permission steps and the questions again on the same account, keeping the Google sign-in. Handy for re-reading the questions, but it does not give you a new starter sidebar, because starter documents are only ever created once per account.

The four "Where should we start?" answers decide the path:

AnswerAsks to connect Google?Lands on
Auto-capture meeting notesYes — for your calendarNotes
Triage my email and SlackYes — for your accountInbox
Define my top 3 prioritiesNoPlanning
Speak to my computerNoVoice Memos

The Inbox tab is switched off in the production app, so the triage path is only testable on staging. Note it as staging-only if you run it.

Expected starter documents:

First answerSidebar, in order
For work, For personal lifeADHD Daily Task Organizer, The Gratitude Jar, Leaves on a Stream, Time Blocking Daily Planner, 30-Day Habit Tracker
For schoolStudy Planner, Assignment Tracker, The Gratitude Jar, Leaves on a Stream, 30-Day Habit Tracker

A — The questions

1. Two questions, in a fixed order

Account: fresh.

Steps Sign in, read the first question, answer it, read the second, then go Back and forward again.

Check

  • The first question is "What will you use HabitatZero for?" with For work, For personal life, For school — in that order, on every fresh account
  • The second is "Where should we start?" with the four answers from the table above
  • The counter reads "Step 1 of 2", then "Step 2 of 2" — never "of 3"
  • The order of the second question's answers varies between fresh accounts; the first question's order never does
  • These two older questions never appear: "What would make tomorrow feel lighter?" and "What usually breaks your flow?"
  • Back returns to the first question with your answer still selected, and the second question's answers do not reshuffle when you go forward again

B — Where each answer takes you

2. The two answers that need no Google account

Account: one fresh account per answer.

Steps Complete the questions choosing Define my top 3 priorities, then repeat with Speak to my computer.

Check

  • Neither path ever shows a "Connect Google Calendar" screen
  • Both reach the permissions screen (headed "We hear you.")
  • Priorities lands on Planning; speaking lands on Voice Memos
  • Connecting a calendar is still possible afterwards, from the Meetings tab

3. The two answers that do need Google, in their own words

Account: one fresh account per answer.

Check

  • Triage my email and Slack says "To triage your email, connect your Google account…"
  • Auto-capture meeting notes says "To auto-capture your meeting notes, connect your calendar…"
  • Both then show permissions; triage lands on Inbox (staging only), meeting notes on Notes

4. A personal Google account is only warned on the path that needs a work calendar

Prod only. Staging accepts company-workspace accounts only.

Account: one personal address such as @gmail.com, reset between the two paths with the same four steps as above. Personal on purpose — the case is about which path raises the warning for a personal account, not about work-domain detection.

Steps One answers Define my top 3 priorities; the other answers Auto-capture meeting notes.

Check

  • The priorities account reaches the app and lands on Planning — no "Personal calendar" warning at all
  • The meeting-notes account does see the calendar screen, and the warning still applies to it

5. A failed calendar connection is not a dead end

Account: fresh, answering Auto-capture meeting notes.

Steps

  1. Click Connect and refuse access in the browser (or disconnect from the network first).
  2. Click Skip for now.
  3. Quit the app and reopen it.

Check

  • Skip for now appears only after a failed attempt, never before it
  • Skipping continues to permissions and then to your landing tab — signing out is not the only way forward
  • After reopening, the calendar screen does not come back

C — The starter sidebar

6. "For school" gives a different sidebar

Account: fresh.

Steps Answer For school, then any second answer. Wait for the sidebar to fill.

Check

  • The sidebar holds the school set from the table above, with Study Planner and Assignment Tracker first
  • ADHD Daily Task Organizer and Time Blocking Daily Planner are absent — this is a swap, so there should still be five documents, not seven

7. Work and personal both give the default sidebar

Account: two fresh accounts.

Steps Answer For work on one, For personal life on the other.

Check

  • Both sidebars hold the default five, with ADHD Daily Task Organizer first
  • Neither account has more than five starter documents

8. Waiting too long to answer gets you the default sidebar, not an empty one

Account: fresh.

Steps

  1. Sign in, and quit at the first question without answering it.
  2. Wait six minutes. This is the point of the case — the app waits about five minutes for an answer before giving up and preparing the default set, so skipping the wait invalidates it.
  3. Reopen the app. The questions appear again — they are still unanswered. Now answer For school and any second answer, and finish the permission steps.

Check

  • The sidebar holds the default five (ADHD Daily Task Organizer first) — not the school set, even though you just answered "For school"
  • The app never shows an empty sidebar with nothing to open

That looks wrong and is right: once the wait expired, the app committed to the default set, and an answer arriving afterwards cannot change what was already prepared. An empty sidebar here, or a school sidebar, are both failures — the first means nobody prepared anything, the second means the commitment can be overwritten later.

Answering the questions is unavoidable in this case: the app will not show a workspace until they are answered, so there is no way to observe "never answered at all" from the UI. Which mechanism did the preparing is an engineer check.

9. An existing account is never re-seeded

Account: an account that has used the app since before starter documents existed — ask the team which one, or reuse any account you signed in with in an earlier release.

Check

  • Signing in adds no starter documents to that account
  • It is not asked the questions again
  • Signing out and in repeatedly never adds a second copy of anything

10. One account never inherits another's path

Account: two accounts on one machine.

Steps

  1. First account: answer Auto-capture meeting notes, force the connection to fail, then Skip for now.
  2. Sign out. Sign in with a second, fresh account and answer Triage my email and Slack.

Check

  • The second account is shown a Google connect screen — the first account's skip did not carry over
  • It lands on Inbox, not on the first account's tab
  • Its sidebar is its own, seeded for its own answer

Account: fresh. Run this twice — once in a browser, once in the desktop app — because the two journeys differ and only one of them involves leaving a web page and coming back.

Setup

Way inDo this
Browser (how a real visitor arrives)Open the template page on the staging site, click Personalize this template, then Sign in with Google.
Desktop appWith the staging app installed, open the web app's template link and use the page's option to open the app.

The desktop way in uses the web app's own landing page, which only appears when you are signed out: it leads with Download the desktop app and carries a small Already have the app? Open it link underneath. Use that link — the Download button fetches the production build.

Check (both ways in, unless marked)

  • Signing in from the link goes straight to that template's own screen — no questions, no calendar step
  • No copy exists yet. The template screen is the template, not your document — check the sidebar
  • Clicking Use this template then creates your copy, exactly one of it
  • Refreshing the page before clicking creates no copy at all (browser)
  • The landing page appears before sign-in on the URL without ?intent=google, and its "open the app" option launches the installed staging build (browser)
  • Signing out and in as a different fresh account still shows that account the questions

The trial offer that appears when you click Use this template is covered by Free-first trial and claim section B — this case is only about the questions being skipped and the copy being created once.

12. Signing up with email/password reaches the same path as Google

Account: fresh, using Use email instead → Create an account from the sign-in screen instead of Google sign-in.

Steps Complete sign-up with a new staging email/password account, then answer the two questions the same as any fresh account.

Check

  • The same two questions appear, in the same fixed order, with no Google-specific wording
  • Choosing an answer that needs Google (Auto-capture meeting notes or Triage my email and Slack) still shows the Google connect screen — a password account is not silently skipped past it
  • The starter sidebar is seeded exactly as it would be for a Google account answering the same way (see the table under "Before you start")
  • Signing out and back in with the same password account does not repeat onboarding or reseed the sidebar

Reporting

Note pass, fail or skipped per case, and for a failure say what you saw instead. Always record which account and which answers you used — nearly everything here is once-per-account, so the account is half the evidence.


Engineer checks

These need a developer or a database tool, so they are not part of the QA pass. They are listed so the coverage is not lost.

  • The stored answers. That the first answer and the landing intent are actually persisted against the account, and that the starter set recorded for the workspace matches the answer given.
  • The background sweep. Case 8 proves the outcome — a sidebar appears without an answer — but not which mechanism produced it. Confirming the scheduled sweep did it, rather than the fallback that runs on the next request, needs the backend logs.
  • A failed answer submission. Completing the questions while the backend is unreachable, then confirming the answer is retried and applied when it comes back, needs the backend stopped and restarted.
  • Most of this is already automated. The survey shape and order, all four paths, the skip exit, the work-account scoping and per-account isolation are covered by automated tests that CI runs on every change. The cases above are the ones a mocked backend cannot prove — chiefly the seeded sidebar, which depends on the real template catalog.

Details, including how to create fresh accounts quickly without Google signups, are in apps/clients/docs/testing/ in the repo.