UNPKG

siesta-lite

Version:

Stress-free JavaScript unit testing and functional testing tool, works in NodeJS and browsers

116 lines (90 loc) 4.04 kB
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>The source code</title> <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" /> <script type="text/javascript" src="../resources/prettify/prettify.js"></script> <style type="text/css"> .highlight { display: block; background-color: #ddd; } </style> <script type="text/javascript"> function highlight() { document.getElementById(location.hash.replace(/#/, "")).className = "highlight"; } </script> </head> <body onload="prettyPrint(); highlight();"> <pre class="prettyprint lang-js">/* Siesta 5.6.1 Copyright(c) 2009-2022 Bryntum AB https://bryntum.com/contact https://bryntum.com/products/siesta/license */ Singleton(&#39;Siesta.Test.ActionRegistry&#39;, { has : { actionClasses : Joose.I.Object }, methods : { registerAction : function (name, constructor) { this.actionClasses[ name.toLowerCase() ] = constructor }, getActionClass : function (name) { return this.actionClasses[ name.toLowerCase() ] }, create : function (obj, test, defaultArgs, initStep) { if (obj !== Object(obj)) throw &quot;Action configuration should be an Object instance&quot; obj = Joose.O.copy(obj) if (!obj.action) { var actionClasses = this.actionClasses var methods = {} if (test) { methods = test.getActionableMethods() } Joose.O.eachOwn(obj, function (value, key) { var shortcut = key.toLowerCase() if (actionClasses[ shortcut ]) { obj.action = shortcut switch (shortcut) { case &#39;setvalue&#39; : case &#39;waitfor&#39; : // do nothing break case &#39;type&#39; : obj.text = value break default : obj.target = value } return false } else if (methods[ shortcut ]) { if (shortcut.match(/^waitFor/i)) { obj.action = &#39;wait&#39; obj.waitFor = methods[ shortcut ] obj.args = value || [] } else { obj.action = &#39;methodCall&#39; obj.methodName = methods[ shortcut ] obj.args = value || [] } return false } }) } if (!obj.action) throw &quot;Need to include `action` property or shortcut property in the step config: &quot; + Siesta.Util.Serializer.stringify(obj, 2) // Don&#39;t get the arguments from the previous step if it is a waitFor action, // it does not make sense and messes up the arguments if (obj.action != &#39;wait&#39; &amp;&amp; obj.action != &#39;waitfor&#39; &amp;&amp; obj.action != &#39;delay&#39; &amp;&amp; obj.action != &#39;methodCall&#39;) { if (!obj.args &amp;&amp; defaultArgs) obj.args = defaultArgs } var actionClass = this.getActionClass(obj.action) // if there&#39;s `initStep` function - overwrite the &quot;next&quot; function anyway if (!obj.next || initStep) obj.next = initStep(actionClass.prototype.hasOwnAsyncFrame).next if (!obj.test || test) obj.test = test return new actionClass(obj) } } }); </pre> </body> </html>