package com.softwaremill.test.swing;
import org.assertj.swing.image.ImageException;
import org.assertj.swing.image.ScreenshotTaker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
class GuiScreenShotTaker {
private static final Logger LOG = LoggerFactory.getLogger(GuiScreenShotTaker.class);
private ScreenshotTaker screenshotTaker;
private FileNameBuilder builder;
GuiScreenShotTaker() {
try {
screenshotTaker = new ScreenshotTaker();
builder = new FileNameBuilder();
} catch (ImageException e) {
LOG.error("Unable to create ScreenshotTaker", e);
}
}
void take(String className) {
try {
tryTakeScreenShot(className);
} catch (Exception e) {
LOG.error("Unable to take screen shot!", e);
}
}
private void tryTakeScreenShot(String className) {
if (readyToTakeScreenShot()) {
String fileName = builder.createTmpFileName(className);
screenshotTaker.saveDesktopAsPng(fileName);
System.out.println("##teamcity[publishArtifacts '" + fileName + "']");
}
}
private boolean readyToTakeScreenShot() {
return screenshotTaker != null && builder != null;
}
}