Nexial Automation

Test Automation Platform for everyone!

X

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 /tmp directory 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-downloader has 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.
  • 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

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.log under 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
        1. install Android SDK to ~/.nexial/android/sdk
        2. install Android system images (user selects)
        3. install Android emulators with skins (user selects)
        4. create batch files to start emulators
      • added support for MacOS shell scripts
      • added common utility batch files to ${NEXIAL_HOME}/bin/mobile
    • 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 newCommandTimeout capability.
  • 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 specified locator is 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
  • 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 to var.
  • saveLockStatus(var): NEW command to save current device lock status (LOCKED or UNLOCKED) to var.
  • saveText(var,locator): NEW command to save the text of the referenced element to var.
  • saveTextArray(var,locator): NEW command to save the text of all matching elements as an array (or list) to var.
  • screenshot(file,locator): now support “output-to-cloud” functionality, which is toggled via the nexial.outputToCloud System 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 SMS message to specified phone number.
  • 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 (if text is (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 for unlockType and unlockKey.
  • Locator support:
    • now supports a variety of locators via unique prefixes:
      • id=...: ID-based locator.
      • xpath=...: XPATH-based locator. Note that the xpath= prefix not required since XPATH locators are fairly easy to recognize
      • a11y=...: 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.
  • automatically add scenarioRef for 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.gradle and 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 footprint
  • play(audio): it will download and play the audio files from ${user.home}/.nexial/sound/

web commands

webmail commands

  • attachment(profile,id,attachment,saveTo): NEW command to download an attachment associated with an email identified by id and save it locally to saveTo.
  • attachments(profile,id,saveDir): NEW command to download all the attachments associated with an email identified by id and save them locally to saveDir (directory).
  • code fix for the obscure condition where the attachment file name contains path information.

ws commands