Release 5.1
Data Driven Sample Test Case 3
Report which gives clear understanding of start and end iteration for each block 4
Decision Making Statement for Blocks/Flows 6
Data Driven Parsing when condition satisfied 11
Schedule in Different Browsers 12
Ability to add multiple emails to a suite for receiving consolidated reports 12
Hide Password in Variable and Data 13
New Project and other Pages 16
Set Variable Value Formatting and access Variable in the list 17
Smart Retry Timeout (Configurable) 19
Add more synonyms for Open website 21
Switch to Alert box and save the Alert 21
Set screen size to Standard Resolution 22
Below are the sample instructions that are supported 24
Basic _py, _js instruction works now 25
Switch with title instruction 26
Dont discover when if condition don't satisfy 29
Upload file with Artifact extension 30
The Compound statement works after Add/Edit the test step 30
Following are the version changes in the version 5.1 33
Following are the version changes in the version 5.0 33
Optional arguments can be provided to a test step as described below. 34
Dealing with disabled elements (visually grayed out) 35
Provide spinner/progress bar information 35
In Data-driven test, input data can be stored in data sources like xls, csv and the test case which can execute tests for all test data in the xls, csv. I.e - run through multiple data for input in a for-each loop
Earlier this feature was supported only by selenium mode now it is also supported by AIQ mode execution
Note: While generating, only the first loop is used. During execution, all the data will be used and looped through.
Nested blocks are blocks within blocks. You can have a single level of nesting, or you can even have multiple levels of nesting blocks
Flows inside a block is also supported
Here’s a sample test case for nested flows
The corresponding flows - loginbasic, leadbasic and logoutbasic have to be created under the flows tab as per user guide.
Sample report format for nested flows
Main Block used to repeat a given section of block/flow a certain number of times or until a particular condition is met.Iteration count of Main Block is shown in the increasing order in the report eg: Start Iteration1 of block1, Start Iteration2 of block1 where its respective sub block/flow will always start from count 1
Note: We request user to create test case in below order
Run ${block1} Begin block block1 instructions End block |
Note: Decision making statement (i.e) if and the else part will work only for block and flow statement
if statement is the most simple decision making statement. It is used to decide whether a certain statement or block of statements will be executed or not i.e if a certain condition is true then a block of statements is executed otherwise not.
Syntax
if(condition), run ${block}
Begin block blockname
// Statements to execute if
// condition is true
End block
The condition can be used with flow as below, we can call the flow or can create a block
if(condition), run ${flow}
// Statements to execute if
// condition is true
Example:
If the given xpath is visible then users will be created.
If-else statement, if a condition is true a block of statements will be executed and if the condition is false else part will be executed
Syntax
if (condition) run ${block}
Begin block block name
// Executes this block if
// condition is true
End Block
Else, run ${else_part}
Begin block else_part
// Executes this block if
// condition is false
End Block
Example:
In this example the if condition is not satisfied so else part is executed
When an if else statement is present inside the body of another “if” or “else” then this is called nested if else.
Syntax:
if (condition1), run ${block1}
Begin block block1
//Nested if else inside the body of "if"
if(condition2), run ${block2}
Begin block block2
//Statements inside the body of nested "if"
End Block
Else, ${else_part}
// else_part is the flow here
//Statements inside the body of nested "else"
Else, ${else_mainblock}
//Statements inside the body of "else"
Example:
The elif statement is useful when you need to check multiple conditions, nesting of if-else blocks can be avoided using else..if statement.
Note: instead of else if we need to mentioned as elif
Syntax:
if (condition1) run ${block1}
//These statements would execute if the condition1 is true
elif(condition2) run ${block2}
//These statements would execute if the condition2 is true and condition1 is false
End block
.
.
Else, run ${else_block}
//These statements would execute if all the conditions return false.
End block
End block
Example:
In this example if condition is not satisfied so the block login1 is not executed, then the control moves to elif here the condition is satisfied and the block login2 is executed , when at least one condition is passed the else part will be skipped
Data will be parsed when condition is satisfied
DataFile
Above testcase run${block1}
for all rows will iterate through all rows in the data file.
When condition matches for the current row that is running now, only that if block will get executed, Subsequent elif/else wont get executed, likewise if the condition did not match for other rows that if wont get executed.
While scheduling a suite user have option to select platform and browser details so that the scheduled suite will execute in the respective platform, browser.
User can now add multiple email to a suite for receiving consolidated report after the suite execution. Enter valid email and by press tab,comma or enter key multiple emails can be added.
Password given in the variable and in data will be hidden. That is sensitive data are hidden, only by downloading the variable/data the password details can be seen.
Note: we now hide only value for statement that have word “password”. In the future we will apply this for other common sensitive words "pass", "pwd", "user", "userid", "login", "username", "uid" that are in common.
Dashboard allows us to check Statistical data for Week, Month and Year with the new UI graphical user interface.
Modal dialog are redesigned and improved over all application.
We can store variable as a list and fetch based on index starting as 1
Enable Smart Retry from Update Project page
When the project is in the smart retry mode, and suppose test steps fails at step 4, smart retry button will be visible on step 4, and if user edited/added in between
eg: at step 3.1 now click on smart retry icon. the step start generating from 3.1
We have a variable called "smart_retry_timeout" we can set the number of minutes for smart retry.. Default value will be 2 minutes, but if user changes variable, it can be whatever the number of minutes the user wants.
We can specify a value in seconds, here 300 secs will make smart retry button visible for 5 min so user get enough time to debug the error thrown step
Network call timeout feature will wait for network API calls to get over. This is to ensure that page has loaded properly. By default we have Selenium waits but sometimes it does not give reliable results so using network calls feature we wait for request calls to get over and ensure that page loading has been completed. To enable network call feature, we need to set a variable named ${network_call_timeout} in the variables tab and assign some time (in seconds).
Since few releases we have instructions
switch to alert box and save message as alert_set1
switch to alert and click on ok
Now we also support instruction
switch to alert box and save message as alert_set2 and click OK
User can set the screen to standard resolution with following instructions
We can now give XY coordinate on any HTML node and ask system to click at that position. It uses the syntax _xy{ }
Click on _xy{20, 30} of _css{#some_html_node_id}
Hover on _xy{20, 30} of _xpath{//img[@id='some_html_node_id']}
Double Click on _xy{20, 30} of "Photo of Eiffel Tower”
We can now switch to a window by providing its title.
switch to window with title “title1”
Statements “take screenshot” and “capture screenshots” works now
Before this model size was not even when clicking Next
When the if condition won't satisfy, it won't discover the next instruction .
ex. For instruction if “login” is on the page, enter username if login is not there , we won't discover enterable username at all. And system will simply just move to next instruction
Now header will stay when the list is scrolled
Earlier below instruction i.e artifact for upload file name is allowed without giving file name extension
upload file to "upfile" |
ArtifactForUploadFile |
Now the same is supported only by giving file name extension refer below
upload file to "upfile" |
ArtifactForUploadFile.xls |
If we allow filenames without extensions, and if multiple files of the same name but different extensions are uploaded, there’s no way for AutonomIQ’s script generation engine to identify the right file to be used.
The Compound statement creation during Test Step Add/Edit when separated with "." NLP break's down the test steps accordingly
We have reduced the message size to improve performance and fix message passing for huge script, Check whether content first page is updated
Mozilla Firefox 62.0.3
Geckodriver 0.25.0
Google Chrome 75.0.3770.80
ChromeDriver 75.0.3770.90
Selenium 3.12.0
Mozilla Firefox 62.0.3
Geckodriver 0.20.1
Google Chrome 75.0.3770.80
ChromeDriver 75.0.3770.90
Selenium 3.8.0
By default, AutonomIQ will check if a browser alert is present on the screen before interacting with any element on the screen. If an unhandled alert is present (alerts can be handled by – switch to alert and click on OK/Cancel), it’ll purposely fail the test step with an error message stating that the alert is unhandled. If the user doesn’t want for the test step to fail, they can use the ignoreAlert option as shown below
Click on “login” button --ignoreAlert
By default, AutonomIQ caches xpaths for every test step so that subsequent script generations will be faster. However, if the user doesn’t want to use the cached xpath for a certain step, they can provide the dynamicXpath option as shown below
Click on ${order_id} --dynamicXpath
Note: If a certain xpath is not valid due to it being dynamic or an application change, it will be auto-healed which guarantees that the plain English step will not fail due to invalid xpaths.
By default, AutonomIQ will only interact with elements that are enabled. If the user wants to interact with a disabled element, they can use the Force option as shown below
Force click on “login” where login button is grayed out.
By default, AutonomIQ uses selenium click and if selenium click fails, it’ll switch to javascript click. However, if the user wants to specifically use action-chain click, they can provide it as shown below
Click on “login” --moveAndClick
If the application under test has progress bars/spinners as a part of the UI design, AutonomIQ provides the capability for users to specify the spinner information as a variable as shown below under “variables” tab. Once this information is provided, AutonomIQ will dynamically wait until the progress bar/spinner disappears before proceeding with the next step.
Variable name : spinner_xpath
Variable value : xpath_of_the_spinner