SCORM 1.2 video test package
============================

WHAT IT IS
A one-page SCORM 1.2 lesson for testing an LMS. It teaches nothing. It proves that your LMS can
import a SCORM 1.2 package, launch it, hand it the SCORM 1.2 API, and store what the package sends.
It also plays a 5 second MP4 test card (color bars, a countdown and a quiet 440 Hz
tone), made for this package and free to use, so you can check that the LMS serves video.

WHAT IT DOES, IN ORDER
1. Looks for the SCORM 1.2 API: an object named API (window.API) in this window, then in each
   parent window up to the top, then in the window that opened it and that window's parents.
2. Calls LMSInitialize("").
3. Reads and shows on the page:
     cmi.core.student_name, cmi.core.lesson_status, cmi.core.entry, cmi.core.lesson_mode,
     cmi.suspend_data
4. If cmi.core.lesson_status is "not attempted" (or empty), sets it to "incomplete".
5. Writes a launch counter to cmi.suspend_data ("launches=1", then "launches=2" on the next
   launch, and so on), then calls LMSCommit("").
6. When the learner clicks "Mark complete" (the button unlocks only after the video plays to
   its end; video errors are written to the log), sets:
     cmi.core.score.min      0
     cmi.core.score.max      100
     cmi.core.score.raw      100
     cmi.core.lesson_status  completed
     cmi.core.session_time   time on the page, HH:MM:SS
     cmi.core.exit           "" (empty: a normal exit)
   then calls LMSCommit("") and LMSFinish("").
7. If the page is closed before "Mark complete", sets cmi.core.session_time and
   cmi.core.exit = "suspend", then calls LMSCommit("") and LMSFinish(""). The status stays
   "incomplete", and the launch counter should go up by 1 on the next launch.

Every call is listed in the API log at the bottom of the page with its return value and, when it
is not 0, the error code and the LMS's description of it.

WHAT YOUR LMS SHOULD RECORD AFTER "MARK COMPLETE"
  Status: completed
  Score: 100 (out of 100)
  Time: roughly the time the page was open

The manifest sets no mastery score (no adlcp:masteryscore), so the LMS has no reason to change
"completed" into "passed" or "failed".

FILES
  imsmanifest.xml        the manifest: SCORM 1.2, one SCO, resource type adlcp:scormtype="sco"
  index.html             the lesson; all CSS and JavaScript are inside it
  test-card-5s.mp4       5 s, 640 x 360, H.264 Baseline video with AAC audio
  README.txt             this file
  imscp_rootv1p1p2.xsd   IMS Content Packaging 1.1.2 schema
  imsmd_rootv1p2p1.xsd   IMS Metadata 1.2.1 schema
  adlcp_rootv1p2.xsd     ADL SCORM 1.2 content packaging extensions
  ims_xml.xsd            the xml: namespace schema the files above import

Upload the .zip as it is. Do not unzip and re-zip it: imsmanifest.xml must stay at the top level.

LICENSE
The lesson files (index.html, test-card-5s.mp4, imsmanifest.xml and this README) are free to use, copy,
change and share for any purpose, including commercial use, with no attribution required. They come
with no warranty.
The .xsd and .dtd files are the standard manifest schema files written by IMS Global Learning
Consortium, ADL and W3C, as distributed by SCORM.com (Rustici Software) for inclusion in every SCORM
package. They keep the notices inside them.

Built 9 October 2026.
