nexial-core 3.0 (2020-05-29)
Release 3.0
2020-05-29
General
Fixes
- remove erroneous data output generation in
#summary
worksheet. - ensure
nexial.lastOutcome
to set tofalse
when exception occurs. - update Nexial internal use of web service functionality so that such use is not affected by user’s configuration and project artifacts.
- remove email receipt (aka DSN, or delivery status notification) from Nexial mail notification.
- fixed date format displayed on Windows console.
- removed erroneous screenshot generation in repeat-until loop.
- support additional command types, beyond 31 of them. :-)
- limit exception stack trace to only when
nexial.verbose
is set totrue
- Java version-specific handling of Nashorn script engine, which is needed for mongodb support.
- correctly display Java version on console when running Nexial on MacOSX & *NIX.
Improvements
- create error log when exception ocurrs to help improve RCA.
- update mail configuration, including
nexial.mailHeader
andnexial.mailFooter
information at the end of each script execution. - Removed unnecessary error logs for commands other than web and desktop when
nexial.screenshotOnError
is true. bin/nexial-project
: Now supports creation of project.properties if it doesn’t exist.
Batch Files
bin/nexial-temp-clean
: NEW batch file to clean up temp files generated by Nexial.- fixed code to perform temp file clean up (at the start of execution) even when “verbose” mode is turned off.
bin/nexial-custom-jar
: NEW batch file to copy custom files/jars from source location to${user.home}/.nexial/jar
.bin/nexial-script-update
: add optional flag to automatically rename duplicate activity names found in the same scenario.nexial.outputToCloud
: now supports subdirectory (or relative paths) when moving execution artifacts to cloud storage. This means that any execution artifacts to be created in a subdirectory under the “output” directory will be move to the cloud storage with said subdirectory intact.bin/nexial-project
: new and improved; now supports creating of Nexial macro scripts and helper batch files.bin/nexial
:- NEW command line option,
-subplan
, to execute specific worksheets/subplans of a test plan. Only available for single plan execution. - new feature to perform temp file clean up during Nexial execution.
- NEW command line option,
Nexial Interactive
- minor fix for corner case dealing with iteration. Now it is possible to run a non-default (
1
) iteration value vianexial.scope.iteration
in the data file without forcefully setting such iteration value in Interactive Mode. - fixed runtime error when inspecting data variables within Nexial Interactive
- improved support for flow control over
base.section(step)
to properly skip over steps that are enclosed within a section - improved support for the use of base »
repeatUntil(steps,maxWaitMs)
in Nexial Interactive; now the steps are executed correctly!
System Variable
nexial.lastOutputPath
: NEW System variable to expose the location of the last output (nexial.lastOutputLink
). This System variable will honor thenexial.outputToCloud
mode where the output is to be transformed to a URL (cloud storage). This is useful when a command (such as rdbms »saveResults(db,sqls,outputDir)
) could possibly generate multiple output files.nexial.maxConsoleDisplay
: NEW System variable to limit the amount of text or data variable to be displayed on console to ease the readability of the execution log on the console. Default is500
. Setting this System variable to-1
will disable such a limit.nexial.subplansIncluded
: NEW This variable provides all worksheets/subplans executed by Nexial single plan execution.nexial.subplansOmitted
: NEW This variable provides all worksheets/subplans omitted(not executed) by Nexial single plan execution.nexial.excel.recalcBeforeSave
: NEW System variable to instruct Nexial to perform recalculation on Excel before saving it.nexial.excel.retainCellType
: NEW System variable to enable Nexial’s attempt to retain the Excel cell type when writing data to it. More advanced cell type such asOLE
,CHART
is not yet support.- added more aggressive data type matching logic so that numeric value can be treated as such.
Flow Control
- Now supports Nexial Expression in flow control, as in
SkipIf([CSV($(syspath|data|fullpath)/abc.csv) => parse(header=false) size] = 3)
Nexial Expression
- JSON: code fix to accurately reporting invalid file or content when constructing a JSON expression.
- TEXT:
- NEW operation -
parseAsCsv(configs)
- to convert TEXT to CSV expression. number
operation: handle “octal-like” numbers
- NEW operation -
- CSV:
merge(csvVariable,refColumns)
now supports multiple “key” columns so that one can merge 2 CSV content based on multiple keys. Note that both CSV content must contain header (i.e. parsed withheader=true
).group-sum
: fix floating point precision issue.
- additional logging to improve troubleshooting and RCA.
- NUMBER:
- NEW operation -
abs
- to convert a number into its absolute form (i.e. positive number).
- NEW operation -
- WEB:
- NEW operation -
waitFor(locator)
- to wait for the specified element to be present.
- NEW operation -
- EXCEL:
- NEW operation -
totalDataRow
- to expose the total number of row in an Excel worksheet. - NEW operation -
totalDataColumn(row)
- to expose the total number of column for the specified row.
- NEW operation -
base commands
assertEqual(expected,actual)
: fixed edge cases where anull
value is mistaken as a numeric value.assertNotEqual(value1,value2)
: fixed edge cases where anull
value is mistaken as a numeric value.
csv commands
compareExtended(var,profile,expected,actual)
: now supports the comparing of column content as either an order-significant (via[profile].compareExt.matchAsOrderedList
) or order-insignificant (via[profile].compareExt.matchAsUnorderedList
) list.compareExtended(var,profile,expected,actual)
: “list” column cell can also combine with “trim-first” (via[profile].compareExt.matchAutoTrim
) and “insensitively compare” (via[profile].compareExt.matchCaseInsensitive
).compareExtended(var,profile,expected,actual)
: minor fixes to improve “output to cloud” support for when the EXPECTED or ACTUAL file is stored in cloud storage.
excel commands
saveTotalRowCount(file,worksheet,saveVar)
: NEW command to expose the total number of row with data.
desktop commands
- Fixed issue of build number. Now build num provided by
nexial.scriptRef.buildnum
has precedence over application version defined in application config xml file.
image commands
ocr(source,saveVar)
: NEW command to perform OCR (optical character recognition) on image (source
). This command works best on images containing mostly text with block font (not handwriting). This command internally uses OCR.space API to perform OCR.- reduce console verbosity.
pdf commands
saveAsPdf(profile,content,file)
: NEW command to save text or HTML content to a PDF.
rdbms commands
saveResults(db,sqls,outputDir)
andsaveResult(db,sql,output)
: minor adjustment so that the resulting CSV file will be referenced bynexial.lastOutputLink
System variable (instead of the metadata JSON file).- supports MongoDB via
rdbms
commands.- See Database Connection Setup and
Working With Execution Result for more details. Not all
rdbms
commands are yet supported (to be ratified soon!) - supports connecting to MongoDB with SSL/TLS
- improved support for AWS DocumentDB via the current MongoDB connectivity support. Nexial now includes standard AWS
rds-combined-ca-bundle.pem
in thejks
form to simplify connectivity. - support non-document (such as numeric) resultset, such as
.countDocument()
queries.
- See Database Connection Setup and
Working With Execution Result for more details. Not all
saveResult(db,sql,output)
: force FAIL when unable to execute querysaveResults(db,sqls,outputDir)
: force FAIL when unable to execute query- supports loading of custom jar files & dll files from
${user.home}/.nexial/jar
and${user.home}/.nexial/dll
respectively, thus expanding database support to anything that supports JDBC.- removed build time library dependency for mysql, postgresql, sqlserver and hsqldb. These jar will be downloaded automatically when needed.
step.inTime
observe(prompt,waitMs)
: NEW command for manual observation
with timeout duration to set maximum execution time in milliseconds viawaitMs
parameter.perform(instructions,waitMs)
: NEW command for performing manual tasks with timeout duration to set maximum execution time in milliseconds viawaitMs
parameter.validate(prompt,responses,passResponses,waitMs)
: NEW command for manual validation with timeout duration to set maximum execution time in milliseconds viawaitMs
parameter.
web commands
- minor fixes to allow for multiple UserStack API keys.
switchBrowser(profile,config)
: NEW command to switch between two or more independent browsers during execution.- support auto-search for chrome and firefox binary when the “default” or system-defined binary path cannot be found.
- userstack error no longer pervent execution from continuing.
- code fix to ignore scrolling or highlight error during automation.
- deprecated
selectMultiOptions(locator,array)
; useselectAllOptions(locator)
instead. selectMultiByValue(locator,array)
: NEW command to select<OPTION>
elements of a<SELECT>
element based on their assignedvalue
attribute.- workaround for the recent
samesite
implementation by Chrome (v80+) to block certain cookies. saveTitle(var
): NEW command to save the current page title to a variable.- supports the
partialLinkText
locator (alias:partial
). nexial.browser.isOpen
- NEW System variable to indicate that the target browser is opened (to an URL) or not.nexial.browser.current
- NEW System variable to indicate the current browser type.assertElementEnabled(locator)
: NEW command to validate the usability of an element (usually form element).- add EAGER as default page load strategy for chrome browser; help to reduce occasional false-positive error when the web page does not load timely.
waitForElementsPresents(locators)
: NEW command to wait for the presence of one or more locators.- explicitly use
nexial.web.alwaysWait
system variable to trigger Selenium’s fluent-wait strategy. - change default value for
nexial.web.pageLoadWaitMs
to 15 seconds (instead of 10 seconds). - additional arguments set to chromedriver to remove the “Chrome is being controlled by automated test software” warning.
- added code to handle the situation where clearing out an input field would invoke the containing page to reload (as intended by the web application in question).
- fixed unintended error when switching to another window that contains no content (such as file download popup window).
webalert
storeText(var)
: logic change - this command no longer returns FAIL when no alert text can be found; it now simply removes the specified variable when no alert dialog is found or when dialog contains no text.
webcookie commands
saveAllAsText(var,excludes)
: NEW command to save all available cookie (at the time of execution) asvar
. One can optionally excludes one or more cookie by name via theexcludes
parameter.clearCookieFields(var,remove)
: NEW command to remove one or more fields (denoted asremove
) from the cookie(s) saved invar
.
ws commands
- fix URL encoding unnecessarily applied on certain characters.