Wizly Learning — Testing Handbook

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

1 · What this is

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.

2 · The document set

FileCoversSign in as
01 · Learner — PracticeCourses & video courses, Challenges, Tracks, Daily Challenges, Debug Detective, Code Lab, Typing Quest, My Solutions, Toolslearner
02 · Learner — Tests & WorkspaceMock Tests, Company Tests, the test room, strictness/proctoring, results, practice papers, Workspace Projects, Course Workspaceslearner
03 · Learner — Account & PlatformHome, 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 & StudiosStaff 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 gapsAdmin + Super Admin
05 · Admin — Operations & PeopleOperations 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 historyAdmin + Super Admin
06 · End-to-End JourneysFull pipelines that cross features and roles: authoring→publish→solve→reward, the complete live-test journey, daily lifecycle, course→certificate→public verify, moderation, erasure, sessions, degradationboth 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.

3 · Environment under test

WhatAddressNotes
Wizly Learning (the app)https://app.sprinklejelly.comEverything in docs 01–05 happens here
Main site (WordPress)https://sprinklejelly.comOwns 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.comSeparate 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
Healthhttps://app.sprinklejelly.com/api/v1/readiness200 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.

4 · Signing in and roles

4.1 How sign-in works

  1. Open https://app.sprinklejelly.com signed out → you land on the sign-in handoff (/handoff), which sends you to the WordPress main site.
  2. Sign in on the main site → you are returned to the app with a session cookie.
  3. Membership decides whether you get in at all; your WordPress role decides whether you are a User (learner), Admin, or Super Admin.
  4. Sign-out is on the main site. The app has no sign-out button.

4.2 Test accounts

Credentials are in the team's credentials file (kept out of this document deliberately). The accounts that matter for testing:

LoginWordPress roleMembershipLabs role / expected result
learner, tester-learner-1..5subscriberlevel 2, ends 2030Admitted as User
staff, tester-staff-1contributorlevel 1, never endsAdmitted as Admin
tester-admin-1administratorlevel 1, never endsAdmitted as Admin (not on the Super Admin list)
sprinklejelly, yashminiadministrator—Super Admin (owner accounts — coordinate before using)
deniedsubscribernoneDoes not get in — the access gate refuses
lapsedsubscribermembership ended 2026-09-23Privacy-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).

4.3 Role facts

5 · Content that exists for you to test with

The showcase content pack is published on this deployment. Unless a test says "create your own", use these:

ContentCount / examples
Challenges40 — 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")
Tracks2 — "Arrays and Strings", "Recursion and DP" (17 track challenges)
Daily Challenges30 — one per day, IST today−14 → today+15
Debug Detective cases12 — 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 papers4 — "Programming Fundamentals", "Python Foundations", "Data Structures Essentials", "SQL Queries" (3 sections each)
Companies & company papers4 companies, 6 roles, 6 papers — Northvale Systems (2), Corvane Software (2), Kestrelworks (1), Tamarind Grove Technologies (1)
Typing Quest texts123 — English simple/complex/placement/common-words; code snippets in C, C++, Java, JavaScript, Python; templates; 7 lessons
Workspace templates6 — expenseDiary, taskBoard (Flask), habitTracker (React), canteenOrders, collegeFest (SQLite), marksReport
WizBit answers24 authored knowledge-base entries
Skills/topics17 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

6 · Deliberately absent or unfinished — not bugs

ThingExpected 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 LabListed as coming soon (React works in Workspace project previews, just not as a Code Lab runtime).
TypeScript, Kotlin, Swift, ScalaRuntime registry lists them "Coming soon" with a reason — they are shown, not selectable.
No email/SMS/push notificationsNotifications are in-app only (bell + inbox). Absence of email is correct.
Sign-in/out forms inside the appNone exist and none should — the main site owns both.

7 · How to use the test cases

7.1 Anatomy

TC-XXX-001Example — the case title says the behaviour being provenP1

Preconditions

What must be true first (account, content, state).

Steps

  1. Exact actions, in order.

Expected

Also try

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________

7.2 Priorities

PriorityMeaning
P1Core promise — if it fails, the feature is broken (do these first, always)
P2Important edge — boundaries, errors, states, cross-tab, honesty
P3Polish — responsiveness, motion, performance feel, accessibility

7.3 Working rules for testers

8 · The universal rules — check these on every page

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.

RuleWhat it means
Unavailable is not emptyA 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 zeroCounts 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'tSave 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 failureGrading outages, busy services, unreachable runtimes are named as platform problems — never presented as wrong answers, zeros, or your mistake.
Hidden material stays hiddenHidden 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-safeA 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 onceDouble-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.

9 · Timing rules worth knowing

ClockRule
Product day09:00 → 09:00 IST. Dailies and Typing Daily roll over then — not at midnight.
Web session12 h lifetime, 2 h inactivity allowance. Newest sign-in ends the older web session (app/mobile sessions are separate and never displaced).
Main-site checkProtected 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 limits10 Run/Submit starts per minute across practice; 6 systems checks/min; 3 concurrent Code Lab programs; 1 generated-assistance request at a time.
Live tests1 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 retentionItems age out at 90 days (unless held); whole-hold releases kept 90 days; audit history kept 1 year.

10 · Performance, responsive & accessibility standards

Apply these during every session and in the dedicated platform section of each doc.

10.1 Performance feel

10.2 Viewports

10.3 Themes & motion

10.4 Accessibility spot checks

11 · Reporting a bug

File one report per issue in the team tracker with:

Test case ID
e.g. TC-TST-021 (or "exploratory — no case")
Title
Behaviour, not guess: "Submit test button stays disabled after last question answered"
Environment
app.sprinklejelly.com · account used · role · browser + version · viewport · theme/mode
Steps
Numbered, from a signed-in start
Expected
What the spec/test case says
Actual
What happened + screenshot/console errors
Severity
S1 blocks learning or corrupts/losses data · S2 feature unusable or lies to the user · S3 broken edge/state · S4 polish/wording/perf

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