nexial-core 3.3 (2020-09-09)
Release 3.3
2020-09-09
General
Fixes
- fix OS-specific path issue when handling path as command parameter.
- fix screenshot link creation in execution output.
- exposing
nexial.lastError
within macro execution. - enable
PauseAfter()
within macro execution. - support data variable creation (such as via base »
save(var,value)
) from within macro (macroFlex()
). - code fix to accurately parse text into array when successive delimiter is encountered.
(e.g.
a,,b
will be parsed as["a", "", "", "b"]
). - prevent a “skip” condition to be considered as a failure via the
nexial.lastOutcome
System variable. - replaced new line character with space for activity name in log, output/junit.xml and output/execution_detail.json
Improvements
- for all command parameters of type boolean, support the use of
true
,false
,yes
,no
,on
,off
and log error message if invalid value found. - improve performance of preparing and validating large plan files (multiple subplans and many steps)
- improve performance by reducing the template rows in template xlsx files
- improve performance by remove some border styles from execution output files (xslx)
- reduce unnecessary logging
- end-immediate results in a “END test result, not PASS – to provide more clarity to the execution
- improved performance while copying macro to test script
System Variable
-
nexial.elapsedTimeSLA
: SLA enforcement will no longer to applicable to base »macro(file,sheet,name)
, base »macroFlex(macro,input,output)
, base »repeatUntil(steps,maxWaitMs)
and base »section(steps)
since these composite commands would likely over extent beyond the specified SLA after the enclosed commands are executed. Similarly, all thewait...
commands will not be held accountable to the same SLA set forth via this System variable. -
nexial.repeatUntil.index
: tracking the loop occurrence within arepeat-until
instance. -
nexial.repeatUntil.startTime
: tracking the start time (epoch) of arepeat-until
instance. -
nexial.repeatUntil.endTime
: tracking the end time (epoch) of arepeat-until
instance.
Expression
- NUMBER » average: exclude empty values during calculation
- NUMBER » multiple: skip over empty values during calculation
- NUMBER » divide: skip over empty values during calculation
- NUMBER » add: skip over empty values during calculation
- NUMBER » minus: skip over empty values during calculation
-
NUMBER » roundTo: custom decimal rounding support via
nexial.number.rounding
- NUMBER » mod: NEW operation to calculate the remainder of a division.
Filter
- Added NEW filters for file
-
contain file
: check if the specified path directory contains a file named as given. -
contain file pattern
: Filter to check does the specified path directory contain one or more files matching provided file pattern -
has file content
: Filter to check does the specified file has provided content at least once. -
has file content pattern
: Filter to check does the specified file content matches given pattern. -
has lastmod >
: Filter to check does file have a “last modified date” greater than given value. -
has lastmod <
: Filter to check does file have a “last modified date” lesser than given value. -
has lastmod =
: Filter to check does file have a “last modified date” same as that of given value.
-
base commands
-
macroFlex(macro,input,output)
:- supports empty input and output parameters.
- output returns as object (such as list, number, etc.) instead of the corresponding string representation
-
repeatUntil(steps,maxWaitMs)
: supports the tracking, start time and end time of arepeat-until
loop. -
waitForCondition(conditions,maxWaitMs)
: NEW command to wait until provided conditions satisfy or reached max time and then proceed.
image commands
-
ocr(source,saveVar)
:- supports retries when OCR fails (default 3 retries).
- random waits between retries to reduce conflicts.
io commands
-
moveFiles(source,target)
: proactively create missingtarget
directory
json commands
-
assertCorrectness(json,schema)
: now supports JSON Schema Core Draft v2019-09, in addition to existing support for Draft v4, v6, v7. If schema is not specified, thenv2019-09
is the default
number commands
-
average(var,array)
: exclude empty values during calculation -
roundTo(var,closestDigit)
: custom decimal rounding support vianexial.number.rounding
rdbms commands
- extra logic to handle SQL comments
web commands
-
screenshot(file,locator,removeFixed)
: now support capturing screenshot by disabling persistent navigation elements -
screenshotInFull(file,timeout,removeFixed)
: now support capturing screenshot by disabling persistent navigation elements - fixed the downloading of CrossBrowserTesting webdriver
- update chromedriver setting to allow for multiple downloads
ws commands
- fix over-zealous URL encoding, which in turn had caused some authentication issue
xml commands
-
assertValue(xml,xpath,expected)
: support validating against empty or blankexpected
values -
assertValues(xml,xpath,array,exactOrder)
: support validating against empty or blankexpected
values
[tn.5250 commands]
- (nexial-amplify ONLY)
- fixed parsing logic: skip over screen text with no content to avoid NPE
- fixed parsing logic: actively lining up table content against table header; some heuristics applied
- [
saveTableRow
] NEW command to save the first matching row of a screen table based on thecriteria
- code stabilization for full screen and nested screen scanning
-
{SPACE}
no longer supported as it is platform-specific. Use literal space ( - remove “hidden” text (a.k.a. “black” text) from being displayed during TN5250 screen scanning
- support dual-pane data layout during screen scanning
- duplicated data labels are now prefixed with
@1
,@2
, … (previously using[1]
,[2]
, … wasn’t great since it created more parsing issues) - when possible, PPI are hidden from console logging
- support successive use of the same profile (previously created duplicated session) via the same TN5250 session
- detect read-only fields
- [
saveTableAsCSV(csv)
]- additional logic applied to handle empty cell or cell data contains comma or double quote
- additional logic to handle cells with missing data or missing headers
- additional logic to handle dangling cell data (without matching header)
- support automatic paging (and scroll back) of table content. Use
maxPage
to limit excessive paging.
- [
inspectScreen()
] and [inspectNesteScreen(titles)
]:- handle the parsing of data displayed in 2-column format
- support partially dual-column display (where a screen contains only partially dual-column data layout)
- [
typeKeys(keystrokes)
] enable direct support for[ATTN]
key to invoke CIS command menu - [
{PROFILE}.logInspection
] reworked the log file output to improve readability - cleaned up some log misconfiguration
- implemented a slightly more stable approach to wait for the TN5250 screen to “settle” down
- [
clearField(label)
] NEW command to clear any value for a given field.