02 · Learner — Tests & Workspace

Mock Tests, Company Tests, the test room, strictness and recorded events, results, practice papers, Workspace Projects and Course Workspaces · Requires: learner account, computer viewport ≥1024px for the test room · Related docs 01 (practice restrictions while a test is live), 03 (sessions, toasts, XP, achievements), 06 (the complete live-test journey)

Read before you start — tests are spent

Each learner gets ONE recorded test per paper. A started test cannot be discarded, retaken or reset; submitting or timing out spends it for that account forever (only invalidation or a staff relief grant restores one). With 4 Mock papers, 6 Company papers and 5 learner accounts, agree a plan before anyone presses Accept the conditions and start. Catalogue, paper and briefing cases (TC-ASM) spend nothing — only Start does.

One live test at a time by default. While any test is in progress, starting any other Mock or Company paper is refused — plan so a tester never strands themselves needing a second start, and end every test you start (submit it, or let it run out) before moving on.

Write your answers down. For every test you take, note each question number and what you answered — the owner checks marking against your result.

Seed papers (use these; do not invent your own)Key facts
Mock: Python Foundations (Python, easy, Featured · 3 sections · 20 q · 45 min · Standard · pass 50%)Standard papers: leaving is recorded, never ends the test. Pass mark on every Mock: 50%. Programs run on examples freely unless the paper limits it.
Mock: Data Structures Essentials (Data Structures, medium, Featured · 3 sections · 20 q · 50 min · Standard)
Mock: SQL Queries (SQL, medium · 3 sections · 21 q · 40 min · Standard · no coding)
Mock: Programming Fundamentals (Programming Fundamentals, medium · 3 sections · 17 q · 45 min · Strict, limit 5 · wrong single-choice −0.25)
Company: Northvale Systems — Graduate Engineer Trainee (3 sections · 12 q · 50 min · Standard · runs limited to 10); Associate Software Engineer (2 sections · 10 q · 75 min · Strict, limit 3)Every company paper is Pattern and takes its sections one at a time — a section closed behind you cannot be re-entered. Company Tests have no pass mark and pay no XP.
Company: Corvane Software — Data Analyst Trainee (2 sections · 12 q · 35 min · Standard · no coding); Backend Developer (2 sections · 8 q · 45 min · Standard · one program)
Company: Kestrelworks — Software Developer Intern (3 sections · 12 q · 50 min · Off: nothing recorded)
Company: Tamarind Grove Technologies — Systems Engineer (4 sections · 16 q · 70 min · Strict, limit 3 · full screen required · runs limited to 15)
Workspace templates: Python: expense diary · Flask API: task board · React: habit tracker · Data analysis: canteen orders · SQL: college fest · JavaScript: marks reportEach has 3 checklist tasks. Blank types: Python, Data analysis, Web page, React, JavaScript, SQL, and more languages; Build your own stacks a front end (HTML or React), a back end (Flask) and SQLite.

1 · Assessments — Catalogue & Entry

Everything up to — but not including — pressing Accept the conditions and start: the two catalogues, a paper's own page or briefing, the systems check, the conditions, and the results lists. These cases spend nothing and may be repeated freely on any account.

RoutePageWhat it shows
/mock-testsMock TestsEvery published Mock paper as a card, featured first; search, one Filters control (category · difficulty), Load more; a way back to a test in progress
/papers/:paperA Mock paper's pageAbout the paper, its sections, How it works, Before you start (systems check + conditions + Start)
/papers/:paper/preflight · /papers/:paper/acknowledgementSame page, at its systems check / at its conditionsAddresses that open the paper's page at the right part; nothing starts
/company-testsCompany TestsCompany cards with roles, test counts and your readiness; search by name
/company-tests/:companyOne companyIts roles and papers (untaken first, then taken), your readiness and completion, recent tests
/papers/:paper/briefingA Company paper's briefingCompany, role, year, Actual/Pattern, its own briefing, then the same systems check, conditions and Start
/test-results · /mock-tests/history · /company-tests/historyTest resultsEvery test, newest first; the type addresses open it already filtered
/tests-dashboardAssessments dashboardScore trends, strengths, company readiness, what to do next, recent results

The pipeline

Browse the catalogue → open the paper's page (Mock) or briefing (Company) → the systems check runs by itself on arrival → read the conditions → Accept the conditions and start makes the one recorded test on a frozen copy of the paper → answer → submit → the result grades in the background → review or open practice. Opening any page before Start creates no test, no timer and no charge.

1.1 Mock Tests — the catalogue

TC-ASM-001Mock catalogue — cards, facts and plain-word strictnessP1

Preconditions

Signed in as any learner on a computer.

Steps

  1. Open Mock Tests under Assessments in the navigation.
  2. Read the lead line and every paper card, top to bottom.

Expected

Also try

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ASM-002Search, filters, chips — filters remembered, search never keptP1

Steps

  1. On Mock Tests, type "SQL" in Search mock tests ("Search by title or what it covers"). Clear it.
  2. Open Filters, choose difficulty medium, then a category; read the applied chips.
  3. Choose a category+difficulty pair that matches nothing. Clear with the control offered.
  4. Choose difficulty medium again, navigate to another page, then return to Mock Tests from the navigation. Check the address bar.

Expected

Also try

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ASM-003Card foot — one standing, one next actionP1

Preconditions

One account per standing: an account mid-test (In progress), one with a test past its time not yet ended (Overdue), one with a test being marked (Grading), and finished tests (score + Passed/Not passed). Stage them gradually as your plan's tests run.

Steps

  1. As each state exists, open Mock Tests and read the card's foot.
  2. Compare the action offered at each state.

Expected

Also try

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ASM-004A live test follows you — the in-progress strip and ResumeP1

Preconditions

A test you started and left without submitting (leave via Leave, not by closing mid-answer).

Steps

  1. Open Mock Tests (or Company Tests for a company test).
  2. Read the strip at the top of the page; press Resume.

Expected

Also try

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ASM-005Blocked next actions read as reasons, not dead buttonsP2

Preconditions

A paper whose availability is closed or not yet open, or an archived paper, if the seed includes one; otherwise note N/A. A second account with a live test for the at-limit line.

Steps

  1. Read the foot of a paper you cannot start: not yet open, closed, archived, taken, or while another test is in progress.

Expected

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

1.2 A Mock paper's page — /papers/:paper

TC-ASM-006Paper page — details, sections, How it worksP1

Steps

  1. Open Programming Fundamentals from the catalogue. Read the whole page top to bottom.
  2. Do the same on Python Foundations and compare the "How it works" parts.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ASM-007Navigation features are disclosed before StartP2

Steps

  1. On each Mock paper's page, find the lines in How it works describing how you move through the paper.
  2. Compare with what you see inside the test later (doc §2).

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ASM-008Availability, extra time and the archived paperP2

Steps

  1. Read the Before you start list on an open paper: "It can be started at any time." (or "It can be started until {when}. A test started before then runs its full time." / "It opens {when}." where a window is set).
  2. If a learner has agreed extra time (a staff accommodation), open a paper as them.
  3. If staff archived a paper you can open, read its page.

Expected

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

1.3 The systems check

TC-ASM-009Systems check runs by itself on arrival — and starts nothingP1

Steps

  1. Open an untaken paper's page on a computer and watch Systems check under Before you start — do not press anything until it finishes.
  2. Open Show the checks. Press Check again.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ASM-010Warnings need an explicit tick; Could not check blocks StartP1

Steps

  1. Make the browser window narrow (under about 1,024 px wide) and press Check again.
  2. Read the summary and the conditions area; try to start without ticking.
  3. Widen again and re-check until all pass.
  4. If any item ever shows Could not check (e.g. connection down), try Start.

Expected

Also try

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ASM-011A check is good for 10 minutes and 6 a minuteP2

Steps

  1. On a paper's page, let the check pass, then sit on the page over 10 minutes without starting; look at the check and at Start.
  2. Press Check again more than six times inside a minute.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ASM-012/preflight and /acknowledgement open the same page at the right partP3

Steps

  1. Open /papers/:paper/preflight for a Mock paper (use its address from the catalogue link).
  2. Open /papers/:paper/acknowledgement.
  3. Do the same against a Company paper's address.

Expected

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

1.4 The conditions & the Start

TC-ASM-013Conditions say what is true before it costs you your one testP1

Steps

  1. On a fresh account, open Python Foundations, wait for the check to pass, and read the conditions beside Start — do not start yet.
  2. Compare with a Strict paper (Programming Fundamentals) and the Off paper (Kestrelworks).

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ASM-014Start refusals — every closed path says why in its own wordsP2

Preconditions

Stage as many as your plan allows: an account with a live test; an unpublished/archived paper (staff-made); a phone or narrow device; a stale systems check (>10 min).

Steps

  1. Try to reach Start on each refused path: another test in progress; a paper that is not published; on a touch device; with a run-out check.

Expected

Also try

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ASM-015Start is idempotent — presses, reloads and two tabs all make ONE testP1

Preconditions

An account willing to spend its one test on a paper (use SQL Queries — cheapest, 40 min). You will keep this test running for the room cases, so pick the plan's designated test account.

Steps

  1. Press Accept the conditions and start once. Before it completes, press it again / hit Enter again.
  2. In a second account on its paper page, open the page in two tabs and press Start in both nearly together.
  3. Check Test results for that account.

Expected

Also try

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ASM-016A started test is frozen — later paper edits never reach itP2

Preconditions

Staff cooperation: they hold a draft edit (title/section/question/marks change) on a paper a tester is mid-test on. If you cannot coordinate this, mark N/A.

Steps

  1. Start the paper's test. Ask staff to publish an edit to the paper while the test runs.
  2. Continue the test; finish it; read the result.

Expected

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

1.5 Company Tests — catalogue, company page, briefing

TC-ASM-017Company Tests catalogue — cards, readiness, searchP1

Steps

  1. Open Company Tests. Read the lead and the four company cards.
  2. Search "kestrel", clear it, search a string matching nothing.

Expected

Also try

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ASM-018Company page — roles, papers, readiness, plain disclaimersP1

Steps

  1. Open Northvale Systems. Read the page fully: roles, papers, readiness, recent tests.
  2. Open Corvane Software and compare.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ASM-019Company briefing — its own words, then the same check and conditionsP1

Steps

  1. Open Northvale's Associate Software Engineer (Strict, limit 3) briefing at /papers/:paper/briefing. Read top to bottom.
  2. Compare with Kestrelworks' Software Developer Intern (strictness Off).

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ASM-020Company with no published paper reads not-found, not emptyP3

Steps

  1. Open /company-tests/not-a-company directly.
  2. If staff have a company with every paper unpublished, open its address.

Expected

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

1.6 Test results (history) & the dashboard

TC-ASM-021Test results — combined history, newest first, honest statesP1

Preconditions

An account with a mix: one finished Mock, one finished Company test, one in progress if available.

Steps

  1. Open Test results (/test-results). Read the heading line and each row.
  2. Switch the type control: Both / Mock Tests / Company Tests. Open the "Where it stands" filter and try each state.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ASM-022Type-filtered history addresses open the same list pre-filteredP2

Steps

  1. Open /mock-tests/history and /company-tests/history directly.
  2. Open them from each catalogue's "Your mock tests"/"Your company tests" link.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ASM-023Assessments dashboard — trends, strengths, readiness, nextP1

Preconditions

One account with several finished tests of each type; one fresh account with none.

Steps

  1. Open /tests-dashboard on both accounts.
  2. Compare each region between them.

Expected

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

2 · The Test Room

/tests/:test runs in a focus layout — no app navigation, no companion, nothing else of the product. These cases spend a test's running time but not its one shot: you can leave, resume and re-enter freely within the clock. Pick a paper per account and keep it running while you work these cases.

RoutePageWhat it shows
/tests/:testThe test roomTop strip (Leave · paper · sections · recorded events · time), the question, answer controls, the question navigator, run/output for coding, the submit and leave dialogs
/tests/:test/resultThe result (§4)Opens during grading and after; covered in §4

The pipeline

Start lands you at the first question → answer in any order the paper allows (grid, Next/Previous, section switch) → answers save as you give them → Submit test (or time runs out, or a Strict ceiling ends it) → the result page takes over. Leaving by Leave, reload, lost connection or a new sign-in elsewhere never abandons the test.

Accounts to stage for this section

Keep one Standard Mock test running (SQL Queries or Python Foundations) for the general room cases; one Strict test (Programming Fundamentals, or Northvale Associate) for §3's proctoring cases; one Off test (Kestrelworks) for the contrast case. A second live test can't start while one runs — stage them sequentially, or across different accounts in parallel.

2.1 Room chrome & the navigator

TC-TST-001Focus frame — no shell, the whole strip, nothing extraP1

Preconditions

A running Standard Mock test (e.g. SQL Queries).

Steps

  1. Look at the whole page at ≥1024px: top strip, question, navigator.
  2. Look for anything that is not the test: site navigation, header, footer, companion, inbox, any help panel.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-002Navigator ≥1024px — grid, legend, status without colourP1

Steps

  1. In the running test, open the navigator and read it fully.
  2. Answer a question, mark one for review, close a section on a company test (later), then re-read the grid.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-003Navigator <1024px — a sheet, not a squeezeP2

Steps

  1. Narrow the window below 1024px while a test runs.
  2. Open the questions from the "N/M answered" control.
  3. Pick a question from the sheet.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-004Question anatomy — heading, kind, marks, penalty, section introP1

Steps

  1. Read the first question of each section on SQL Queries or Python Foundations.
  2. Open "About this section" on a section's first question.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-005Onward words change honestly at the endsP2

Steps

  1. Walk to the last question of a section, then the last of the paper.
  2. Walk back to the first question.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-006The countdown is honest — including when a paper hides itP2

Steps

  1. Watch the countdown through a minute boundary and under 5 minutes (a 40-minute test reaches this; or watch the last minutes of a short company paper).
  2. If a staff-made paper hides the countdown, check its room.

Expected

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

2.2 Questions & answering

TC-TST-007Single choice, multi-select, true/false — pick, clear, toggleP1

Steps

  1. On a single-choice question choose an option; then Clear my answer; then choose again.
  2. On a multi-select ("Choose every answer that applies") tick two options, then untick one, then untick all.
  3. On a true/false question pick each answer in turn.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-008Numerical answers — typing, refusal of letters, tolerance is hiddenP1

Steps

  1. On a numerical question type letters and symbols.
  2. Type a number; clear it; type a decimal; leave it.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-009Every question kind appears where its section has itP2

Steps

  1. Walk a full paper and note the kinds it contains — single-choice, multi-select, true/false, numerical, code (company coding sections, Mock "Programs" sections).
  2. Check the kind word in each heading matches the control offered.

Expected

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

2.3 Saving answers — states, retries, concurrency

TC-TST-010The save-state ladder — every state is literalP1

Steps

  1. Watch the answer state through a normal save.
  2. Dev tools → network offline; answer a question and read the state; press Retry.
  3. Come back online and watch it.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-011Typing is carried everywhere — navigation, submit, hide, closeP1

Steps

  1. Type a numerical answer and press Next inside the same second; go back and check it saved.
  2. Type, then immediately press Submit (through the dialog); check the result's review.
  3. Type, then hide the tab or reload instantly; return and check.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-012Reload mid-test — same question, same answers, clock never gainedP1

Steps

  1. Answer two questions, mark one, move to a third; reload the page.
  2. Note the question you land on, the saved states, and the clock before/after.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-013Two tabs of the same test — the stale one is told, not allowed to lieP1

Steps

  1. Open the running test in a second tab. In tab 2 answer a question and move forward; leave tab 1 sitting on an older question.
  2. In tab 1 type an answer and try to move.

Expected

Also try

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-014Losing the connection mid-test — nothing is abandonedP1

Steps

  1. Cut the network mid-test for a minute; answer a question offline; restore.
  2. Watch the save state and the clock throughout.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-015🖥🖥 Signing in elsewhere ends the session — the test keeps runningP1

Preconditions

Two computers/browsers, the same learner account on both (this is the one case where one account in two places is the point).

Steps

  1. Start a test on browser A; answer a question; let it save.
  2. Sign in to the same account on browser B; open the test's address there.
  3. Look at browser A, then continue on B.

Expected

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

2.4 Keyboard & the six navigation features

TC-TST-016Single-key shortcuts — A–H/1–8, N, P, M, and where they go quietP1

Steps

  1. With the shortcut switch on: press B on a choice question; N to advance; P to go back; M on a markable question.
  2. On the last question press N. Dismiss.
  3. Hold Ctrl/Alt/Meta and press N; type in a number field then press N while focused; open the submit dialog and press keys.
  4. Turn Single-key shortcuts off in the navigator and press the same keys.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-017Mark for review — flagged, counted, never an answerP1

Steps

  1. Mark two questions for review; answer one of them.
  2. Open the navigator and the Submit dialog; read the marked counts.
  3. Unmark one via its control.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-018Skip & revisit on — free movement; off — enforced in the controlsP2

Preconditions

A seed paper (all features on) plus a staff-made variant with skip/revisit off if your plan has one; mark N/A where not staged.

Steps

  1. On a normal paper: leave a question unanswered and Next past it; jump to it from the grid; answer and return.
  2. On the variant: try to move forward unanswered; answer, then try to go back.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-019Section switching lands on the first open question — suggested times never hard-stopP2

Steps

  1. On a multi-section Mock, switch sections from the strip; note where each lands.
  2. Exceed a section's suggested time (its paper page listed one) without leaving.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-020Shuffle changes order, never meaning or answersP2

Steps

  1. Answer a shuffled-order question; reload; check the order and your answer. Compare with the same question on a second account.

Expected

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

2.5 Coding questions

TC-TST-021Coding question — editor, languages, examples, hidden cases stay hiddenP1

Preconditions

A paper with a coding section — Python Foundations' "Programs", Northvale Graduate Engineer Trainee's "Coding", or Programming Fundamentals' "Programs".

Steps

  1. Reach a coding question; read its pane fully.
  2. Switch its language tab; type in each.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-022One language's code is the answer — switching hands it on honestlyP1

Steps

  1. Write code in the first language tab; switch to a second tab and write different code.
  2. Switch back. Leave the question and return.
  3. Note which tab shows the save state.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-023Run the examples — allowance counts real runs only, failures are freeP1

Steps

  1. On a coding question press Run the examples; read the results beside the output.
  2. On a limited paper (Northvale Trainee: 10; Tamarind: 15) run until near the limit; make a run fail (empty code / a pace refusal) and watch the count.
  3. On an unlimited paper note its line.

Expected

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

2.6 Section locking & the live-test umbrella

TC-TST-024Company section locking — one at a time, closed behind youP1

Preconditions

A company test in progress (every seed company paper is section-locked) — e.g. Corvane Data Analyst Trainee.

Steps

  1. Answer in section one, then advance via Next section. Read the prompt; confirm.
  2. Try to return: section tab, grid cell, Previous, keys.
  3. Advance repeatedly across the paper.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-025During a live test the rest of the product closes politelyP2

Preconditions

A running test. A second tab on the same account.

Steps

  1. While the test runs, open other learner pages in the second tab: a Challenge's hints/editorial, Code Lab, Quick Notes, My Solutions' compare.
  2. Note what each says; end the test and re-check one.

Expected

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

3 · Strictness & Recorded Events

Strictness is per paper, disclosed before Start, and bounded: Off records nothing; Standard records leaving but can never end the test; Strict records and its counted-event ceiling ends the test honestly. Nothing is ever filmed, listened to, screenshotted or key-logged — the product records kinds of events, never content.

Paper for stagingStrictnessCeiling / special
Kestrelworks — Software Developer InternOffNothing recorded; no strip count, no notes
SQL Queries · Python Foundations · Data Structures Essentials · Northvale Trainee · Corvane papersStandardRecorded, told each time, never ends the test
Programming Fundamentals · Northvale Associate · Tamarind GroveStrictCeiling 5 (PF) / 3 (Northvale, Tamarind); Tamarind also requires full screen

The pipeline

Leave/return (or another configured signal) → the event is recorded for staff → on Standard/Strict a note tells you what was recorded and whether it counted → duplicates inside two seconds count once → on Strict, reaching the ceiling submits the test with answers saved so far → the result records the ending reason. Refresh, connection loss, sign-in moves and accessibility use are noted, never counted.

3.1 The three levels

TC-TST-026Off — truly nothing recordedP1

Preconditions

A running Kestrelworks Software Developer Intern test.

Steps

  1. Hide the tab, switch away, return; reload; use the clipboard.
  2. Watch the strip and look for any recorded-event surface; finish and read the result.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-027Standard — leaving is recorded, told each time, never ends the testP1

Preconditions

A running Standard test (e.g. SQL Queries).

Steps

  1. Switch to another tab for a few seconds, return.
  2. Read the note; acknowledge it; check the strip.
  3. Do it twice more; try leaving via Leave and via closing the tab.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-028Strict — the ceiling ends the test honestly, and only the ceilingP1

Preconditions

A running Northvale Associate test (ceiling 3) — the cheapest Strict spend. This spends the account's test; plan it as that account's test.

Steps

  1. Leave/return three counted times (spread beyond two seconds each); read each note and the strip count.
  2. At the third, watch the test end; open the result.

Expected

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

3.2 What counts, what is noted, what is nothing

TC-TST-029Two seconds of noise = one event — deduplicationP2

Preconditions

A running Standard test.

Steps

  1. Trigger several leave-signals inside two seconds (alt-tab repeatedly, or blur+hide together).
  2. Wait past two seconds and do it again.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-030Noted, never counted — refresh, connection, sign-in move, accessibilityP1

Preconditions

A running Strict test (or Standard — the count behaviour is what matters).

Steps

  1. Note the event count; reload the page.
  2. Drop the connection briefly and restore.
  3. If you can: sign in on another browser (TC-TST-015).
  4. Zoom the browser, navigate by keyboard/screen-reader, toggle reduced motion.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-031Clipboard & restricted-shortcut events — recorded where enabled, never blockedP2

Preconditions

A running Strict test on a paper with these recordings enabled (check the paper page's "What is recorded" lines; mark N/A if none of your tests has them).

Steps

  1. Copy or paste within the test; right-click.
  2. Press a restricted shortcut (F5, print, dev-tools).

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-032No hidden capture — camera, mic, screen, keystrokes are never askedP1

Steps

  1. Through a whole Strict test, watch for any permission prompt, any recording indicator outside the page, anything capturing keys or clipboard content.
  2. In dev tools watch what leaves the browser when events fire.

Expected

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

3.3 Full screen

TC-TST-033Tamarind Grove — full screen is asked, explained, and exits are recordedP1

Preconditions

A fresh account starting Tamarind Grove Systems Engineer (fullscreen required, Strict ceiling 3). Plan this as the account's spend on that paper.

Steps

  1. Start the test; read the full-screen gate; press Go to full screen.
  2. Press Esc to leave full screen; read what happens; re-enter.
  3. Refuse/deny if the browser offers a choice.

Expected

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

3.4 While a test is live — account-wide effects

TC-TST-034One live test at a time — across tabs, devices and papersP1

Steps

  1. With a test running, open a second paper's page (any type) and try Start.
  2. Sign the same account in elsewhere and try to start a paper there.
  3. End the test; confirm a new Start is allowed again.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-TST-035Live-test quiet — motion stills, toasts hold, spoilers closeP3

Steps

  1. While a test runs, watch product-wide behaviour in the second tab: motion, toasts, anything that would interrupt.

Expected

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

4 · Ending, Grading & Results

A test ends exactly four ways — you submit, time runs out, a Strict counted-event ceiling ends it, or account-security action ends your access. Everything after lives on /tests/:test/result: first an honest grading state, then the result itself — pass-mark and rewards for Mock; accuracy, marks-by-cut and company readiness for Company, never a pass mark.

RoutePageWhat it shows
/tests/:test/resultResult"Grading" until final; then score, breakdown, review, rewards — or the honest invalidated/archived state
/test-results (+ type addresses)HistoryEvery test incl. Overdue, Being marked, Invalidated, Replaced-by-newer

The pipeline

Submit / time-up / ceiling / access-ended → the room hands to the result page → "Submitted at {time}… Your result is being prepared" (grading is live, you can leave) → final: score, sections, question review, rewards — then the card shows Practice/View result and the row sits in history.

4.1 Endings & the clock

TC-RSL-001Submit dialog — full accounting before the point of no returnP1

Steps

  1. In a running test, answer some, mark some, leave some; press Submit test and read the dialog without confirming.
  2. Use its links; then Keep going.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-002Leave dialog — clock truth, strictness truth, an easy way backP1

Steps

  1. Press Leave in a running Standard test; read; confirm.
  2. Do the same on a Strict test.
  3. Return via the paper's Resume and check nothing moved but the clock.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-003Submit — once, final, one result however many pressesP1

Steps

  1. Submit a test; press the confirm twice fast; try Enter during it.
  2. Try submitting again from a second open tab of the same test.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-004Time runs out — answers saved so far are submitted, typing at zero is carriedP1

Preconditions

A test near its deadline (a company paper's last minutes, or leave a started Mock until the end).

Steps

  1. Be typing an answer as the clock reaches zero; watch.
  2. Open the result.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-005Grace is for finishing the submission, never for extra answeringP2

Steps

  1. Press Submit in the final seconds; while the submission completes past zero, try to change an answer on another question.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-006Left past its time — Overdue, then it submits itself within ~5 minutesP1

Preconditions

A test left running past its deadline without submitting (leave it, don't watch it end).

Steps

  1. Past the deadline, look at the catalogue card, the history row and the paper page.
  2. Wait ~5 minutes and look again; open the result.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-007Offline at the end — time-up submission retries and tells you the truthP2

Steps

  1. With a test near its deadline, cut the network and let the clock hit zero offline; read the state; restore.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-008Unanswered kinds are honest — Not reached · Skipped · Not answeredP1

Preconditions

Submit a test leaving: a question never opened (Not reached), one opened then left (Skipped), and one on screen at the end / left blank (Not answered).

Steps

  1. Arrange the three kinds, submit, open the review.

Expected

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

4.2 Grading states

TC-RSL-009Grading — named, live, and never an invented scoreP1

Steps

  1. Submit a test and land on the result page before grading finishes; watch it.
  2. Leave the page and come back through history while still grading.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-010Slow grading says so — never times out into a fake failureP2

Preconditions

A grading service delay/outage (coordinate with staff, or note N/A if grading is always fast on the deployment).

Steps

  1. Watch a result that is still grading after ~30 seconds and ~5 minutes.

Expected

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

4.3 The Mock result

TC-RSL-011Mock result — score, pass line, time used, ending, earned lineP1

Preconditions

A finished Mock test — one passed, one failed if your plan allows.

Steps

  1. Open the result; read the lead fully.
  2. Check the numbers against your recorded answers.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-012Answer tiles drive the review — All · Correct · Partly correct · Wrong · Not answeredP1

Steps

  1. On a finished result, press each answer tile.
  2. Open "Your sections"; press a section's "Show questions".

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-013Question review — your answer, right answer, explanation, hidden stays hiddenP1

Steps

  1. Open several reviewed questions across kinds: a choice you got right, one wrong, a coding question.
  2. Look for any hidden-test-case material.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-014Review withheld and aged-out — both say why, neither fakes itP2

Preconditions

A paper whose review settings hide questions/answers (staff-made variant if needed), and a result older than its retention — mark N/A where not staged.

Steps

  1. Open both results.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-015Marking maths — partial credit, negative marks, floor at zeroP1

Preconditions

Your written answer record for a finished test incl.: a multi-select with some right some wrong; a wrong single-choice on a −0.25 paper; a coding question passing some cases.

Steps

  1. Compare each question's awarded marks with what the rules promise.
  2. Check the total and the percentage.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-016Rewards pay once — completions, passes, recognitionsP1

Preconditions

An account finishing its first Mock ever, then a second; check the wallet/achievements against doc 03.

Steps

  1. Finish a first Mock test (any outcome); note XP.
  2. Finish a first pass (may be the same or a later paper); note XP.
  3. Finish another test — confirm nothing repeats.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-017A blank submission is honest — 0, Not passed, still your one testP2

Preconditions

An account willing to spend a paper submitting with zero answers (choose deliberately — it's that account's only test on that paper).

Steps

  1. Start, submit with nothing answered; read the result.

Expected

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

4.4 The Company result

TC-RSL-018Company result — accuracy, cuts, readiness; never pass/fail, never XPP1

Preconditions

A finished company test (e.g. Corvane Data Analyst Trainee).

Steps

  1. Open the result; read every region.
  2. Look for anything Mock-shaped: a pass mark, XP, achievements.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-019Company readiness — the gate, the bands, the updating stateP1

Preconditions

An account finishing tests at a two-paper company (Northvale or Corvane — the only seeds that can pass the ≥2-finalized gate).

Steps

  1. Finish one company test; read readiness. Finish the company's other paper; read again.
  2. On a one-paper company (Kestrelworks/Tamarind), finish and read readiness.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-020Someone else's test is not found — privacy in the addressP1

Steps

  1. Copy a finished test's address; open it signed in as a different learner account.
  2. Try a random /tests/… and /tests/…/result.

Expected

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

4.5 Relief grants & invalidation

Both need staff cooperation

Relief grants are granted in the staff console (doc 05); invalidation is a staff action too. Coordinate in the team channel: agree the account, the paper and the timing, then walk the learner side here.

TC-RSL-021Relief grant — the conditions say it replaces, and it really replacesP1

Preconditions

Staff grant a relief to an account with a finished result on a published paper.

Steps

  1. Open the paper's page; read the next action and the conditions.
  2. Start and finish the relief test; check history for both rows.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-022A grant can't be spent where a test couldn't start anywayP2

Preconditions

A grant holder facing: an archived paper; another live test; an unavailable paper.

Steps

  1. Try to use the grant on each.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-023Invalidation — the result stays, says why, and stops countingP1

Preconditions

Staff invalidate a finished result (agree which — it is the learner-facing side of a staff action).

Steps

  1. Open the invalidated result; read it fully.
  2. Open history; check the paper's card; check XP/Skills/readiness changed as the notice said.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-024Deleting the paper never deletes the result — history outlives catalogueP2

Preconditions

Staff archive/remove a paper a result exists on (coordinate).

Steps

  1. After the paper goes, open the result from history; try the paper's address.

Expected

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

5 · Practice Papers

Once your newest test on a paper is final — and while the paper is still offered — /papers/:paper/practice opens unrecorded practice: no clock, no events, nothing kept when you leave. It uses the paper's current published questions, not your frozen test copy.

RoutePageOpens when
/papers/:paper/practicePracticeNewest test on the paper final + paper still offered + on a computer; closed otherwise with its reason

The pipeline

Result final → card gains Practice → the whole paper lists in one page → answer a question, Check it → per-question outcome + marks → "So far" score grows → Start again clears it all → leaving discards everything.

TC-RSL-025Practice page — unrecorded, one page, your real paperP1

Preconditions

An account with a finished result on a still-offered paper.

Steps

  1. Open Practice from the card or the result. Read the lead; scroll the page.
  2. Look for anything test-shaped: a clock, an events count, a Save that persists.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-026Check per question — outcomes, marks, reveal settings respectedP1

Steps

  1. Answer several questions of different kinds and press each one's Check.
  2. On a paper that hides correct answers, check a wrong answer.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-027Practice coding — unlimited runs, Check runs every case, hidden stays hiddenP1

Steps

  1. On a coding question in practice, Run the examples repeatedly — past any test-time allowance.
  2. Write a partial solution and press Check; read the outcome.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-028"So far" score & Start again — a temporary tally that dies with the pageP1

Steps

  1. Check several questions; read the "So far" line as it grows.
  2. Press Start again; check the page. Leave and reopen practice.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-029"Practise the N you missed" filters to your missesP2

Steps

  1. On a result with missed questions, press Practise the N you missed; then Show all. Compare with Practise all.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-030Practice closed states — live, grading, archived, never-taken, touchP1

Steps

  1. Before any test on a paper: no Practice action; type the address directly.
  2. While a test on it is live or grading: try the address.
  3. On an archived/closed paper you finished: look for Practice.
  4. On a phone/tablet: look for Practice and open the address.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-RSL-031Practice never touches the record — Skills, notices, rewards all stillP2

Steps

  1. Note Skills/XP/history before a practice session; do a full practice; re-check.

Expected

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

6 · Workspace Projects

My Projects (/projects) is the learner's own collection — up to 10 projects, each ≤25 MiB and ≤100 files, built from blanks, stacks, templates or a ZIP import, and worked in a full IDE with run, debug, preview, checklist and history. Course Workspaces are a separate collection in §7. Every case here is free — nothing in Workspace is spendable like a test.

RoutePageWhat it shows
/projectsMy ProjectsProject cards newest-edited first, storage/files meters, New project (Blank · Build your own · Template), Import a ZIP, template strip, search + language filter
/projects/:projectIdThe IDEProject bar, icon rail, explorer/search/run-debug/settings, editor tabs, output (Terminal · Results · Problems · Debugger), right panel (Preview · Checklist · Brief), status bar

The pipeline

New project (blank / stack / template / ZIP) → the IDE opens → files in the explorer, code in the editor → Run on device or cloud → preview for web → save as you go, conflicts and history where edits collide → tick the checklist → Mark complete → the card shows Complete and storage counts until you Delete.

Limits worth staging once

10 projects · 25 MiB and 100 files per project · ≤12 tasks · a text file ≤2 MiB · a binary ≤10 MiB · paths ≤240 chars, letters/digits/`-`/`_`/`.`/`/` only. Have one account hold ~9 projects so the at-limit cases are one create away.

6.1 My Projects — the list

TC-WKS-001Project list — cards, meters, ordering, actionsP1

Preconditions

An account with 2+ projects of different languages and states.

Steps

  1. Open Workspace → My Projects. Read the strips and every card.
  2. Open a card's actions.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-002Empty, failed and filter states are three different thingsP1

Steps

  1. On a fresh account open My Projects.
  2. With projects loaded, cut the network and refresh the list; restore and retry.
  3. Search a name; filter by a language; combine into a no-match.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-003At the limit — create/import refuse honestly, delete frees the slotP1

Preconditions

An account holding 10 projects.

Steps

  1. Try New project and Import a ZIP; read what they say.
  2. Delete one project (through its confirm); try again.

Expected

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

6.2 Creating a project

TC-WKS-004New project — Blank types with starter files and an honest name fieldP1

Steps

  1. Open New project → Blank. Read the type groups; pick several and watch the starter-file list change.
  2. Type a name past 120 chars; an illegal name; a good one. Create.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-005Build your own — stack decides the runtime, SQLite only with a back endP2

Steps

  1. Open Build your own. Read the three choices; combine them.
  2. Try SQLite alone — no back end. Then Flask + SQLite. Create each if slots allow.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-006Templates — preview before commitment, a copy that stays yoursP1

Steps

  1. On the template strip open "Use this template" for React: habit tracker and SQL: college fest. Read each dialog; create one.
  2. Compare the project against the template after staff edit the template later (or trust the independence line and spot-check).

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-007Import a ZIP — previewed, all-or-none, refused whole with the reasonP1

Steps

  1. Import a ZIP a small valid archive: read the included/excluded preview before confirming.
  2. Try a ZIP over a limit (>25 MiB total, >100 files, or paths outside the rules) and a non-ZIP file.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-008Create is idempotent — a double-click never makes twinsP2

Steps

  1. In any create dialog press Create project twice quickly; import with a double-confirm.

Expected

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

6.3 The IDE — layout and controls

TC-WKS-009IDE anatomy — every region named and doing its jobP1

Steps

  1. Open a Python project. Identify each region top to bottom, left to right.
  2. Toggle the right panel and the stack details; open each icon-rail tab.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-010Editor tabs & keys — open, cycle, palette, commandsP2

Steps

  1. Open three files; cycle tabs with Alt+[/Alt+]; close one.
  2. Ctrl+P the file palette; Ctrl+Shift+P the command palette; Ctrl+G to a line; Ctrl+S to save; Ctrl+Enter to run.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-011Explorer — every row action, drag-to-move, second editorP1

Steps

  1. Open a folder's row menu and a file's row menu — read every action.
  2. Drag a file onto a folder; use Move to….
  3. Open to the side a second file beside the first.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-012Dividers & narrow windows — layout remembers, never trapsP3

Steps

  1. Drag each divider; reload — is it kept?
  2. Narrow below 1024px: the IDE becomes tabs (Code / Output / Preview); run something while narrow; widen again.

Expected

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

6.4 Files & saving

TC-WKS-013Path rules — refused as typed, never silently rewrittenP1

Steps

  1. Try to create/rename files named: my file.py (space), ../x.py, /abs.py, a\b.py, a name over 120 chars, a path over 240, and FILE.py beside file.py.
  2. Make legal nested paths with hyphens, underscores and dots.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-014Save ladder — typing, local copy, checkpoint, every state literalP1

Steps

  1. Type into a file and watch the status bar through the save cycle.
  2. Take the network offline, type more, read the state; restore.
  3. Force a save failure (service refusal); read and retry.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-015Reload mid-edit — your unsent work comes back with youP1

Steps

  1. Type changes, do not save, reload the page immediately; check the file.
  2. Type, close the tab, reopen the project.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-016Two tabs of one project — the stale one is told, and you choose who winsP1

Steps

  1. Open the project in two tabs; edit different lines in both; let them collide.
  2. Read the dialog; try each choice on separate collisions.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-017Uploads & binaries — previews, all-or-none, binaries never runP1

Steps

  1. Upload a small image into a folder; open it — it shows as a picture.
  2. Upload a batch with one file over the 10 MiB binary limit; check nothing landed.
  3. Upload over an existing name; try to run a binary file in the terminal.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-018File History & Restore — checkpoints are real and reversibleP2

Steps

  1. Edit and checkpoint a file a few times; open its History; Use this version on an older checkpoint.
  2. On the project, open the restore path; read the confirm; restore.

Expected

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

6.5 Running & preview

TC-WKS-019Python runs on this device — real interpreter, real input, honest outputP1

Steps

  1. In a Python project run a program that prints and then input()s.
  2. Send input; use Backspace, Ctrl+C, Ctrl+D.
  3. Make it error; read the traceback.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-020The start file — chosen, then main/index, then the only one of its kindP1

Steps

  1. In a multi-file Python project, set a start file from a file's menu; check the status bar and run bar.
  2. Rename that file; delete it; run again.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-021Cloud runs — offered only when needed, named where they ranP1

Preconditions

A project needing cloud (Flask / numpy / pandas — e.g. the taskBoard template; or a Data-analysis template project).

Steps

  1. Run it; watch where it says it runs.
  2. In the same project try a pure-Python file — does it still run on device?

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-022SQL projects run in the browser — Results tab, named errors, not meteredP1

Steps

  1. In a SQL project (collegeFest template or a blank SQL) write a query and run.
  2. Write a syntax error; run.
  3. Open the .db file's row — find Reset data; check storage accounting.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-023React preview — pinned versions, MemoryRouter only, named refusalsP1

Steps

  1. In a React project (habitTracker template) edit App.jsx and watch the preview.
  2. Import a package outside the pinned set (lodash); import BrowserRouter/HashRouter and read the error.
  3. Use react, react-dom, react/jsx-runtime, react-router-dom — the allowed set.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-024Preview isolation & timing — as-you-type, no outside links, honest timeoutP1

Steps

  1. Find Update as I type; type and count the ~700ms wait; toggle it off, reload — is it kept per project+browser?
  2. Put an external link in the page and click it.
  3. If a preview can stall, watch past 10 seconds.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-025Run allowance & rejoin — three programs, replayed output, honest stopP1

Steps

  1. Start programs until the allowance (3 concurrent across Code Lab + projects) is reached; start one more.
  2. Navigate away mid-run and return inside ~2 minutes; then past it.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-026Debug (Python) — recorded steps on this device, time-travel controlsP1

Steps

  1. On a Python project press Debug on a program that sets variables and errors.
  2. Open the Debugger tab; use To the start / Back / Forward / To the end and the step slider; Go to the error.
  3. Try Debug on a non-Python project and on a cloud-requiring file.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-027Problems tab — real checks, grouped honestly, click to the lineP2

Steps

  1. In a Python project write code with an error and a warning; open Problems.
  2. Click each entry.

Expected

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

6.6 Checklist, completion & small screens

TC-WKS-028Checklist — add, rename, reorder, remove, cap at 12P1

Steps

  1. Add a task; rename it; move it up/down; remove it — no confirms needed for these.
  2. Add tasks until the cap; try one more.
  3. Tick tasks and watch the count + card state.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-029Mark complete — you judge, nothing grades, first time earns onceP1

Steps

  1. On a no-task project try to complete — read the block.
  2. On a fully-ticked project press Mark complete; read the confirm; confirm.
  3. Do it on the account's first ever completion; then complete another project.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-030Reopen & Untick every task — state follows honestly, files untouchedP2

Steps

  1. On a Complete project untick one task — watch the state; complete it again.
  2. Use Untick every task; read the confirm; confirm.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-031Phone/tablet — read-only honesty, checklist still works, download offeredP1

Steps

  1. Open a personal project on a phone or tablet (or a mobile dev-tools profile).
  2. Switch Files / Checklist / Brief; open a file; tick a task; try to edit or run.

Expected

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

7 · Course Workspaces

Course Workspaces (/course-workspaces) are the projects a course's project lessons asked the learner to build — a separate collection with its own shared 250 MiB, each workspace ≤20 MiB and ≤40 files, never counted against My Projects' 10. A workspace is created once per lesson and completion flows back into the lesson.

RoutePageWhat it shows
/course-workspacesCourse WorkspacesOne card per workspace: course · lesson, state, tasks, size; shared storage meter; Download · Open the lesson · Delete
/projects/:projectIdThe workspace IDESame editor core as §6 plus the lesson's Brief and Checklist, "Back to {lesson}" — and no generated help anywhere

The pipeline

A project lesson in a course → "Start the project" → the workspace is created once → work, run, tick the checklist → Mark complete → the lesson completes (and the subject/course, XP and certificate that flow from it) → deleting or re-opening the workspace never takes the lesson's completion back; starting again makes a fresh copy.

Staging

You need a course with a project lesson — the seed subjects ("Data Structures in Python", "Python Fundamentals", "SQL Basics") include "Practice:" lessons; find one that builds a project, or ask staff where the seeded project lesson lives.

TC-WKS-032Course Workspaces list — its own meter, its own cardsP1

Preconditions

An account with at least one Course Workspace (created from a lesson) and some personal projects.

Steps

  1. Open Course Workspaces. Read the lead strip and the cards.
  2. Compare against My Projects.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-033Start from a lesson — created once, reopened foreverP1

Steps

  1. Open the course's project lesson; read what the workspace starts with; press Start the project.
  2. Leave and open the lesson again; press its project action again.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-034The workspace IDE — three columns, Brief, Back to lesson, no agentP1

Steps

  1. Open the workspace; read its layout and right panel.
  2. Open the Brief tab and the way back to the lesson.
  3. Look for any generated help, agent or credits surface.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-035Completing the checklist completes the lesson — once, permanentlyP1

Steps

  1. Tick every task in a Course Workspace; press Mark complete; read the confirm and confirm.
  2. Open the lesson, the subject, and check XP/certificate surfaces it should feed.
  3. Untick a task afterwards and re-check the lesson.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-036Delete & Start again — files die, completion lives, fresh means freshP1

Steps

  1. Delete a Course Workspace (read the confirm); check storage freed and the lesson still complete.
  2. From the lesson press Start again; compare the new workspace.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-037Archived course — existing workspace usable, no new oneP2

Preconditions

Staff archive a course a learner has a workspace from (coordinate; mark N/A if not staged).

Steps

  1. Reopen the workspace and the lesson's start action after archiving.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-WKS-038Workspace limits are their own — 20 MiB, 40 files, 250 sharedP2

Steps

  1. Push a Course Workspace toward its limits (large files, many files — ZIP import where allowed or uploads).
  2. Push the shared meter across several workspaces if feasible.

Expected

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

8 · Cross-cutting checks — apply everywhere in this doc

The platform's universal rules (index §8) bind every page here. These cases sweep them across the test room, results and Workspace once, so they don't repeat inside every case above.

TC-ALL-001Generated assistance is OFF — verify its absence, don't test its presenceP1

Steps

  1. Sweep every surface in this doc for any AI/agent surface: test room, results, practice, both project IDEs, run/debug panels, right panels, palettes, Quick Notes-adjacent spots.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ALL-002Unavailable ≠ empty · unknown ≠ zero · pending is namedP1

Steps

  1. Drop the network and reload: the catalogues, a paper page, Test results, My Projects, a result mid-grading.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ALL-003Once means once — the spendable and the creatableP1

Steps

  1. Re-audit every "once" surface: one test per paper, one live test, one relief grant, idempotent Start/Submit/Create/Mark-complete, once-only rewards.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ALL-004The words are the product's wordsP2

Steps

  1. Across this doc's surfaces, listen for wrong words: "attempt/retake" for test, "proctoring" for strictness, "hidden case" naming content, "Labs" in interface text, "saved on this device" vs "Saved locally".

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ALL-005Times, numbers, percents — IST, Indian grouping, honest roundingP2

Steps

  1. Check deadlines, "Submitted at", "Edited" stamps, marks in the thousands, and every percentage in results/readiness.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ALL-006Keyboard, screen reader, no colour-only statesP1

Steps

  1. Drive: a test room by keyboard alone; a result page's review with a screen reader; the IDE's palettes and dialogs by keyboard.
  2. Check every state (answered/marked/closed/current; save states; outcomes) survives without colour.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ALL-007Widths & themes — 390 / 768 / 1024 / 1280 / 1440, Prism & Halo, light & darkP2

Steps

  1. Spot-check the catalogue, a paper page, the test room (≥1024 only), a result, My Projects, the IDE at each width; flip themes and modes on two screens.

Expected

Result: ☐ Pass  ☐ Fail  ☐ N/A   ·  Notes: ____________________
TC-ALL-008Feel — first load ~3s usable, in-page reads ~1s, no spinners that lieP3

Steps

  1. Time cold loads of the catalogues and the IDE; time in-page reads (paper page, result, opening a file).
  2. Watch every spinner/skeleton — does it end honestly?

Expected

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

Wizly Learning Testing Handbook · 02 · Learner — Tests & Workspace · generated from the product specification (docs/) and source of Sprinkle-Jelly-V1 · November 2026