Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ services:
volumes:
- .:/opt/workspace/automation
working_dir: /opt/workspace/automation
command: mvn clean test -P StackLocal,Android -Dcucumber.tags=@Demo -Dcrowdar.driverHub=http://hub:4444/wd/hub
command: mvn clean test -P StackLocal,Android -Dcucumber.tags=@Fichap -Dcrowdar.driverHub=http://hub:4444/wd/hub -Dcrowdar.appLocation=/root/tmp/sample_apk/Fichap_4.apk


# Selenium hub
Expand Down
8 changes: 4 additions & 4 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<crowdar.cucumber.filter>@Demo</crowdar.cucumber.filter>
<crowdar.cucumber.filter>@Fichap</crowdar.cucumber.filter>
<cucumber.runner>testngParallel.xml</cucumber.runner>
<crowdar.driverHub></crowdar.driverHub>
<crowdar.cucumber.option>src/test/resources/features --glue com/crowdar --glue com/crowdar/bdd/cukes --tags ${crowdar.cucumber.filter} --tags 'not @Ignore' --plugin com.crowdar.examples.report.Reporter: --plugin pretty</crowdar.cucumber.option>
Expand All @@ -33,9 +33,9 @@
<properties>
<crowdar.driverHub>http://127.0.0.1:4723/wd/hub</crowdar.driverHub>
<cucumber.runner>testng.xml</cucumber.runner>
<crowdar.avd>Pixel3</crowdar.avd>
<crowdar.appLocation>C:/workspace/crowdar/lippia/Lippia-mobile-sample-project/sample_apk/lippia.apk</crowdar.appLocation>
<crowdar.deviceName>Pixel3</crowdar.deviceName>
<crowdar.avd>Pixel</crowdar.avd>
<crowdar.appLocation>D:/MisDocumentos/Documentos/Lippia/mobile-local/lippia-mobile-sample-project/sample_apk/Fichap_4.apk</crowdar.appLocation>
<crowdar.deviceName>Redmi</crowdar.deviceName>
</properties>
</profile>
<profile>
Expand Down
Binary file added sample_apk/Fichap_4.apk
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.crowdar.examples.constants;

public class FichapHomeConstans {
public static final String ACCPET_NOTICE_BUTTON_LOCATOR = "FichapHomeView.acceptNoticeButton";
public static final String ALLOW_GPS_USE_LOCATOR = "FichapHomeView.allowGpsUse";
public static final String DENY_USE_GPS_LOCATOR = "FichapHomeView.denyUseGps";
public static final String START_DAY_BUTTON_LOCATOR = "FichapHomeView.startDayButton";
public static final String FINISH_DAY_BUTTON_LOCATOR= "FichapHomeView.finishDayButton";
public static final String TAKE_AS_SELFIE_BUTTON_LOCATOR = "FichapHomeView.takeASelfieButton";
public static final String REPORT_ERROR_LOCATOR = "FichapHomeView.reportError";
public static final String TRY_AGAIN_BUTTON_LOCATOR = "FichapHomeView.tryAgainButton";
public static final String START_DAY_BUTTON2_LOCATOR = "FichapHomeView.startDayButton2";
public static final String END_DAY_BUTTON_LOCATOR = "FichapHomeView.endDayButton";
public static final String ACCEPT_FINISH_DAY_BUTTON_LOCATOR = "FichapHomeView.acceptFinishDayButton";
public static final String CANCEL_FINISH_DAY_BUTTON_LOCATOR = "FichapHomeView.cancelFinishDayButton";
public static final String TIMEKEEPER_LOCATOR= "FichapHomeView.timekeeper";
public static final String CAMERA_BUTTON_LOCATOR = "FichapHomeView.cameraButton";
public static final String END_BUTTON_LOCATOR = "FichapHomeView.endButton";


public static final String VIEW_NOT_DISPLAYED_MESSAGE = "Home page is not displayed.";
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.crowdar.examples.constants;
public class FichapLoginConstans {
public static final String ACCPET_PERMISSIONS_BUTTON = "FichapLoginView.acceptPermissionsButton";
public static final String DENY_PERMISSIONS_BUTTON_LOCATOR = "FichapLoginView.denyPermissions";
public static final String EMAIL_INPUT_LOCATOR = "FichapLoginView.emailInput";
public static final String PASSWORD_INPUT_LOCATOR = "FichapLoginView.passwordInput";
public static final String SHOW_PASSWORD_BUTTON_LOCATOR = "FichapLoginView.showPasswordButton";
public static final String LOG_IN_BUTTON_LOCATOR = "FichapLoginView.logInButton";
public static final String CAMERA_BUTTON_LOCATOR = "FichapLoginView.cameraButton";
public static final String ACCEPT_TAKE_SELFIE_TO_START_BUTTON_LOCATOR = "FichapLoginView.takeSelfieToStartButton";

public static final String VIEW_NOT_DISPLAYED_MESSAGE = "Login page is not displayed.";
}
21 changes: 21 additions & 0 deletions src/main/java/com/crowdar/examples/constants/MenuConstans.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.crowdar.examples.constants;

public class MenuConstans {
public static final String MENU_BUTTON_LOCATOR = "FichapMenuView.menuButton";
public static final String TITLE_PAGE_LOCATOR = "FichapMenuView.titlePage";
public static final String NOTOFOCATION_BELL_BUTTON_LOCATOR = "FichapMenuView.notificationBellButton";

public static final String FICHAR_BUTTON_LOCATOR = "FichapMenuView.ficharButton";
public static final String RECORD_BUTTON_LOCATOR = "FichapMenuView.recordButton";
public static final String REQUEST_BUTTON_LOCATOR = "FichapMenuView.requestsButton";
public static final String PROFILE_BUTTON_LOCATOR = "FichapMenuView.profileButton";
public static final String CHANGE_PASSWORD_BUTTON_LOCATOR = "FichapMenuView.changePasswordButton";
public static final String SING_OUT_BUTTON_LOCATOR = "FichapMenuView.singOutButton";
public static final String ACCEPT_SING_OUT_BUTTON_LOCATOR = "FichapMenuView.acceptSingOutButton";

public static final String NEW_PASSWORD_INPUT_LOCATOR = "FichapMenuView.newPasswordInput";
public static final String REPEAT_NEW_PASSWORD_INPUT_LOCATOR = "FichapMenuView.repeatNewPasswordInput";
public static final String SAVE_BUTTON_LOCATOR = "FichapMenuView.saveButton";
public static final String SUCCESSFUL_CHANGE_LOCATOR = "FichapMenuView.successfulPasswordChangeText";

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.crowdar.examples.constants;

public class ProfileViewConstans {
public static final String NAME_INPUT_LOCATOR = "FichapProfileView.nameInput";
public static final String LAST_NAME_INPUT_LOCATOR = "FichapProfileView.lastNameInput";
public static final String SAVE_BUTTON_LOCATOR = "FichapProfileView.saveButton";
public static final String ACCEPT_CHANGES_LOCATOR = "FichapProfileView.acceptChanges";
}
27 changes: 25 additions & 2 deletions src/main/java/com/crowdar/examples/services/HomeService.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package com.crowdar.examples.services;

import com.crowdar.core.actions.MobileActionManager;
import com.crowdar.examples.constants.FichapHomeConstans;
import com.crowdar.examples.constants.FichapLoginConstans;
import com.crowdar.examples.constants.HomeConstants;
import org.openqa.selenium.WebElement;
import org.testng.Assert;

/**
Expand All @@ -12,7 +15,27 @@
public class HomeService {

public static void isViewLoaded() {
MobileActionManager.waitVisibility(HomeConstants.SIGN_OUT_BUTTON_LOCATOR);
Assert.assertTrue(MobileActionManager.isVisible(HomeConstants.CHANGE_LANGUAGE_BUTTON_LOCATOR), HomeConstants.VIEW_NOT_DISPLAYED_MESSAGE);
MobileActionManager.waitVisibility(FichapHomeConstans.START_DAY_BUTTON_LOCATOR);
Assert.assertTrue(MobileActionManager.isVisible(FichapHomeConstans.START_DAY_BUTTON_LOCATOR),HomeConstants.VIEW_NOT_DISPLAYED_MESSAGE);
}

public static void startDay(){
MobileActionManager.click(FichapHomeConstans.START_DAY_BUTTON_LOCATOR);
MobileActionManager.click(FichapHomeConstans.CAMERA_BUTTON_LOCATOR);
MobileActionManager.click(FichapHomeConstans.REPORT_ERROR_LOCATOR);
MobileActionManager.click(FichapHomeConstans.START_DAY_BUTTON2_LOCATOR);

}

public static void endDay(){
MobileActionManager.click(FichapHomeConstans.END_DAY_BUTTON_LOCATOR);
MobileActionManager.click(FichapHomeConstans.ACCEPT_FINISH_DAY_BUTTON_LOCATOR);
MobileActionManager.waitVisibility(FichapHomeConstans.END_BUTTON_LOCATOR);
MobileActionManager.click(FichapHomeConstans.END_BUTTON_LOCATOR);

}

public static void isTimekeeperLoaded() {
Assert.assertTrue(MobileActionManager.isVisible(FichapHomeConstans.TIMEKEEPER_LOCATOR),"Timekeeper is not displayed");
}
}
29 changes: 14 additions & 15 deletions src/main/java/com/crowdar/examples/services/LoginService.java
Original file line number Diff line number Diff line change
@@ -1,25 +1,24 @@
package com.crowdar.examples.services;

import com.crowdar.core.actions.MobileActionManager;
import com.crowdar.driver.DriverManager;
import com.crowdar.examples.constants.LoginConstants;
import com.crowdar.examples.constants.FichapHomeConstans;
import com.crowdar.examples.constants.FichapLoginConstans;
import com.crowdar.examples.constants.HomeConstants;
import io.appium.java_client.MobileBy;
import org.testng.Assert;

/**
* This class contains the business logic.
* We can have querys, requests or steps to do certain things (how to log into the app).
* If we need to only complete a field or click a button, we can put it in the steps.
*/
public class LoginService {

public static void doLogin(String email, String password){
MobileActionManager.setInput(LoginConstants.EMAIL_INPUT_LOCATOR, email);
MobileActionManager.setInput(LoginConstants.PASSWORD_INPUT_LOCATOR, password);
MobileActionManager.click(LoginConstants.SIGN_IN_BUTTON_LOCATOR + DriverManager.getName());
public static void isViewLoaded(){
MobileActionManager.waitVisibility(FichapLoginConstans.LOG_IN_BUTTON_LOCATOR);
Assert.assertTrue(MobileActionManager.isVisible(FichapLoginConstans.EMAIL_INPUT_LOCATOR),FichapLoginConstans.VIEW_NOT_DISPLAYED_MESSAGE);
}

public static void isViewLoaded(){
MobileActionManager.waitVisibility(LoginConstants.SIGN_UP_BUTTON_LOCATOR);
Assert.assertTrue(MobileActionManager.isVisible(LoginConstants.EMAIL_INPUT_LOCATOR), LoginConstants.VIEW_NOT_DISPLAYED_MESSAGE);
public static void logIn(String email,String pass){
MobileActionManager.setInput(FichapLoginConstans.EMAIL_INPUT_LOCATOR,email);
MobileActionManager.setInput(FichapLoginConstans.PASSWORD_INPUT_LOCATOR,pass);
MobileActionManager.click(FichapLoginConstans.LOG_IN_BUTTON_LOCATOR);
MobileActionManager.click(FichapLoginConstans.ACCEPT_TAKE_SELFIE_TO_START_BUTTON_LOCATOR);
MobileActionManager.waitVisibility(FichapLoginConstans.CAMERA_BUTTON_LOCATOR);
MobileActionManager.click(FichapLoginConstans.CAMERA_BUTTON_LOCATOR);
}
}
22 changes: 22 additions & 0 deletions src/main/java/com/crowdar/examples/services/MenuService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.crowdar.examples.services;

import com.crowdar.core.actions.MobileActionManager;
import com.crowdar.examples.constants.MenuConstans;
import com.crowdar.examples.constants.ProfileViewConstans;


public class MenuService {
public static void changeName(String newName){
MobileActionManager.click(MenuConstans.MENU_BUTTON_LOCATOR);
MobileActionManager.click(MenuConstans.PROFILE_BUTTON_LOCATOR);
MobileActionManager.setInput(ProfileViewConstans.NAME_INPUT_LOCATOR,newName);
MobileActionManager.waitClickable(ProfileViewConstans.SAVE_BUTTON_LOCATOR);
MobileActionManager.click(ProfileViewConstans.ACCEPT_CHANGES_LOCATOR);
}

public static void logOut(){
MobileActionManager.click(MenuConstans.MENU_BUTTON_LOCATOR);
MobileActionManager.click(MenuConstans.SING_OUT_BUTTON_LOCATOR);
MobileActionManager.click(MenuConstans.ACCEPT_SING_OUT_BUTTON_LOCATOR);
}
}
60 changes: 60 additions & 0 deletions src/main/java/com/crowdar/examples/steps/FichapSteps.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package com.crowdar.examples.steps;

import com.crowdar.core.PageSteps;

import com.crowdar.examples.services.LoginService;
import com.crowdar.examples.services.HomeService;
import com.crowdar.examples.services.MenuService;
import io.cucumber.java.en.And;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;

public class FichapSteps extends PageSteps {

@Given("The app is loaded correctly.")
@And("Login page is displayed.")
public void theAppIsLoadedCorrectly() {
LoginService.isViewLoaded();
}

@Then("The user logs in the application with: (.*), (.*)")
public void theUserLogsInTheApplicationWithEmailPassword(String email,String pass) {
LoginService.logIn(email,pass);
}

@Then("Home page is displayed.")
public void homePageIsDisplayed() {
HomeService.isViewLoaded();
}

@When("The user starts the day")
public void theUserStartsTheDay() {
HomeService.startDay();
}

@Then("Timekeeper is displayed")
public void timekeeperIsDisplayed() {
HomeService.isTimekeeperLoaded();
}

@When("The user change your name: (.*)")
public void theUserChangesThePasswordNew_password(String NewPass) {
MenuService.changeName(NewPass);
}


@When("The user ends the day")
public void theUserEndsTheDay() {
HomeService.endDay();
}


@And("The user log out of the app.")
public void theUserLogOutOfTheApp() {
MenuService.logOut();
}
}



2 changes: 1 addition & 1 deletion src/main/java/com/crowdar/examples/steps/HomeSteps.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public void doChangeLanguage() {
MobileActionManager.click(HomeConstants.CHANGE_LANGUAGE_BUTTON_LOCATOR);
}

@When("The user log out of the app")
@When("The usesdfr log out of the app")
public void doSignOut() {
MobileActionManager.click(HomeConstants.SIGN_OUT_BUTTON_LOCATOR);
}
Expand Down
33 changes: 0 additions & 33 deletions src/main/java/com/crowdar/examples/steps/LoginSteps.java

This file was deleted.

4 changes: 3 additions & 1 deletion src/main/resources/capabilities/androidCapabilities.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
"app": "{{app}}",
"platformName": "Android",
"avd": "{{avd}}",
"autoAcceptAlerts": "true",
"resetKeyboard": "true",
"unicodeKeyboard": "true"
"unicodeKeyboard": "true",
"autoGrantPermissions": "true"
}
22 changes: 22 additions & 0 deletions src/main/resources/locators/FichapHomeView.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@

acceptNoticeButton = xpath:/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.ScrollView/android.widget.LinearLayout/android.widget.Button
allowGpsUse = xpath:/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.ScrollView/android.widget.LinearLayout/android.widget.Button[2]
denyUseGps = xpath:/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.ScrollView/android.widget.LinearLayout/android.widget.Button[1]

startDayButton = xpath:/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[2]/android.view.ViewGroup/android.view.ViewGroup[2]/android.view.ViewGroup/android.view.ViewGroup
finishDayButton = xpath:/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[2]/android.view.ViewGroup/android.view.ViewGroup[2]/android.view.ViewGroup[2]/android.view.ViewGroup
timekeeper=xpath:/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[2]/android.view.ViewGroup/android.view.ViewGroup[2]/android.view.ViewGroup[1]

takeASelfieButton = xpath:/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.widget.ImageView
reportError = xpath:/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.ScrollView/android.widget.LinearLayout/android.widget.Button[2]
tryAgainButton = xpath:/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.ScrollView/android.widget.LinearLayout/android.widget.Button[1]
startDayButton2 = xpath:/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.ScrollView/android.widget.LinearLayout/android.widget.Button

endDayButton = xpath:/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[2]/android.view.ViewGroup/android.view.ViewGroup[2]/android.view.ViewGroup[2]/android.view.ViewGroup/android.widget.TextView
endButton = xpath:/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[2]/android.view.ViewGroup/android.view.ViewGroup[2]/android.view.ViewGroup[3]/android.view.ViewGroup/android.widget.TextView


acceptFinishDayButton = xpath:/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.ScrollView/android.widget.LinearLayout/android.widget.Button[2]
cancelFinishDayButton = xpath:/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.ScrollView/android.widget.LinearLayout/android.widget.Button[1]
cameraButton = xpath:/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.widget.ImageView

Loading