Volume 9

Q446: Final Manual QA Report For Practice Ground

Difficulty: SeniorFrequency: MediumAnswer time: 20-24 minutes

What Interviewers Want To Evaluate

This drill tests whether you can close a frontend feature with a clear manual QA report.

Senior engineers do not only say:

I tested it.

They explain:

what was tested
why it matters
what passed
what was deferred
what risk remains

The practice ground now has enough behavior that a structured report matters.

The JavaScript and TypeScript editors are not just text inputs.

They include shortcuts, copy controls, console output, TypeScript feedback, local saved snippets, dark mode, and responsive layout.

Each of those pieces can fail independently.

Short Interview Answer

I would close the practice ground with a manual QA report that validates the learner workflow end to end.

I would test JavaScript execution, TypeScript checking, editor shortcuts, copy actions, console caps, saved snippets, local storage recovery, dark mode, and responsive breakpoints.

I would record pass or follow-up status for each area.

The goal is not to create a giant checklist.

The goal is to prove that the feature behaves correctly in the paths a learner will actually use.

Scope

The QA scope is:

/practice/javascript
/practice/typescript
shared editor shortcuts
shared console behavior
saved snippets
theme switcher
mobile layout
tablet layout
desktop layout

This is enough scope for Volume 9.

It avoids drifting into future ideas like accounts, cloud sync, snippet folders, or Monaco migration.

JavaScript Practice QA

Check these paths:

load JavaScript page
type runnable code
run with Ctrl or Command Enter
run with visible Run button
copy code
copy console output
clear console output
save snippet
load snippet
delete snippet

Expected result:

code runs
console shows output
copy feedback is visible
clear action resets output
snippet actions do not change language accidentally

If console output is empty, the page should still explain the state clearly.

If code throws, the console should show the error without breaking the page.

TypeScript Practice QA

Check these paths:

load TypeScript page
type valid TypeScript
type invalid TypeScript
run code
copy code
copy console
clear console
save snippet
load snippet
delete snippet

Expected result:

feedback panel starts idle
checking state is visible
valid code shows compiled status
invalid code shows readable error status
runtime console remains separate from type feedback

This separation is important.

A learner should know whether a failure is a type issue or a runtime issue.

Editor Shortcut QA

Check:

Tab indents
Shift Tab outdents
Alt ArrowDown duplicates current line
Alt ArrowDown duplicates selected block
Ctrl or Command Enter runs code
Ctrl or Command L clears console

Expected result:

text changes predictably
cursor position remains useful
selection behavior is stable
shortcut reference remains accurate

Automated tests already cover the pure transform utilities.

Manual QA confirms the same behavior survives inside the browser editor.

Console Safety QA

Check:

many console logs
long console message
error output
clear output
copy output after truncation
copy output after clear

Expected result:

console has visible system lines
latest run is identifiable
entry cap prevents runaway output
long messages are truncated visually
copy output still contains useful context

This keeps the practice ground usable even when learner code is noisy.

Saved Snippets QA

Check:

save JavaScript snippet
save TypeScript snippet
reload page
load snippet
attempt load when editor has unsaved text
confirm load
cancel load
delete snippet
reload after delete

Expected result:

snippets persist locally
language filters are respected
conflict confirmation protects current editor text
delete confirmation prevents accidental loss
empty state is helpful

Also test invalid local storage manually by changing the stored value in browser devtools.

Expected result:

page recovers
storage resets safely
no crash is shown to the learner

Theme QA

Check:

system theme
light theme
dark theme
reload persistence
buttons
cards
editor panels
console panels
saved snippet cards

Expected result:

text remains readable
button backgrounds and labels have contrast
focus rings remain visible
cards do not look washed out

Dark mode should not produce white text on white buttons.

Light mode should not make secondary controls disappear.

Responsive QA

Check:

mobile width
tablet width
laptop width
desktop width
long snippet names
long console output
long editor lines

Expected result:

desktop keeps editor and console side by side
mobile stacks panels cleanly
cards wrap without broken pills
buttons remain tappable
text does not overlap

This matters because the learner may review on mobile and practice on laptop.

Both should feel intentional.

Report Format

A useful closing report can be short:

Area: JavaScript console
Status: Pass
Evidence: ran normal output, thrown error, copy, clear, and capped output paths
Risk: no browser sandbox isolation beyond current runner scope
Follow-up: revisit if remote execution or packages are added

Use the same shape for each area.

This makes QA readable for future maintainers.

Common Mistakes

Avoid:

only testing the happy path
forgetting TypeScript error states
testing desktop only
ignoring dark mode
calling tests complete when only automated tests ran
adding new feature scope during QA

QA is a closure activity.

It should reduce uncertainty.

Senior-Level Framing

Say:

I separated automated confidence from manual workflow confidence.
Automated tests cover deterministic editor and storage utilities.
Manual QA covers browser integration, layout, themes, and learner flow.

That answer sounds mature because it explains why both layers exist.

Final Checklist

Before marking this question complete:

npm run test
npm run typecheck
npm run build
manual JavaScript practice check
manual TypeScript practice check
manual saved snippets check
manual responsive check
manual dark-mode check

If all pass, the practice ground is ready for Volume 9 closure.