nexial-core 1.0 (2018-03-30)
Release 1.0
2018-03-30
First release of Nexial Automation Platform.
For those familiar with Sentry, this would be Sentry v1.6. If you have
test scripts created in Sentry, be sure to bin/sentry2nexial.cmd script for your project PRIOR to executing
with Nexial.
If this is your first introduction to Nexial – WELCOME!
Supported commands
Here is the list of supported commands separated by their command type:
[aws.s3]
assertNotPresent(profile,remotePath)assertPresent(profile,remotePath)copyFrom(var,profile,remote,local)copyTo(var,profile,local,target)delete(var,profile,remotePath)list(var,profile,remotePath)moveFrom(var,profile,remote,local)moveTo(var,profile,local,target)
[base]
appendText(var,appendWith)assertArrayEqual(array1,array2,exactOrder)assertContains(text,substring)assertCount(text,regex,expects)assertEmpty(text)assertEndsWith(text,suffix)assertEqual(expected,actual)assertNotContain(text,substring)assertNotEmpty(text)assertNotEqual(value1,value2)assertStartsWith(text,prefix)assertTextOrder(var,descending)assertVarNotPresent(var)assertVarPresent(var)failImmediate(text)incrementChar(var,amount,config)macro(file,sheet,name)prependText(var,prependWith)repeatUntil(steps,maxWaitMs)save(var,value)saveMatches(text,regex,saveVar)saveReplace(text,regex,replace,resultVar)split(text,delim,saveVar)startRecording()stopRecording()substringAfter(text,delim,saveVar)substringBefore(text,delim,saveVar)substringBetween(text,start,end,saveVar)verbose(text)waitFor(waitMs)- fixed NPE when secret file is not found in classpath
- remove direct spring dependency from S3-support code
- support externally controlled “nexial.properties” to be loaded to control resource configuration (S3, email, etc.).
Not required unlessnexial.outputToCloudis set totrue
[csv]
compare(expected,actual,failFast)compareExtended(var,profile,expected,actual)convertExcel(excel,worksheet,csvFile)
[desktop]
assertAttribute(locator,attribute,expected)assertChecked(name)assertDisabled(name)assertElementPresent(name)assertEnabled(name)assertHierCells(matchBy,column,expected,nestedOnly)assertHierRow(matchBy,expected)assertListCount(count)assertLocatorNotPresent(locator)assertLocatorPresent(locator)assertMenuEnabled(menu)assertModalDialogNotPresent()assertModalDialogPresent()assertModalDialogTitle(title)assertModalDialogTitleByLocator(locator,title)assertNotChecked(name)assertSelected(name,text)assertTableCell(row,column,contains)assertTableColumnContains(column,contains)assertTableContains(contains)assertTableRowContains(row,contains)assertText(name,expected)assertWindowTitleContains(contains)clear(locator)clearCombo(name)clearModalDialog(var,button)clearTextArea(name)clearTextBox(name)clickButton(name)clickByLocator(locator)clickCheckBox(name)clickExplorerBar(group,item)clickFirstMatchRow(nameValues)clickFirstMatchedList(contains)clickIcon(label)clickList(row)clickMenu(menu)clickOffset(locator,xOffset,yOffset)clickRadio(name)clickTab(group,name)clickTableCell(row,column)clickTableRow(row)clickTextPane(name,criteria)clickTextPaneRow(var,index)closeApplication()collapseHierTable()editHierCells(var,matchBy,nameValues)editTableCells(row,nameValues)hideExplorerBar()login(form,username,password)maximize()minimize()resize(width,height)saveAllTableRows(var)saveAttributeByLocator(var,locator,attribute)saveElementCount(var,name)saveFirstListData(var,contains)saveFirstMatchedListIndex(var,contains)saveHierCells(var,matchBy,column,nestedOnly)saveHierRow(var,matchBy)saveListData(var,contains)saveLocatorCount(var,locator)saveModalDialogText(var)saveModalDialogTextByLocator(var,locator)saveProcessId(var,locator)saveTableRows(var,contains,csv)saveTableRowsRange(var,beginRow,endRow,csv)saveText(var,name)saveTextPane(var,name,criteria)saveWindowTitle(var)selectCombo(name,text)showExplorerBar()toggleExplorerBar()typeAppendTextArea(name,text1,text2,text3,text4)typeAppendTextBox(name,text1,text2,text3,text4)typeByLocator(locator,text)typeTextArea(name,text1,text2,text3,text4)typeTextBox(name,text1,text2,text3,text4)useApp(appId)useForm(formName)useHierTable(var,name)useList(var,name)useTable(var,name)waitFor(name,maxWaitMs)waitForLocator(locator,maxWaitMs)
[excel]
clear(file,worksheet,range)read(file,worksheet,range,var) - to be deletedsaveData(var,file,worksheet,range)saveRange(var,file,worksheet,range)write(file,worksheet,startCell,data)writeAcross(file,worksheet,startCell,array)writeDown(file,worksheet,startCell,array)writeVar(var,file,worksheet,startCell)
[external]
[image]
compare(baseline,actual)convert(source,format,saveTo)crop(image,dimension,saveTo)resize(image,width,height,saveTo)
[io]
assertEqual(file1,file2)assertNotEqual(file1,file2)assertReadableFile(file,minByte)compare(expected,actual,failFast)copyFiles(source,target)count(var,path,pattern)deleteFiles(location,recursive)filter(source,target,matchPattern)makeDirectory(source)moveFiles(source,target)readFile(var,file)readProperty(var,file,property)saveDiff(var,expected,actual)saveFileMeta(var,file)saveMatches(var,path,filePattern)unzip(zipFile,target)validate(var,profile,inputFile)writeFile(file,content,append)writeProperty(file,property,value)zip(filePattern,zipFile)
[jms]
receive(var,config,waitMs)send(config,messageId,payload)- added “missing client connection jar” logic so we can provide instruction for missing client jars
- remove vendor-specific code (use Java reflection instead)
[json]
assertCorrectness(json,schema)assertElementCount(json,jsonpath,count)assertElementNotPresent(json,jsonpath)assertElementPresent(json,jsonpath)assertValue(json,jsonpath,expected)assertValues(json,jsonpath,array,exactOrder)assertWellformed(json)storeCount(json,jsonpath,var)storeValue(json,jsonpath,var)storeValues(json,jsonpath,var)
[mail]
[number]
assertEqual(num1,num2)assertGreater(num1,num2)assertGreaterOrEqual(num1,num2)assertLesser(num1,num2)assertLesserOrEqual(num1,num2)average(var,array)ceiling(var)floor(var)increment(var,amount)max(var,array)min(var,array)round(var,closestDigit)
[pdf]
assertContentEqual(actualPdf,expectedPdf)assertFormElementPresent(var,name)assertFormValue(var,name,expected)assertFormValues(var,name,expectedValues,exactOrder)assertPatternNotPresent(pdf,regex)assertPatternPresent(pdf,regex)assertTextArray(pdf,textArray,ordered)assertTextNotPresent(pdf,text)assertTextPresent(pdf,text)count(pdf,text,var)saveAsPages(pdf,destination)saveAsText(pdf,destination)saveFormValues(pdf,var,pageAndLineStartEnd,strategy)saveMetadata(pdf,var)saveToVar(pdf,var)
[rdbms]
resultToCSV(var,csvFile,delim,showHeader)runFile(var,db,file)runSQL(var,db,sql)runSQLs(var,db,sqls)saveResult(db,sql,output)- added “missing database driver” logic so we can provide instruction for missing database driver
- remove driver-specific code (use Java reflection instead)
[redis]
- basic redis support added. Initial support include:
- url based connection (ie.
redis://...) append(profile,key,value): append value to existing keyassertKeyExists(profile,key): assert if specified key existsdelete(profile,key): delete a key and the associated valueflushAll(profile): flush all data of the connected redis serverflushDb(profile): flush all the data of the connected redis databaserename(profile,current,new): rename key nameset(profile,key,value): add/overwrite value of a keystore(var,profile,key): store the current value of a key in redis to nexial contextstoreKeys(var,profile,keyPattern): store all matching keys - based onkeyPattern- to nexial context
[ssh]
scpCopyFrom(var,profile,remote,local)scpCopyTo(var,profile,local,remote)sftpCopyFrom(var,profile,remote,local)sftpCopyTo(var,profile,local,remote)sftpDelete(var,profile,remote)sftpList(var,profile,remote)sftpMoveFrom(var,profile,remote,local)sftpMoveTo(var,profile,local,remote)
[web]
- shipped with chromedriver v2.37, this includes
- Supports Chrome v63-65
- Resolved issue 2221: Add command-line option to log INFO level to stderr [[Pri-2]]
- Resolved issue 450: ChromeDriver hangs when switching to new window whose document is being overwritten [[Pri-2]]
- shipped with geckodriver v0.20.0 (firefox),
this includes:
- fixes to shut down firefox process more cleanly.
- keyDown and keyUp action now support more than single primitive characters
- shipped with selenium 3.11.0,
this includes:
- Removed deprecated methods from
RemoteWebDriver.
- Removed deprecated methods from
assertAndClick(locator,label)assertAttribute(locator,attrName,value)assertAttributeContains(locator,attrName,contains)assertAttributeNotContains(locator,attrName,contains)assertAttributeNotPresent(locator,attrName)assertAttributePresent(locator,attrName)assertChecked(locator)assertContainCount(locator,text,count)assertCssNotPresent(locator,property)assertCssPresent(locator,property,value)assertElementByAttributes(nameValues)assertElementByText(locator,text)assertElementCount(locator,count)assertElementNotPresent(locator,maxWaitMs)assertElementPresent(locator)assertFocus(locator)assertFrameCount(count)assertFramePresent(frameName)assertIECompatMode()assertIENavtiveMode()assertLinkByLabel(label)assertNotChecked(locator)assertNotFocus(locator)assertNotText(locator,text)assertNotVisible(locator)assertOneMatch(locator)assertScrollbarHNotPresent(locator)assertScrollbarHPresent(locator)assertScrollbarVNotPresent(locator)assertScrollbarVPresent(locator)assertTable(locator,row,column,text)assertText(locator,text)assertTextContains(locator,text)assertTextCount(locator,text,count)assertTextList(locator,list,ignoreOrder)assertTextOrder(locator,descending)assertTextPresent(text)assertTitle(text)assertValue(locator,value)assertValueOrder(locator,descending)assertVisible(locator)clearLocalStorage()click(locator)clickAndWait(locator,waitMs)clickByLabel(label)clickByLabelAndWait(label,waitMs)close()closeAll()deselectMulti(locator,array)dismissInvalidCert()dismissInvalidCertPopup()doubleClick(locator)doubleClickAndWait(locator,waitMs)doubleClickByLabel(label)doubleClickByLabelAndWait(label,waitMs)editLocalStorage(key,value)executeScript(var,script)goBack()goBackAndWait()maximizeWindow()mouseOver(locator)open(url)openAndWait(url,waitMs)refresh()refreshAndWait()resizeWindow(width,height)saveAllWindowIds(var)saveAllWindowNames(var)saveAttribute(var,locator,attrName)saveCount(var,locator)saveElement(var,locator)saveElements(var,locator)saveLocalStorage(var,key)saveLocation(var)savePageAs(var,sessionIdName,url)savePageAsFile(sessionIdName,url,file)saveText(var,locator)saveTextArray(var,locator)saveTextSubstringAfter(var,locator,delim)saveTextSubstringBefore(var,locator,delim)saveTextSubstringBetween(var,locator,start,end)saveValue(var,locator)scrollLeft(locator,pixel)scrollRight(locator,pixel)scrollTo(locator)select(locator,text)selectFrame(locator)selectMulti(locator,array)selectMultiOptions(locator)selectText(locator)selectWindow(winId)selectWindowAndWait(winId,waitMs)selectWindowByIndex(index)selectWindowByIndexAndWait(index,waitMs)toggleSelections(locator)type(locator,value)typeKeys(locator,value)unselectAllText()upload(fieldLocator,file)verifyContainText(locator,text)verifyText(locator,text)wait(waitMs)waitForElementPresent(locator)waitForPopUp(winId,waitMs)waitForTextPresent(text)waitForTitle(text)
[webalert]
[webcookie]
assertNotPresent(name)assertPresent(name)assertValue(name,value)delete(name)deleteAll()save(var,name)saveAll(var)
[ws]
assertReturnCode(var,returnCode)delete(url,body,var)download(url,queryString,saveTo)get(url,queryString,var)head(url,var)header(name,value)headerByVar(name,var)jwtParse(var,token,key)jwtSignHS256(var,payload,key)oauth(var,url,auth)patch(url,body,var)post(url,body,var)put(url,body,var)saveResponsePayload(var,file,append)soap(action,url,payload,var)
[xml]
assertCorrectness(xml,schema)assertElementCount(xml,xpath,count)assertElementNotPresent(xml,xpath)assertElementPresent(xml,xpath)assertValue(xml,xpath,expected)assertValues(xml,xpath,array,exactOrder)assertWellformed(xml)storeCount(xml,xpath,var)storeValue(xml,xpath,var)storeValues(xml,xpath,var)- fixes: url query string encoding to properly ampersand
[nexial expression]
- fix rounding error with decimal numbers for NUMBER expression.