package com.codeborne.selenide.impl;
import org.junit.Test;
import java.io.File;
import java.util.List;
import static java.io.File.separatorChar;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
public class ScreenShotLaboratoryTest {
ScreenShotLaboratory screenshots = new ScreenShotLaboratory() {
@Override protected long timestamp() {
return 12356789L;
}
@Override
public String takeScreenShot(String fileName) {
addToHistory(new File(fileName));
return fileName;
}
};
@Test
public void composesScreenshotNameFromTestClassAndMethod() {
String expected = "MyTest/helloWorldTest.12356789".replace('/', separatorChar);
assertEquals(expected, screenshots.takeScreenShot("MyTest", "helloWorldTest"));
String expectedFileName = ("com/codeborne/selenide/integrationtests/SelenideMethodsTest/" +
"userCanListMatchingSubElements.12356789").replace('/', separatorChar);
assertEquals(expectedFileName,
screenshots.takeScreenShot("com.codeborne.selenide." +
"integrationtests.SelenideMethodsTest", "userCanListMatchingSubElements"));
}
@Test
public void composesScreenshotNameAsTimestampPlusCounter() {
assertEquals("12356789.0", screenshots.takeScreenShot());
assertEquals("12356789.1", screenshots.takeScreenShot());
assertEquals("12356789.2", screenshots.takeScreenShot());
}
@Test
public void screenshotsCanByGroupedByTests() {
screenshots.startContext("ui/MyTest/test_some_method/");
assertEquals("ui/MyTest/test_some_method/12356789.0", screenshots.takeScreenShot());
assertEquals("ui/MyTest/test_some_method/12356789.1", screenshots.takeScreenShot());
assertEquals("ui/MyTest/test_some_method/12356789.2", screenshots.takeScreenShot());
List<File> contextScreenshots = screenshots.finishContext();
assertEquals(3, contextScreenshots.size());
assertEquals(new File("ui/MyTest/test_some_method/12356789.0"), contextScreenshots.get(0));
assertEquals(new File("ui/MyTest/test_some_method/12356789.1"), contextScreenshots.get(1));
assertEquals(new File("ui/MyTest/test_some_method/12356789.2"), contextScreenshots.get(2));
}
@Test
public void collectsAllScreenshots() {
screenshots.startContext("ui/MyTest/test_some_method/");
screenshots.takeScreenShot();
screenshots.takeScreenShot();
screenshots.finishContext();
screenshots.startContext("ui/YourTest/test_another_method/");
screenshots.takeScreenShot();
screenshots.finishContext();
screenshots.takeScreenShot();
screenshots.takeScreenShot();
List<File> allScreenshots = screenshots.getScreenshots();
assertEquals(5, allScreenshots.size());
assertEquals(new File("ui/MyTest/test_some_method/12356789.0"), allScreenshots.get(0));
assertEquals(new File("ui/MyTest/test_some_method/12356789.1"), allScreenshots.get(1));
assertEquals(new File("ui/YourTest/test_another_method/12356789.2"), allScreenshots.get(2));
assertEquals("12356789.3", allScreenshots.get(3).toString());
assertEquals("12356789.4", allScreenshots.get(4).toString());
}
@Test
public void canGetLastScreenshot() {
assertNull(screenshots.getLastScreenshot());
screenshots.takeScreenShot();
assertEquals("12356789.0", screenshots.getLastScreenshot().toString());
screenshots.takeScreenShot();
assertEquals("12356789.1", screenshots.getLastScreenshot().toString());
screenshots.takeScreenShot();
assertEquals("12356789.2", screenshots.getLastScreenshot().toString());
}
}