Skip to content

Taking screenshot from android real device and attached with allure report  #352

Closed

Description

@amrsa1

i start using allure tool recently and not sure yet if i can take screenshot during my appium test for android device

i add sample code that i was using dont know if im missing something

im using Testng and allure

Enviroment :
mac OS
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
// androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation group: 'io.appium', name: 'java-client', version: '7.0.0'
testImplementation group: 'org.testng', name: 'testng', version: '6.14.3'
testImplementation group: 'org.slf4j', name: 'slf4j-nop', version: '1.7.26'
implementation group: 'org.seleniumhq.selenium', name: 'selenium-server-standalone', version: '2.53.0'
implementation group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.141.59'
implementation group: 'org.seleniumhq.selenium', name: 'selenium-remote-driver', version: '3.141.59'
testImplementation group: 'io.qameta.allure', name: 'allure-testng', version: '2.11.0'
implementation group: 'org.aspectj', name: 'aspectjweaver', version: '1.9.3'
// implementation group: 'io.qameta.allure', name: 'allure-generator', version: '2.11.0'
implementation group: 'io.qameta.allure', name: 'allure-java-commons', version: '2.11.0'
implementation group: 'com.relevantcodes', name: 'extentreports', version: '2.41.2'
implementation group: 'ru.yandex.qatools.ashot', name: 'ashot', version: '1.5.4'

`ackage Tests.listener;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;

import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;

import Configuration.BaseSetup;
import Configuration.Utils;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
import io.qameta.allure.Attachment;

public class TestListener extends BaseSetup implements ITestListener {

@Attachment(value = "Page screenshot", type = "image/png")
private byte[] saveScreenshotPNG(AndroidDriver driver) {
    return ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
}

@Override
public void onTestStart(ITestResult iTestResult) {}

@Override
public void onTestSuccess(ITestResult iTestResult) {}

@Override
public void onTestFailure(ITestResult iTestResult) {
        if (driver != null) {saveScreenshotPNG(driver);
}

@Override
public void onTestSkipped(ITestResult iTestResult) {}

@Override
public void onTestFailedButWithinSuccessPercentage(ITestResult iTestResult) {}

@Override
public void onStart(ITestContext iTestContext) {}

@Override
public void onFinish(ITestContext iTestContext) {}

}

testClass@listeners(TestListener.class)
@Epic("Landing page users features")
@feature("Select between local and tourist user")
public class LandingPageTest extends BaseSetup {

@Test (priority = 1)
@Story("user should be able to log in as tourist")
@Description("Application will be rest and user will select tourist mode")
public  void Verify_user_can_use_tourist_mode() {
    LandingPage page = new LandingPage(driver);
    page.sign_as_Tourist();
}

@Test (priority = 2)
@Story("user should be able to log in as local")
@Description("Application will be rest and user will select local mode")
public  void Verify_user_can_use_local_mode() {
    LandingPage page = new LandingPage(driver);
    page.sign_as_Local();
}

}`

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions