- A guided and easy to follow guidelines to develop custom actions,
- Make code templates, required dependencies, and sample codes easily available to anyone who can create custom actions,
- Maintain the custom action code just like you maintain tasks and test cases using a version control tool like SVN or Git, and
- Share these custom actions with other project members for use.
Working with Custom Actions for Web and Mobile Projects
Importing Existing Custom Actions Created in Previous Qualitia Versions
Creating a Custom Action for a Web/Mobile Project
Pre-Requisites
- Eclipse IDE for Java Developers (Version 2019-03 recommended)
- JDK version 1.8 and JRE version 1.8
Both JDK and JRE are bundled with the above Eclipse IDE version. - Custom Action Developer privileges in Qualitia
- Set Eclipse Path under Project Settings
- Add multiple jar files under Project Settings
Creating New Custom Actions
- From the Expand Menu, click Develop.
- Click the Custom Actions tab.
- Click the Add Button ( ) or Create Custom Action button.
The Custom Actions screen appears. - Select Base Class.
The Custom Object Class file name including its file path should not exceed 256 characters when you are using Git/Bitbucket as a source control system for maintaining project artifacts. - Do one of the following:
- To add a new Qualitia Class:
- Click the Plus button next to Custom Object Class to add a custom object class by mapping to the Qualitia Class that you want to add.
- Enter the java class file name without its extension along with the package name (if required), in Qualitia Class.
- To select a pre-defined Qualitia Class that is mapped to a Custom Object Class:
From the Custom Object Class drop-down list, select a pre-defined custom object class.
The associated Qualitia Class is selected automatically.Points To Know
- For example, if you add a Qualitia Class "com.security.login", then this file creates a package and a java file called as "com.security" and "login.java" respectively.
- The Custom Object Class is a user-friendly alternate name for a Qualitia Class, which you can specify.
- To add a new Qualitia Class:
- Enter Action Name, Description and Function Name for the action to be created.
- In the Properties section, click Add.
A new line will be added in the grid. - Add Parameter Name, Description, ArgDataType for the parameter, and select whether this parameter is mandatory.
- To save the action, click Save.
- To save the action and launch the code template in Eclipse IDE, click Save and Launch Eclipse.
- Close the Welcome on the IDE window to see your auto-generated custom action code template.
- Import the pre-created Custom Action Java project workspace into Eclipse workspace.
This is a one-time activity for a project.- To import the pre-created workspace, right-click Package Explorer, and select Import from the context-menu.
- On the Import window, under the General section, select Existing Projects into Workspace and then click Next.
- In the Select root directory section, click the Browse button, select <PROJECTNAME>_QASJavaproject and click Finish.
You will find this directory under Qualitia project path.
- In Eclipse IDE, from the Window menu, select Preferences.
- Select General > Workspace > Select Refresh using native hooks or polling.
- Click Apply and Close.
- Ensure you do not change the method signature and provide only the method body. Changing the signature in code may break your action in Qualitia.
- In the editor, add the custom action code in the provided template for your custom action.
- To add the dependent jars, do the following in the order listed:
- Add the dependent jar files in the lib folder under the project.
- Right-click the Project, point to Build Path, and then select Configure Build Path.
- Click Libraries > Add JARs.
- Under Jar Selection window, expand the Project folder.
- Under the lib folder, select the dependent Jar, and click Ok.
- Click Apply and Close.
- Add the dependent jar files in the lib folder under the project.
- Build the project and close the Eclipse IDE.
To work this custom action code in the Qualitia automation test cases, you must build the project successfully.
You can now use this newly created custom action while developing task and test cases in Qualitia.
Recommendations and Rules for Custom Actions
Generic Recommendations
The parameter data types supported by Qualitia are String and Array. If an array parameter is used in Qualitia for the custom action, then custom action parameter should be of the type Object in Custom Action function. The parameter can then be type-casted into the data type which is required in the action.
For example, the object parameter can be type-casted into the array list.Based on the standard Java coding rules, actions should not be created in the default package. For better maintenance, it is recommended to use user-defined packages for development.
It is recommended to put a prefix when defining a name for new custom actions for easy identification.
No two custom actions can have the same function name in the same class. Function overloading is not allowed. Duplicate function names in different classes are allowed (not recommended).
Once the action is mapped into Qualitia and used in a test case, do not change the existing signature or other details of the actions or the classes created. The functionality of the action can be modified. Do not delete the custom actions or custom classes that are used in test cases.
If the custom action belongs to any object type (such as WebEdit, WebElement, and so forth), ensure you add the objectInfo data type parameter while developing the code of an action.
While mapping actions into Automation Studio, it is important to map the action using <package.class> hierarchy.
Objects should be added under appropriate Qualitia classes while mapping custom actions into Qualitia Automation Studio
New Recommendations from Qualitia v8.0.0
Making a New Class for Recommendations
package <QASpackagename>; import com.qualitia.execution.ActionResponse; import com.qualitia.execution.ApplicationLogger; import com.qualitia.models.testcase.ExecutionResult; import com.webdriverfw.Wrappers.General; <QASimportlist> public class <QASclassname> extends General { //Define your customs actions here }
Writing Custom Actions in the Accepted Format
package <QASpackagename>; import com.qualitia.execution.ActionResponse; import com.qualitia.execution.ApplicationLogger; import com.qualitia.models.testcase.ExecutionResult; import com.webdriverfw.Wrappers.General; <QASimportlist> public class <QASclassname> extends General { //Define your customs actions here }
public ActionResponse <QASmethodname>(<QASparametername>) { ActionResponse actionResponse = getActionResponse(); ApplicationLogger applicationLogger = actionResponse.getApplicationLogger(); actionResponse.setExecutionResult(ExecutionResult.FAILED); try { // Your code here... applicationLogger.writeToInfoLog(""); actionResponse.setMessage("Successful message"); actionResponse.setExecutionResult(ExecutionResult.PASSED); } catch (Exception ex) { applicationLogger.writeToErrorLog("Exception message", ex); actionResponse.setMessage(“Failed Message”, FailureCategory); actionResponse.setExecutionResult(ExecutionResult.FAILED); } return actionResponse; }
ApplicationLooger
applicationLogger.writeToInfoLog("");
applicationLogger.writeToErrorLog("");
Info Log
Error Log
Show Link of File in Info Log Section
Setting an Execution Result
ExecutionResult.PASSED is used to set when the action is passed.
ExecutionResult.FAILED is used to set when the action is failed.
ExecutionResult.DEFECT is used to set when the action has a defect.
ExecutionResult.NOT_EXECUTED is used to set when the action halts the execution.
In Older Versions before 8.0.0 : public int EqualStrings(String a, String b) { if(a.equals(b)) { DataLogger.writeToDebugAndInfoLogs("they are equal"); return 0; } else { DataLogger.writeToDebugAndInfoLogs("they are not equal"); return 1; } } In Qualitia 8.0.0 Version : public AcionResponse EqualStrings(String a, String b) { ActionResponse actionResponse = getActionResponse(); if(a.equals(b)) { actionResponse.setMessage("they are equal"); actionResponse.setExecutionResult(ExecutionResult.PASSED); return actionResponse; } else { actionResponse.setMessage("they are not equal”,FailureCategories.Category.INVALID_DATA); actionResponse.setExecutionResult(ExecutionResult.FAILED); return actionResponse; } }
Adding a Failure Category for a Custom Action
package com.webdriverfw.Wrappers; Import com.qualitia.execution.failureclassifications.FailureClassificatio; public enum MyCategoriesEnum implements FailureClassification { MY_CUSTOM_CATEGORY1("This is my custom category 1"), MY_CUSTOM_CATEGORY2("This is my custom category 2"); private String name; MyCategoriesEnum(String s) { name = s; } public String getCategory() { return name; } }
actionResponse.setMessage("message",FailureCategories.CustomCategory.NEW_CUSTOM_CATEGORY1);
actionResponse.setMessage("message",FailureCategory.newCategory("Categoryname"));
package com.webdriverfw.Wrappers; public class MyCategoriesConstants { public static final String MY_CUSTOM_CATEGORY3 = "This is my custom category 1"; public static final String MY_CUSTOM_CATEGORY4 = "This is my custom category 2"; }
actionResponse.setMessage("message",FailureCategory.newCategory(MY_CUSTOM_CATEGORY3));
Qualitia Public APIs for Custom Actions
Debugging a Custom Action
Do in the following order listed to create necessary test artifacts:
Create a test case and include the custom action that you want to debug at the appropriate step. For more information, refer to /wiki/spaces/T2/pages/2681539278
From the test case editor, click Run to dry run the test case to verify whether the custom action is hit.
Create a test suite that contains the test case. For more information, refer to Creating a Suite.
Create an offline suite using the test suite. For detailed instructions, refer to Creating an Offline Package.
To add the required files for debugging the custom action:
Open the custom action you want to debug in the Eclipse project.
Add the TestHarness.Java file for the custom action in the Eclipse project.
Add the Config Folder in the Eclipse project.
In the config folder, open the startupSettings.json file, and specify the location of the offline suite for “SuitesDir”.
For example: "SuitesDir":"D:/Qualitia Offline/Suite1"
Insert a breakpoint at an appropriate line number in the custom action.
Start debugging the TestHarness.Java file.
The test suite execution starts.
When the custom action is executed, the execution stops at the breakpoint you have inserted.
You can go ahead and debug the custom action.
To specify Java system properties before executing the test suite.
From the config folder in the custom action of Eclipse, open the QualitiaSystemProperties.json.
In the QualitiaSystemProperties.json file, enter the key-value pairs in the following format:
{"key1": "value1",
"key2": "value2",
.
.
"keyN": "valueN"}
Save the file.
Troubleshooting (Custom Action Module)
Import Custom Action Cannot be continue due to following errors;...
Resolution:
Updating Qualitia Project Path
Re-importing this java project is mandatory. Else, the user will not be able to access updated custom actions. This is a one-time activity.
- Ensure you clone all the project data to the new directory.
This includes Test cases, Tasks, Custom actions, and Java project folders (which hold all the latest custom action code). - Remove the existing project from the workspace.
- To import the cloned java project from the new directory, right-click Package Explorer, and select Import from the context menu.
- On the Import window, under the General section, select Existing Projects into Workspace and then click Next.
- In the Select root directory section, click the Browse button, select <PROJECTNAME>_QASJavaproject and click Finish.
This is in the new directory where you have cloned the Qualitia project data. - Select General > Workspace > Select Refresh using native hooks or polling.
- Click Apply and Close.
Custom Action Custom Files are Not Pushed to Project Path GIT Repository
Open the Eclipse Project.
Click Windows > Preferences > Teams > Git > Projects.
In the right side of the Preference dialog box, under Projects, deselect the Automatically ignore derived resources by adding them.gitignore checkbox.
Other Validations
Validation Error | Resolution |
---|---|
.classpath file is not present in your Eclipse project location | Ensure that the Eclipse project was built successfully after adding all required artifacts (lib, bin, src folders) to it. This will create a .classpath file. |
.class files are not present in your Eclipse project location | Collect the required compiled .class files and add them to the Eclipse project (under bin folder). Names of the required files is mentioned in the report. |
Jar files mentioned in .classpath in your Eclipse project location | Collect all the required jar files and add them to your Eclipse project directory (under lib folder). |
Java source files are not present in your Eclipse project location | You need to generate the source code from the compiled class files and add them into the src folder under Eclipse project directory. For more information on the creating the source files, refer to the (8.3.0 2) Importing Existing Custom Actions Created in Previous Qualitia Versions section. |
Once you have fixed all the errors mentioned above, you can continue importing custom actions in Qualitia.
Working with Custom Actions for Desktop Projects
Importing Existing Custom Actions Created in Previous Qualitia Versions
Creating a Custom Action for a Web/Mobile Project
Pre-Requisites
- Eclipse IDE for Java Developers (Version 2019-03 recommended)
- JDK version 1.8 and JRE version 1.8
Both JDK and JRE are bundled with the above Eclipse IDE version. - Custom Action Developer privileges in Qualitia
- Set Eclipse Path under Project Settings
- Add multiple jar files under Project Settings
Creating New Custom Actions
- From the Expand Menu, click Develop.
- Click the Custom Actions tab.
- Click the Add Button ( ) or Create Custom Action button.
The Custom Actions screen appears. - Select Base Class.
The Custom Object Class file name including its file path should not exceed 256 characters when you are using Git/Bitbucket as a source control system for maintaining project artifacts. - Do one of the following:
- To add a new Qualitia Class:
- Click the Plus button next to Custom Object Class to add a custom object class by mapping to the Qualitia Class that you want to add.
- Enter the java class file name without its extension along with the package name (if required), in Qualitia Class.
- To select a pre-defined Qualitia Class that is mapped to a Custom Object Class:
From the Custom Object Class drop-down list, select a pre-defined custom object class.
The associated Qualitia Class is selected automatically.Points To Know
- For example, if you add a Qualitia Class "com.security.login", then this file creates a package and a java file called as "com.security" and "login.java" respectively.
- The Custom Object Class is a user-friendly alternate name for a Qualitia Class, which you can specify.
- To add a new Qualitia Class:
- Enter Action Name, Description and Function Name for the action to be created.
- In the Properties section, click Add.
A new line will be added in the grid. - Add Parameter Name, Description, ArgDataType for the parameter, and select whether this parameter is mandatory.
- To save the action, click Save.
- To save the action and launch the code template in Eclipse IDE, click Save and Launch Eclipse.
- Close the Welcome on the IDE window to see your auto-generated custom action code template.
- Import the pre-created Custom Action Java project workspace into Eclipse workspace.
This is a one-time activity for a project.- To import the pre-created workspace, right-click Package Explorer, and select Import from the context-menu.
- On the Import window, under the General section, select Existing Projects into Workspace and then click Next.
- In the Select root directory section, click the Browse button, select <PROJECTNAME>_QASJavaproject and click Finish.
You will find this directory under Qualitia project path.
- In Eclipse IDE, from the Window menu, select Preferences.
- Select General > Workspace > Select Refresh using native hooks or polling.
- Click Apply and Close.
- Ensure you do not change the method signature and provide only the method body. Changing the signature in code may break your action in Qualitia.
- In the editor, add the custom action code in the provided template for your custom action.
- To add the dependent jars, do the following in the order listed:
- Add the dependent jar files in the lib folder under the project.
- Right-click the Project, point to Build Path, and then select Configure Build Path.
- Click Libraries > Add JARs.
- Under Jar Selection window, expand the Project folder.
- Under the lib folder, select the dependent Jar, and click Ok.
- Click Apply and Close.
- Add the dependent jar files in the lib folder under the project.
- Build the project and close the Eclipse IDE.
To work this custom action code in the Qualitia automation test cases, you must build the project successfully.
You can now use this newly created custom action while developing task and test cases in Qualitia.
Recommendations and Rules for Custom Actions
Generic Recommendations
The parameter data types supported by Qualitia are String and Array. If an array parameter is used in Qualitia for the custom action, then custom action parameter should be of the type Object in Custom Action function. The parameter can then be type-casted into the data type which is required in the action.
For example, the object parameter can be type-casted into the array list.Based on the standard Java coding rules, actions should not be created in the default package. For better maintenance, it is recommended to use user-defined packages for development.
It is recommended to put a prefix when defining a name for new custom actions for easy identification.
No two custom actions can have the same function name in the same class. Function overloading is not allowed. Duplicate function names in different classes are allowed (not recommended).
Once the action is mapped into Qualitia and used in a test case, do not change the existing signature or other details of the actions or the classes created. The functionality of the action can be modified. Do not delete the custom actions or custom classes that are used in test cases.
If the custom action belongs to any object type (such as WebEdit, WebElement, and so forth), ensure you add the objectInfo data type parameter while developing the code of an action.
While mapping actions into Automation Studio, it is important to map the action using <package.class> hierarchy.
Objects should be added under appropriate Qualitia classes while mapping custom actions into Qualitia Automation Studio
New Recommendations from Qualitia v8.0.0
Making a New Class for Recommendations
package <QASpackagename>; import com.qualitia.execution.ActionResponse; import com.qualitia.execution.ApplicationLogger; import com.qualitia.models.testcase.ExecutionResult; import com.webdriverfw.Wrappers.General; <QASimportlist> public class <QASclassname> extends General { //Define your customs actions here }
Writing Custom Actions in the Accepted Format
package <QASpackagename>; import com.qualitia.execution.ActionResponse; import com.qualitia.execution.ApplicationLogger; import com.qualitia.models.testcase.ExecutionResult; import com.webdriverfw.Wrappers.General; <QASimportlist> public class <QASclassname> extends General { //Define your customs actions here }
public ActionResponse <QASmethodname>(<QASparametername>) { ActionResponse actionResponse = getActionResponse(); ApplicationLogger applicationLogger = actionResponse.getApplicationLogger(); actionResponse.setExecutionResult(ExecutionResult.FAILED); try { // Your code here... applicationLogger.writeToInfoLog(""); actionResponse.setMessage("Successful message"); actionResponse.setExecutionResult(ExecutionResult.PASSED); } catch (Exception ex) { applicationLogger.writeToErrorLog("Exception message", ex); actionResponse.setMessage(“Failed Message”, FailureCategory); actionResponse.setExecutionResult(ExecutionResult.FAILED); } return actionResponse; }
ApplicationLooger
applicationLogger.writeToInfoLog("");
applicationLogger.writeToErrorLog("");
Info Log
Error Log
Show Link of File in Info Log Section
Setting an Execution Result
ExecutionResult.PASSED is used to set when the action is passed.
ExecutionResult.FAILED is used to set when the action is failed.
ExecutionResult.DEFECT is used to set when the action has a defect.
ExecutionResult.NOT_EXECUTED is used to set when the action halts the execution.
In Older Versions before 8.0.0 : public int EqualStrings(String a, String b) { if(a.equals(b)) { DataLogger.writeToDebugAndInfoLogs("they are equal"); return 0; } else { DataLogger.writeToDebugAndInfoLogs("they are not equal"); return 1; } } In Qualitia 8.0.0 Version : public AcionResponse EqualStrings(String a, String b) { ActionResponse actionResponse = getActionResponse(); if(a.equals(b)) { actionResponse.setMessage("they are equal"); actionResponse.setExecutionResult(ExecutionResult.PASSED); return actionResponse; } else { actionResponse.setMessage("they are not equal”,FailureCategories.Category.INVALID_DATA); actionResponse.setExecutionResult(ExecutionResult.FAILED); return actionResponse; } }
Adding a Failure Category for a Custom Action
package com.webdriverfw.Wrappers; Import com.qualitia.execution.failureclassifications.FailureClassificatio; public enum MyCategoriesEnum implements FailureClassification { MY_CUSTOM_CATEGORY1("This is my custom category 1"), MY_CUSTOM_CATEGORY2("This is my custom category 2"); private String name; MyCategoriesEnum(String s) { name = s; } public String getCategory() { return name; } }
actionResponse.setMessage("message",FailureCategories.CustomCategory.NEW_CUSTOM_CATEGORY1);
actionResponse.setMessage("message",FailureCategory.newCategory("Categoryname"));
package com.webdriverfw.Wrappers; public class MyCategoriesConstants { public static final String MY_CUSTOM_CATEGORY3 = "This is my custom category 1"; public static final String MY_CUSTOM_CATEGORY4 = "This is my custom category 2"; }
actionResponse.setMessage("message",FailureCategory.newCategory(MY_CUSTOM_CATEGORY3));
Qualitia Public APIs for Custom Actions
Debugging a Custom Action
Do in the following order listed to create necessary test artifacts:
Create a test case and include the custom action that you want to debug at the appropriate step. For more information, refer to /wiki/spaces/T2/pages/2681539278
From the test case editor, click Run to dry run the test case to verify whether the custom action is hit.
Create a test suite that contains the test case. For more information, refer to Creating a Suite.
Create an offline suite using the test suite. For detailed instructions, refer to Creating an Offline Package.
To add the required files for debugging the custom action:
Open the custom action you want to debug in the Eclipse project.
Add the TestHarness.Java file for the custom action in the Eclipse project.
Add the Config Folder in the Eclipse project.
In the config folder, open the startupSettings.json file, and specify the location of the offline suite for “SuitesDir”.
For example: "SuitesDir":"D:/Qualitia Offline/Suite1"
Insert a breakpoint at an appropriate line number in the custom action.
Start debugging the TestHarness.Java file.
The test suite execution starts.
When the custom action is executed, the execution stops at the breakpoint you have inserted.
You can go ahead and debug the custom action.
To specify Java system properties before executing the test suite.
From the config folder in the custom action of Eclipse, open the QualitiaSystemProperties.json.
In the QualitiaSystemProperties.json file, enter the key-value pairs in the following format:
{"key1": "value1",
"key2": "value2",
.
.
"keyN": "valueN"}
Save the file.
Troubleshooting (Custom Action Module)
Import Custom Action Cannot be continue due to following errors;...
Resolution:
Updating Qualitia Project Path
Re-importing this java project is mandatory. Else, the user will not be able to access updated custom actions. This is a one-time activity.
- Ensure you clone all the project data to the new directory.
This includes Test cases, Tasks, Custom actions, and Java project folders (which hold all the latest custom action code). - Remove the existing project from the workspace.
- To import the cloned java project from the new directory, right-click Package Explorer, and select Import from the context menu.
- On the Import window, under the General section, select Existing Projects into Workspace and then click Next.
- In the Select root directory section, click the Browse button, select <PROJECTNAME>_QASJavaproject and click Finish.
This is in the new directory where you have cloned the Qualitia project data. - Select General > Workspace > Select Refresh using native hooks or polling.
- Click Apply and Close.
Custom Action Custom Files are Not Pushed to Project Path GIT Repository
Open the Eclipse Project.
Click Windows > Preferences > Teams > Git > Projects.
In the right side of the Preference dialog box, under Projects, deselect the Automatically ignore derived resources by adding them.gitignore checkbox.
Other Validations
Validation Error | Resolution |
---|---|
.classpath file is not present in your Eclipse project location | Ensure that the Eclipse project was built successfully after adding all required artifacts (lib, bin, src folders) to it. This will create a .classpath file. |
.class files are not present in your Eclipse project location | Collect the required compiled .class files and add them to the Eclipse project (under bin folder). Names of the required files is mentioned in the report. |
Jar files mentioned in .classpath in your Eclipse project location | Collect all the required jar files and add them to your Eclipse project directory (under lib folder). |
Java source files are not present in your Eclipse project location | You need to generate the source code from the compiled class files and add them into the src folder under Eclipse project directory. For more information on the creating the source files, refer to the (8.3.0 2) Importing Existing Custom Actions Created in Previous Qualitia Versions section. |
Once you have fixed all the errors mentioned above, you can continue importing custom actions in Qualitia.
Modifying Custom Actions
Modify Custom Action Metadata
- From the Expand Menu, click Develop.
- Click the Custom Actions tab.
- In the left pane, click the desired custom action which you want to update.
Custom action details will appear in the right pane. - Click Edit.
- Update Action Name, Description, Function Name, and parameters details based on the requirements.
- Click Save and Launch Editor.
For desktop project custom action developed in VB, you cannot add or remove parameters from the mapped function for an unused cutsom action from Qualitia client. To work around this issue, launch the associated VBS file from Qualitia client, add or remove parameters for the mapped function, and remap the function to the custom action from Custom Action window.
Modify Custom Action Code
Ensure that your associated role is assigned with Custom Actions privileges.
While editing, it is strongly recommended to view and edit custom actions code from Qualitia Automation Studio only. In case you want to edit multiple custom actions, you must launch the code for each action differently from the automation studio. Modifying multiple actions in a single go may put you in conflicting situations which are difficult to handle.
- From the Expand Menu, click Develop.
- Click the Custom Actions tab.
- In the left pane, select the desired custom action which you want to update.
Custom action details will appear in the right pane. - Click View Code.
The code appears in the different section. - To update the code in the Eclipse IDE, click Edit Code.
The code template with an existing code opens in the Eclipse IDE. - Update the code based on the requirements.
- Build the project and close Eclipse IDE.
Once you close the Eclipse IDE, Qualitia automatically commits the code to the version control system like Bitbucket or SVN (if configured) and makes the code available to other Qualitia project members.
Deleting Custom Actions
Ensure that your associated role is assigned with the Custom Action Developer privilege.
- From the Expand Menu, click Develop.
- Click the Custom Actions tab.
- Search the desired custom action.
- Select the action in the left pane.
Custom action details will appear in the right pane. - Click Delete.