Lewati ke konten utama

Landing, Readiness, Trial, and Renewal Journey Coverage

This document complements QA Requirements and Test Basis with detailed execution scenarios. Run each applicable combination of browser, viewport, language, and tenant in release scope.

1. Required journey paths​

Landing
β”œβ”€β”€ Child Readiness Assessment
β”‚ β”œβ”€β”€ KITA student β†’ student login β†’ profile β†’ assessment β†’ result β†’ student plan
β”‚ └── External participant β†’ profile β†’ assessment β†’ result β†’ student plan
β”œβ”€β”€ Parent Readiness Assessment
β”‚ β”œβ”€β”€ KITA family β†’ login β†’ profile β†’ 23 statements β†’ result β†’ parent plan
β”‚ └── Non-KITA family β†’ profile β†’ 23 statements β†’ result β†’ parent-external plan
└── Free Trial
└── student trial checkout β†’ parent + child account β†’ parent auto-login
β”œβ”€β”€ active trial β†’ learning
β”œβ”€β”€ same plan β†’ paid renewal
β”œβ”€β”€ different plan β†’ package switch
└── expired trial β†’ locked access β†’ subscription

2. Minimum combinations​

DimensionMinimum values
BrowserLatest Chrome, Safari, and Firefox
Viewport360Γ—800, 768Γ—1024, 1280Γ—800
LanguageIndonesian and English
Readiness audienceinternal/KITA and external/non-KITA
Child gradeone early and one teenage grade band
Subscription statenone, trialing, active, expired, pending payment
Package targetstudent, parent, parent-external, requires approval
Networknormal, offline during autosave, timeout during checkout

3. Landing page coverage​

IDScenarioShort stepsExpected result
LP-001Open anonymous landing pageOpen / without storage/cookiesHero, CTAs, product sections, FAQ, and footer render without login redirect.
LP-002Responsive mobileOpen at 360 px and use hamburger menuEvery item is selectable, no horizontal body scroll, and CTAs are visible.
LP-003Desktop navigationChoose Curriculum, Classes, Parents, Students, Community, PricingRoute and active state are correct; browser back/forward works.
LP-004Free Trial CTAChoose hero and lower-page trial CTAsEnds at /pembayaran with trial=true and student checkout type.
LP-005Child assessment CTAChoose Child Readiness AssessmentOpens /tes-kesiapan/anak at audience selection.
LP-006Parent assessment CTAChoose Parent Readiness AssessmentOpens /tes-kesiapan/orang-tua at KITA/non-KITA selection.
LP-007Plan/course CTAChoose a specific package or courseChosen ID/slug persists at destination and is not replaced by another default plan.
LP-008Change languageSwitch ID ↔ EN, then enter readinessCopy changes; route, assessment session, and prior selections persist.
LP-009Plan API failureSimulate GET subscription-plans 500/timeoutPage is not blank; fallback/error and retry appear; other CTAs still work.
LP-010Basic accessibilityKeyboard navigation, accessible names, 200% zoomFocus is visible, order is logical, and buttons/links have accessible names.

4. Child readiness assessment coverage​

Audience and authentication​

IDScenarioExpected result
CA-001Choose external participant without loginOpens the external profile without forcing login.
CA-002Choose KITA student while signed outRedirects to student login and preserves a return-journey marker.
CA-003Login as studentReturns to assessment, activates internal audience, and pre-fills account profile.
CA-004Login internally as parent/mentorRejected with a wrong-role message; internal assessment does not start.
CA-005Already signed in as studentInternal audience can start without login again.

Profile, answers, autosave, and results​

IDScenarioExpected result
CA-006Required profile is emptyContinue is disabled and invalid/missing fields are identifiable.
CA-007Choose different grade bandsDiagnostic structure and final recommendations follow the chosen grade.
CA-008Single-choice/frequency answerOnly valid values can be selected and persist after moving to another question.
CA-009Same most/least answerCannot continue until the two choices differ.
CA-010Incomplete micro-task/reflectionContinue stays disabled until evidence meets the configured rule.
CA-011Normal autosaveA draft request is sent after an answer and indicator changes saving β†’ saved.
CA-012Offline during autosaveLocal snapshot remains, error does not remove answers, and save can retry.
CA-013Reload mid-assessmentAudience, profile, language, answers, evidence, question number, and session ID restore.
CA-014Back/forward between questionsEarlier answers remain selected and progress follows the current position.
CA-015Submit incomplete flow via UI/API manipulationClient/backend rejects completion that does not meet the contract.
CA-016Submit complete flowRecord becomes completed; skill result, radar, strengths, growth focus, projects, and recommendations render.
CA-017Reload completed resultResult restores and does not create a second session/result.
CA-018Recommendation filterOnly grade-matching student plans appear.
CA-019Choose a recommended planCheckout receives the correct plan slug/ID and student checkout type.
CA-020RestartActive session/snapshot is replaced; earlier completed record is not overwritten.

5. Parent readiness assessment coverage​

Audience selection​

IDScenarioExpected result
PR-001Choose KITA homeschooling parentGoes to /tes-kesiapan/orang-tua-kita.
PR-002Choose non-KITA parentGoes to /tes-kesiapan/orang-tua-non-kita.
PR-003Internal path while signed outLogin gate appears; journey returns to internal flow after login.
PR-004Internal path with wrong roleThe account cannot proceed through the internal assessment.
PR-005External path while signed outIntro and external profile can be completed.

Profile, statements, result, and recommendations​

IDScenarioExpected result
PR-006Internal profileAccount identity is prefilled and four profile questions can be completed.
PR-007Incomplete external profileMissing name/caregiver/required data prevents continue.
PR-008Answer 23 statementsProgress advances, values persist, and moving backward does not remove answers.
PR-009Reload mid-assessmentSession, audience, profile, answers, and last position restore.
PR-010Complete internal assessmentResult stores internal respondent, tier/dimensions, profile, and session ID.
PR-011Complete external assessmentResult stores external respondent and the correct prospective-family label.
PR-012Reload resultCompleted result returns without duplicate record.
PR-013Internal recommendationsPlans are requested with parent checkout type; external/student plans do not appear.
PR-014External recommendationsPlans are requested with parent-external checkout type; parent/student plans do not appear.
PR-015Trial CTA from resultsCheckout opens the intended trial mode without carrying a stale plan.
PR-016Choose paid planPlan slug/ID at checkout matches the result recommendation.
PR-017RestartA new session is created; the earlier completed result remains auditable by admin.

6. Free-trial coverage​

Trial checkout​

IDScenarioExpected result
FT-001Enter through /coba-gratisRedirects to student trial checkout; parent/teacher plan from prior URL is discarded.
FT-002Plan listOnly active, eligible student-checkout plans can be selected.
FT-003Approval-required planAutomated trial is rejected with an approval-required message.
FT-004Teacher planBackend rejects free trial for teacher checkout.
FT-005Valid minimum trial fieldsParent name, username, WhatsApp, and student name are enough; parent email may be empty.
FT-006Invalid usernameUppercase, spaces, forbidden symbols, or length outside 3–30 are rejected.
FT-007Existing usernameRejected without creating user, membership, subscription, or payment records.
FT-008Invalid WhatsAppA number not beginning 08 or outside 10–13 digits is rejected.
FT-009Double-click submitButton is loading/disabled; exactly one family and subscription are created.
FT-010API timeout after submitRetrying identical data creates no second trial; outcome can be reconciled.

Records and auto-login​

IDData verificationExpected result
FT-011ParentRole 10, enabled, input username, correct name/phone, correct tenant.
FT-012StudentRole 20, enabled, correct name/NISN, password_setup_required=true.
FT-013MembershipActive parent–student relation in the same tenant.
FT-014Student subscriptiontrialing, amount 0, internal provider, correct plan/payer, child as student target.
FT-015Trial periodStart is close to submission time and end is exactly 7Γ—24 hours later within test tolerance.
FT-016PaymentPaid, free_trial, total 0, correct student target, no Xendit invoice.
FT-017Auth handoffToken exchanges once, auto-logs in parent, and rejects reuse.
FT-018Subscription visibilityTrial appears for child, not as the parent's personal subscription.
FT-019Course accessChild can open bundled trial course; an out-of-bundle course remains locked.
FT-020Expired trialAfter period end, is_active=false and premium course is locked even if the record remains.

7. Renewal and trial-conversion coverage​

Terminology

Renew Package from a trial account is a paid checkout. The system does not offer a button for extra free-trial time.

Completing a trial account​

IDScenarioExpected result
RN-001Trial account selects a planDialog requires email, password, and confirmation before payment can open.
RN-002Invalid/taken emailRejected; trial identity and existing subscription remain unchanged.
RN-003Password under 8 characters or mismatched confirmationRejected without starting payment.
RN-004Valid account dataProfile uses real email, stores password securely, sets is_trial_account=false, and retains the selected plan.

Same package​

IDScenarioExpected result
RN-005Choose same trial plan IDAction label is Renew Package, change type is renewal, and charge equals package price.
RN-006Pay while trial is activeBefore successful payment, trial status/expiry are unchanged. After success, status is active and paid period is added from trial end.
RN-007Pay after trial expiresNew active period starts at paid time, not the old expiry time.
RN-008Refresh pending paymentSame payment is shown; no second invoice with the same amount/scope is created.
RN-009Expired/failed paymentSubscription is not extended; user can explicitly start a new checkout.
RN-010Repeated callback/payment pollPeriod end advances one interval only and only one active entitlement is visible.

Package switch​

IDScenarioExpected result
RN-011Choose different plan during trialUI shows Switch Package/upgrade according to calculation; backend stores pending change until paid.
RN-012Successful switch paymentNew plan activates at switch time and pending change is cleared.
RN-013Failed switch paymentOld trial plan/expiry remains valid; pending change is cleared or grants no new-plan access.
RN-014Parent chooses student planParent must choose a child; subscription renews only for that child.
RN-015Parent chooses parent planSubscription targets parent; child does not automatically receive parent-plan entitlement.

8. End-to-end release scenarios​

IDJourneyPass condition
E2E-001Landing β†’ external child readiness β†’ result β†’ plan β†’ paid checkoutOne completed readiness record, matching plan/grade, and correct account/entitlement target.
E2E-002Landing β†’ internal child readiness β†’ student login β†’ resume β†’ resultReturn URL, session ownership, profile, draft, and result are connected to the student.
E2E-003Landing β†’ internal parent readiness β†’ result β†’ parent planLogin gate is correct, 23 answers persist, and recommendations never mix external plans.
E2E-004Landing β†’ Free Trial β†’ parent auto-login β†’ child learningFamily records are consistent, seven-day trial is child-only, and bundled course is accessible.
E2E-005Active trial β†’ complete account β†’ same plan β†’ payRemaining trial is preserved and one paid interval is added exactly once.
E2E-006Expired trial β†’ course locked β†’ pay β†’ course opensNo access during expiry; access returns only after successful payment.

9. Baseline gap observations​

The observations below come from the source-code baseline and should be verified by QA. If they remain, log a defect or security/product gap:

  1. The readiness endpoint accepts a completed payload without validating question count/completeness. The UI prevents incomplete submit, but API manipulation can bypass that control.
  2. Backend ownership is enforced for internal child readiness. Internal parent readiness does not yet have equivalent role/ownership validation in the save endpoint; its login gate is primarily frontend-controlled.
  3. Guest free trial has no idempotency key. A unique username blocks identical retries from creating another account, but the client cannot automatically retrieve the first checkout outcome after timeout.
  4. There is no one-free-trial policy ledger by WhatsApp number, family, or device. Another trial using a different username may succeed.
  5. Pending plan changes need specific testing when a switch payment fails/expires because cleanup is not evident in the failed-status synchronization path.

10. Product clarifications to decide​

Record these as clarifications rather than silently changing expected results:

  1. Should a WhatsApp number/device receive only one free trial?
  2. Should the trial CTA from parent readiness always create a student trial, or follow the parent/parent-external audience?
  3. When switching package during trial, should remaining trial time be preserved or should the new plan start at successful payment?
  4. How long should an anonymous readiness result remain resumable, and when must its local snapshot expire automatically?

QA must attach the product decision to the test run if any of these areas changes.