Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-41695

Moodle is too restrictive with scores format for SCORM 1.2 interoperability

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.3.6, 2.4.3, 2.4.7, 2.5.3, 2.6
    • Fix Version/s: 2.4.8, 2.5.4, 2.6.1
    • Component/s: SCORM
    • Labels:
    • Database:
      MySQL
    • Testing Instructions:
      Hide

      Turn the SCORM debugger on and enter a SCORM (any valid scorm is fine)
      Debugging: http://docs.moodle.org/en/SCORM_FAQ#Debugging

      In the debugger window select the Data Model Element "cmi.core.score.raw"
      then try setting any decimal value from 0 to 100 like 0.1, 1.5, 1.7777777 by entering the value into the "value to Set" field and pressing LMSSetValue() button - make sure any decimal value between 0 and 100 returns lines like this in the debugger:

      Fri, 08 Nov 2013 01:13:01 GMT: LMSSetValue("cmi.core.score.raw", "1.4") => 0
      Fri, 08 Nov 2013 01:13:01 GMT: LMSGetErrorString("0", "No error") => 0
      

      Try entering text/values outside that range (include text and negative numbers) and it should give the following errors in the debugger:

      Fri, 08 Nov 2013 01:14:56 GMT: LMSSetValue("cmi.core.score.raw", "NaN") => 405
      Fri, 08 Nov 2013 01:14:56 GMT: LMSGetErrorString("405", "Incorrect data type") => 0
      

      Now perform the same tasks with the Data model element 'cmi.interactions.n.weighting' - it includes the ability to have negative numbers with the range -100 to 100 - try entering values between that range and make sure the debugger doesn't show any errors. Then enter values outside that range and make sure it returns some errors.

      Show
      Turn the SCORM debugger on and enter a SCORM (any valid scorm is fine) Debugging: http://docs.moodle.org/en/SCORM_FAQ#Debugging In the debugger window select the Data Model Element "cmi.core.score.raw" then try setting any decimal value from 0 to 100 like 0.1, 1.5, 1.7777777 by entering the value into the "value to Set" field and pressing LMSSetValue() button - make sure any decimal value between 0 and 100 returns lines like this in the debugger: Fri, 08 Nov 2013 01:13:01 GMT: LMSSetValue("cmi.core.score.raw", "1.4") => 0 Fri, 08 Nov 2013 01:13:01 GMT: LMSGetErrorString("0", "No error") => 0 Try entering text/values outside that range (include text and negative numbers) and it should give the following errors in the debugger: Fri, 08 Nov 2013 01:14:56 GMT: LMSSetValue("cmi.core.score.raw", "NaN") => 405 Fri, 08 Nov 2013 01:14:56 GMT: LMSGetErrorString("405", "Incorrect data type") => 0 Now perform the same tasks with the Data model element 'cmi.interactions.n.weighting' - it includes the ability to have negative numbers with the range -100 to 100 - try entering values between that range and make sure the debugger doesn't show any errors. Then enter values outside that range and make sure it returns some errors.
    • Affected Branches:
      MOODLE_23_STABLE, MOODLE_24_STABLE, MOODLE_25_STABLE, MOODLE_26_STABLE
    • Fixed Branches:
      MOODLE_24_STABLE, MOODLE_25_STABLE, MOODLE_26_STABLE
    • Pull Master Branch:
      master_MDL-41695

      Description

      Moodle is too restrictive regarding CMIDecimal format?
      It allows only 2 digits on the right of the decimal point.
      So communication between the SCO and moodle fails if the SCO tries to set a value of a score with more than 2 digits.
      Wtih the SCORM debugger:
      OK : LMSSetValue("cmi.core.score.raw", "12.34") => 0
      KO : LMSSetValue("cmi.core.score.raw", "12.345") => 405
      This issue is due to the regular expression defining CMIDecimal format in scorm_12.js.php which is too restrictive and non conformant with the SCORM 1.2 / AICC (CMI001) specifications: 255 characters, positive or negative, decimal.
      The regular expression could be replaced as following?

        Gliffy Diagrams

          Issue Links

            Activity

            Hide
            matteo Matteo Scaramuccia added a comment -

            Hi Luc,
            CMIDecimal is defined in SCORM_1.2_RunTimeEnv.pdf, pg. 3-57, as:

            A number that may have a decimal point. If not preceded by a minus sign, the number is presumed to be positive. Examples are "2", "2.2" and "-2.2".

            while in AICC, from which SCORM has been inspired being SCORM an Application Profile, is defined in cmi001v4.pdf, pg. 213, as per SCORM quote, but here we have also the BNF notation:

            ["-"] *DIGIT [ "." *(DIGIT) ]

            so strictly speaking it's correct to improve the number of decimals that Moodle could support.
            That being said, your RegExp change proposal sounds to me incorrect given that when we have a Decimal Point then we must have at least 1 decimal number i.e. we must use + instead of your *.
            On the contrary the BNF Notation seems to give you reason i.e. Moodle should take care of the missing decimal point too.

            Show
            matteo Matteo Scaramuccia added a comment - Hi Luc, CMIDecimal is defined in SCORM_1.2_RunTimeEnv.pdf , pg. 3-57, as: A number that may have a decimal point. If not preceded by a minus sign, the number is presumed to be positive. Examples are "2", "2.2" and "-2.2". while in AICC, from which SCORM has been inspired being SCORM an Application Profile, is defined in cmi001v4.pdf , pg. 213, as per SCORM quote, but here we have also the BNF notation: ["-"] *DIGIT [ "." *(DIGIT) ] so strictly speaking it's correct to improve the number of decimals that Moodle could support. That being said, your RegExp change proposal sounds to me incorrect given that when we have a Decimal Point then we must have at least 1 decimal number i.e. we must use + instead of your * . On the contrary the BNF Notation seems to give you reason i.e. Moodle should take care of the missing decimal point too.
            Hide
            luxyluc luc santin added a comment -

            Hi Matteo,
            Actually, i tried to reproduce the BNF notation for CMIDecimal.
            For example, calculators accept to compute the following entries:
            1. as 1
            -1. as -1
            .2 as 0.2
            -.2 as -0.2
            [nothing] as 0
            -. as 0 (or 0-0)
            . as 0
            BNF notation is compliant with these practices. Isn't it?
            And maybe it's better to be ready to accept 1. or .2.
            The score could be the result of interactions with the trainees, calculation then conversion in string of characters.
            Sometimes, depending on the process the result could be something like "1." or ".2".

            Show
            luxyluc luc santin added a comment - Hi Matteo, Actually, i tried to reproduce the BNF notation for CMIDecimal. For example, calculators accept to compute the following entries: 1. as 1 -1. as -1 .2 as 0.2 -.2 as -0.2 [nothing] as 0 -. as 0 (or 0-0) . as 0 BNF notation is compliant with these practices. Isn't it? And maybe it's better to be ready to accept 1. or .2. The score could be the result of interactions with the trainees, calculation then conversion in string of characters. Sometimes, depending on the process the result could be something like "1." or ".2".
            Hide
            rosalmon Robert S added a comment -

            Dan/Matteo,

            Thanks for getting back. I was not aware that yourself and Matteo are the only ones handling all the bugs at this time. This may be because of the global presence and the buzz that your product has created in the LMS world so I was expecting more support personnels. As a FYI a similar issues was mentioned here https://moodle.org/mod/forum/discuss.php?d=144735. We are currently working with Remote-Learner as one of Moodle partners and I will forward to them your recommendation. Hopefully you will get this one resolve soon. Thanks again for your quick response.

            Just to recap. Also looking for a fix to resolve LMSSetVatalue("cmi.core.score.raw", "4.761904761904762") => 405 for a SCO that tracks if a course is completed based on the precentage of slides viewed that may generate values such 32.0034232323232.

            Robert

            Show
            rosalmon Robert S added a comment - Dan/Matteo, Thanks for getting back. I was not aware that yourself and Matteo are the only ones handling all the bugs at this time. This may be because of the global presence and the buzz that your product has created in the LMS world so I was expecting more support personnels. As a FYI a similar issues was mentioned here https://moodle.org/mod/forum/discuss.php?d=144735 . We are currently working with Remote-Learner as one of Moodle partners and I will forward to them your recommendation. Hopefully you will get this one resolve soon. Thanks again for your quick response. Just to recap. Also looking for a fix to resolve LMSSetVatalue("cmi.core.score.raw", "4.761904761904762") => 405 for a SCO that tracks if a course is completed based on the precentage of slides viewed that may generate values such 32.0034232323232. Robert
            Hide
            danmarsden Dan Marsden added a comment -

            Hi Robert - there is a large community of developers that work on and support Moodle but the SCORM module is an area that most developers avoid - a handful of people submit patches but the majority of the work is covered by Matteo and myself as volunteers. There are some staff at Remote-learner with a good handle on SCORM so if you were willing to fund the time to work on SCORM related issues they would be able to help.

            Show
            danmarsden Dan Marsden added a comment - Hi Robert - there is a large community of developers that work on and support Moodle but the SCORM module is an area that most developers avoid - a handful of people submit patches but the majority of the work is covered by Matteo and myself as volunteers. There are some staff at Remote-learner with a good handle on SCORM so if you were willing to fund the time to work on SCORM related issues they would be able to help.
            Hide
            danmarsden Dan Marsden added a comment - - edited

            The 1.2 spec also specifies the following on most items that use CMIDecimal:
            "must be a normalized value between 0 and 100"

            the only items that don't specify this condition in the spec on CMIDecimal are:
            cmi.student_data.mastery_score
            cmi.interactions.n.weighting
            cmi.interactions.n.result

            None of the examples in the spec go over 100 either. The old regex for CMIDecimal allows 999 but your new regex seems to allow numbers even higher - I'm not sure if that's correct.

            We currently enforce the range 0 to 100 on all items on all uses of CMIDecimal (in SCORM 1.2) except cmi.interactions.n.weighting which enforces a range of -100 to 100 - I'm not sure if that range is correct though - I didn't see that requirement in the spec when I looked today (but it could be hiding somewhere)

            The Regex you added in the screenshot above doesn't appear to work correctly either - I think there's something wrong with it but didn't look too closely. Maybe this regex is all that we need?

            ^-?([0-9]{0,3})(\.[0-9]*)?$
            

            Show
            danmarsden Dan Marsden added a comment - - edited The 1.2 spec also specifies the following on most items that use CMIDecimal: "must be a normalized value between 0 and 100" the only items that don't specify this condition in the spec on CMIDecimal are: cmi.student_data.mastery_score cmi.interactions.n.weighting cmi.interactions.n.result None of the examples in the spec go over 100 either. The old regex for CMIDecimal allows 999 but your new regex seems to allow numbers even higher - I'm not sure if that's correct. We currently enforce the range 0 to 100 on all items on all uses of CMIDecimal (in SCORM 1.2) except cmi.interactions.n.weighting which enforces a range of -100 to 100 - I'm not sure if that range is correct though - I didn't see that requirement in the spec when I looked today (but it could be hiding somewhere) The Regex you added in the screenshot above doesn't appear to work correctly either - I think there's something wrong with it but didn't look too closely. Maybe this regex is all that we need? ^-?([0-9]{0,3})(\.[0-9]*)?$
            Hide
            danmarsden Dan Marsden added a comment -

            bouncing this up for review - Matteo does this make sense to you?

            Show
            danmarsden Dan Marsden added a comment - bouncing this up for review - Matteo does this make sense to you?
            Hide
            ankit_frenz Ankit Agarwal added a comment -

            Sorry, didn't see this was waiting for Matteo.

            Anyways we have this in scorm_13.js.php

                var CMIDecimal = '^-?([0-9]{1,5})(\\.[0-9]{1,18})?$';

            May be we should use the same here?

            Thanks

            Show
            ankit_frenz Ankit Agarwal added a comment - Sorry, didn't see this was waiting for Matteo. Anyways we have this in scorm_13.js.php var CMIDecimal = '^-?([0-9]{1,5})(\\.[0-9]{1,18})?$'; May be we should use the same here? Thanks
            Hide
            danmarsden Dan Marsden added a comment -

            thanks Ankit - CMIDecimal is also incorrectly defined in scorm_13.js.php but we don't support it anymore so I'm not spending any time on it. - also the regex used there doesn't comply with the 1.2 spec either - the proposed new regex meets the 1.2 spec correctly from what I understand of it.

            Show
            danmarsden Dan Marsden added a comment - thanks Ankit - CMIDecimal is also incorrectly defined in scorm_13.js.php but we don't support it anymore so I'm not spending any time on it. - also the regex used there doesn't comply with the 1.2 spec either - the proposed new regex meets the 1.2 spec correctly from what I understand of it.
            Hide
            ankit_frenz Ankit Agarwal added a comment -

            true, +1 from me.

            Show
            ankit_frenz Ankit Agarwal added a comment - true, +1 from me.
            Hide
            luxyluc luc santin added a comment -

            Hi Dan !

            I stuck to the BNF notation for the RegExp regarding the format requirement of CMIDecimal.
            I used this RegExp for my own needs (a module that sends values such as 33.333333333333333) and it seemed to work.
            But I didn't test it more than that.

            As you mentioned it, the CMIDecimal format is used for numerous values (normalized or not).
            The existing code scorm_12.js.php takes this into account by separating 2 tests:

            • testing of the format (the RegExp for CMIDecimal)
            • testing the range (defined by the line " score_range = '0#100';" (which should be -100#100, by the way ?)
              Be careful, the RegExp that you propose :
            • isn't precise enough to test both the format and the range of a score;
            • is too restrictive for cmi.interactions.n.result.
              I hope this can help.
            Show
            luxyluc luc santin added a comment - Hi Dan ! I stuck to the BNF notation for the RegExp regarding the format requirement of CMIDecimal. I used this RegExp for my own needs (a module that sends values such as 33.333333333333333) and it seemed to work. But I didn't test it more than that. As you mentioned it, the CMIDecimal format is used for numerous values (normalized or not). The existing code scorm_12.js.php takes this into account by separating 2 tests: testing of the format (the RegExp for CMIDecimal) testing the range (defined by the line " score_range = '0#100';" (which should be -100#100, by the way ?) Be careful, the RegExp that you propose : isn't precise enough to test both the format and the range of a score; is too restrictive for cmi.interactions.n.result. I hope this can help.
            Hide
            matteo Matteo Scaramuccia added a comment -

            Hi All,
            I'll deeply look at your comments&code probably on my Sunday - family issues here so I'm pretty sure I'll delay a proposal on my side at the next weekend - BUT I don't want to be blocker at all so Ankit please go ahead with your review if you're confident with the matters.

            Quick comments:

            • CMIDecimal is the data type while the boundaries are defined per element i.e. not strictly related with the type. Score range is 0...100, as per spec when it talks about the element having a normalized value;
            • cmi.student_preference.speed is the only element whose boundaries are declared as -100...100;
            • SCORM 2004: real(10,7) - note here the SCORM 2004 definition of SPM - not strictly a CMIDecimal but quite similar, see the specs and MDL-36722;
            • cmi.interactions.n.result data type: a vocabulary, ("correct","wrong","unanticipated","neutral",<CMIDecimal>), plus a known data type, <CMIDecimal>

            HTH,
            Matteo

            Show
            matteo Matteo Scaramuccia added a comment - Hi All, I'll deeply look at your comments&code probably on my Sunday - family issues here so I'm pretty sure I'll delay a proposal on my side at the next weekend - BUT I don't want to be blocker at all so Ankit please go ahead with your review if you're confident with the matters. Quick comments: CMIDecimal is the data type while the boundaries are defined per element i.e. not strictly related with the type . Score range is 0...100 , as per spec when it talks about the element having a normalized value; cmi.student_preference.speed is the only element whose boundaries are declared as -100...100 ; SCORM 2004: real(10,7) - note here the SCORM 2004 definition of SPM - not strictly a CMIDecimal but quite similar, see the specs and MDL-36722 ; cmi.interactions.n.result data type: a vocabulary, ( "correct","wrong","unanticipated","neutral",<CMIDecimal> ), plus a known data type, <CMIDecimal> HTH, Matteo
            Hide
            danmarsden Dan Marsden added a comment -

            Hi Luc - I'm aware the new regex doesn't test the format and range - we can't test both as the regex is used for multiple params that use different ranges.(Unless we rewrite a bunch of that code which I'm certainly not volunteering to do myself!)

            We don't currently use the CMIDecimal param in Moodle to parse cmi.interactions.n.result - it's handled differently with it's own regex (CMIResult) - which actually looks wrong as well - it should allow more decimal places as well so I've updated the patch above with a small change to allow more decimal places on cmi.interactions.n.result. It's possible that we need to be less restrictive on cmi.interactions.n.result but no-one has complained about that in the past so I think we allow more decimal places there but any further changes should be discussed on a separate issue if someone has a real-life case for further changes.

            Show
            danmarsden Dan Marsden added a comment - Hi Luc - I'm aware the new regex doesn't test the format and range - we can't test both as the regex is used for multiple params that use different ranges.(Unless we rewrite a bunch of that code which I'm certainly not volunteering to do myself!) We don't currently use the CMIDecimal param in Moodle to parse cmi.interactions.n.result - it's handled differently with it's own regex (CMIResult) - which actually looks wrong as well - it should allow more decimal places as well so I've updated the patch above with a small change to allow more decimal places on cmi.interactions.n.result. It's possible that we need to be less restrictive on cmi.interactions.n.result but no-one has complained about that in the past so I think we allow more decimal places there but any further changes should be discussed on a separate issue if someone has a real-life case for further changes.
            Hide
            damyon Damyon Wiese added a comment -

            Thanks Dan (and others).

            I tested this and it seems to work fine. Really long numbers get truncated - but don't cause errors which I think is fine.

            Integrated to 24, 25, 26 and master.

            Show
            damyon Damyon Wiese added a comment - Thanks Dan (and others). I tested this and it seems to work fine. Really long numbers get truncated - but don't cause errors which I think is fine. Integrated to 24, 25, 26 and master.
            Hide
            danmarsden Dan Marsden added a comment -

            Thanks Damyon

            Show
            danmarsden Dan Marsden added a comment - Thanks Damyon
            Hide
            phalacee Jason Fowler added a comment -

            for cmi.core.score.raw I am getting

            Wed, 20 Nov 2013 05:36:13 GMT: LMSSetValue("cmi.core.score.raw", "99.5") => 301
            Wed, 20 Nov 2013 05:36:13 GMT: Item x_t175_8__introduction_item has been defined as an Asset: it should never call the SCORM API
            Wed, 20 Nov 2013 05:36:13 GMT: LMSGetErrorString("301", "Not initialized") => 0
            Wed, 20 Nov 2013 05:36:13 GMT: Item x_t175_8__introduction_item has been defined as an Asset: it should never call the SCORM API
            Wed, 20 Nov 2013 05:36:45 GMT: LMSSetValue("cmi.core.score.raw", "1.4") => 301
            Wed, 20 Nov 2013 05:36:45 GMT: Item x_t175_8__introduction_item has been defined as an Asset: it should never call the SCORM API
            Wed, 20 Nov 2013 05:36:45 GMT: LMSGetErrorString("301", "Not initialized") => 0
            Wed, 20 Nov 2013 05:36:45 GMT: Item x_t175_8__introduction_item has been defined as an Asset: it should never call the SCORM API
            Wed, 20 Nov 2013 05:37:53 GMT: LMSSetValue("cmi.core.score.raw", "405") => 301
            Wed, 20 Nov 2013 05:37:53 GMT: Item x_t175_8__introduction_item has been defined as an Asset: it should never call the SCORM API
            Wed, 20 Nov 2013 05:37:53 GMT: LMSGetErrorString("301", "Not initialized") => 0
            Wed, 20 Nov 2013 05:37:53 GMT: Item x_t175_8__introduction_item has been defined as an Asset: it should never call the SCORM API

            For cmi.interactions.n.weighting I get:

            Wed, 20 Nov 2013 05:39:08 GMT: LMSSetValue("cmi.interactions.n.weighting", "-8") => 301
            Wed, 20 Nov 2013 05:39:08 GMT: Item x_t175_8__introduction_item has been defined as an Asset: it should never call the SCORM API
            Wed, 20 Nov 2013 05:39:08 GMT: LMSGetErrorString("301", "Not initialized") => 0
            Wed, 20 Nov 2013 05:39:08 GMT: Item x_t175_8__introduction_item has been defined as an Asset: it should never call the SCORM API

            Both of these are on 2.6

            Show
            phalacee Jason Fowler added a comment - for cmi.core.score.raw I am getting Wed, 20 Nov 2013 05:36:13 GMT: LMSSetValue("cmi.core.score.raw", "99.5") => 301 Wed, 20 Nov 2013 05:36:13 GMT: Item x_t175_8__introduction_item has been defined as an Asset: it should never call the SCORM API Wed, 20 Nov 2013 05:36:13 GMT: LMSGetErrorString("301", "Not initialized") => 0 Wed, 20 Nov 2013 05:36:13 GMT: Item x_t175_8__introduction_item has been defined as an Asset: it should never call the SCORM API Wed, 20 Nov 2013 05:36:45 GMT: LMSSetValue("cmi.core.score.raw", "1.4") => 301 Wed, 20 Nov 2013 05:36:45 GMT: Item x_t175_8__introduction_item has been defined as an Asset: it should never call the SCORM API Wed, 20 Nov 2013 05:36:45 GMT: LMSGetErrorString("301", "Not initialized") => 0 Wed, 20 Nov 2013 05:36:45 GMT: Item x_t175_8__introduction_item has been defined as an Asset: it should never call the SCORM API Wed, 20 Nov 2013 05:37:53 GMT: LMSSetValue("cmi.core.score.raw", "405") => 301 Wed, 20 Nov 2013 05:37:53 GMT: Item x_t175_8__introduction_item has been defined as an Asset: it should never call the SCORM API Wed, 20 Nov 2013 05:37:53 GMT: LMSGetErrorString("301", "Not initialized") => 0 Wed, 20 Nov 2013 05:37:53 GMT: Item x_t175_8__introduction_item has been defined as an Asset: it should never call the SCORM API For cmi.interactions.n.weighting I get: Wed, 20 Nov 2013 05:39:08 GMT: LMSSetValue("cmi.interactions.n.weighting", "-8") => 301 Wed, 20 Nov 2013 05:39:08 GMT: Item x_t175_8__introduction_item has been defined as an Asset: it should never call the SCORM API Wed, 20 Nov 2013 05:39:08 GMT: LMSGetErrorString("301", "Not initialized") => 0 Wed, 20 Nov 2013 05:39:08 GMT: Item x_t175_8__introduction_item has been defined as an Asset: it should never call the SCORM API Both of these are on 2.6
            Hide
            damyon Damyon Wiese added a comment -

            That looks like a bogus scorm to me Jason.

            Show
            damyon Damyon Wiese added a comment - That looks like a bogus scorm to me Jason.
            Hide
            phalacee Jason Fowler added a comment -

            I'm failing this as the output doesn't match what the testing instructions say to expect.

            Show
            phalacee Jason Fowler added a comment - I'm failing this as the output doesn't match what the testing instructions say to expect.
            Hide
            phalacee Jason Fowler added a comment -

            New package Ankit gave me seems to be working fine.

            Show
            phalacee Jason Fowler added a comment - New package Ankit gave me seems to be working fine.
            Hide
            damyon Damyon Wiese added a comment -

            Sending back to testing.

            Show
            damyon Damyon Wiese added a comment - Sending back to testing.
            Hide
            phalacee Jason Fowler added a comment -

            A decent SCORM package got better results. Thanks Dan.

            Show
            phalacee Jason Fowler added a comment - A decent SCORM package got better results. Thanks Dan.
            Hide
            danmarsden Dan Marsden added a comment -

            thanks for battling with it Jason - SCORM can be a PITA to test.

            Show
            danmarsden Dan Marsden added a comment - thanks for battling with it Jason - SCORM can be a PITA to test.
            Hide
            phalacee Jason Fowler added a comment -

            It's even harder for a noob

            Show
            phalacee Jason Fowler added a comment - It's even harder for a noob
            Hide
            matteo Matteo Scaramuccia added a comment -

            Hi All,
            I strongly suggest to adopt the Diagnostic SCO for SCORM runtime by by Claude Ostyn as THE preferred SCORM package when validating/testing issues like this one - see also here.
            It can be scripted and it could be nice, one day, to implement the required behat behaviors to take full advantage of its own scripting capabilities within the amazing tests automation framework in Moodle.
            Not to mention that we could use a simple package too and use the Moodle SCORM debugging tool to inject the same tracking behaviors, in a similar way.

            Note: I'm not sure I'd be able to do that but my limited spare time should prevent me to propose me for a patch proposal.

            HTH,
            Matteo

            Show
            matteo Matteo Scaramuccia added a comment - Hi All, I strongly suggest to adopt the Diagnostic SCO for SCORM runtime by by Claude Ostyn as THE preferred SCORM package when validating/testing issues like this one - see also here . It can be scripted and it could be nice, one day, to implement the required behat behaviors to take full advantage of its own scripting capabilities within the amazing tests automation framework in Moodle. Not to mention that we could use a simple package too and use the Moodle SCORM debugging tool to inject the same tracking behaviors, in a similar way. Note: I'm not sure I'd be able to do that but my limited spare time should prevent me to propose me for a patch proposal. HTH, Matteo
            Hide
            danmarsden Dan Marsden added a comment -

            thanks Matteo - it's probably up to us to actually include that in our testing instructions instead of just saying "use some scorm package" - I'll try to do that more often

            Show
            danmarsden Dan Marsden added a comment - thanks Matteo - it's probably up to us to actually include that in our testing instructions instead of just saying "use some scorm package" - I'll try to do that more often
            Hide
            stronk7 Eloy Lafuente (stronk7) added a comment -

            ...
            But still, I thank you, for you made me stronger…

            Stronger as the beast that roar in the wild
            Stronger as the storm across the ocean
            Stronger as the diamond that won’t break
            Stronger enough to take all heart aches….

            I thank you my friend, for you made me stronger…

            ---- Juneah Landicho

            Closing as fixed. Ciao

            Show
            stronk7 Eloy Lafuente (stronk7) added a comment - ... But still, I thank you, for you made me stronger… Stronger as the beast that roar in the wild Stronger as the storm across the ocean Stronger as the diamond that won’t break Stronger enough to take all heart aches…. I thank you my friend, for you made me stronger… ---- Juneah Landicho Closing as fixed. Ciao

              People

              • Votes:
                0 Vote for this issue
                Watchers:
                6 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:
                  Fix Release Date:
                  13/Jan/14