You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I was searching around and trying to find a simple solution to embed the screenshots and html snapshots given by GEB into the spock reports but couldn't really find a solution online (the geb-spock-reports project is deprecated) so I went ahead and made this code snippet shown below to do it in the cleanup step and using reportInfo(). This works well for me because I have a "SpecBase" class that gets inherited and used in all of the specs.
You can just paste the methods and the code and add in your own paths and it should work. I'm aware this isn't the most elegant solution and can be improved or possibly added as a configuration option into this project, but for now here is a solution for those wanting the reports and failures to be embedded.
It basically finds the geb artifacts and moves them into the spock-reports to be used by the html which is used in reportInfo() for embedding.
I'm open to any suggestions to get this as a PR or to improve it. I haven't setup a test project to showcase this so unfortunately I don't have an example image to give just yet!
voidcleanup() {
def gebArtifactsPath ="build/reports/geb/path/to/specs/here/"File[] files =newFile("$gebArtifactsPath$specificationContext.currentSpec.name").listFiles()
insertReportArtifacts(files)
insertFailureArtifacts(files)
}
/** * Finds all report artifacts taken. Moves them into the spock-report directory. * Then creates the html to insert into the reportInfo() which embeds them into the report * * @param files - geb artifacts from specs*/definsertReportArtifacts(File[] files) {
List<File> screenshots = files.findAll { !it.name.contains("failure.png") && it.name.contains(".png") }
List<File> htmlSnapshots = files.findAll { !it.name.contains("failure.html") && it.name.contains(".html") }
boolean reportFound = screenshots !=null|| htmlSnapshots !=nullif (reportFound) {
def reportDir =newFile('build/spock-reports')
if (!reportDir.exists()) reportDir.mkdirs()
htmlSnapshots.each { it.renameTo("$reportDir/$it.name") }
screenshots.each { it.renameTo("$reportDir/$it.name") }
def reportArtifactHtml =""def screenshotIndex =0
htmlSnapshots.each { html->def screenshot = screenshots[screenshotIndex]
reportArtifactHtml +=""" <table style="border:1px solid black;"> <thead> <tr> <th>[Html Report] ${html.name.replace('.html', '')}</th> </tr> </thead> <tr> <td><a href="${html.name}" target="_blank">html report</a></td> </tr> <thead> <tr> <th>[Image Report] ${screenshot.name.replace('.png', '')}</th> </tr> <tr> <td><a href="${screenshot.name}" target="_blank"><img src="${screenshot.name}" width="400" height="400" align="center"></a></td> </tr> </thead> </table> """
screenshotIndex++
}
reportInfo(reportArtifactHtml)
}
}
/** * Finds failure artifacts taken. Moves them into the spock-report directory. * Then creates the html to insert into the reportInfo() which embeds them into the report * * @param files - geb artifacts from specs*/definsertFailureArtifacts(File[] files) {
File screenshot = files.find { it.name.contains("failure.png") }
File htmlSnapshot = files.find { it.name.contains("failure.html") }
boolean failureFound = screenshot !=null|| htmlSnapshot !=nullif (failureFound) {
def reportDir =newFile('build/spock-reports')
if (!reportDir.exists()) reportDir.mkdirs()
htmlSnapshot.renameTo("$reportDir/$htmlSnapshot.name")
screenshot.renameTo("$reportDir/$screenshot.name")
def failureArtifactHtml =""" <table style="border:1px solid black;"> <thead> <tr> <th>[Html Fail]</th> </tr> </thead> <tr> <td><a href="$htmlSnapshot.name" target="_blank">html failure</a></td> </tr> <thead> <tr> <th>[Image Fail]</th> </tr> <tr> <td><a href="$screenshot.name" target="_blank"><img src="$screenshot.name" width="400" height="400" align="center"></a></td> </tr> </thead> </table>"""
reportInfo(failureArtifactHtml)
}
}
The text was updated successfully, but these errors were encountered:
Geb is not supported by spock-reports directly. I suggest that if you need this functionality, you should fork the existing plugin and maintain it as unfortunately the origianl maintainer seems to have abandoned it.
As far as I know, there's not a lot to maintain, just the occasional version bump and maybe fix a few small things... spock-reports itself is fairly mature so it won't be changing often at all - so once you fix the Geb plugin it should work for a long time.
Geb is not supported by spock-reports directly. I suggest that if you need this functionality, you should fork the existing plugin and maintain it as unfortunately the origianl maintainer seems to have abandoned it. As far as I know, there's not a lot to maintain, just the occasional version bump and maybe fix a few small things... spock-reports itself is fairly mature so it won't be changing often at all - so once you fix the Geb plugin it should work for a long time.
I did try that in the past but it don't have the capacity to dive into it at the moment. It does look to do more than needed for my purposes so for now the above code snippet is a solution for me. Just figured I would share in case anyone else would find it helpful.
I was searching around and trying to find a simple solution to embed the screenshots and html snapshots given by GEB into the spock reports but couldn't really find a solution online (the geb-spock-reports project is deprecated) so I went ahead and made this code snippet shown below to do it in the
cleanup
step and usingreportInfo()
. This works well for me because I have a "SpecBase" class that gets inherited and used in all of the specs.You can just paste the methods and the code and add in your own paths and it should work. I'm aware this isn't the most elegant solution and can be improved or possibly added as a configuration option into this project, but for now here is a solution for those wanting the reports and failures to be embedded.
It basically finds the geb artifacts and moves them into the spock-reports to be used by the html which is used in reportInfo() for embedding.
I'm open to any suggestions to get this as a PR or to improve it. I haven't setup a test project to showcase this so unfortunately I don't have an example image to give just yet!
The text was updated successfully, but these errors were encountered: