Missing tenant key; retained files
SkillPixel · GUI Test Evidence
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.
PASS applies to Slice 3. Slice 4 compatibility and enablement work remains outstanding. The QA quizzes remain unpublished drafts.
| Check | Observed result | Status |
|---|---|---|
| Separate uploads | The question PDF is validated first. The answer file uploads separately and triggers AI extraction. | PASS |
| Real Gemini extraction | Both tenants produced 15 numbered A–D rows matching the synthetic JSON key. The key tests mapping, not educational correctness. | PASS |
| Processing and retry | Editing is disabled while processing. Retry uses the retained files without uploading them again. | PASS |
| Draft recovery and Save | Reopening restores the AI draft. Saved answers remain separate until Save; all 15 saved rows survived reload. | PASS |
| Missing answer | Omitting answer 15 produced a flagged blank row. Save was blocked until the answer was corrected. | PASS |
| Manual fallback | Missing tenant AI credentials retained both files and allowed manual entry and Save. | PASS |
| Tenant boundary | Opening the default tenant’s quiz route from Viettel was blocked by a course-summary HTTP 404. No quiz content appeared. | PASS |
| Responsive layout | Desktop and 360px layouts fit without horizontal page overflow. No console errors were recorded on the Viettel editor. | PASS |
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.
Use Insert question here before any answer row. A clear unused numbering gap suggests the missing number; otherwise the new number is blank. Existing numbers and answers stay unchanged. Inserting question 2 between 1 and 3, Save and reload passed. Vietnamese controls also passed at 360px. Regression coverage brings the frontend total to 415 tests.
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.