How to use logApiCall method in Playwright Internal

Best JavaScript code snippet using playwright-internal

scorm_12.js

Source:scorm_12.js Github

copy

Full Screen

1// This file is part of Moodle - http://moodle.org/2//3// Moodle is free software: you can redistribute it and/or modify4// it under the terms of the GNU General Public License as published by5// the Free Software Foundation, either version 3 of the License, or6// (at your option) any later version.7//8// Moodle is distributed in the hope that it will be useful,9// but WITHOUT ANY WARRANTY; without even the implied warranty of10// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the11// GNU General Public License for more details.12//13// You should have received a copy of the GNU General Public License14// along with Moodle. If not, see <http://www.gnu.org/licenses/>.15//16// SCORM 1.2 API Implementation17//18function SCORMapi1_2(def, cmiobj, cmiint, cmistring256, cmistring4096, scormdebugging, scormauto, scormid, cfgwwwroot, sesskey, scoid, attempt, viewmode, cmid, currentorg, autocommit) {19 var prerequrl = cfgwwwroot + "/mod/scorm/prereqs.php?a=" + scormid + "&scoid=" + scoid + "&attempt=" + attempt + "&mode=" + viewmode + "&currentorg=" + currentorg + "&sesskey=" + sesskey;20 var datamodelurl = cfgwwwroot + "/mod/scorm/datamodel.php";21 var datamodelurlparams = "id=" + cmid + "&a=" + scormid + "&sesskey=" + sesskey + "&attempt=" + attempt + "&scoid=" + scoid;22 // Standard Data Type Definition23 CMIString256 = cmistring256;24 CMIString4096 = cmistring4096;25 CMITime = '^([0-2]{1}[0-9]{1}):([0-5]{1}[0-9]{1}):([0-5]{1}[0-9]{1})(\.[0-9]{1,2})?$';26 CMITimespan = '^([0-9]{2,4}):([0-9]{2}):([0-9]{2})(\.[0-9]{1,2})?$';27 CMIInteger = '^\\d+$';28 CMISInteger = '^-?([0-9]+)$';29 CMIDecimal = '^-?([0-9]{0,3})(\.[0-9]*)?$';30 CMIIdentifier = '^[\\u0021-\\u007E]{0,255}$';31 CMIFeedback = CMIString256; // This must be redefined32 CMIIndex = '[._](\\d+).';33 // Vocabulary Data Type Definition34 CMIStatus = '^passed$|^completed$|^failed$|^incomplete$|^browsed$';35 CMIStatus2 = '^passed$|^completed$|^failed$|^incomplete$|^browsed$|^not attempted$';36 CMIExit = '^time-out$|^suspend$|^logout$|^$';37 CMIType = '^true-false$|^choice$|^fill-in$|^matching$|^performance$|^sequencing$|^likert$|^numeric$';38 CMIResult = '^correct$|^wrong$|^unanticipated$|^neutral$|^([0-9]{0,3})?(\.[0-9]*)?$';39 NAVEvent = '^previous$|^continue$';40 // Children lists41 cmi_children = 'core,suspend_data,launch_data,comments,objectives,student_data,student_preference,interactions';42 core_children = 'student_id,student_name,lesson_location,credit,lesson_status,entry,score,total_time,lesson_mode,exit,session_time';43 score_children = 'raw,min,max';44 comments_children = 'content,location,time';45 objectives_children = 'id,score,status';46 correct_responses_children = 'pattern';47 student_data_children = 'mastery_score,max_time_allowed,time_limit_action';48 student_preference_children = 'audio,language,speed,text';49 interactions_children = 'id,objectives,time,type,correct_responses,weighting,student_response,result,latency';50 // Data ranges51 score_range = '0#100';52 audio_range = '-1#100';53 speed_range = '-100#100';54 weighting_range = '-100#100';55 text_range = '-1#1';56 // The SCORM 1.2 data model57 // Set up data model for each sco58 var datamodel = {};59 for(scoid in def){60 datamodel[scoid] = {61 'cmi._children':{'defaultvalue':cmi_children, 'mod':'r', 'writeerror':'402'},62 'cmi._version':{'defaultvalue':'3.4', 'mod':'r', 'writeerror':'402'},63 'cmi.core._children':{'defaultvalue':core_children, 'mod':'r', 'writeerror':'402'},64 'cmi.core.student_id':{'defaultvalue':def[scoid]['cmi.core.student_id'], 'mod':'r', 'writeerror':'403'},65 'cmi.core.student_name':{'defaultvalue':def[scoid]['cmi.core.student_name'], 'mod':'r', 'writeerror':'403'},66 'cmi.core.lesson_location':{'defaultvalue':def[scoid]['cmi.core.lesson_location'], 'format':CMIString256, 'mod':'rw', 'writeerror':'405'},67 'cmi.core.credit':{'defaultvalue':def[scoid]['cmi.core.credit'], 'mod':'r', 'writeerror':'403'},68 'cmi.core.lesson_status':{'defaultvalue':def[scoid]['cmi.core.lesson_status'], 'format':CMIStatus, 'mod':'rw', 'writeerror':'405'},69 'cmi.core.entry':{'defaultvalue':def[scoid]['cmi.core.entry'], 'mod':'r', 'writeerror':'403'},70 'cmi.core.score._children':{'defaultvalue':score_children, 'mod':'r', 'writeerror':'402'},71 'cmi.core.score.raw':{'defaultvalue':def[scoid]['cmi.core.score.raw'], 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},72 'cmi.core.score.max':{'defaultvalue':def[scoid]['cmi.core.score.max'], 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},73 'cmi.core.score.min':{'defaultvalue':def[scoid]['cmi.core.score.min'], 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},74 'cmi.core.total_time':{'defaultvalue':def[scoid]['cmi.core.total_time'], 'mod':'r', 'writeerror':'403'},75 'cmi.core.lesson_mode':{'defaultvalue':def[scoid]['cmi.core.lesson_mode'], 'mod':'r', 'writeerror':'403'},76 'cmi.core.exit':{'defaultvalue':def[scoid]['cmi.core.exit'], 'format':CMIExit, 'mod':'w', 'readerror':'404', 'writeerror':'405'},77 'cmi.core.session_time':{'format':CMITimespan, 'mod':'w', 'defaultvalue':'00:00:00', 'readerror':'404', 'writeerror':'405'},78 'cmi.suspend_data':{'defaultvalue':def[scoid]['cmi.suspend_data'], 'format':CMIString4096, 'mod':'rw', 'writeerror':'405'},79 'cmi.launch_data':{'defaultvalue':def[scoid]['cmi.launch_data'], 'mod':'r', 'writeerror':'403'},80 'cmi.comments':{'defaultvalue':def[scoid]['cmi.comments'], 'format':CMIString4096, 'mod':'rw', 'writeerror':'405'},81 // deprecated evaluation attributes82 'cmi.evaluation.comments._count':{'defaultvalue':'0', 'mod':'r', 'writeerror':'402'},83 'cmi.evaluation.comments._children':{'defaultvalue':comments_children, 'mod':'r', 'writeerror':'402'},84 'cmi.evaluation.comments.n.content':{'defaultvalue':'', 'pattern':CMIIndex, 'format':CMIString256, 'mod':'rw', 'writeerror':'405'},85 'cmi.evaluation.comments.n.location':{'defaultvalue':'', 'pattern':CMIIndex, 'format':CMIString256, 'mod':'rw', 'writeerror':'405'},86 'cmi.evaluation.comments.n.time':{'defaultvalue':'', 'pattern':CMIIndex, 'format':CMITime, 'mod':'rw', 'writeerror':'405'},87 'cmi.comments_from_lms':{'mod':'r', 'writeerror':'403'},88 'cmi.objectives._children':{'defaultvalue':objectives_children, 'mod':'r', 'writeerror':'402'},89 'cmi.objectives._count':{'mod':'r', 'defaultvalue':'0', 'writeerror':'402'},90 'cmi.objectives.n.id':{'pattern':CMIIndex, 'format':CMIIdentifier, 'mod':'rw', 'writeerror':'405'},91 'cmi.objectives.n.score._children':{'pattern':CMIIndex, 'mod':'r', 'writeerror':'402'},92 'cmi.objectives.n.score.raw':{'defaultvalue':'', 'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},93 'cmi.objectives.n.score.min':{'defaultvalue':'', 'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},94 'cmi.objectives.n.score.max':{'defaultvalue':'', 'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},95 'cmi.objectives.n.status':{'pattern':CMIIndex, 'format':CMIStatus2, 'mod':'rw', 'writeerror':'405'},96 'cmi.student_data._children':{'defaultvalue':student_data_children, 'mod':'r', 'writeerror':'402'},97 'cmi.student_data.mastery_score':{'defaultvalue':def[scoid]['cmi.student_data.mastery_score'], 'mod':'r', 'writeerror':'403'},98 'cmi.student_data.max_time_allowed':{'defaultvalue':def[scoid]['cmi.student_data.max_time_allowed'], 'mod':'r', 'writeerror':'403'},99 'cmi.student_data.time_limit_action':{'defaultvalue':def[scoid]['cmi.student_data.time_limit_action'], 'mod':'r', 'writeerror':'403'},100 'cmi.student_preference._children':{'defaultvalue':student_preference_children, 'mod':'r', 'writeerror':'402'},101 'cmi.student_preference.audio':{'defaultvalue':def[scoid]['cmi.student_preference.audio'], 'format':CMISInteger, 'range':audio_range, 'mod':'rw', 'writeerror':'405'},102 'cmi.student_preference.language':{'defaultvalue':def[scoid]['cmi.student_preference.language'], 'format':CMIString256, 'mod':'rw', 'writeerror':'405'},103 'cmi.student_preference.speed':{'defaultvalue':def[scoid]['cmi.student_preference.speed'], 'format':CMISInteger, 'range':speed_range, 'mod':'rw', 'writeerror':'405'},104 'cmi.student_preference.text':{'defaultvalue':def[scoid]['cmi.student_preference.text'], 'format':CMISInteger, 'range':text_range, 'mod':'rw', 'writeerror':'405'},105 'cmi.interactions._children':{'defaultvalue':interactions_children, 'mod':'r', 'writeerror':'402'},106 'cmi.interactions._count':{'mod':'r', 'defaultvalue':'0', 'writeerror':'402'},107 'cmi.interactions.n.id':{'pattern':CMIIndex, 'format':CMIIdentifier, 'mod':'w', 'readerror':'404', 'writeerror':'405'},108 'cmi.interactions.n.objectives._count':{'pattern':CMIIndex, 'mod':'r', 'defaultvalue':'0', 'writeerror':'402'},109 'cmi.interactions.n.objectives.n.id':{'pattern':CMIIndex, 'format':CMIIdentifier, 'mod':'w', 'readerror':'404', 'writeerror':'405'},110 'cmi.interactions.n.time':{'pattern':CMIIndex, 'format':CMITime, 'mod':'w', 'readerror':'404', 'writeerror':'405'},111 'cmi.interactions.n.type':{'pattern':CMIIndex, 'format':CMIType, 'mod':'w', 'readerror':'404', 'writeerror':'405'},112 'cmi.interactions.n.correct_responses._count':{'pattern':CMIIndex, 'mod':'r', 'defaultvalue':'0', 'writeerror':'402'},113 'cmi.interactions.n.correct_responses.n.pattern':{'pattern':CMIIndex, 'format':CMIFeedback, 'mod':'w', 'readerror':'404', 'writeerror':'405'},114 'cmi.interactions.n.weighting':{'pattern':CMIIndex, 'format':CMIDecimal, 'range':weighting_range, 'mod':'w', 'readerror':'404', 'writeerror':'405'},115 'cmi.interactions.n.student_response':{'pattern':CMIIndex, 'format':CMIFeedback, 'mod':'w', 'readerror':'404', 'writeerror':'405'},116 'cmi.interactions.n.result':{'pattern':CMIIndex, 'format':CMIResult, 'mod':'w', 'readerror':'404', 'writeerror':'405'},117 'cmi.interactions.n.latency':{'pattern':CMIIndex, 'format':CMITimespan, 'mod':'w', 'readerror':'404', 'writeerror':'405'},118 'nav.event':{'defaultvalue':'', 'format':NAVEvent, 'mod':'w', 'readerror':'404', 'writeerror':'405'}119 };120 }121 var cmi, nav;122 function initdatamodel(scoid){123 prerequrl = cfgwwwroot + "/mod/scorm/prereqs.php?a=" + scormid + "&scoid=" + scoid + "&attempt=" + attempt + "&mode=" + viewmode + "&currentorg=" + currentorg + "&sesskey=" + sesskey;124 datamodelurlparams = "id=" + cmid + "&a=" + scormid + "&sesskey=" + sesskey + "&attempt=" + attempt + "&scoid=" + scoid;125 //126 // Datamodel inizialization127 //128 cmi = new Object();129 cmi.core = new Object();130 cmi.core.score = new Object();131 cmi.objectives = new Object();132 cmi.student_data = new Object();133 cmi.student_preference = new Object();134 cmi.interactions = new Object();135 // deprecated evaluation attributes136 cmi.evaluation = new Object();137 cmi.evaluation.comments = new Object();138 // Navigation Object139 nav = new Object();140 for (element in datamodel[scoid]) {141 if (element.match(/\.n\./) == null) {142 if ((typeof eval('datamodel["' + scoid + '"]["' + element + '"].defaultvalue')) != 'undefined') {143 eval(element + ' = datamodel["' + scoid + '"]["' + element + '"].defaultvalue;');144 } else {145 eval(element + ' = "";');146 }147 }148 }149 eval(cmiobj[scoid]);150 eval(cmiint[scoid]);151 if (cmi.core.lesson_status == '') {152 cmi.core.lesson_status = 'not attempted';153 }154 }155 //156 // API Methods definition157 //158 var Initialized = false;159 function LMSInitialize (param) {160 scoid = scorm_current_node ? scorm_current_node.scoid : scoid;161 initdatamodel(scoid);162 errorCode = "0";163 if (param == "") {164 if (!Initialized) {165 Initialized = true;166 errorCode = "0";167 if (scormdebugging) {168 LogAPICall("LMSInitialize", param, "", errorCode);169 }170 return "true";171 } else {172 errorCode = "101";173 }174 } else {175 errorCode = "201";176 }177 if (scormdebugging) {178 LogAPICall("LMSInitialize", param, "", errorCode);179 }180 return "false";181 }182 function LMSFinish (param) {183 errorCode = "0";184 if (param == "") {185 if (Initialized) {186 Initialized = false;187 result = StoreData(cmi,true);188 if (nav.event != '') {189 if (nav.event == 'continue') {190 setTimeout('mod_scorm_launch_next_sco();',500);191 } else {192 setTimeout('mod_scorm_launch_prev_sco();',500);193 }194 } else {195 if (scormauto == 1) {196 setTimeout('mod_scorm_launch_next_sco();',500);197 }198 }199 if (scormdebugging) {200 LogAPICall("LMSFinish", "AJAXResult", result, 0);201 }202 result = ('true' == result) ? 'true' : 'false';203 errorCode = (result == 'true') ? '0' : '101';204 if (scormdebugging) {205 LogAPICall("LMSFinish", "result", result, 0);206 LogAPICall("LMSFinish", param, "", 0);207 }208 // trigger TOC update209 var callback = M.mod_scorm.connectPrereqCallback;210 YUI().use('io-base', function(Y) {211 Y.on('io:complete', callback.success, Y);212 Y.io(prerequrl);213 });214 return result;215 } else {216 errorCode = "301";217 }218 } else {219 errorCode = "201";220 }221 if (scormdebugging) {222 LogAPICall("LMSFinish", param, "", errorCode);223 }224 return "false";225 }226 function LMSGetValue (element) {227 errorCode = "0";228 if (Initialized) {229 if (element != "") {230 expression = new RegExp(CMIIndex,'g');231 elementmodel = String(element).replace(expression,'.n.');232 if ((typeof eval('datamodel["' + scoid + '"]["' + elementmodel + '"]')) != "undefined") {233 if (eval('datamodel["' + scoid + '"]["' + elementmodel + '"].mod') != 'w') {234 element = String(element).replace(expression, "_$1.");235 elementIndexes = element.split('.');236 subelement = 'cmi';237 i = 1;238 while ((i < elementIndexes.length) && (typeof eval(subelement) != "undefined")) {239 subelement += '.' + elementIndexes[i++];240 }241 if (subelement == element) {242 errorCode = "0";243 if (scormdebugging) {244 LogAPICall("LMSGetValue", element, eval(element), 0);245 }246 return eval(element);247 } else {248 errorCode = "0"; // Need to check if it is the right errorCode249 }250 } else {251 errorCode = eval('datamodel["' + scoid + '"]["' + elementmodel + '"].readerror');252 }253 } else {254 childrenstr = '._children';255 countstr = '._count';256 if (elementmodel.substr(elementmodel.length - childrenstr.length,elementmodel.length) == childrenstr) {257 parentmodel = elementmodel.substr(0,elementmodel.length - childrenstr.length);258 if ((typeof eval('datamodel["' + scoid + '"]["' + parentmodel + '"]')) != "undefined") {259 errorCode = "202";260 } else {261 errorCode = "201";262 }263 } else if (elementmodel.substr(elementmodel.length - countstr.length,elementmodel.length) == countstr) {264 parentmodel = elementmodel.substr(0,elementmodel.length - countstr.length);265 if ((typeof eval('datamodel["' + scoid + '"]["' + parentmodel + '"]')) != "undefined") {266 errorCode = "203";267 } else {268 errorCode = "201";269 }270 } else {271 errorCode = "201";272 }273 }274 } else {275 errorCode = "201";276 }277 } else {278 errorCode = "301";279 }280 if (scormdebugging) {281 LogAPICall("LMSGetValue", element, "", errorCode);282 }283 return "";284 }285 function LMSSetValue (element,value) {286 errorCode = "0";287 if (Initialized) {288 if (element != "") {289 expression = new RegExp(CMIIndex,'g');290 elementmodel = String(element).replace(expression,'.n.');291 if ((typeof eval('datamodel["' + scoid + '"]["' + elementmodel + '"]')) != "undefined") {292 if (eval('datamodel["' + scoid + '"]["' + elementmodel + '"].mod') != 'r') {293 expression = new RegExp(eval('datamodel["' + scoid + '"]["' + elementmodel + '"].format'));294 value = value + '';295 matches = value.match(expression);296 if (matches != null) {297 //Create dynamic data model element298 if (element != elementmodel) {299 elementIndexes = element.split('.');300 subelement = 'cmi';301 for (i = 1; i < elementIndexes.length - 1; i++) {302 elementIndex = elementIndexes[i];303 if (elementIndexes[i + 1].match(/^\d+$/)) {304 if ((typeof eval(subelement + '.' + elementIndex)) == "undefined") {305 eval(subelement + '.' + elementIndex + ' = new Object();');306 eval(subelement + '.' + elementIndex + '._count = 0;');307 }308 if (elementIndexes[i + 1] == eval(subelement + '.' + elementIndex + '._count')) {309 eval(subelement + '.' + elementIndex + '._count++;');310 }311 if (elementIndexes[i + 1] > eval(subelement + '.' + elementIndex + '._count')) {312 errorCode = "201";313 }314 subelement = subelement.concat('.' + elementIndex + '_' + elementIndexes[i + 1]);315 i++;316 } else {317 subelement = subelement.concat('.' + elementIndex);318 }319 if ((typeof eval(subelement)) == "undefined") {320 eval(subelement + ' = new Object();');321 if (subelement.substr(0,14) == 'cmi.objectives') {322 eval(subelement + '.score = new Object();');323 eval(subelement + '.score._children = score_children;');324 eval(subelement + '.score.raw = "";');325 eval(subelement + '.score.min = "";');326 eval(subelement + '.score.max = "";');327 }328 if (subelement.substr(0,16) == 'cmi.interactions') {329 eval(subelement + '.objectives = new Object();');330 eval(subelement + '.objectives._count = 0;');331 eval(subelement + '.correct_responses = new Object();');332 eval(subelement + '.correct_responses._count = 0;');333 }334 }335 }336 element = subelement.concat('.' + elementIndexes[elementIndexes.length - 1]);337 }338 //Store data339 if (errorCode == "0") {340 if (autocommit && !(SCORMapi1_2.timeout)) {341 SCORMapi1_2.timeout = Y.later(60000, API, 'LMSCommit', [""], false);342 }343 if ((typeof eval('datamodel["' + scoid + '"]["' + elementmodel + '"].range')) != "undefined") {344 range = eval('datamodel["' + scoid + '"]["' + elementmodel + '"].range');345 ranges = range.split('#');346 value = value * 1.0;347 if ((value >= ranges[0]) && (value <= ranges[1])) {348 eval(element + '=value;');349 errorCode = "0";350 if (scormdebugging) {351 LogAPICall("LMSSetValue", element, value, errorCode);352 }353 return "true";354 } else {355 errorCode = eval('datamodel["' + scoid + '"]["' + elementmodel + '"].writeerror');356 }357 } else {358 if (element == 'cmi.comments') {359 cmi.comments = cmi.comments + value;360 } else {361 eval(element + '=value;');362 }363 errorCode = "0";364 if (scormdebugging) {365 LogAPICall("LMSSetValue", element, value, errorCode);366 }367 return "true";368 }369 }370 } else {371 errorCode = eval('datamodel["' + scoid + '"]["' + elementmodel + '"].writeerror');372 }373 } else {374 errorCode = eval('datamodel["' + scoid + '"]["' + elementmodel + '"].writeerror');375 }376 } else {377 errorCode = "201"378 }379 } else {380 errorCode = "201";381 }382 } else {383 errorCode = "301";384 }385 if (scormdebugging) {386 LogAPICall("LMSSetValue", element, value, errorCode);387 }388 return "false";389 }390 function LMSCommit (param) {391 if (SCORMapi1_2.timeout) {392 SCORMapi1_2.timeout.cancel();393 SCORMapi1_2.timeout = null;394 }395 errorCode = "0";396 if (param == "") {397 if (Initialized) {398 result = StoreData(cmi,false);399 // trigger TOC update400 var callback = M.mod_scorm.connectPrereqCallback;401 YUI().use('io-base', function(Y) {402 Y.on('io:complete', callback.success, Y);403 Y.io(prerequrl);404 });405 if (scormdebugging) {406 LogAPICall("Commit", param, "", 0);407 }408 if (scormdebugging) {409 LogAPICall("LMSCommit", "AJAXResult", result, 0);410 }411 result = ('true' == result) ? 'true' : 'false';412 errorCode = (result == 'true') ? '0' : '101';413 if (scormdebugging) {414 LogAPICall("LMSCommit", "result", result, 0);415 LogAPICall("LMSCommit", "errorCode", errorCode, 0);416 }417 return result;418 } else {419 errorCode = "301";420 }421 } else {422 errorCode = "201";423 }424 if (scormdebugging) {425 LogAPICall("LMSCommit", param, "", 0);426 }427 return "false";428 }429 function LMSGetLastError () {430 if (scormdebugging) {431 LogAPICall("LMSGetLastError", "", "", errorCode);432 }433 return errorCode;434 }435 function LMSGetErrorString (param) {436 if (param != "") {437 var errorString = new Array();438 errorString["0"] = "No error";439 errorString["101"] = "General exception";440 errorString["201"] = "Invalid argument error";441 errorString["202"] = "Element cannot have children";442 errorString["203"] = "Element not an array - cannot have count";443 errorString["301"] = "Not initialized";444 errorString["401"] = "Not implemented error";445 errorString["402"] = "Invalid set value, element is a keyword";446 errorString["403"] = "Element is read only";447 errorString["404"] = "Element is write only";448 errorString["405"] = "Incorrect data type";449 if (scormdebugging) {450 LogAPICall("LMSGetErrorString", param, errorString[param], 0);451 }452 return errorString[param];453 } else {454 if (scormdebugging) {455 LogAPICall("LMSGetErrorString", param, "No error string found!", 0);456 }457 return "";458 }459 }460 function LMSGetDiagnostic (param) {461 if (param == "") {462 param = errorCode;463 }464 if (scormdebugging) {465 LogAPICall("LMSGetDiagnostic", param, param, 0);466 }467 return param;468 }469 function AddTime (first, second) {470 var sFirst = first.split(":");471 var sSecond = second.split(":");472 var cFirst = sFirst[2].split(".");473 var cSecond = sSecond[2].split(".");474 var change = 0;475 FirstCents = 0; //Cents476 if (cFirst.length > 1) {477 FirstCents = parseInt(cFirst[1],10);478 }479 SecondCents = 0;480 if (cSecond.length > 1) {481 SecondCents = parseInt(cSecond[1],10);482 }483 var cents = FirstCents + SecondCents;484 change = Math.floor(cents / 100);485 cents = cents - (change * 100);486 if (Math.floor(cents) < 10) {487 cents = "0" + cents.toString();488 }489 var secs = parseInt(cFirst[0],10) + parseInt(cSecond[0],10) + change; //Seconds490 change = Math.floor(secs / 60);491 secs = secs - (change * 60);492 if (Math.floor(secs) < 10) {493 secs = "0" + secs.toString();494 }495 mins = parseInt(sFirst[1],10) + parseInt(sSecond[1],10) + change; //Minutes496 change = Math.floor(mins / 60);497 mins = mins - (change * 60);498 if (mins < 10) {499 mins = "0" + mins.toString();500 }501 hours = parseInt(sFirst[0],10) + parseInt(sSecond[0],10) + change; //Hours502 if (hours < 10) {503 hours = "0" + hours.toString();504 }505 if (cents != '0') {506 return hours + ":" + mins + ":" + secs + '.' + cents;507 } else {508 return hours + ":" + mins + ":" + secs;509 }510 }511 function TotalTime() {512 total_time = AddTime(cmi.core.total_time, cmi.core.session_time);513 return '&' + underscore('cmi.core.total_time') + '=' + encodeURIComponent(total_time);514 }515 function CollectData(data,parent) {516 var datastring = '';517 for (property in data) {518 if (typeof data[property] == 'object') {519 datastring += CollectData(data[property],parent + '.' + property);520 } else {521 element = parent + '.' + property;522 expression = new RegExp(CMIIndex,'g');523 // get the generic name for this element (e.g. convert 'cmi.interactions.1.id' to 'cmi.interactions.n.id')524 elementmodel = String(element).replace(expression,'.n.');525 // ignore the session time element526 if (element != "cmi.core.session_time") {527 // check if this specific element is not defined in the datamodel,528 // but the generic element name is529 if ((eval('typeof datamodel["' + scoid + '"]["' + element + '"]')) == "undefined"530 && (eval('typeof datamodel["' + scoid + '"]["' + elementmodel + '"]')) != "undefined") {531 // add this specific element to the data model (by cloning532 // the generic element) so we can track changes to it533 eval('datamodel["' + scoid + '"]["' + element + '"]=CloneObj(datamodel["' + scoid + '"]["' + elementmodel + '"]);');534 }535 // check if the current element exists in the datamodel536 if ((typeof eval('datamodel["' + scoid + '"]["' + element + '"]')) != "undefined") {537 // make sure this is not a read only element538 if (eval('datamodel["' + scoid + '"]["' + element + '"].mod') != 'r') {539 elementstring = '&' + underscore(element) + '=' + encodeURIComponent(data[property]);540 // check if the element has a default value541 if ((typeof eval('datamodel["' + scoid + '"]["' + element + '"].defaultvalue')) != "undefined") {542 // check if the default value is different from the current value543 if (eval('datamodel["' + scoid + '"]["' + element + '"].defaultvalue') != data[property]544 || eval('typeof(datamodel["' + scoid + '"]["' + element + '"].defaultvalue)') != typeof(data[property])) {545 // append the URI fragment to the string we plan to commit546 datastring += elementstring;547 // update the element default to reflect the current committed value548 eval('datamodel["' + scoid + '"]["' + element + '"].defaultvalue=data[property];');549 }550 } else {551 // append the URI fragment to the string we plan to commit552 datastring += elementstring;553 // no default value for the element, so set it now554 eval('datamodel["' + scoid + '"]["' + element + '"].defaultvalue=data[property];');555 }556 }557 }558 }559 }560 }561 return datastring;562 }563 function CloneObj(obj){564 if(obj == null || typeof(obj) != 'object') {565 return obj;566 }567 var temp = new obj.constructor(); // changed (twice)568 for(var key in obj) {569 temp[key] = CloneObj(obj[key]);570 }571 return temp;572 }573 function StoreData(data,storetotaltime) {574 if (storetotaltime) {575 if (cmi.core.lesson_status == 'not attempted') {576 cmi.core.lesson_status = 'completed';577 }578 if (cmi.core.lesson_mode == 'normal') {579 if (cmi.core.credit == 'credit') {580 if (cmi.student_data.mastery_score !== '' && cmi.core.score.raw !== '') {581 if (parseFloat(cmi.core.score.raw) >= parseFloat(cmi.student_data.mastery_score)) {582 cmi.core.lesson_status = 'passed';583 } else {584 cmi.core.lesson_status = 'failed';585 }586 }587 }588 }589 if (cmi.core.lesson_mode == 'browse') {590 if (datamodel[scoid]['cmi.core.lesson_status'].defaultvalue == '' && cmi.core.lesson_status == 'not attempted') {591 cmi.core.lesson_status = 'browsed';592 }593 }594 datastring = CollectData(data,'cmi');595 datastring += TotalTime();596 } else {597 datastring = CollectData(data,'cmi');598 }599 var myRequest = NewHttpReq();600 //alert('going to:' + "<?php p($CFG->wwwroot) ?>/mod/scorm/datamodel.php" + "id=<?php p($id) ?>&a=<?php p($a) ?>&sesskey=<?php echo sesskey() ?>"+datastring);601 result = DoRequest(myRequest,datamodelurl,datamodelurlparams + datastring);602 results = String(result).split('\n');603 errorCode = results[1];604 return results[0];605 }606 this.LMSInitialize = LMSInitialize;607 this.LMSFinish = LMSFinish;608 this.LMSGetValue = LMSGetValue;609 this.LMSSetValue = LMSSetValue;610 this.LMSCommit = LMSCommit;611 this.LMSGetLastError = LMSGetLastError;612 this.LMSGetErrorString = LMSGetErrorString;613 this.LMSGetDiagnostic = LMSGetDiagnostic;614}615M.scorm_api = {};616M.scorm_api.init = function(Y, def, cmiobj, cmiint, cmistring256, cmistring4096, scormdebugging, scormauto, scormid, cfgwwwroot, sesskey, scoid, attempt, viewmode, cmid, currentorg, autocommit) {617 window.API = new SCORMapi1_2(def, cmiobj, cmiint, cmistring256, cmistring4096, scormdebugging, scormauto, scormid, cfgwwwroot, sesskey, scoid, attempt, viewmode, cmid, currentorg, autocommit);...

Full Screen

Full Screen

12779.js

Source:12779.js Github

copy

Full Screen

...24 });25 });26 describe('logApiCall', () => {27 it('logs the first call without the start marker', () => {28 underTest.logApiCall('svc1.api1');29 expect(fakeConsole.log).toHaveBeenCalledWith('svc1.api1');30 });31 it('logs the second call with the start marker', () => {32 underTest.logApiCall('svc1.api1');33 fakeConsole.log.calls.reset();34 underTest.logApiCall('svc2.api2');35 expect(fakeConsole.log).toHaveBeenCalledWith('[START]svc2.api2');36 });37 it('logs the stage and the api call if the stage is defined', () => {38 underTest.logStage('stage1');39 fakeConsole.log.calls.reset();40 underTest.logApiCall('svc1.api1');41 expect(fakeConsole.log).toHaveBeenCalledWith('[START]stage1\tsvc1.api1');42 });43 it('ignores arguments that are not arrays', () => {44 underTest.logApiCall('svc1.api1', 12345);45 expect(fakeConsole.log).toHaveBeenCalledWith('svc1.api1');46 });47 it('ignores arguments that are empty arrays', () => {48 underTest.logApiCall('svc1.api1', []);49 expect(fakeConsole.log).toHaveBeenCalledWith('svc1.api1');50 });51 it('ignores hash arguments that do not end with ID or Name', () => {52 underTest.logApiCall('svc1.api1', [{ a: 'b' }]);53 expect(fakeConsole.log).toHaveBeenCalledWith('svc1.api1');54 });55 it('logs xxxName arguments', () => {56 underTest.logApiCall('svc1.api1', [{ a: 'b', FunctionName: 'Fun1' }]);57 expect(fakeConsole.log).toHaveBeenCalledWith('svc1.api1\tFunctionName=Fun1');58 });59 it('logs xxxId arguments', () => {60 underTest.logApiCall('svc1.api1', [{ a: 'b', RestApiId: 'Api1' }]);61 expect(fakeConsole.log).toHaveBeenCalledWith('svc1.api1\tRestApiId=Api1');62 });63 it('logs pathXXX arguments', () => {64 underTest.logApiCall('svc1.api1', [{ a: 'b', pathPart: '/XXX' }]);65 expect(fakeConsole.log).toHaveBeenCalledWith('svc1.api1\tpathPart=/XXX');66 });67 it('logs multiple args matching', () => {68 underTest.logApiCall('svc1.api1', [{ a: 'b', FunctionName: 'Fun1', RestApiId: 'YYY' }]);69 expect(fakeConsole.log).toHaveBeenCalledWith('svc1.api1\tFunctionName=Fun1\tRestApiId=YYY');70 });71 });...

Full Screen

Full Screen

array-logger-spec.js

Source:array-logger-spec.js Github

copy

Full Screen

...22 underTest.logStage('first');23 expect(underTest.getStageLog(true)).toEqual(['first', 'second']);24 });25 it('logs calls to APIs', () => {26 underTest.logApiCall('method1', 'arg1');27 underTest.logApiCall('method2', 'arg2');28 underTest.logApiCall('method1', 'arg1');29 expect(underTest.getApiCallLog()).toEqual(['method1', 'method2', 'method1']);30 });31 it('can return unique API log calls', () => {32 underTest.logApiCall('method1', 'arg1');33 underTest.logApiCall('method2', 'arg2');34 underTest.logApiCall('method1', 'arg2');35 expect(underTest.getApiCallLog(true)).toEqual(['method1', 'method2']);36 });37 it('can filter API calls by service', () => {38 underTest.logApiCall('Api1.method1', 'arg1');39 underTest.logApiCall('Api1.method2', 'arg2');40 underTest.logApiCall('Api2.method3', 'arg2');41 underTest.logApiCall('Api1.method1', 'arg2');42 expect(underTest.getApiCallLogForService('Api1')).toEqual(['Api1.method1', 'Api1.method2', 'Api1.method1']);43 });44 it('can return unique API calls for service', () => {45 underTest.logApiCall('Api1.method1', 'arg1');46 underTest.logApiCall('Api1.method2', 'arg2');47 underTest.logApiCall('Api2.method3', 'arg2');48 underTest.logApiCall('Api1.method1', 'arg2');49 expect(underTest.getApiCallLogForService('Api1', true)).toEqual(['Api1.method1', 'Api1.method2']);50 });51 it('can return a combined log', () => {52 underTest.logStage('creating stuff');53 underTest.logApiCall('Api1.method1', 'arg1');54 underTest.logStage('creating stuff');55 underTest.logStage('deleting stuff');56 underTest.logApiCall('Api1.method1', 'arg1');57 expect(underTest.getCombinedLog()).toEqual([58 ['stage', 'creating stuff'],59 ['call', 'Api1.method1', 'arg1'],60 ['stage', 'creating stuff'],61 ['stage', 'deleting stuff'],62 ['call', 'Api1.method1', 'arg1']63 ]);64 });...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1const { logApiCall } = require('playwright/lib/server/trace/recorder');2logApiCall('method', 'params');3const { logApiCall } = require('playwright/lib/server/trace/recorder');4logApiCall('method', 'params');5const { logApiCall } = require('playwright/lib/server/trace/recorder');6logApiCall('method', 'params');7const { logApiCall } = require('playwright/lib/server/trace/recorder');8logApiCall('method', 'params');9const { logApiCall } = require('playwright/lib/server/trace/recorder');10logApiCall('method', 'params');11const { logApiCall } = require('playwright/lib/server/trace/recorder');12logApiCall('method', 'params');13const { logApiCall } = require('playwright/lib/server/trace/recorder');14logApiCall('method', 'params');15const { logApiCall } = require('playwright/lib/server/trace/recorder');16logApiCall('method', 'params');17const { logApiCall } = require('playwright/lib/server/trace/recorder');18logApiCall('method', 'params');19const { logApiCall } = require('playwright/lib/server/trace/recorder');20logApiCall('method', 'params');21const { logApiCall } = require('playwright/lib/server/trace/recorder');22logApiCall('method', 'params');

Full Screen

Using AI Code Generation

copy

Full Screen

1const { logApiCall } = require('@playwright/test/lib/server/apiLogger');2logApiCall('test', 'test', 'test');3const { logApiCall } = require('@playwright/test/lib/server/apiLogger');4logApiCall('test', 'test', 'test');5const { logApiCall } = require('@playwright/test/lib/server/apiLogger');6logApiCall('test', 'test', 'test');7const { logApiCall } = require('@playwright/test/lib/server/apiLogger');8logApiCall('test', 'test', 'test');9const { logApiCall } = require('@playwright/test/lib/server/apiLogger');10logApiCall('test', 'test', 'test');11const { logApiCall } = require('@playwright/test/lib/server/apiLogger');12logApiCall('test', 'test', 'test');13const { logApiCall } = require('@playwright/test/lib/server/apiLogger');14logApiCall('test', 'test', 'test');15const { logApiCall } = require('@playwright/test/lib/server/apiLogger');16logApiCall('test', 'test', 'test');17const { logApiCall } = require('@playwright/test/lib/server/apiLogger');18logApiCall('test', 'test', 'test');19const { logApiCall } = require('@playwright/test/lib/server/apiLogger');20logApiCall('test', 'test', 'test');21const { logApiCall } = require('@playwright/test/lib/server/apiLogger');22logApiCall('test', 'test', 'test');23const { logApiCall } = require('@playwright/test/lib/server/apiLogger');24logApiCall('test', '

Full Screen

Using AI Code Generation

copy

Full Screen

1const { logApiCall } = require('playwright/lib/utils/logger');2logApiCall('My custom message', 'My custom data');3const { logApiCall } = require('playwright/lib/utils/logger');4logApiCall('My custom message', 'My custom data');5const { logApiCall } = require('playwright/lib/utils/logger');6logApiCall('My custom message', 'My custom data');7const { logApiCall } = require('playwright/lib/utils/logger');8logApiCall('My custom message', 'My custom data');9const { logApiCall } = require('playwright/lib/utils/logger');10logApiCall('My custom message', 'My custom data');11const { logApiCall } = require('playwright/lib/utils/logger');12logApiCall('My custom message', 'My custom data');13const { logApiCall } = require('playwright/lib/utils/logger');14logApiCall('My custom message', 'My custom data');15const { logApiCall } = require('playwright/lib/utils/logger');16logApiCall('My custom message', 'My custom data');17const { logApiCall } = require('playwright/lib/utils/logger');18logApiCall('My custom message', 'My custom data');19const { logApiCall } = require('playwright/lib/utils/logger');20logApiCall('My custom message', 'My custom data');21const { logApiCall } = require('playwright/lib/utils/logger');22logApiCall('My custom message', 'My custom data');23const { logApiCall } = require('playwright/lib/utils/logger');24logApiCall('My custom message', 'My custom data');25const { logApiCall } = require('playwright/lib/utils/logger');26logApiCall('My custom message', 'My custom data');27const { logApiCall } = require('playwright/lib/utils/logger');28logApiCall('My custom message', 'My custom data');29const { logApiCall } = require('playwright/lib/utils

Full Screen

Using AI Code Generation

copy

Full Screen

1const { logApiCall } = require('playwright-core/lib/server/trace/recorder');2logApiCall('myMethod', 'myParam', 'myResult');3const { test } = require('@playwright/test');4test('test', async ({ page }) => {5});6const { test } = require('@playwright/test');7const { logApiCall } = require('playwright-core/lib/server/trace/recorder');8test('test', async ({ page }) => {9});10const { test } = require('@playwright/test');11test('test', async ({ page }) => {12});13const { test } = require('@playwright/test');14const { logApiCall } = require('playwright-core/lib/server/trace/recorder');15test('test', async ({ page }) => {16});17const { test } = require('@playwright/test');18test('test', async ({ page }) => {19});20const { test } = require('@playwright/test');21const { logApiCall } = require('playwright-core/lib/server/trace/recorder');22test('test', async ({ page }) => {23});24const { test } = require('@playwright/test');25test('test', async ({ page }) => {26});27const { test } = require('@playwright/test');28const { logApiCall } = require('playwright-core/lib/server/trace/recorder');29test('test', async ({ page }) => {

Full Screen

Using AI Code Generation

copy

Full Screen

1const { logApiCall } = require('playwright/lib/utils/DebugLogger');2const fs = require('fs');3const logFile = fs.createWriteStream('log.txt');4logApiCall('method', 'params', 'result', logFile);5const { debug } = require('playwright/lib/utils/DebugLogger');6debug();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { logApiCall } = require('@playwright/test/lib/utils/trace');2logApiCall({ method: 'context.route', args: ['**/*'], returnValue: { route: 'route' } });3logApiCall({ method: 'context.route', args: ['**/*'], returnValue: { route: 'route' } });4logApiCall({ method: 'context.route', args: ['**/*'], returnValue: { route: 'route' } });5logApiCall({ method: 'context.route', args: ['**/*'], returnValue: { route: 'route' } });6logApiCall({ method: 'context.route', args: ['**/*'], returnValue: { route: 'route' } });7logApiCall({ method: 'context.route', args: ['**/*'], returnValue: { route: 'route' } });8logApiCall({ method: 'context.route', args: ['**/*'], returnValue: { route: 'route' } });9logApiCall({ method: 'context.route', args: ['**/*'], returnValue: { route: 'route' } });10logApiCall({ method: 'context.route', args: ['**/*'], returnValue: { route: 'route' } });11logApiCall({ method: 'context.route', args: ['**/*'], returnValue: { route: 'route' } });12logApiCall({ method: 'context.route', args: ['**/*'], returnValue: { route: 'route' } });13logApiCall({ method: 'context.route', args: ['**/*'], returnValue: { route: 'route' } });14logApiCall({ method: 'context.route', args: ['**/*'], returnValue: { route: 'route' } });15logApiCall({ method: 'context.route', args: ['**/*'], returnValue: { route: 'route' } });16logApiCall({ method: 'context.route', args: ['**/*'], returnValue: { route: 'route' } });17logApiCall({ method: 'context.route', args: ['**/*'], returnValue: { route: 'route' } });18logApiCall({ method: 'context.route', args: ['**/*'], returnValue: { route: 'route' } });19logApiCall({ method: 'context.route', args: ['**/*'], returnValue: { route: 'route' } });

Full Screen

Playwright tutorial

LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.

Chapters:

  1. What is Playwright : Playwright is comparatively new but has gained good popularity. Get to know some history of the Playwright with some interesting facts connected with it.
  2. How To Install Playwright : Learn in detail about what basic configuration and dependencies are required for installing Playwright and run a test. Get a step-by-step direction for installing the Playwright automation framework.
  3. Playwright Futuristic Features: Launched in 2020, Playwright gained huge popularity quickly because of some obliging features such as Playwright Test Generator and Inspector, Playwright Reporter, Playwright auto-waiting mechanism and etc. Read up on those features to master Playwright testing.
  4. What is Component Testing: Component testing in Playwright is a unique feature that allows a tester to test a single component of a web application without integrating them with other elements. Learn how to perform Component testing on the Playwright automation framework.
  5. Inputs And Buttons In Playwright: Every website has Input boxes and buttons; learn about testing inputs and buttons with different scenarios and examples.
  6. Functions and Selectors in Playwright: Learn how to launch the Chromium browser with Playwright. Also, gain a better understanding of some important functions like “BrowserContext,” which allows you to run multiple browser sessions, and “newPage” which interacts with a page.
  7. Handling Alerts and Dropdowns in Playwright : Playwright interact with different types of alerts and pop-ups, such as simple, confirmation, and prompt, and different types of dropdowns, such as single selector and multi-selector get your hands-on with handling alerts and dropdown in Playright testing.
  8. Playwright vs Puppeteer: Get to know about the difference between two testing frameworks and how they are different than one another, which browsers they support, and what features they provide.
  9. Run Playwright Tests on LambdaTest: Playwright testing with LambdaTest leverages test performance to the utmost. You can run multiple Playwright tests in Parallel with the LammbdaTest test cloud. Get a step-by-step guide to run your Playwright test on the LambdaTest platform.
  10. Playwright Python Tutorial: Playwright automation framework support all major languages such as Python, JavaScript, TypeScript, .NET and etc. However, there are various advantages to Python end-to-end testing with Playwright because of its versatile utility. Get the hang of Playwright python testing with this chapter.
  11. Playwright End To End Testing Tutorial: Get your hands on with Playwright end-to-end testing and learn to use some exciting features such as TraceViewer, Debugging, Networking, Component testing, Visual testing, and many more.
  12. Playwright Video Tutorial: Watch the video tutorials on Playwright testing from experts and get a consecutive in-depth explanation of Playwright automation testing.

Run Playwright Internal automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful