SCORM 2004 Test Wrapper for SCOs
© 2006, 2007 Claude Ostyn - All rights reserved

Overview

This wrapper can be used to monitor the communications between a SCO and a runtime environment. It can also be used as a minimal, standalone runtime environment for quick testing of SCOs. It consists of a single HTML file that, when launched, instantiates various windows including a log window, a stage window in which the SCO will play, and a small control panel. The wrapper is itself a SCO.

The SCO to be tested does not need to be modified in any way. There is nothing to install. No Java, no ActiveX, no Flash, no server-side component to activate. No nagging and no expiration date. Works offline as well as online. Subject to the usual browser security and popup control constraints.

Description

Diagram of how a SCO communicates with a RTE through an API
SCO launched in LMS without test wrapper
 
Diagram of how the wrapper fits between the SCO and a RTE
SCO launched with the test wrapper
 
Diagram of how the wrapper functions in standalone mode
SCO launched by the test wrapper without a LMS
 

The test wrapper includes a stage frame in which SCOs are launched, a logging frame in which you can monitor the SCORM API communication between the SCO and the runtime environment, and a control panel with various options. The test wrapper can be used with a LMS or standalone. When used with a LMS, it must be integrated into the SCORM package you want to test. When used standalone, you use it to directly launch the SCO you want to test, using controls in the wrapper's control panel. The demos below use the wrapper in standalone mode.

How to use the test wrapper

This test wrapper can be used with or without a LMS.

Using the wrapper with a LMS

Copy the wrapper file into the same directory as your SCO. Modify your manifest to include the wrapper as a file in the element you want to test. Modify the URL in the href attribute of the by prepending the file name of the wrapper, using the original file name of the SCO as the value of a "sco" parameter for the new URL. Depending on the URL, you may have "URL escape" any special characters in the launch parameter. So, for example, if the original URL was mysco.html the modified URL becomes scorm2004testwrap.htm?sco=mysco%2Ehtml

Some common escape codes
Character Code
. %2E
? %3F
= %3D
& %26

The <resource> element that specifies each SCO is configured to launch the actual SCO through the scorm2004testwrap.htm file. In other words, you launch this SCO instead of the target SCO, and specify the target SCO as a parameter in the launch URL in the resource element in the manifest.


The example below illustrates typical changes to the manifest.

(before)
<resource ... href="mysco.htm">
  <file href="mysco.htm"/>
  ...
(after)
<resource ... href="scorm2004testwrap.htm?sco=mysco.htm">
  <file href="scorm2004testwrap.htm"/>
  <file href="mysco.htm"/>
  ...

Using the wrapper standalone

You can launch the wrapper by itself in the file system or in a web site, and specify a relative URL for the SCO to launch. The URL can be specified in a parameter named "sco" or manually by typing it in after the wrapper has been launched. The wrapper does not implement all the features of a real LMS, and in this version some of the error state values are not correct. However you can exercise most of the functionality of a SCO, including suspend and resume. The live demos below use the actual wrapper in standalone mode.

In standalone mode, you can test the SCO's ability to suspend and resume by unloading and reloading the SCO. If you don't want to resume on the next launch, clicking the End Attempt button will clear all the memorized data.

Options

The Options button brings up a small control panel to allow presetting some of the launch parameters. In standalone mode (but not in the demos on this page) you can also choose whether to launch the SCO in the stage frame or in a popup window.

Interactive live demo

Live demo 1

The interactive demo below shows the wrapper used with a very simple SCO that just tracks time and completion. You can use the buttons in the wrapper to try to unload and reload the SCO and observe how the wrapper reports the API calls. With a more complex SCO, you would of course get more interesting data.


The SCO in the demo above was created by just adding the generic script described in The Eye of the SCORM to a plain HTML page.

Another live demo

The demo below uses a diagnostic SCO. This diagnostic SCO is designed to test and diagnose various aspects of a SCORM runtime environment. You can use the buttons in the wrapper to unload and reload the SCO. You can also try different diagnostics in the test SCO. For example, you can play with the API Prodder to get and set values as allowed by the SCORM 2004 API, and observe how the wrapper reports the API calls. Also observe what happens with GetValue and SetValue parameters. Note that the wrapper is not a complete environment and it does not trap all possible errors--it's not a real LMS, it just pretends to be one. Running in a conformant SCORM LMS, the wrapper will just show you what goes back and forth between SCO and LMS. For more information about the diagnostic SCO, see Diagnostic SCO for SCORM runtime.

Yet another live demo

The demo below uses the same test SCO as Live demo 2, but it runs another instance of the wrapper within itself to show how the wrapper acts when it is used as a pass-through between a SCO and a LMS. You will notice that in pass-through mode, the wrapper does not have the controls to load or unload the SCO since that is controlled by the LMS. In this demo, you may want to make the log panes narrower to see the SCO better. To resize the frames, drag the borders between them.

Known issues and limitations

When running in pass-through mode with a LMS, the test wrapper initializes and terminates the communication session with the LMS on behalf of the SCO under test. At one point, for various reasons, this seemed to make sense, since the test wrapper is a SCO itself, but I'm working on a version that is a true pass-through and that will pass Initialize and Terminate exactly as they are called by the SCO under test. Just need to tie up all the loose ends...

When running in standalone mode, the test wrapper emulates most of the functionality of a LMS, as seen by a SCO but this emulation is not complete. In particular, there is no emulation of the sequencing environment that might control navigation data elements or initialize the cmi.objectives array. This is a trade-off between keeping it to a single file and making it so complicated that it would be too expensive to maintain. Although it can be used productively for debugging without jumping through the extra hoops required by the SCORM Conformance Test suite, and to test with other browsers like FireFox that are not supported by the test suite, this test wrapper in standalone mode is not intended to be a replacement for the SCORM Conformance Test suite.

Download

Right-click here to download the scorm2004testwrap.htm file. No other file is required to use the SCORM wrapper with your SCOs.
(Version: 0.9.9.5 beta, 2007-01-18, 94K)

Demo files

To download all components of Live demo 1, right-click the following links:
Wrapper: scorm2004testwrap.htm
HTML page for the SCO: ISOTimeForSCORM.htm
Generic SCORM script for the SCO: ostyn2004sco.js

To download all the components of Live Demo 3 and Live Demo 4, right-click the following links:
Wrapper: scorm2004testwrap.htm
Diagnostic SCO: SCO only: proddingsco.htm or as SCORM 2004 package: proddingsco.zip

Each of those extra files has its own copyright notice and license that you must read and agree to before use.

License and terms of use

Creative Commons License This work is licensed under a Creative Commons Attribution-ShareAlike2.5 License.
USE AT YOUR OWN RISK
THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR OR COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.