nexial-core 2.4 (2019-07-03)
Release 2.4
2019-07-03
General
Fixes
- code fix to avoid modifying System properties while simultaneously reading such properties.
nexial-project.cmd
: fixed theECHO is off.
error.nexial-artifact-repair.cmd|sh
: fixed invalid package reference.nexial-artifact-repair.cmd|sh
: fixed formatting issue in data and script files.- Fixed issue of opening an output excel/execution report after execution even if
nexial.openResult
ornexial.openExecutionReport
isfalse
. - enforce no text-wrap on param values of a Nexial output
- perform data variable substitutions for external resources such as file.
- removed wrong deprecated logs from
desktop.useTable()
Improvements
- removed
java.awt.headless=true
from .commons.cmd and .commons.ssh in order to support Robot-based type key - enhanced to support the rendering of multi-line or wrapped text in execution output (Excel).
- execution output color update for description column; now NOT as similar as a FAIL step
- minor console output enhancement to highlight (in blue) any execution abort messages and reasons.
- correct abort-related messaging to clarify execution flow and intent.
- The
execution_output.html
, each plan file is now clearly separated into different section.- also added
scenario passed
inexecution_output.html
andemail_notification.html
to capture total scenario passed for iteration, script and execution. - minor stylesheet updates to give more room for the display of scenario and activity names.
- also added
- handled special character which belong to MS windows character set but not ISO Latin causing problems in HTML.
System Variables
- [
nexial.scope.mailTo
] HAS BEEN REMOVED AND REPLACED BYnexial.mailTo
nexial.mailSubject
: NEW System variable to custom email subject for post-execution email notificationnexial.mailHeader
: NEW System variable to custom “header” content for post-execution email notificationnexial.mailFooter
: NEW System variable to custom “footer” content for post-execution email notification
Nexial Expression
- NUMBER expression: handle number with other symbols such as comma and dollar sign.
- JSON expression: NEW operation
compact(removeEmpty)
, which is functionally equivalent to JSON »compact(var,json,removeEmpty)
. - TEXT »
replace(searchFor,replaceWith)
: support the replacement of empty text.
Flow Control
EndLoopIf()
: Now supported early termination of a repeat-until loop without aborting the corresponding scenario.EndLoopIf()
: fix code to break repeat-until loop without breaking the enclosing iteration, and vice-versa.- code fix: now Nexial favors “fail-immediate” over “fail-fast”.
base commands
assertArrayEqual(array1,array2,exactOrder)
: minor improvement on console message to reflect the result of the said assertion.startRecording()
: prevent recording to commence if previous recording cannot be stopped.assertArrayNotContain(array,unexpected)
: support assertion against null/emptyarray
.outputToCloud(resource)
: NEW command to support the transferring of output artifact to the cloud.
csv commands
compareExtended(var,profile,expected,actual)
: enhanced with configuration option to compare some fields as number, compare case-insensitively or before-compare trim.compareExtended(var,profile,expected,actual)
: enhanced to support numeric conversion of quoted text (e.g."1.05"
).compareExtended(var,profile,expected,actual)
: minor improvement to reduce runtime exceptions. Also enforce...compareExt.output.display
as required.
desktop commands
typeKeys
: NEW command to automate a series ofkeystrokes
to the current execution environment.
io commands
writeFile(file,content,append)
: supportcontent
as a HTTP resource, in addition to file and direct content.writeFileAsIs(file,content,append)
: supportcontent
as a HTTP resource, in addition to file and direct content.compare(expected,actual,failFast)
: supports comparison report render as HTML.- default CSS for the HTML comparison report available at https://nexiality.github.io/documentation/assets/report/io-compare-report.css
compare(expected,actual,failFast)
: supportexpected
andactual
as a HTTP resource, in addition to file and direct content.
image commands
- saveDiff(var,baseline,actual): NEW command to compare images and store its metadata to var.
- crop(image,dimension,saveTo): Supports Asterisk(
*
) for width and height if image width or height is unknown - resize(image,width,height,saveTo): Supports Asterisk(
*
) for width and height if image width or height is unknown - compare(baseline,actual): DEPRECATED command use saveDiff(var,baseline,actual) instead
json commands
compact(var,json,removeEmpty)
: NEW command to compact JSON by removing null, empty text and empty nodes.
web commands
- stabilize available open window/tab while attempting to select one of them via its index.
- support enabling of chrome remote port (aka DevToolsActivePort) via new System variable
nexial.browser.chrome.remote.port
. By default, this System variable is not enabled. The default Chrome’s DevToolsActivePort is12209
or9555
. This is needed when automating Electron application via chromedriver 4.x or above (set port to12209
). - enable external chromedriver logging for chrome and electron automation via System variable
nexial.browser.logChrome
,nexial.browser.logElectron
, andnexial.browser.logElectronVerbose
. - use ChromeDriverService so that chrome driver can reuse same port for driver-browser communication. This helps to stabilize chrome browser automation.
click(locator)
: honorsnexial.browser.forceJSClick
when found during execution. This allows user more controls on how a web element should be clicked.clickAll(locator)
: NEW command to click on all web elements matchinglocator
. This is useful to support the more modern web applications that use<DIV>
elements to disguise as dropdown options.- for electron automation, automatically add chrome remote debugging port to
12209
if the System variablenexial.browser.chrome.remote.port
is not found.
xml commands
assertSoap(wsdl,xml)
: NEW command to validate SOAPxml
against the schema defined inwsdl
assertSoapFaultCode(expected,xml)
: NEW command to assert the “fault code” in SOAP fault `xml.assertSoapFaultString(expected,xml)
: NEW command to assert the “fault text” in SOAP fault `xml.storeSoapFaultCode(var,xml)
: NEW command to extract and store “fault code” in SOAP faultxml
.storeSoapFaultString(var,xml)
: NEW command to extract and store “fault text” in SOAP faultxml
.assertCorrectness(xml,schema)
: enhance command to support automatic conformance retries over multiple schemas.assertSoap(wsdl,xml)
: fix to handle multiple and possibly conflicting namespace(s) within one XSD embedded in a WSDL. Also some code optimization.assertSoap(wsdl,xml)
: allow for empty<detail>
node in SOAP Fault xml validation. Such condition will result in the corresponding step to SKIPassertSoap(wsdl,xml)
: code fix to read/parse same XML against multiple XSD.