Skip to content

Commit

Permalink
Add actions : returnPreviousPage and ForwardNextPage for GUI application
Browse files Browse the repository at this point in the history
  • Loading branch information
bcivel committed Sep 30, 2024
1 parent d6093d5 commit ec87249
Show file tree
Hide file tree
Showing 6 changed files with 101 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,8 @@ public class TestCaseStepAction {
public static final String ACTION_OPENURLLOGIN = "openUrlLogin";
public static final String ACTION_OPENURL = "openUrl";
public static final String ACTION_REFRESHCURRENTPAGE = "refreshCurrentPage";
public static final String ACTION_RETURNPREVIOUSPAGE = "returnPreviousPage";
public static final String ACTION_FORWARDNEXTPAGE = "forwardNextPage";
public static final String ACTION_EXECUTEJS = "executeJS";
public static final String ACTION_EXECUTECOMMAND = "executeCommand";
public static final String ACTION_EXECUTECERBERUSCOMMAND = "executeCerberusCommand";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,12 @@ public TestCaseStepActionExecution doAction(TestCaseStepActionExecution actionEx
case TestCaseStepAction.ACTION_REFRESHCURRENTPAGE:
res = this.doActionRefreshCurrentPage(execution);
break;
case TestCaseStepAction.ACTION_RETURNPREVIOUSPAGE:
res = this.doActionReturnPreviousPage(execution);
break;
case TestCaseStepAction.ACTION_FORWARDNEXTPAGE:
res = this.doActionForwardNextPage(execution);
break;
case TestCaseStepAction.ACTION_EXECUTEJS:
res = this.doActionExecuteJS(execution, value1);
break;
Expand Down Expand Up @@ -2489,4 +2495,46 @@ private MessageEvent doActionRefreshCurrentPage(TestCaseExecution tCExecution) {
}
}

private MessageEvent doActionReturnPreviousPage(TestCaseExecution tCExecution) {
MessageEvent message;

try {
LOG.debug("RETURN PREVIOUS PAGE");
if (tCExecution.getApplicationObj().getType().equalsIgnoreCase(Application.TYPE_GUI)) {
return this.webdriverService.doSeleniumActionReturnPreviousPage(tCExecution.getSession());
}
message = new MessageEvent(MessageEventEnum.ACTION_NOTEXECUTED_NOTSUPPORTED_FOR_APPLICATION);
message.setDescription(message.getDescription().replace("%ACTION%", TestCaseStepAction.ACTION_RETURNPREVIOUSPAGE));
message.setDescription(message.getDescription().replace("%APPLICATIONTYPE%", tCExecution.getApplicationObj().getType()));
return message;
} catch (Exception e) {
message = new MessageEvent(MessageEventEnum.ACTION_FAILED_RETURNPREVIOUSPAGE);
String messageString = e.getMessage().split("\n")[0];
message.setDescription(message.getDescription().replace("%DETAIL%", messageString));
LOG.debug("Exception doing action refreshCurrentPage :" + messageString, e);
return message;
}
}

private MessageEvent doActionForwardNextPage(TestCaseExecution tCExecution) {
MessageEvent message;

try {
LOG.debug("FORWARD NEXT PAGE");
if (tCExecution.getApplicationObj().getType().equalsIgnoreCase(Application.TYPE_GUI)) {
return this.webdriverService.doSeleniumActionForwardNextPage(tCExecution.getSession());
}
message = new MessageEvent(MessageEventEnum.ACTION_NOTEXECUTED_NOTSUPPORTED_FOR_APPLICATION);
message.setDescription(message.getDescription().replace("%ACTION%", TestCaseStepAction.ACTION_FORWARDNEXTPAGE));
message.setDescription(message.getDescription().replace("%APPLICATIONTYPE%", tCExecution.getApplicationObj().getType()));
return message;
} catch (Exception e) {
message = new MessageEvent(MessageEventEnum.ACTION_FAILED_FORWARDNEXTPAGE);
String messageString = e.getMessage().split("\n")[0];
message.setDescription(message.getDescription().replace("%DETAIL%", messageString));
LOG.debug("Exception doing action refreshCurrentPage :" + messageString, e);
return message;
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,8 @@ public enum MessageEventEnum {
ACTION_SUCCESS_LONG_CLICK(200, "OK", "Element '%ELEMENT%' long clicked.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_CLEAR(200, "OK", "Screenshot taken.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_REFRESHCURRENTPAGE(200, "OK", "Current page refreshed", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_RETURNPREVIOUSPAGE(200, "OK", "Returned to previous page", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_FORWARDNEXTPAGE(200, "OK", "Forwarded to next page", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_SETNETWORKTRAFFICCONTENT(200, "OK", "HAR Network traffic (JSON format) set from index %INDEX% (from request nb : %NBHITS%) to current content.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_SETNETWORKTRAFFICCONTENT_FROMINDEX0(200, "OK", "HAR Network traffic (JSON format) set to current content.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_INDEXNETWORKTRAFFIC(200, "OK", "Network traffic index %INDEX% starts now (from request nb : %NB%).", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
Expand Down Expand Up @@ -355,6 +357,8 @@ public enum MessageEventEnum {
ACTION_FAILED_CLEAR_NO_SUCH_ELEMENT(267, "FA", "Failed to long clicked because could not find element '%ELEMENT%'!", true, true, true, MessageGeneralEnum.EXECUTION_FA_ACTION),
ACTION_FAILED_EXECUTECOMMAND_MISSINGPARAMETER(289, "FA", "Failed to launch the command due to the empty parameter : %PARAM%", true, true, false, MessageGeneralEnum.EXECUTION_FA_ACTION),
ACTION_FAILED_REFRESHCURRENTPAGE(259, "FA", "Failed to refresh current page : %DETAIL%", true, true, false, MessageGeneralEnum.EXECUTION_FA_ACTION),
ACTION_FAILED_RETURNPREVIOUSPAGE(259, "FA", "Failed to return to previous page : %DETAIL%", true, true, false, MessageGeneralEnum.EXECUTION_FA_ACTION),
ACTION_FAILED_FORWARDNEXTPAGE(259, "FA", "Failed to forward to next page : %DETAIL%", true, true, false, MessageGeneralEnum.EXECUTION_FA_ACTION),
ACTION_FAILED_SETNETWORKTRAFFICCONTENT(259, "FA", "Failed to set HAR Content. : %DETAIL%", true, true, false, MessageGeneralEnum.EXECUTION_FA_ACTION),
ACTION_FAILED_SETCONSOLECONTENT(259, "FA", "Failed to console Content. : %DETAIL%", true, true, false, MessageGeneralEnum.EXECUTION_FA_ACTION),
ACTION_FAILED_SETCONTENT(259, "FA", "Failed to set Content. : %DETAIL%", true, true, false, MessageGeneralEnum.EXECUTION_FA_ACTION),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,4 +152,8 @@ public interface IWebDriverService {
MessageEvent doSeleniumActionDragAndDropByOffset(Session session, Identifier object, Identifier offset, boolean waitForVisibility, boolean waitForClickability) throws IOException;

MessageEvent doSeleniumActionRefreshCurrentPage(Session session);

MessageEvent doSeleniumActionReturnPreviousPage(Session session);

MessageEvent doSeleniumActionForwardNextPage(Session session);
}
Original file line number Diff line number Diff line change
Expand Up @@ -1373,7 +1373,47 @@ public MessageEvent doSeleniumActionRefreshCurrentPage(Session session) {
return message;
} catch (TimeoutException exception) {
message = new MessageEvent(MessageEventEnum.ACTION_FAILED_REFRESHCURRENTPAGE);
message.setDescription(message.getDescription().replace("%TIMEOUT%", String.valueOf(session.getCerberus_selenium_pageLoadTimeout())));
message.setDescription(message.getDescription().replace("%DETAIL%", String.valueOf(exception)));
LOG.warn(exception.toString());
} catch (WebDriverException exception) {
LOG.warn(exception.toString());
return parseWebDriverException(exception);
}
return message;
}

@Override
public MessageEvent doSeleniumActionReturnPreviousPage(Session session) {

MessageEvent message;

try {
session.getDriver().navigate().back();
message = new MessageEvent(MessageEventEnum.ACTION_SUCCESS_RETURNPREVIOUSPAGE);
return message;
} catch (TimeoutException exception) {
message = new MessageEvent(MessageEventEnum.ACTION_FAILED_REFRESHCURRENTPAGE);
message.setDescription(message.getDescription().replace("%DETAIL%", String.valueOf(exception)));
LOG.warn(exception.toString());
} catch (WebDriverException exception) {
LOG.warn(exception.toString());
return parseWebDriverException(exception);
}
return message;
}

@Override
public MessageEvent doSeleniumActionForwardNextPage(Session session) {

MessageEvent message;

try {
session.getDriver().navigate().forward();
message = new MessageEvent(MessageEventEnum.ACTION_SUCCESS_FORWARDNEXTPAGE);
return message;
} catch (TimeoutException exception) {
message = new MessageEvent(MessageEventEnum.ACTION_FAILED_FORWARDNEXTPAGE);
message.setDescription(message.getDescription().replace("%DETAIL%", String.valueOf(exception)));
LOG.warn(exception.toString());
} catch (WebDriverException exception) {
LOG.warn(exception.toString());
Expand Down
2 changes: 2 additions & 0 deletions source/src/main/webapp/js/testcase/testcaseStatic.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,8 @@ var actionOptList = {
"manageDialogKeypress":{"group":"context_action","value": "manageDialogKeypress","label":{"en":"Manage Dialog pressing key","fr":"Switcher sur l'Iframe"},"application_types":["GUI"],
"field1":{"label":{"en": "keys to press", "fr": "Touches à appuyer"},"picto":"images/action-keyboard.png", "class": "col-lg-12 crb-autocomplete-variable"}},
"refreshCurrentPage":{"group":"context_action","value": "refreshCurrentPage","label":{"en":"Refresh Page","fr":"Recharger la page"},"application_types":["GUI"]},
"returnPreviousPage":{"group":"context_action","value": "returnPreviousPage","label":{"en":"Return Previous Page","fr":"Retourner page précédente"},"application_types":["GUI"]},
"forwardNextPage":{"group":"context_action","value": "forwardNextPage","label":{"en":"Forward Next Page","fr":"Aller à la page suivante"},"application_types":["GUI"]},
"executeJS":{"group":"command","value": "executeJS","label":{"en":"Execute Javascript Command","fr":"Executer une commande Javascript"},"application_types":["GUI"],
"field1":{"label":{"en": "JavaScript to execute", "fr": "JavaScript à executer"},"picto":"images/action-command-line.png", "class": "col-lg-12 crb-autocomplete-variable"}},
"executeCommand":{"group":"command","value":"executeCommand","label":{"en":"Execute Appium Command","fr":"Executer une commande Appium"},"application_types":["GUI","IPA","APK"],
Expand Down

0 comments on commit ec87249

Please sign in to comment.