Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

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

reportng
java
webdriver
Теги: #<Tag:0x00007f7b65561688> #<Tag:0x00007f7b655614d0> #<Tag:0x00007f7b65561318>

(Victor Malyavko) #1

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


(Александр Таранков) #2

Инструкция к ReportNG конечно не ахти. Вот тут http://software-testing.ru/forum/index.php?/topic/26093/ есть ответ на ваш вопрос. Точнее, затравка для изучения.

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

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


(Mykhailo Poliarush) #3

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


(Victor Malyavko) #4

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


(Mykhailo Poliarush) #5

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


(mamax) #6

по поводу скринов в 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);
}

(Kosmos) #7

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


(Sergey Korol) #8

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


(Kosmos) #9

В целом поднастроил (тут грязно выругался по поводу кол-ва потраченного времени, чтобы разобраться) отчеты. Сейчас в таком виде:
http://clip2net.com/clip/m513822/69689-clip-36kb.png?nocache=1

Когда кликаю на ссылку HTML report
http://clip2net.com/clip/m513822/08d5f-clip-52kb.png?nocache=1

получаю такой результат:
http://clip2net.com/clip/m513822/73ba8-clip-19kb.png?nocache=1

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


(Sergey Korol) #10

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

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

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


(Kosmos) #11

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


(Kosmos) #12

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

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

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

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


(Sergey Korol) #13

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


(Kosmos) #14

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


(Kosmos) #15

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>

(Sergey Korol) #16

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


(Taras) #17

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


(Kosmos) #18

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


(Михаил Братухин) #19

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


(Taras) #20

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