Thursday 20 December 2018

Unlock Secret folder in Jenkins in Mac - for initialAdminPassword







How to Unlock Secret folder in Jenkins in Mac - for initial admin password
    1. Navigate to /Users/Shared/Jenkins/Home/secrets/
    2. Right-click on the Secret folder to select "Get Info" option
    3. In the bottom select the Lock Icon and enter your password
    4. In the sharing and permission section choose read-only
    5. Move back to the Secret folder and choose InitialAdminPassword. (Again no permission to view it)
    6. Repeat step 2 to 5 to view InitialAdminPassword File.
    7. Open the file to be viewed in Textedit
    8. Copy the password and paste it on the webpage seeking a password.




Thursday 22 November 2018

Simple Appium Script to run on SauceLabs Server






Simple Appium Script to run on SauceLabs Server 

Create and account on Saucelabs and just replace the USERNAME and ACCESS_KEY with your credentials.

The process is clearly defined here:

https://wiki.saucelabs.com/display/DOCS/Best+Practice%3A+Use+Environment+Variables+for+Authentication+Credentials


package rough;

import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;

import java.net.MalformedURLException;
import java.net.URL;

public class SaucelabsSpike2 {

public static final String USERNAME = "xxxxxx";
public static final String ACCESS_KEY = "bfd66a9c-aa3f-445d-ab75-2416aa03c44a";
public static final String URL = "https://" + USERNAME + ":" + ACCESS_KEY + "@ondemand.saucelabs.com:443/wd/hub";
public static AppiumDriver driver;

@BeforeClass
public void config() {
System.out.println("URL" + URL);

DesiredCapabilities capabilities = DesiredCapabilities.android();
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("deviceName", "Samsung Galaxy S4 Emulator");
capabilities.setCapability("platformVersion", "4.4");
capabilities.setCapability("app", "http://saucelabs.com/example_files/ContactManager.apk");
capabilities.setCapability("browserName", "");
capabilities.setCapability("deviceOrientation", "portrait");
capabilities.setCapability("appiumVersion", "1.5.3");

try {
driver = new AndroidDriver<>(new URL(URL), capabilities);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

@Test
public void sampleTest() {

driver.findElementById("com.example.android.contactmanager:id/showInvisible").click();

driver.findElementByAccessibilityId("Add Contact").click();
driver.findElementById("com.example.android.contactmanager:id/contactNameEditText").sendKeys("Test");
 driver.findElementByAccessibilityId("Save").click();
}

@AfterClass public void tearDown()
{
driver.quit();

}

}

Wednesday 24 October 2018

Shell script for debugging Android Application in Wifi mode


Shell script for debugging Android Application in Wifi mode



To Start first confirm your device is available in ADB mode, open the terminal and type below cmd:

adb devices




Once device is available,type


adb tcpip 5555



Now Search for the IP address of your device by

`adb shell ifconfig wlan0 | grep 'inet addr' | cut -d: -f2 | awk '{print $1}'`



Remove your device from USB mode and connect it to the same wifi network as your system 

Now run the below command to 

adb connect <ip address of the device>:5555



The same step can be performed from the shell script I have written,just download the .sh file and run it with ./


Thursday 18 October 2018

How to configure desired capabilities in Appium

What are desired Capabilities:

Desired capabilities are the set of information send to the Appium server whenever we are starting a new session.

They help us in defining the Version of the device,Version of the OS, the device which we are going to use,Application under test path and not limited too......


Below is the screenshot to create desired capabilities from Appium Desktop Interface 

















Here is the Sample example of the desired Capability for Appium
        

Usually I keep them in Config File

package utils;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.remote.DesiredCapabilities;

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import screens.android.HomePageAndroid;
import screens.android.LoginPageAndroid;
import screens.android.UserSettingAndroid;

public class CommonUtils {
DesiredCapabilities caps = new DesiredCapabilities();
public AppiumDriver<MobileElement> driver;
caps.setCapability("platformName", platformName);
        
caps.setCapability("deviceName", deviceName);
       
caps.setCapability("app", uri);
        
caps.setCapability("noReset", true);
        
URL remoteUrl = new URL("http://localhost:4723/wd/hub");
        
driver = new AndroidDriver<MobileElement>(new URL("http://127.0.0.1:4723/wd/hub"),   caps);
        
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

}
}

Wednesday 19 September 2018

Different terms/vocabularies/Tools used in automation Testing

Different terms/vocabularies/Tools used in automation Testing

Test runner — a tool that picks up files that contain unit tests, executes them and writes the test results to the console or log files. Mocha and Jasmine are two popular test runners used within the JavaScript community and TestNg/Junit in Java.
Assertion library — verifies the results of a test. Chai, Should, and Expect are examples of JavaScript assertion libraries and TestNg/Junit in Java.
Mocks — used in unit testing a component. A component under test has many dependencies. These dependencies are usually replaced by stubs or mocks. Stubs simulate a dependent object. Mocks offer an additional feature over stubs. With mocks, tests can be written to verify if the component under test has called the mocks as expected.
Mocking library — facilitates the usage of mocks in unit testing. Sinon and TestDouble are commonly used JavaScript mocking libraries and mockito in Java.

Other  Vocabs :
node.js - JS Environment
    Yarn - Package Manager
    npm - Package manager

Brew - Package manager

    OS level

Build Manager/task runner/Project manager

Java
 Gradle
 Maven
 Ant
 Ivy

Wednesday 25 July 2018

Setting Java_Home Environment on MAC OS X


Setting Java_Home Environment variable for Appium on MAC OS X


  • Open the Bash Profile to Edit it

  • In the bash_profile add the following line: "export JAVA_HOME=$(/usr/libexec/java_home)"
  • Save the changes
  • Open CMD and Type : $ source ~/.bash_profile
  • Verify if JAVA Home environment is set up on Mac by typing : $ echo $JAVA_HOME
  • If it's properly installed you will get something like below image:






.bash_profile should be like this:

export JAVA_HOME=$(/usr/libexec/java_home)
export ANDROID_SDK_HOME=~/Library/Android/sdk 
export ANDROID_HOME=$HOME/Library/Android/sdk 
export PATH=${PATH}:$ANDROID_HOME:$ANDROID_SDK_HOME/emulator:$ANDROID_SDK_HOME/tools:$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools/bin






Sunday 1 July 2018

Difficult finding elements in React Native App?? Here is the Solution

React Native Developer Tools

Finding Elements in RN application,the best way I found while working on React Native automation tool "Detox" by Wix.

Working on the automation can sometime be frustrating,it gets worse when you are working on a POC on new software Automation tool.The same I faced while working on Detox RN mobile automation tool.

Getting to the point "react-devtools" can help us to find testID,label,text etc including props and state with ease to help us automate RN apps.It can be installed as a global package or for the particular project itself.Below are the steps to install it globally.

Steps to Install the react-devtools standalone app:
  • yarn global add react-devtools
  • Once installed run the following command in terminal "react-devtools".
  • From the in app developer menu click on "Toggle Inspector" and click on inspect to inspect element.
It will connect automatically for RN 0.43 or higher.

Tip:The shortcut to open toggle inspector on mac machine is "Command + D"




As soon as we inspect the components, the hierarchy is visible in the devtools and we can find the testID from it.

































Once we start inspecting the element the react native dev tools highlighted components 

Tuesday 10 April 2018

5 must step/approach to successful mobile testing strategy :

Subscribe to my youtube channel for more videos here:

5 must step/approach to successful mobile testing strategy :


Read about automation coding standards here: Avoid Mobile Automation Coding Pitfalls : Automation coding standards


Sunday 7 January 2018

Push Notification for Mobile Application

What is push notification?

Push Notification are messages that are sent by different app publisher's on different OS Android,iOS or any other OS.They can be sent even when the end user is not in the app.
Push Notification are of two type:

  • Hard Push Notification : It has only one option to select.Force upgrade notification is the best example of it.On tapping on the aforesaid notification user land's to respective playstore to update the Application.
  • Soft Push Notification : These are the messages having two options either perform that action or exit.

Note: The above are the Jargons used in my working environment and wording's may differ company to company.




How push notification works?

Operating system push notification service (OSPNS) acts as node to the App publisher to send the push notification to the end user.App publisher need to register themself on respective OS "OSPNS"
OSPNS for iOS is known as :Apple Push Notification's
OSPNS for Android is known as : Google Cloud to Device Messaging (C2DM)

IOS has notification center to control the them
In Android it can not be controlled at user level.

When push notification is useful?

The purpose of sending push notification is to increase :

  • User Engagement : Like "Saif,we are missing you.You are having 10 new messages"
  • Increasing ROI : Like "Book your flight now and get 10% off"
  • Giving valuable information : Like "Your Etihad Flight is delayed by 2 Hours"
  • Live Broadcast : Like "Cricket Score" and "Ronaldo hit a Goal just now"



Use Case of Push Notification?

When the End User hit's the push notification he should get desired information.

Test Cases for Push Notification?

  1. Push Notification should come when the app is in background.
  2. Push Notification should be received in the Language Sent.
  3. We should not get multiple push notification.
  4. Push notification should be sent to the target User only.
  5. It should be received in different time zones also.
  6. It should be visible on the notification Bar.
  7. Turn of the internet,send the push notification and turn on internet.Push notification should be received.

Interview Experience with AMAZON for the role of Quality Assurance Tester

This role was for Digital/ IoT/Mobile Application based testing :)  Amazon is a dream company and everyone wants to work for that company a...

Popular Posts