Using tags or functions in ECMAScript
ECMAScript follows its own string parsing rules and hence, you must be aware of the methods you must use when you want to use tags or functions in ECMAScript.
You can find the guidelines to be followed when you use the tags or functions under different
scenarios:
- All strings must be enclosed in quotation marks, with appropriate escape sequences:
- Quotation marks within the value of the string must be preceded by a backslash (\")
- Backslashes must be preceded by another backslash (\\) Example legacy function:
setTag(testFileName, C:\myfile.txt)
After conversion to ECMAScript:
orsetTag("testFileName", "C:\\myfile.txt")
testFileName = "C:\\myfile.txt"
- Replace the
null()
function with thenull
keyword.Example legacy function:setTag(testTag, null())
After conversion to ECMAScript:
orsetTag("testTag", null)
testTag = null
- Although the
setTag()
function is still valid in ECMAScript, you can assign values directly instead:Example legacy function:setTag(testTag, newValue)
After conversion to ECMAScript:testTag = "newValue"
ortags["testTag"] = "newValue"
Note: A direct reference to a tag namedid
must be qualified withtags
. In ECMAScript you can reference a tag with:
When the tag name istags["myTagName"] tags.get("myTagName") tags.myTagName myTagName
id
,tags.id
resolves correctly during execution. - Similarly, you can replace the legacy
add()
function with an operator:Example legacy function:add(%%testTag%%, 1)
After conversion to ECMAScript:testTag + 1
- ECMAScript functions do not recognize double percent signs (%%). Therefore, when you write a
function, do not enclose the tags in double percent signs as you would in a legacy function.
HCL OneTest™ API tags are automatically exposed as
ECMAScript local variables.
- In most cases, you can treat the tag name as a local variable: Example legacy function:
resetTags(%%variable%%)
After conversion to ECMAScript:resetTags(variable)
Example legacy function:xpath(%%xml%%, %%xpathString%%)
After conversion to ECMAScript:xpath(xml, xpathString)
- Tag names that include symbols or reserved words can cause problems; in those cases use
the tags["tagname"] style of notation.Same example, after conversion to ECMAScript:
xpath(tags["xml"], tags["xpathString"])
- In most cases, you can treat the tag name as a local variable:
Note: When you assign tags that contain binary data to another tag, a
reference to the underlying data is created and any changes to the data is reflected in both
tags. You can avoid duplication in the tags by making a copy of the actual data. For example,
tags["b"] = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, tags["a"].length);
java.lang.System.arraycopy(tags["a"], 0, tags["b"], 0, tags["a"].length);