Nexial Automation

Test Automation Platform for everyone!

X

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 to false 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 to true
  • 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 and nexial.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.

Nexial Interactive

  • minor fix for corner case dealing with iteration. Now it is possible to run a non-default (1) iteration value via nexial.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 the nexial.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 is 500. 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 as OLE, 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
  • 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 with header=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).
  • WEB:
    • NEW operation - waitFor(locator) - to wait for the specified element to be present.
  • 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.

base commands

csv commands

excel commands

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

rdbms commands

  • saveResults(db,sqls,outputDir) and saveResult(db,sql,output): minor adjustment so that the resulting CSV file will be referenced by nexial.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 the jks form to simplify connectivity.
    • support non-document (such as numeric) resultset, such as .countDocument() queries.
  • saveResult(db,sql,output): force FAIL when unable to execute query
  • saveResults(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

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); use selectAllOptions(locator) instead.
  • selectMultiByValue(locator,array): NEW command to select <OPTION> elements of a <SELECT> element based on their assigned value 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) as var. One can optionally excludes one or more cookie by name via the excludes parameter.
  • clearCookieFields(var,remove): NEW command to remove one or more fields (denoted as remove) from the cookie(s) saved in var.

ws commands

  • fix URL encoding unnecessarily applied on certain characters.