nexial-core 4.3 (2021-12-05)
Release 4.3
2021-12-05
General
Fixes
- FIXED issue with selecting data variables from the same prefix while running macro
- FIXED runtime error when a condition within a flow control resolved to null
- FIXED issuing of a
:end
command during Inspect to end repeat-until loop and macro - FIXED gracefully handle invalid crypt
Improvements
- minor batch and shell script changes to support Java 17.
nexial.disableCriticalCommands
: NEW System variable to temporarily disable critical command failure check.nexial.inspectOnPause
: now support “end immediate” via:end
.nexial.recordingAutostart
: NEW System variable to automatically start desktop (main screen) recording when execution starts. Future Nexial releases will support automatic screen recording at the start of a script, an iteration or a scenario. Stay tuned!!execution-output.html
:- added screen recording as videos in execution report.
- added web service summary and detail logs in execution report for interactive analysis
- fresh redesign of execution summary for improved dashboard view.
- reduce log severity from ERROR to WARN for side-effect or triggered down errors.
- enforce
project.properties
to contain unique data variables; thus reduce misconfiguration or inconsistent behaviors- use
nexial.projectPropertiesDups
to fine-tune this control.
- use
Batch Files
nexial-swagger
: command that generates an automation script and corresponding artifacts to validate the Restful API operations defined in the Swagger file passed in as input.
Expression
- WEB &rauoq;
check(locator,waitMs)
: support customized time out - WEB &rauoq;
check(locator,waitMs)
: default time out to 2 sec instead ofnexial.pollWaitMs
- WEB &rauoq;
uncheck(locator,waitMs)
: support customized time out - WEB &rauoq;
uncheck(locator,waitMs)
: default time out to 2 sec instead ofnexial.pollWaitMs
- LIST »
findFirst(match)
: find first matching item. PolyMatcher supported - LIST »
retain(match)
: filter current LIST viamatch
criteria. PolyMatcher supported - WEB »
jsClick(locator)
: NEW operation to forcefully click via JavaScript instead of WebDriver click. nexial.expression.web.alwaysNew
: NEW System variable to ensure each use of WEB expression clear off outcome from the WEB operations from previous use.- TEXT »
list(delim)
: support auto-resolving delimiter, if not provided. - TEXT »
list(data)
: convertnull
into empty list for simpler automation experience.
Nexial Function
$(projectfile|projectProperty|name)
: NEW function to read project propertyname
fromproject.properties
$(projectfile|projectProperty|name|value)
: NEW function to write project propertyname
withvalue
intoproject.properties
Nexial Interactive
- reset screenshot capability when switching scenario to avoid the wrong type of screenshot capturing
- added new functionality to (1) clear out temp files, and (2) open output directory
- slightly improved menu to reduce visual footprint on console
- remove functionality no longer needed
desktop commands
- FIXED avoid capturing screenshot when underlying driver is not available or ready for use
contextMenu(name,menu,xOffset,yOffset)
: support keystroke between menu selectioncontextMenuByLocator(locator,menu,xOffset,yOffset)
: support keystroke between menu selection- extend custom data grid formatting:
external commands
javaui commands
mobile commands
selectLocalFile(device,folder,filename)
:- handle different types of file display (grid vs list) during automation.
- minor fixes for an edge condition.
type(locator,text)
: avoid clearing text boxes when it contains no text.home()
: fixed issue with iOS deviceclick(locator)
: deliberately click on or very near the center of the specifiedlocator
- initial support for BrowserStack integration completed. To enable, set
ios@browserstack
orandroid@browserstack
asprofile
.type. At a minimum,profile
.browserstack.username andprofile
.browserstack.automatekey are required to enable BrowserStack integration. - FIXED for BrowserStack automation, avoid unnecessarily relaunching target application
rdbms commands
- improved support for nested query results:
- nested result(s) can be access via the
.nested
property, which a list object. For example,${query-result}.nested[0].data
will return the data of the first nested query result. - affected the following commands:
- nested result(s) can be access via the
web commands
assertCssPresent(locator,property,value)
:- now supports validation of computed CSS rather than just declared values. Also support automatically color value conversion for more accurate comparison.
- also handle named color and special color name
transparent
.
assertElementDisabled(locator)
: circumvent Selenium’s limitation by adding JavaScript check on whether an element is disabled or not.assertElementsPresent(prefix)
: fixed issue with selecting data variables from the same prefix while running macroassertElementsVisible(prefix)
: NEW command to assert that a series of web elements are visible.assertElementsVisible(prefix)
: NEW command to assert that a series of web elements are enabled for interaction. This is mostly applicable to form elements.clickByLabel(label)
: click on first matching label without requiring that there is exactly 1 matchclickByLabelAndWait(label,waitMs)
: click on first matching label without requiring that there is exactly 1 matchswitchBrowser(profile,config)
:- fixed error when switching back to DEFAULT (without
profile
value). - force target browser instance to be focused
- fixed error when switching back to DEFAULT (without
type(locator,text)
:- performance improvement when clearing out existing text in React-like text boxes or text areas.
waitUntilDisabled(locator,waitMs)
: circumvent Selenium’s limitation by adding JavaScript check on whether an element is disabled or not.- LOCATORS
text=...
locator: NEW locator to simplify the referencing of text-centric web elementslayer=...
locator: NEW locator to optimize the use of existing locators across multiple DOM layers- minor fixes
- FIXED address issue with invalid intermediate locator for the
layer
locator
- SYSTEM VARIABLES
nexial.browser.forceJSDoubleClick
: NEW System variable to control how a double-click automation should be carried out. Default (false
) is to use underlying WebDriver, not Javascript- FIXED removed misinterpretation of the return of a JS double click
nexial.web.useComputedCss
: NEW System variable to support the discovery of computed CSS value rather than the declared CSS values (default)nexial.web.highlight
is set totrue
- FIXED background not being removed after successive highlighting on the same element when
- FIXED avoid capturing screenshot when underlying driver is not available or ready for use
- BrowserStack:
- update BrowserStack URL from
http
tohttps
nexial.web.secureBrowserStack
: NEW System variable to enable/disable SSL connection to BrowserStack (default is enabled)
- update BrowserStack URL from
- CrossBrowserTesting:
- update CrossBrowserTesting URL from
http
tohttps
nexial.web.secureCrossBrowserTesting
: NEW System variable to enable/disable SSL connect to CrossBrowserTesting (default is enabled)- minor logging improvements
- update CrossBrowserTesting URL from
saveCssValue(var,locator,property)
: NEW command to store CSS value of a web element to a data variable.assertSelectOptionsPresent(locator,options)
: NEW command to assert that theSELECT
element denoted bylocator
contains the specifiedOPTION
list.assertSelectOptionsAbsent(locator,options)
: NEW command to assert that theSELECT
element denoted bylocator
DOES NOT contain the specifiedOPTION
list.- FIXED reduce scrolling by checking if the target element is already visible within current page boundary
clickIfPresent(locator)
: NEW command that clicks on an element only if it can be found.
webmail commands
- adding the provision to extract the link(url) in the email body based on the label name.
ws commands
oauthProfile(var,profile)
: add missing implementation to set auth token to HTTP headerupload(url,body,fileParams,var)
: support multiple HTTP methods and toggling of multipart via the [nexial.ws.upload.method
] and [nexial.ws.upload.multipart
] System variables respectively. Note that both of these System variables must be specified as part of thebody
parameter.- FIXED detail log missing response return code
- FIXED Issue #15 fixed by removing double treatment of GraphQL payload.