All packages can be found in the package distribution directory, if building locally it will be lts/pkg/dist/
. For most of the Runtime Verification tests access to the statements as stored in the LRS will be necessary.
These test cases confirm that the LMS provides the minimum level of implementation fidelity to allow for specific package requirements.
For each of the following package files attempt to import them into the LMS and confirm that each package is imported correctly.
-
101-one-thousand-aus.xml
-
102-zip64.zip
These test cases confirm that the LMS provides sufficient package validation such that it will not allow packages that do not conform to the package requirements.
For each of the following package files attempt to import them into the LMS and confirm that each package is rejected.
-
201-1-iris-course-id.xml
-
201-2-iris-block-id.xml
-
201-3-iris-au-id.xml
-
201-4-iris-objective-id.xml
-
202-1-relative-url-no-zip.xml
-
202-2-relative-url-no-zip.xml
-
202-3-relative-url-no-zip.xml
-
202-4-relative-url-no-zip.xml
-
202-5-relative-url-no-zip.xml
-
203-1-relative-url-no-reference.zip
-
204-query-string-conflict-endpoint.xml
-
205-1-duplicated-block.xml
-
205-2-duplicated-objective.xml
-
205-3-duplicated-au.xml
-
206-1-invalid-au-url.xml
-
207-1-invalid-courseStructure.xml
-
208-1-invalid-package.md
(should be imported with aContent-Type
oftext/markdown
) -
209-1-not-a-zip.zip
-
210-1-no-cmi5-xml.zip
These test cases confirm runtime requirements of the LMS via executable AUs and in response to actions performed by the AU. NOTE: after each AU runs there may need to be some clean up of the state of the LMS, for instance, deleting the imported package and associated registrations.
All of the packages in this section should be considered valid packages by the LMS so the step of verifying import of the package is assumed for each case and should succeed for all packages listed here.
-
AU Execution - Launch AU 0 in the package
- Confirm
success
istrue
in displayed result object - Confirm
isError
isfalse
in displayed result object
- Confirm
-
Post Execution Validation - Pull list of statements for
registration
seen in result object in ascending order- Confirm that there is only one statement with
verb.id
ofhttp://adlnet.gov/expapi/verbs/launched
- Confirm that the first statement has
verb.id
ofhttp://adlnet.gov/expapi/verbs/launched
- Confirm that the first statement contains an Activity object with
id
ofhttps://w3id.org/xapi/cmi5/context/categories/cmi5
incontext.contextActivities.category
- Confirm that the fifth statement contains an Activity object with
id
ofhttps://w3id.org/xapi/cmi5/context/categories/cmi5
incontext.contextActivities.category
- Confirm that the sixth statement contains an Activity object with
id
ofhttps://w3id.org/xapi/cmi5/context/categories/cmi5
incontext.contextActivities.category
- Confirm that the first statement contains a
context.extensions
property ofhttps://w3id.org/xapi/cmi5/context/extensions/sessionid
with a value equal to thesessionId
from the displayed result object - Confirm that the first statement contains a
context.extensions
property ofhttps://w3id.org/xapi/cmi5/context/extensions/masteryscore
with a value equal to themasteryScore
from the displayed result object - Confirm that the first statement contains a
context.extensions
property ofhttps://w3id.org/xapi/cmi5/context/extensions/launchmode
with a value equal to thelaunchMode
from the displayed result object - Confirm that the first statement contains a
context.extensions
property ofhttps://w3id.org/xapi/cmi5/context/extensions/launchurl
with the following:- a URL with a domain portion equal to the domain portion of the
launchString
from the displayed result object - a URL with a path portion equal to the path portion of the
launchString
from the displayed result object - a URL that includes a query string parameter of
paramA
with a value of"1"
- a URL that includes a query string parameter of
paramB
with a value of"2"
- a URL with a domain portion equal to the domain portion of the
- Confirm that the first statement contains a
context.extensions
property ofhttps://w3id.org/xapi/cmi5/context/extensions/moveon
with a value equal to themoveOn
from the displayed result object - Confirm that the first statement contains a
context.extensions
property ofhttps://w3id.org/xapi/cmi5/context/extensions/launchparameters
with a value equal to thelaunchParameters
from the displayed result object - Confirm that the fifth statement has a
verb.id
ofhttps://w3id.org/xapi/adl/verbs/satisfied
- Confirm that the fifth statement has an
object.definition.type
ofhttps://w3id.org/xapi/cmi5/activitytype/block
- Confirm that the fifth statement has an
object.id
that is not equal tohttps://w3id.org/xapi/cmi5/catapult/lts/block/001-essentials
- Confirm that the sixth statement has a
verb.id
ofhttps://w3id.org/xapi/adl/verbs/satisfied
- Confirm that the sixth statement has an
object.definition.type
ofhttps://w3id.org/xapi/cmi5/activitytype/course
- Confirm that the sixth statement has an
object.id
that is not equal tohttps://w3id.org/xapi/cmi5/catapult/lts/course/001-essentials
- Confirm that the fifth statement contains a
context.extensions
property ofhttps://w3id.org/xapi/cmi5/context/extensions/sessionid
with a value equal to thesessionId
from the displayed result object - Confirm that the sixth statement contains a
context.extensions
property ofhttps://w3id.org/xapi/cmi5/context/extensions/sessionid
with a value equal to thesessionId
from the displayed result object - Confirm that the fifth statement contains an Activity object with
id
ofhttps://w3id.org/xapi/cmi5/catapult/lts/block/001-essentials
incontext.contextActivities.grouping
- Confirm that the sixth statement contains an Activity object with
id
ofhttps://w3id.org/xapi/cmi5/catapult/lts/block/001-essentials
incontext.contextActivities.grouping
- Confirm that there is only one statement with
-
AU Execution - Launch AU 0 in the package
- Confirm
success
istrue
in displayed result object - Confirm
isError
isfalse
in displayed result object
- Confirm
-
Post Execution Validation - Pull list of statements for
registration
seen in result object in ascending order- Confirm that the third statement has a
verb.id
ofhttp://adlnet.gov/expapi/verbs/experienced
- Confirm that the third statement has a
- AU Execution - Launch AU 0 in the package
- Confirm
success
istrue
in displayed result object - Confirm
isError
isfalse
in displayed result object
- Confirm
-
AU Execution - Launch AU 0 in the package
- Confirm
success
istrue
in displayed result object - Confirm
isError
isfalse
in displayed result object
- Confirm
-
Post Execution Validation - Pull list of statements for
registration
seen in result object in ascending order- Confirm that the fourth statement has a
verb.id
ofhttps://w3id.org/xapi/adl/verbs/satisfied
- Confirm that the fifth statement has a
verb.id
ofhttps://w3id.org/xapi/adl/verbs/satisfied
- Confirm that the fourth statement contains an Activity object with
id
ofhttps://w3id.org/xapi/cmi5/catapult/lts/block/004-1-moveOn-Completed
incontext.contextActivities.grouping
- Confirm that the fifth statement contains an Activity object with
id
ofhttps://w3id.org/xapi/cmi5/catapult/lts/course/004-1-moveOn-Completed
incontext.contextActivities.grouping
- Confirm that the fourth statement has a
-
AU Execution - Launch AU 0 in the package
- Confirm
success
istrue
in displayed result object - Confirm
isError
isfalse
in displayed result object
- Confirm
-
Post Execution Validation - Pull list of statements for
registration
seen in result object in ascending order- Confirm that the fourth statement has a
verb.id
ofhttps://w3id.org/xapi/adl/verbs/satisfied
- Confirm that the fifth statement has a
verb.id
ofhttps://w3id.org/xapi/adl/verbs/satisfied
- Confirm that the fourth statement contains an Activity object with
id
ofhttps://w3id.org/xapi/cmi5/catapult/lts/block/004-2-moveOn-CompletedOrPassed
incontext.contextActivities.grouping
- Confirm that the fifth statement contains an Activity object with
id
ofhttps://w3id.org/xapi/cmi5/catapult/lts/course/004-2-moveOn-CompletedOrPassed
incontext.contextActivities.grouping
- Confirm that the fourth statement has a
-
AU Execution - Launch AU 0 in the package
- Confirm
success
istrue
in displayed result object - Confirm
isError
isfalse
in displayed result object
- Confirm
-
Post Execution Validation - Pull list of statements for
registration
seen in result object in ascending order- Confirm that the fourth statement has a
verb.id
ofhttps://w3id.org/xapi/adl/verbs/satisfied
- Confirm that the fifth statement has a
verb.id
ofhttps://w3id.org/xapi/adl/verbs/satisfied
- Confirm that the fourth statement contains an Activity object with
id
ofhttps://w3id.org/xapi/cmi5/catapult/lts/block/004-3-moveOn-Passed
incontext.contextActivities.grouping
- Confirm that the fifth statement contains an Activity object with
id
ofhttps://w3id.org/xapi/cmi5/catapult/lts/course/004-3-moveOn-Passed
incontext.contextActivities.grouping
- Confirm that the fourth statement has a
-
AU Execution - Launch AU 0 in the package
- Confirm
success
istrue
in displayed result object - Confirm
isError
isfalse
in displayed result object
- Confirm
-
Post Execution Validation - Pull list of statements for
registration
seen in result object in ascending order- Confirm that the fourth statement has a
verb.id
ofhttps://w3id.org/xapi/adl/verbs/satisfied
- Confirm that the fifth statement has a
verb.id
ofhttps://w3id.org/xapi/adl/verbs/satisfied
- Confirm that the fourth statement contains an Activity object with
id
ofhttps://w3id.org/xapi/cmi5/catapult/lts/block/004-4-moveOn-CompletedOrPassed
incontext.contextActivities.grouping
- Confirm that the fifth statement contains an Activity object with
id
ofhttps://w3id.org/xapi/cmi5/catapult/lts/course/004-4-moveOn-CompletedOrPassed
incontext.contextActivities.grouping
- Confirm that the fourth statement has a
-
AU Execution - Launch AU 0 in the package
- Confirm
success
istrue
in displayed result object - Confirm
isError
isfalse
in displayed result object
- Confirm
-
Post Execution Validation - Pull list of statements for
registration
seen in result object in ascending order- Confirm that the first statement has a
verb.id
ofhttps://w3id.org/xapi/adl/verbs/satisfied
- Confirm that the second statement has a
verb.id
ofhttps://w3id.org/xapi/adl/verbs/satisfied
- Confirm that the first statement contains an Activity object with
id
ofhttps://w3id.org/xapi/cmi5/catapult/lts/block/004-5-moveOn-NotApplicable
incontext.contextActivities.grouping
- Confirm that the second statement contains an Activity object with
id
ofhttps://w3id.org/xapi/cmi5/catapult/lts/course/004-5-moveOn-NotApplicable
incontext.contextActivities.grouping
- Confirm that the first statement has a
- AU Execution - Launch AU 0 in the package
- Confirm
success
istrue
in displayed result object - Confirm
isError
isfalse
in displayed result object
- Confirm
- AU Execution - Launch AU 0 in the package
- Confirm
success
istrue
in displayed result object - Confirm
isError
isfalse
in displayed result object
- Confirm
- AU Execution - Launch AU 0 in the package with a
launchMode
ofBrowse
- Confirm
success
istrue
in displayed result object - Confirm
isError
isfalse
in displayed result object
- Confirm
- AU Execution - Launch AU 0 in the package with a
launchMode
ofReview
- Confirm
success
istrue
in displayed result object - Confirm
isError
isfalse
in displayed result object
- Confirm
-
AU Execution - Launch AU 0 in the package
- Confirm
success
istrue
in displayed result object - Confirm
isError
isfalse
in displayed result object
- Confirm
-
AU Execution - Launch AU 0 in the package again using the same
registration
- Confirm
success
istrue
in displayed result object - Confirm
isError
isfalse
in displayed result object
- Confirm
-
AU Execution - Launch AU 0 in the package
- Confirm
success
istrue
in displayed result object - Confirm
isError
isfalse
in displayed result object
- Confirm
-
AU Execution - Launch AU 0 in the package again using the same
registration
- Confirm
success
istrue
in displayed result object - Confirm
isError
isfalse
in displayed result object
- Confirm
These test cases require implementation specific functionality that may not be made available from every LMS. If the LMS provides the ability to manually abandon a session or to manually waive an AU these tests should be completed.
-
AU Execution - Launch AU 0 in the package
- When the "Click when session has been abandoned" button appears, perform steps necessary to manually abandon the active session
- Click the "Click when session has been abandoned" button
- Confirm
success
istrue
in displayed result object - Confirm
isError
isfalse
in displayed result object
-
Post Execution Validation - Pull list of statements for
registration
seen in result object in ascending order- Confirm that the third statement contains a
context.extensions
property ofhttps://w3id.org/xapi/cmi5/context/extensions/sessionid
with a value equal to thesession
from the displayed result object - Confirm that the third statement contains an Activity object with
id
ofhttps://w3id.org/xapi/cmi5/context/categories/cmi5
incontext.contextActivities.category
- Confirm that the third statement has a value in
result.duration
- Confirm that the third statement has an
actor
with a value equal to theactor
from the displayed result object - Confirm that the third statement has a
verb.id
ofhttps://w3id.org/xapi/adl/verbs/abandoned
- Confirm that the third statement has an
object.id
with a value equal to theactivityId
from the displayed result object - Confirm that the third statement has a
context.registration
with a value equal to theregistration
from the displayed result object
- Confirm that the third statement contains a
-
AU Execution - Launch AU 0 in the package
- Confirm
success
istrue
in displayed result object - Confirm
isError
isfalse
in displayed result object - Perform steps necessary to manually waive the AU using the same
registration
as from the launch, suggested to useAdministrative
as the "reason"
- Confirm
-
Post Execution Validation - Pull list of statements for
registration
seen in result object in ascending order- Confirm that the fourth statement has a
verb.id
ofhttps://w3id.org/xapi/adl/verbs/waived
- Confirm that the fourth statement contains a
result.extensions
property ofhttps://w3id.org/xapi/cmi5/result/extensions/reason
with a value equal to the "reason" given to the LMS when waiving the AU - Confirm that the fourth statement contains a
context.extensions
property ofhttps://w3id.org/xapi/cmi5/context/extensions/sessionid
with a unique string value - Confirm that the fourth statement has a
result.success
property with a value oftrue
- Confirm that the fourth statement has a
result.completion
property with a value oftrue
- Confirm that the fourth statement contains an Activity object with
id
ofhttps://w3id.org/xapi/cmi5/context/categories/cmi5
incontext.contextActivities.category
- Confirm that the fourth statement contains an Activity object with
id
ofhttps://w3id.org/xapi/cmi5/context/categories/moveon
incontext.contextActivities.category
- Confirm that the fourth statement has an
actor
with a value equal to theactor
from the displayed result object - Confirm that the fourth statement has a
context.registration
with a value equal to theregistration
from the displayed result object - Confirm that the fourth statement has an
object.id
with a value equal to theactivityId
from the displayed result object - Confirm that the fifth statement contains an Activity object with
id
ofhttps://w3id.org/xapi/cmi5/context/categories/cmi5
incontext.contextActivities.category
- Confirm that the fifth statement has an
actor
with a value equal to theactor
from the displayed result object - Confirm that the fifth statement has a
verb.id
ofhttps://w3id.org/xapi/adl/verbs/satisfied
- Confirm that the fifth statement has a
context.registration
with a value equal to theregistration
from the displayed result object - Confirm that the fifth statement contains a
context.extensions
property ofhttps://w3id.org/xapi/cmi5/context/extensions/sessionid
with a value equal to the value of thecontext.extensions
property ofhttps://w3id.org/xapi/cmi5/context/extensions/sessionid
from the fourth statement
- Confirm that the fourth statement has a