Skip to main content

Prep & Quick Tests (Student-Only)

Both flows are practice tests the student creates for themselves — there's no teacher review and no parent visibility. They diverge on scope and immediacy: a Prep Test is a longer exam-style test the student configures step-by-step (test category, format, subject, chapter, difficulty); a Quick Test is a 5-minute single-chapter pop quiz the student fires off with two taps.

At a glance

Who can do thisStudents only — create, take, view results. Teachers and parents do not see these tests.
Where it livesPrep Test: /dashboard/prep-test/* · Quick Test: /dashboard/quick-test/*
Triggers notifications?No
Related featuresClass Tests · Chapter Tests · Coins & Credits

How it flows

Status lifecycle

Step-by-step

Prep Test

1. Open the prep-test hub

  • App / route: Student app → /dashboard/prep-test
  • Lists every prep test the student has previously created with status badges (generating / published / in_progress / completed) and quick filters (All / Ready / In Progress / Completed).
  • Tap + Create Test/dashboard/prep-test/create.

2. Step 1 — Test category

  • App / route: /dashboard/prep-test/create
  • Three choices:
    • Doubt Based — auto-generate from topics the student has struggled with (linked to the Doubts feature).
    • School Based — aligned with the student's school curriculum.
    • Competitive Exam — competitive-level questions.
  • Tapping a category routes to /dashboard/prep-test/create/type/:testCategory.

3. Step 2 — Format + subject

  • App / route: /dashboard/prep-test/create/type/:testCategory
  • Pick test format (MCQ / Short / Long), then pick a subject from the student's class subject list. Selecting a subject routes to chapter selection.

4. Step 3 — Chapter + difficulty

  • App / route: /dashboard/prep-test/create/chapters/:subjectId?format=…&category=…&subjectId=…
  • Lists chapters for the subject. Tapping a chapter opens TestConfigModal.
  • Modal asks: difficulty (Easy / Medium / Hard) and a test-type label (display only).
  • Confirm → backend creates the test as draft with generateWithAi: true, duration 30 min, hintsAvailable 3, source = mapped category (doubt_based / school_based / competitive_exam).
  • Student is bounced back to /dashboard/prep-test. A toast confirms creation; the new test appears in the list with status generating.

5. Take the test

  • Once the test reaches published, the list card flips to "Take Test".
  • Routes: /dashboard/prep-test/:testId (instructions) → /dashboard/prep-test/:testId/:questionIndex (per-question, with timer + hints) → /dashboard/prep-test/:testId/results (final result).

6. View past results

  • The prep-test list keeps completed tests indefinitely; tapping a completed test re-opens its results page.

Quick Test

1. Open the quick-test hub

  • App / route: Student app → /dashboard/quick-test
  • Single page combining: test format selector (MCQ / Short Type / Long Type) + subject grid.
  • Picking a subject navigates immediately to /dashboard/quick-test/chapters/:subjectId?format=…&subjectId=….

2. Pick chapter + difficulty

  • App / route: /dashboard/quick-test/chapters/:subjectId
  • Lists chapters for that subject. Tapping a chapter opens the same TestConfigModal as prep tests.
  • Modal asks: difficulty (Easy / Medium / Hard).
  • Confirm → backend starts a quick test with progressive question generation. Returns testId. App navigates to /dashboard/quick-test/take with the test id and title in route state.

3. Take the test

  • App / route: /dashboard/quick-test/take — questions stream in as the AI generates them, so the student can start answering before all questions are ready.
  • Timer is shorter than a prep test (the "5-minute" quick test branding).
  • Submit → /dashboard/quick-test/results.

4. Quick-test results

  • App / route: /dashboard/quick-test/results
  • Same auto-grading as everywhere else — MCQs against correctAnswer, short / long shown side-by-side with the model answer.
  • No persistent quick-test list page — the student takes a quick test, sees results, and is done.

Differences at a glance

Prep TestQuick Test
ScopeMulti-step: category → format → subject → chapterFormat → subject → chapter
PersistenceListed under /dashboard/prep-test indefinitelyOne-shot, no list page
GenerationCreated as draft, generated in background, polledProgressive — questions stream as student takes
Duration30 minutes (default)~5 minutes
CategoriesDoubt / School / CompetitiveNone — always School
Hints3Same

Edge cases & things to test

  • Generation taking ages: prep test stuck in generating for >2 minutes — does the list show a useful state, or just spin forever?
  • Resuming a half-done prep test: student starts a prep test, leaves at question 5 — return navigation must resume on question 5 with the timer continuing from startedAt.
  • Quick test progressive generation race: student answers question 1 before questions 6–10 are generated — submitting must wait for all questions, not partial-submit.
  • Empty chapter list: student picks a subject with no chapters mapped — lists should show a clear empty state, not crash.
  • Doubt-based with no doubts: student picks "Doubt Based" but has no recorded doubts — generation must either fall back to a school-based generation or show a clear error.
  • Multiple in-flight prep tests: student creates 5 prep tests in succession — all 5 generate concurrently; each status should advance independently in the list.
  • Format switching mid-flow: student picks MCQ then changes the format query param mid-flow — TestConfigModal config must use the latest format on confirm.
  • Quick test back-button: student is on /quick-test/take and hits back — does it abandon the attempt or return to chapter pick?
  • Network drop during quick-test generation: streaming generation interrupted — does the test resume or fail cleanly?
  • Difficulty Hard with limited content: chapter has only 3 modules — confirm difficulty Hard still produces a sensible question count, not zero.
  • No teacher leak: confirm prep tests and quick tests do not appear in teacher app /dashboard/class-tests or in the parent app's /class-tests.
  • Hint usage doesn't penalise marks: per design, using a hint just flags the answer (isHintUsed: true); confirm marks aren't auto-deducted.
  • Class Tests — teacher-assigned tests, similar UI but very different lifecycle
  • Chapter Tests — chapter-scoped (like Quick Test) but unlocked by Learning Journey videos and one-shot
  • Coins & Credits — generating prep / quick tests may consume credits
  • Doubts — feeds the "Doubt Based" prep-test category