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

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

reportng
screenshot
jenkins
java
webdriver
Теги: #<Tag:0x00007f7b601111a0> #<Tag:0x00007f7b60111060> #<Tag:0x00007f7b60110f20> #<Tag:0x00007f7b60110de0> #<Tag:0x00007f7b60110ca0>

(Kosmos) #1

Столкнулся с другой проблемой. Делаю сохранение скриншотов:

FileOutputStream fileOuputStream = new FileOutputStream("MyReport/html/Screens/" + result.getMethod().getMethodName() + ".png");
fileOuputStream.write(((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES));

при генерации отчетов полученные скриншоты не копируются в папку с репортом в джобе #jenkins :
.jenkins/jobs/myproject/htmlreports/
по идее должно. Как настроить автоматическое копирование скриншота в папку с отчетом?


ReportNG. Как настроить html отчеты под свои нужды?
(Sergey Korol) #2

Валидный output dir прекрасно вытягивается из ITestResult:

result.getTestContext().getOutputDirectory()

(Kosmos) #3

@ArtOfLife, спасибо!
попробовал. При запуске ч-з Jenkins хранит в себе адрес директории запуска.

Сам ReportNG похоже берет данные с:
<%drive%>:\Users<%username%>.jenkins\jobs<%projectname%>\htmlreports\HTML_Report

Если открыть сгенерированный результат из папки самого проекта - то все ок, т.к. пути правильно.

Получается, что плагин Jenkins не копирует скриншоты в папку jobs<%projectname%>\htmlreports\HTML_Report

Пробовал:

FileOutputStream fileOuputStream = new FileOutputStream(System.getenv("WORKSPACE") + "\\htmlreports\\HTML_Report\\Screens\\" + result.getMethod().getMethodName() + ".png");
fileOuputStream.write(((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES));

не помогает.


(Sergey Korol) #4

Что значит ‘из папки самого проекта’? Атачьте скрины + конфигурацию publisher плагина. Выводите в лог абсолютный путь сохраненного файла и report output dir. Какие пути засечены на уровне maven-surefire-plugin?


(Kosmos) #5

там, где расположен проект. Т.е. сохранил все файлы например на D:\work\myproject

HTML-плагин:
http://clip2net.com/clip/m513822/ed5fd-clip-38kb.png?nocache=1

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.18.1</version>
				<inherited>true</inherited>
				<configuration>
					<argLine>-Dfile.encoding=UTF-8</argLine>
					<suiteXmlFiles>
						<suiteXmlFile>${suiteFile}</suiteXmlFile>
					</suiteXmlFiles>
					<!--<reportsDirectory>${WORKSPACE}/TestReport</reportsDirectory>-->
					<reportsDirectory>TestReport</reportsDirectory>
					<properties>
						<testFailureIgnore>true</testFailureIgnore>
						<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
						<project.reporting.outputEncoding>utf-8</project.reporting.outputEncoding>
						<property>
							<name>usedefaultlisteners</name>
							<value>true</value>
						</property>
						<property>
							<name>listener</name>
							<value>org.uncommons.reportng.HTMLReporter</value>
						</property>
					</properties>
					<systemPropertyVariables>
						<org.uncommons.reportng.escape-output>false</org.uncommons.reportng.escape-output>
					</systemPropertyVariables>
				</configuration>
			</plugin>

System.out.println("Output path: " + result.getTestContext().getOutputDirectory()); вывел:
Output path: C:\Selenium\reportng4\TestReport\Test suite

Results :

Failed tests: 
  TestRunner.testFailedForJenkins:46 NullPointer

Tests run: 2, Failures: 1, Errors: 0, Skipped: 0

[ERROR] There are test failures.

Please refer to C:\Selenium\reportng4\TestReport for the individual test results.
[JENKINS] Recording test results
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ AutoTests ---
[WARNING] JAR will be empty - no content was marked for inclusion!
[INFO] Building jar: C:\Selenium\reportng4\target\AutoTests-1.0.0.jar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ AutoTests ---
[INFO] Installing C:\Selenium\reportng4\target\AutoTests-1.0.0.jar to C:\Users\user\.m2\repository\Selenium\AutoTests\1.0.0\AutoTests-1.0.0.jar
[INFO] Installing C:\Selenium\reportng4\pom.xml to C:\Users\user\.m2\repository\Selenium\AutoTests\1.0.0\AutoTests-1.0.0.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 28.906 s
[INFO] Finished at: 2016-08-01T14:16:04+03:00
[INFO] Final Memory: 29M/439M
[INFO] ------------------------------------------------------------------------
[JENKINS] Archiving C:\Selenium\reportng4\pom.xml to Selenium/AutoTests/1.0.0/AutoTests-1.0.0.pom
[JENKINS] Archiving C:\Selenium\reportng4\target\AutoTests-1.0.0.jar to Selenium/AutoTests/1.0.0/AutoTests-1.0.0.jar
channel stopped
[htmlpublisher] Archiving HTML reports...
[htmlpublisher] Archiving at PROJECT level C:\Users\user\.jenkins\jobs\reportng4\workspace\TestReport\html to C:\Users\user\.jenkins\jobs\reportng4\htmlreports\HTML_Report
ERROR: Specified HTML directory 'C:\Users\user\.jenkins\jobs\reportng4\workspace\TestReport\html' does not exist.
Build step 'Publish HTML reports' changed build result to FAILURE
Finished: FAILURE

(Sergey Korol) #6

Т.е. вас совершенно не смущает, что репорт физически лежит не в jenkins workspace, а по локальному пути?

И то, что его паблишер не смог найти - тоже не смущает?

Как Jenkins вообще собирает ваш проект? Откуда сорсы тянутся?

<!--<reportsDirectory>${WORKSPACE}/TestReport</reportsDirectory>-->
<reportsDirectory>TestReport</reportsDirectory>

Ни один из этих вариантов неправильный. Путь должен формироваться относительно ${project.basedir}.