SkillPixel · GUI Test Evidence

Document Quiz Import · Slice 3

AI answer extraction — browser verification on the default and Viettel tenants. Tested on 20 September 2026 in signed-in Edge, using a supplied two-page PDF and a synthetic JSON answer key.

PASS14 screenshots2026-09-20 11:25:27 SE Asia Standard Time

Verification report

PASS applies to Slice 3. Slice 4 compatibility and enablement work remains outstanding. The QA quizzes remain unpublished drafts.

CheckObserved resultStatus
Separate uploadsThe question PDF is validated first. The answer file uploads separately and triggers AI extraction.PASS
Real Gemini extractionBoth tenants produced 15 numbered A–D rows matching the synthetic JSON key. The key tests mapping, not educational correctness.PASS
Processing and retryEditing is disabled while processing. Retry uses the retained files without uploading them again.PASS
Draft recovery and SaveReopening restores the AI draft. Saved answers remain separate until Save; all 15 saved rows survived reload.PASS
Missing answerOmitting answer 15 produced a flagged blank row. Save was blocked until the answer was corrected.PASS
Manual fallbackMissing tenant AI credentials retained both files and allowed manual entry and Save.PASS
Tenant boundaryOpening the default tenant’s quiz route from Viettel was blocked by a course-summary HTTP 404. No quiz content appeared.PASS
Responsive layoutDesktop and 360px layouts fit without horizontal page overflow. No console errors were recorded on the Viettel editor.PASS
1,675backend unit tests passed
413frontend tests passed
14screenshots below

Automated checks and limits

Frontend production build and touched-file lint passed. Backend tests cover provider upload cleanup, async client cleanup, arbitrary answer extensions, varying option counts, duplicate and missing numbers, retained files, late results, timeout/restart recovery, and dispatch after commit. Backend tests reported 10 existing warnings.

Provider failure, cancellation, timeout and simulated restart are unit-test evidence, not live provider-failure or backend-restart tests. Browser failure coverage used missing tenant credentials. Tenant isolation was checked through normal navigation; forged API requests were not part of this browser run.

Issues found and fixed

Environment and cleanup

Local isolated QA database, real private object-storage uploads, and real Gemini extraction. Both tenants’ original AI settings were restored after testing. The temporary Viettel frontend was stopped; the main development stack remained running. No application deployment or production configuration change was performed.

Screenshots show test data and the supplied learning document. Click an image to view it at full resolution.

01

Missing tenant key; retained files

Missing tenant key; retained files
02

Manual fallback saved

Manual fallback saved
03

Processing disables editing

Processing disables editing
04

Real extracted draft beside PDF

Real extracted draft beside PDF
05

Reopened draft after fix

Reopened draft after fix
06

Mobile PDF and upload

Mobile PDF and upload
07

Mobile answer controls

Mobile answer controls
08

Missing answer 15 flagged

Missing answer 15 flagged
09

Corrected answers saved, desktop 1280px

Corrected answers saved, desktop 1280px
10

Viettel PDF validated before answer upload

Viettel PDF validated before answer upload
11

Default-tenant course denied from Viettel

Default-tenant course denied from Viettel
12

Viettel real AI draft

Viettel real AI draft
13

Viettel saved answers after reload

Viettel saved answers after reload
14

Viettel mobile answer controls

Viettel mobile answer controls