Read Me First · environment, accounts, conventions, and the rules that apply on every page · prepared 15 November 2026 · app under test: https://app.sprinklejelly.com
This handbook is the complete manual test plan for Wizly Learning — the coding-practice platform that runs beside the WordPress main site. It is written for testers walking the deployed product. It covers every page a learner can open and every screen staff can open, the expected behaviour of each, the end-to-end flows that cross features, and the platform-wide rules (honesty, saving, timing, theming, motion, performance) that apply everywhere.
The product's own design documents are the specification. Where the app and this handbook disagree, check the domain document under docs/domains/ in the repository — if the app disagrees with the spec, that is a bug.
| File | Covers | Sign in as |
|---|---|---|
| 01 · Learner — Practice | Courses & video courses, Challenges, Tracks, Daily Challenges, Debug Detective, Code Lab, Typing Quest, My Solutions, Tools | learner |
| 02 · Learner — Tests & Workspace | Mock Tests, Company Tests, the test room, strictness/proctoring, results, practice papers, Workspace Projects, Course Workspaces | learner |
| 03 · Learner — Account & Platform | Home, Skills, Recap, Profile, all 8 Settings sections, Certificates + public verify, Inbox & notifications, Achievements, XP, Topic Requests, Quick Notes, WizBit, and every platform-wide behaviour (themes, motion, toasts, sessions, offline, performance, accessibility) | learner (+ public pages signed out) |
| 04 · Admin — Content & Studios | Staff console orientation, the publishing switch & content lifecycle, submissions review, every authoring studio (challenges, tracks, daily, debug, courses, typing, papers, workspace templates), vocabulary, content sources/imports, content reports, content gaps | Admin + Super Admin |
| 05 · Admin — Operations & People | Operations hub health, People directory & moderation (suspend/ban), progress resets, payment reversal, erasure & holds, certificates admin, economy admin, topic-request review, broadcasts, WizBit admin, insights, runtimes, maintenance, audit history | Admin + Super Admin |
| 06 · End-to-End Journeys | Full pipelines that cross features and roles: authoring→publish→solve→reward, the complete live-test journey, daily lifecycle, course→certificate→public verify, moderation, erasure, sessions, degradation | both roles, sometimes two browsers |
Suggested split for a small team: one tester takes 01–03 (learner), one takes 04–05 (staff), journeys in 06 are shared — several need a staff account and a learner account in two browsers at once.
| What | Address | Notes |
|---|---|---|
| Wizly Learning (the app) | https://app.sprinklejelly.com | Everything in docs 01–05 happens here |
| Main site (WordPress) | https://sprinklejelly.com | Owns identity, membership, roles, billing, sign-in and sign-out. Labs has no sign-in or sign-out form of its own |
| Runner (learner code) | https://run.sprinklejelly.com | Separate origin by design — learner code in the browser sandbox never receives the Labs session cookie. It is normal to see requests to this origin in dev tools |
| Health | https://app.sprinklejelly.com/api/v1/readiness | 200 serving / 503 not; useful before a session and when something looks down |
Important
There are no feature flags or demo panels in this deployment — it is the real product on real services. What you break stays broken for other testers; coordinate destructive checks (staff-side deletes, moderation actions, resets) in the team channel first.
https://app.sprinklejelly.com signed out → you land on the sign-in handoff (/handoff), which sends you to the WordPress main site.Credentials are in the team's credentials file (kept out of this document deliberately). The accounts that matter for testing:
| Login | WordPress role | Membership | Labs role / expected result |
|---|---|---|---|
learner, tester-learner-1..5 | subscriber | level 2, ends 2030 | Admitted as User |
staff, tester-staff-1 | contributor | level 1, never ends | Admitted as Admin |
tester-admin-1 | administrator | level 1, never ends | Admitted as Admin (not on the Super Admin list) |
sprinklejelly, yashmini | administrator | — | Super Admin (owner accounts — coordinate before using) |
denied | subscriber | none | Does not get in — the access gate refuses |
lapsed | subscriber | membership ended 2026-09-23 | Privacy-only sign-in (erasure request only) |
Session rule that will bite you
One web session per person — newest wins. If two testers (or two browsers) sign in with the same account, the newest session ends the older one, and the older browser shows the "opened on another browser or device" notice. Each tester should use a different learner account (tester-learner-1 … -5), and journeys that need a learner and staff member simultaneously should use two different accounts in two different browsers (or a normal + private window).
?dev-role= URL parameters do nothing in this deployment — they are development-only./admin/* get the same not-found page as any unknown address — no nav leak.The showcase content pack is published on this deployment. Unless a test says "create your own", use these:
| Content | Count / examples |
|---|---|
| Challenges | 40 — 12 easy ("Running Total of Marks", "Balanced Brackets", "Climbing the Stairs"), 12 medium ("Longest Stretch Without Repeats", "Merge Overlapping Intervals", "Container With Most Water", "Longest Common Subsequence"), 10 hard ("Edit Distance", "Peaceful Queens", "Shortest Route Between Towns"), 4 extreme ("Critical Roads", "Burst the Balloons", "Shortest Delivery Round") |
| Tracks | 2 — "Arrays and Strings", "Recursion and DP" (17 track challenges) |
| Daily Challenges | 30 — one per day, IST today−14 → today+15 |
| Debug Detective cases | 12 — 4 easy ("Attendance Total and Best Day", "Grade Bands", "Leap Year Check", "Word Count"), 6 medium, 2 hard ("Spiral Order of a Grid", "Batch Rosters") |
| Courses (written) | 3 subjects / 13 chapters / 49 lessons — "Data Structures in Python" (20 lessons), "Python Fundamentals" (16), "SQL Basics" (13); each chapter has reading lessons, a quiz, and a "Practice:" lesson |
| Mock papers | 4 — "Programming Fundamentals", "Python Foundations", "Data Structures Essentials", "SQL Queries" (3 sections each) |
| Companies & company papers | 4 companies, 6 roles, 6 papers — Northvale Systems (2), Corvane Software (2), Kestrelworks (1), Tamarind Grove Technologies (1) |
| Typing Quest texts | 123 — English simple/complex/placement/common-words; code snippets in C, C++, Java, JavaScript, Python; templates; 7 lessons |
| Workspace templates | 6 — expenseDiary, taskBoard (Flask), habitTracker (React), canteenOrders, collegeFest (SQLite), marksReport |
| WizBit answers | 24 authored knowledge-base entries |
| Skills/topics | 17 skills (Python, Arrays, Strings, Hashing, Stacks & Queues, Linked Lists, Trees, Sorting & Searching, Complexity, Graphs, DP, Recursion, Greedy, Math, OOP, SQL, Quantitative Aptitude, Logical Reasoning) + bug types |
Known data quirks on this deployment
| Thing | Expected behaviour |
|---|---|
| Credits / generated assistance (AI help) | Switched off platform-wide on this deployment. No Credit surface anywhere: no balance in the header, no /credits link in You, /credits and /credits/history behave as unknown addresses (not-found back to Home), no "Analyse my code"/"Explain" paid actions, no generated help in Workspace. Verifying their absence IS a test (TC-PLT in doc 03). |
Aptitude (/aptitude, /admin/aptitude) | The only unbuilt pages. They render "This page is coming soon." inside the shell with same-domain links — never a blank page or error. |
Bounties (/bounties) | A deliberate temporary text page that explains the programme. No eligibility check, entry point, or progress UI exists yet. |
| React in Code Lab | Listed as coming soon (React works in Workspace project previews, just not as a Code Lab runtime). |
| TypeScript, Kotlin, Swift, Scala | Runtime registry lists them "Coming soon" with a reason — they are shown, not selectable. |
| No email/SMS/push notifications | Notifications are in-app only (bell + inbox). Absence of email is correct. |
| Sign-in/out forms inside the app | None exist and none should — the main site owns both. |
Preconditions
What must be true first (account, content, state).
Steps
Expected
Also try
| Priority | Meaning |
|---|---|
| P1 | Core promise — if it fails, the feature is broken (do these first, always) |
| P2 | Important edge — boundaries, errors, states, cross-tab, honesty |
| P3 | Polish — responsiveness, motion, performance feel, accessibility |
TC-DLY-004). Reference it in the bug report — don't renumber.These are the product's honesty invariants. Any case can fail on them even when its own steps pass; they're also their own test cases in each doc's platform section.
| Rule | What it means |
|---|---|
| Unavailable is not empty | A service that can't be reached says so ("can't be asked", "connection is down"). It never shows as 0, an empty list, or a falsely successful state. |
| Unknown is not zero | Counts the platform can't read never render as "0". An unreadable inbox count shows a hollow badge mark, not a missing badge. |
| Nothing claims it saved when it didn't | Save states are literal: saving · saved · not saved, tap to retry · saved locally. "Saved locally" is on this device only — never presented as a platform save. |
| Platform failures never look like your failure | Grading outages, busy services, unreachable runtimes are named as platform problems — never presented as wrong answers, zeros, or your mistake. |
| Hidden material stays hidden | Hidden test cases reveal pass/fail counts only — never inputs, expected outputs, or your output against them. Reference solutions, other people's work, staff notes never leak. |
| Not-found is privacy-safe | A missing page, hidden content, and another person's private object all give the same plain not-found — no hint which it is. Unmatched /admin/* for a learner shows the same nothing. |
| Once means once | Double-clicking Start/Submit/Send/Approve never creates two of anything. Retried rewards never double-pay. Duplicated tabs don't double-count. |
| Pending is named, not faked | "Grading", "Being marked", "Could not check", "Not enough evidence" are shown as themselves — never converted to a provisional score or a fake pass. |
| The product is "Wizly Learning" | People-facing text never says "Labs", internal state names, or spec sentences. Numbers use Indian grouping (12,34,567) and times are labelled IST. |
| Clock | Rule |
|---|---|
| Product day | 09:00 → 09:00 IST. Dailies and Typing Daily roll over then — not at midnight. |
| Web session | 12 h lifetime, 2 h inactivity allowance. Newest sign-in ends the older web session (app/mobile sessions are separate and never displaced). |
| Main-site check | Protected staff writes need verification ≤15 min old; routine access re-verifies about every 60 s. |
| Systems check (tests) | Valid 10 minutes for the same paper + device + sign-in; then stale and must re-run. |
| Pace limits | 10 Run/Submit starts per minute across practice; 6 systems checks/min; 3 concurrent Code Lab programs; 1 generated-assistance request at a time. |
| Live tests | 1 at a time by default (cap configurable 1–3 across Mock + Company, counted across tabs and devices). One timed Debug window may coexist — neither clock pauses. |
| Notification retention | Items age out at 90 days (unless held); whole-hold releases kept 90 days; audit history kept 1 year. |
Apply these during every session and in the dedicated platform section of each doc.
F8 reaches toasts, test-room single-key shortcuts (A–H/1–8, N, P, M) are inert while typing or in dialogs.File one report per issue in the team tracker with:
TC-TST-021 (or "exploratory — no case")Golden rule
When the app says something is unavailable or wrong, believe it once, then reproduce. An honest error is a pass; a silent wrong answer is S1.
Wizly Learning Testing Handbook · generated from the product specification (docs/) and source of Sprinkle-Jelly-V1 · November 2026