[Resolved] Как прикрепить скриншоты проваленных методов в Allure.

Что дебаг показывает у следующих объектов?

Screenshot scr
BufferedImage originalImage
ByteArrayOutputStream baos

Сохраните изображение локально на диск и посмотрите, что там вообще. Может чего с ним не то?


Вот выглядит метод в дебаггере. Сорри, пока не понял как вытащить из окна дебаггера.

ну это нормально. Это ж bytes

Скриншот в тесте дергаю так

HotelResultsPage hotelResultsPage = taHomePAge.startSearch();
saveScreenshot("Result search");

Таак. А после чего такая ошибка начала проявляеться?

static byte[] getByteArrayFromImage(BufferedImage image, String format) {
	//saveFileToLog(image, testName, screenshotType);
	LOG.debug("Converting screenshot to byte array for report attachment");
	ByteArrayOutputStream baos = new ByteArrayOutputStream();
	try {
		ImageIO.write(image, format, baos);
		LOG.info("Successfully wrote screenshot to byte array output stream");
	} catch (IOException e) {
		LOG.error("Cannot write screenshot to ByteArrayOutputStream");
	}
	byte[] imageBytes = baos.toByteArray();

	if (imageBytes.length == 0) {
		String errorMessage = "Converted byte array for screenshot is empty.";
		LOG.error(errorMessage);
		throw new RuntimeException(errorMessage);
	}
	LOG.info("Converted image screenshot to byte array. Byte array size is: "
			+ imageBytes.length);
	return imageBytes;
}

Я юзаю етот метод что б дернуть байт масив с имеджа. Все скриншота прикреплени и все работает.

ну и сам метод (просто вибросить нужно ненужние Вам строки)

@Attachment(value = "Browser screenshot after test failed", type = "image/png")
private byte[] createWebBrowserScreenShot(ITestResult result) {
	String currentTestName = TestListenerUtil.getTestName(result);
	BufferedImage image = null;
	LOG.debug("Writing out web browser screenshot on {} test failure",
			currentTestName);
	WebDriver driver = WebDriverFactory.getCreatedWebDriver();
	try {
		// we add this, because sometimes webdriver takes screenshots little
		// bit earlier then needed
		Thread.sleep(1500);
	} catch (InterruptedException e1) {
		LOG.error(e1.getMessage());
	}
	File imageFile = ((TakesScreenshot) driver)
			.getScreenshotAs(OutputType.FILE);
	try {
		image = ImageIO.read(imageFile);
	} catch (IOException e) {
		LOG.error(
				"Cannot read browser screenshot created file and convert it to Buffered Image object for test: "
						+ currentTestName, e);
	}
	saveScreenshotFileToLog(image, currentTestName,
			ScreenShot.BrowserScreen.name(), WebBrowser.getSetWebBrowser());

	return TestListenerUtil.getByteArrayFromImage(image,
			SCREENSHOT_FILE_FORMAT);
}

Warning или ошибка?

ошибка

То есть вы как то еще и Listener используете?

В момент формирования отчета surfire или Allure. То есть тесты отрабатывают хорошо, а вот при формировании отчета начинаются ошибки.

ну да , ето просто утилитний статический метод, которий в листенере используеться

А как вы листенер запускаете? Как то через maven?

Я имел в виду - после каких действий стала появляться ошибка? Раньше ведь ее не было

http://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html
раздел Using Custom Listeners and Reporters

Собственно говоря после добавления метода снятия скриншота и его вызова в тесте

Так. А попробуйте снять скриншот без ашота. Стандартными методами селениума

А метод преобразования можно будет оставить прежний?

@Attachment(type = "image/png")
public byte[] makeScreenshot() {
    return ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
}

Попробую вот так.