Skip to content
Merged
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
5 changes: 5 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,11 @@
<version>1.12</version>
</dependency>

<dependency>
<groupId>com.github.rtyley</groupId>
<artifactId>android-screenshot-paparazzo</artifactId>
<version>1.6</version>
</dependency>
</dependencies>
<build>
<pluginManagement>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ protected void instrument() throws MojoExecutionException, MojoFailureException
"see http://developer.android.com/guide/developing/testing/testing_otheride.html");
}

doWithDevices(new DeviceCallback() {
DeviceCallback instrumentationTestExecutor = new DeviceCallback() {
public void doWithDevice(final IDevice device) throws MojoExecutionException, MojoFailureException {
RemoteAndroidTestRunner remoteAndroidTestRunner =
new RemoteAndroidTestRunner(parsedInstrumentationPackage, parsedInstrumentationRunner, device);
Expand Down Expand Up @@ -329,7 +329,11 @@ public void doWithDevice(final IDevice device) throws MojoExecutionException, Mo
throw new MojoExecutionException("IO problem", e);
}
}
});
};

instrumentationTestExecutor = new ScreenshotServiceWrapper(instrumentationTestExecutor, project, getLog());

doWithDevices(instrumentationTestExecutor);
}

private void parseConfiguration() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package com.jayway.maven.plugins.android;

import static com.github.rtyley.android.screenshot.paparazzo.processors.util.Dimensions.square;
import static com.jayway.maven.plugins.android.common.DeviceHelper.getDescriptiveName;
import static org.apache.commons.io.FileUtils.forceMkdir;

import com.android.ddmlib.IDevice;
import com.github.rtyley.android.screenshot.paparazzo.OnDemandScreenshotService;
import com.github.rtyley.android.screenshot.paparazzo.processors.AnimatedGifCreator;
import com.github.rtyley.android.screenshot.paparazzo.processors.ImageSaver;
import java.io.File;
import java.io.IOException;

import com.github.rtyley.android.screenshot.paparazzo.processors.ImageScaler;
import com.github.rtyley.android.screenshot.paparazzo.processors.util.Dimensions;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.project.MavenProject;

public class ScreenshotServiceWrapper implements DeviceCallback {

private final DeviceCallback delegate;
private final Log log;
private final File screenshotParentDir;

public ScreenshotServiceWrapper(DeviceCallback delegate, MavenProject project, Log log) {
this.delegate = delegate;
this.log = log;
screenshotParentDir = new File(project.getBuild().getDirectory(), "screenshots");
create(screenshotParentDir);
}


@Override
public void doWithDevice(final IDevice device) throws MojoExecutionException, MojoFailureException {
String deviceName = getDescriptiveName(device);

File deviceGifFile = new File(screenshotParentDir, deviceName + ".gif");
File deviceScreenshotDir = new File(screenshotParentDir, deviceName);
create(deviceScreenshotDir);

OnDemandScreenshotService screenshotService = new OnDemandScreenshotService(device,
new ImageSaver(deviceScreenshotDir),
new ImageScaler(new AnimatedGifCreator(deviceGifFile), square(320))
);

screenshotService.start();

delegate.doWithDevice(device);

screenshotService.finish();
}

private void create(File dir) {
try {
forceMkdir(dir);
} catch (IOException e) {
log.warn("Unable to create screenshot directory: "+screenshotParentDir.getAbsolutePath(), e);
}
}
}