nexial-core 4.1 (2021-08-14)
Release 4.1
2021-08-14
General
Fixes
- minor console logging formatting
- fix error when retrieving profile-based variable set from a macro
- updated batch files (nexial-script-update, nexial-artifact-repair & nexial-variable-update) for downloading the nexial-lib-x.x.zip
- address recent issue on *NIX/MAC system where the
/tmpdirectory cannot be clean up due to permission
Improvements
- support Java 16
- adjustments for older Java (pre Java 11)
- enhancements to Execution Summary to show/hide timing and pass/fail information.
- minor stylesheet update for email notification template.
- Nexial build size has been reduced by extracting some jars into nexial-lib-1.0.zip this will be downloaded by nexial automatically.
- Batch file
nexial-lib-downloaderhas been added to download nexial-lib-x.x.zip file manually.- minor fixes applied to ensure successful downloading of support lib zip file.
Batch Files
nexial-project: support automatic creation of project directory, when a fully qualified path is specified.
Interactive
- minor adjustment to render activity listing correctly
Expressions
- WEB »
check(locator): NEW operation to ensure a checkbox is checked - WEB »
uncheck(locator): NEW operation to ensure a checkbox is unchecked - rewrote parsing logic for expression in order to support parameter values that contains
(,),[, and].- it is now possible to nest parenthesis (
(and)) and square brackets ([and]) within expression operations.
- it is now possible to nest parenthesis (
- implemented special parameter delimiter - ` %%
- to handle situations where comma (,`) is used as part of the parameter itself. This special parameter delimiter allows user to use commas freely as part of the parameter value. - TEXT »
swapCases: NEW operation to swap letter cases.
desktop commands
- added more meaningful error messages for explicit wait
- added auto-retry logic
- autoscanning: code fixes to continue with autoscanning when an error occurred due to component not being active or mis-configured.
- remove over-zealous trimming of component text during editing of a textbox/textarea component.
- HierTable support:
- auto scrolling for HierTable to bring offscreen rows into view (currently only support Infragistics4 UI):
- allow “extra” section of a HierTable element to be loaded more dynamically
- reformat multi-line column headers as single line to better support assertions and data comparison
- code fix to eliminate unwanted exceptions
macro commands
produce: allow a data variable generated in within a macro to be exposed to the calling script directly via its data variable name.
mobile commands
- alpha build for local mobile test automation support.
- documentation forthcoming (please be patient).
- current implementation requires user to install android studio, android sdk, platform-tools, AVD manager, any Android emulators, and Appium Desktop BEFORE using Nexial’s mobile automation feature.
- additional profile configuration for added:
.orientation.geoLocation.server.url.server.address.server.logging
- Appium support:
- fix the shutdown sequence of appium server when Nexial is terminating execution
- support externalizing the Appium’s log during execution (
log/appium.logunder the output directory) - support both external appium server integration and auto-start appium server during Nexial execution
- improved Android setup script to install Android SDK and emulators
- alpha-ready: Android setup script will now
- install Android SDK to
~/.nexial/android/sdk - install Android system images (user selects)
- install Android emulators with skins (user selects)
- create batch files to start emulators
- install Android SDK to
- added support for MacOS shell scripts
- added common utility batch files to
${NEXIAL_HOME}/bin/mobile
- alpha-ready: Android setup script will now
- auto-resolves the location of Appium Server startup script (
main.js) - auto-resolves the location of NodeJS executable (
node) - correctly sending the correct time unit for
newCommandTimeoutcapability.
assertCount(locator,count): NEW command to assert the occurrence of specified locator.assertElementsPresent(prefix): NEW command to assert the presence of a series of locators.assertElementVisible(locator): NEW command to assert that the element referenced by the specifiedlocatoris both present and visible on current screen.assertLocked(): NEW command to assert that the target device is currently locked.assertTextPresent(locator,text): NEW command to assert that an element contains the specified text.- scan across all matching elements (not just the 1st one) for text content assertion.
back(): NEW command to navigate back to previous screen.clickByDisplayText(text): NEW command to click an element based on its text. improved implementation to handle text with single and/or double quotes.closeApp(): implementation change to ONLY close the specified application of current mobile profile.doubleClick(locator,xOffset,yOffset): NEW command to simulate double-click action on specified locator.forward(): NEW command to navigate forward from current screen (after navigated back to previous screen)hideKeyboard: NEW command to key on-screen keyboard- add auto-hiding of on-screen keyboard via
nexial.mobile.hideKeyboardSystem variable.
- add auto-hiding of on-screen keyboard via
home(): NEW command to navigate to current device’s “HOME” screen.lock(): NEW command to lock current device.longClick(locator,waitMs): NEW command to simulate long-click action on a device; generally used to evoke context menu or popup menu.recentApps: NEW command to show recently opened (and still running) apps on current device.saveCount(var,locator): NEW command to save the number of matching elements tovar.saveLockStatus(var): NEW command to save current device lock status (LOCKEDorUNLOCKED) tovar.saveText(var,locator): NEW command to save the text of the referenced element tovar.saveTextArray(var,locator): NEW command to save the text of all matching elements as an array (or list) tovar.screenshot(file,locator): now support “output-to-cloud” functionality, which is toggled via thenexial.outputToCloudSystem variable.- improved stability and performance.
scroll(locator,direction): added more fine-grained scroll increments- fix code to properly scroll in all 4 directions.
select(locator,item): NEW command to select an item from a dropdown.- code fix to accurately select items that are not immediately visible on-screen.
sendSms(phone,message): NEW command to send SMSmessageto specifiedphonenumber.shake(): NEW command to simulate shaking the current device (iOS only), which could trigger other event.shutdown(profile): NEW command to shut down any running emulator and Appium server instance.type(locator,text): now supports clearing out text (iftextis(empty)).- fix code to allow time for the onscreen keyboard to render.
- improved stability and performance.
waitForElement(locator,waitMs): wait until the target element is found before continuing execution.unlock(): NEW command to unlock current device. By default, no password is placed on emulator. For unlocking a device with passcode or pattern, visit Appium Desired Capability and search forunlockTypeandunlockKey.- Locator support:
- now supports a variety of locators via unique prefixes:
id=...: ID-based locator.xpath=...: XPATH-based locator. Note that thexpath=prefix not required since XPATH locators are fairly easy to recognizea11y=...: accessbility id-based locator.class=...: class-based locator.res=...: resource id-based locator, which is an alias to ID-based locator.predicate=...: predicate-based locator. Note that this is for iOS device only.cc=...: class chain-based locator. Note that this is for iOS device only.name=...: name-based locator, which is an alias to ID-based locator. Note that this is for iOS device only.
- fix code to support both implicit and explicit wait strategy.
text=...: NEW locator type to simplify automation.nearby=...: NEW locator type to simplify the task of identifying elements that are adjacent to label or text element.
- now supports a variety of locators via unique prefixes:
- automatically add
scenarioReffor the mobile device used in automation.
rdbms commands
- update multiple database drivers to newer version for better product support
localdb commands
- localdb driver (sqlite) configuration has been removed from
build.gradleand it has been configured to download it automatically while using localdb command for the first time
sound commands
play(audio): update all sound files to MP3 (instead of WAV) to reduce footprintplay(audio): it will download and play the audio files from${user.home}/.nexial/sound/
web commands
waitForPopUp(winId,waitMs): FIXED to support both window name and window index. Also, the target window will be selected (meaning: switched to) when it is detected within the specified max time.- added more meaningful error messages for explicit wait
click(locator): better “find element” strategy for click target- avoid “double-highlighting” caused by nested command calls
- highlighting improvement made to reduce styling conflicting against AUT
type(locator,value): minor logging improvements for clarity- Support
SELECTelement on extracting the text of the selected option. close: also shut down underlying webdriver if the last browser window is closed.selectDropdown(locator,optLocator,optText): NEW command to select an option from a dropdown component.waitForElementTextPresent(locator,text): NEW command to wait for the presence of an element that matches both the specifiedlocatorand specifiedtext.- disable native screenshot when executing under headless environment (not supported)
- disable native DnD when executing under headless environment (not supported)
waitWhileElementNotPresent(locator,waitMs): NEW command to ensure that a specific element is not present within a fixed amount of time.- code fix to prefer the
waitMsparameter overnexial.pollWaitMsvalue.
- code fix to prefer the
- additional settings to speed up and stabilize chrome browser during automation, esp. in headless mode.
assertElementNotPresent(locator,maxWaitMs): addedmaxWaitMsto custom amount of time to wait.- slight adjustment for all
waitUntil...andwaitFor...commands to improve stability by adjusting between-check wait time from 10 to 25 ms. - disable the use of GPU when running Chrome Headless.
nexial.web.useReact: NEW System variable for improved support on React applications.
webmail commands
attachment(profile,id,attachment,saveTo): NEW command to download an attachment associated with an email identified byidand save it locally tosaveTo.attachments(profile,id,saveDir): NEW command to download all the attachments associated with an email identified byidand save them locally tosaveDir(directory).- code fix for the obscure condition where the attachment file name contains path information.
ws commands
upload(url,body,fileParams,var):- additional logging enabled via the
nexial.verboseSystem variable. - honoring the Content-Type header defined in preceding
header(name,value)command(s). - support content type with charset.
- further customization and control via
nexial.ws.multipart.charsetandnexial.ws.multipart.specSystem variables.
- additional logging enabled via the
graphql(url,body,var): NEW command to support GraphQA request automation- code fix to stabilize and enhance web service logging.
- prevent default content type to be sent as a part of a GET request header; GET request, per spec, does not require
any
Content-Typeheader.