ReportNG. Как настроить html отчеты под свои нужды?

Доброго времени суток всем !
Пытаюсь освоить для себя #reportng . прикрутил его к проекту и получил репорты. Но как дальше их кастомизировать ? Или еще вопрос, который интересует, как в отчет прикрутить линки на скрин, если тест падает ?

Инструкция к ReportNG конечно не ахти. Вот тут Eclipse + TestNG + ReportNG + Webdriver (Grid) - Selenium - Functional Testing - Форум тестировщиков есть ответ на ваш вопрос. Точнее, затравка для изучения.

Если вкратце, то кастомизировать репорты можно через изменение #css-selectors (если нужно только раскрасить), либо через редактирование шаблонов, по которым генерится HTML, если нужно менять структуру репорта.

Для генерации HTML ReportNG использует Apache Velocity, в документации к которому вы сможете ознакомиться с правилами составления этих шаблонов.

@joemast все верно описал.
А что вы хотите в репортах поменять?

Ну например, не выводить в отчете параметры, которые передаются в тест, а выводить например какую-нить свою инфу.

Встроенных средств нет, чтобы кастомизировать. Вам тогда нужно будет самостоятельно дописать код org.uncommons.reportng.HTMLReporter и поправить шаблоны Apache Velocity, которые уже упоминались.

по поводу скринов в ReportNG можна воспользоваться Листенером, который при падении теста делает скриншот и заносит ссилку на скрин в Reporter.log

public class Screenshot extends TestListenerAdapter {


@Override
public void onTestFailure(ITestResult result) {
	File file = new File("");

	Reporter.setCurrentTestResult(result);
	System.out.println(file.getAbsolutePath());
	
	Reporter.log(file.getAbsolutePath());
	//----------------------------------------
		Reporter.log("screenshot saved at " + file.getAbsolutePath()
			+ "//screenshots//" + result.getName() + ".jpg");
	Reporter.log("<a href='../" + result.getName() + ".jpg' <img src='../"	+ result.getName() + ".jpg' hight='100' width='100'/> </a>");
	Reporter.log("screenshot for "+ result +"<div style=\"height:768px; width: 1024px; overflow:scroll\"><img src=\"../"+result.getName() +".png"+"\"></div>", true);
	
	try {
		
		BaseTest.CaptureScreenshot(result.getName());
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	Reporter.setCurrentTestResult(null);
}

@mamax, Как воспользоваться классом Screenshot? Где вызывать?

Подключить, как и любой другой слушатель - аннотации / xml / pom.

1 лайк

В целом поднастроил (тут грязно выругался по поводу кол-ва потраченного времени, чтобы разобраться) отчеты. Сейчас в таком виде:

Когда кликаю на ссылку HTML report

получаю такой результат:

где-то что-то недонастроил.
Что могу упустить, куда смотреть? Если говорите гугл или настройки - спасибо, конечно, но желательно поконкретнее.

А вы Dev tools откройте и узрите с десяток ошибок в консоли. :wink:

Вообще говоря, проблема уже обсасывалась со всех сторон множество раз. Jenkins с определенной версии ввел новые content security policies, которые по-дефолту запрещают использовать потенциально небезопасный контент.

Ищите темы касательно аналогичных проблем с Allure. Хотя, дефолтных описанных настроек вам будет скорее всего недостаточно. Придется добавлять доп. опции на уровне конфигурации Jenkins.

1 лайк

@ArtOfLife, спасибо) разбираюсь

Для тех, у кого подобная проблема, нужно:

  1. Зайти в Главная - Настроить Jenkins - Консоль сценариев
  2. Ввести в поле:
    System.setProperty(“hudson.model.DirectoryBrowserSupport.CSP”, “”)
  3. Нажать кнопку “Запустить”
  4. После этого пересобрать ваш проект заново.

Ссылки по теме:

https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Build

Это будет работать до первого перезапуска jenkins :slight_smile:

@ArtOfLife, спасибо за наведение, куда копать :slight_smile:
мля :slight_smile: тогда нужен какой-то конфиг, который будет запоминать эти пропертя

If you run Jenkins on Ubuntu and you want to set this permanently, just edit the file /etc/default/jenkins. Under # arguments to pass to java add the following line:

JAVA_ARGS="-Dhudson.model.DirectoryBrowserSupport.CSP=\"sandbox; img-src *;\""

или же прописать в файле jenkins.xml:

<arguments>-Xrs -Xmx1048m -XX:MaxPermSize=512m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle "-Dhudson.model.DirectoryBrowserSupport.CSP= " -jar "%BASE%\jenkins.war" --httpPort=8080</arguments>

Сообщение перенесено в новую тему: ReportNG: проблема с заданием правильной screenshot directory

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

@Taras, с ним те же танцы с бубном.
Можно так же и Thusidydes.

Использовал. Тяжелый он какой-то. И по размеру и по времени формирования отчета. Причем тестов всего ничего было пара-тройка сотен. Возможно, что у нас с ним что-то неправильно было сделано. Так и не стал разбираться. Вынес настройку внешнюю на запуск, где Allure отчет можно было включить/выключить и по-умолчанию отключил его вовсе.

все там нормально ним)