diff --git a/app/build.gradle b/app/build.gradle
index cfa79c5d8..18144b64b 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -303,6 +303,56 @@ def reportsDirectory = new File(buildDir,"reports${File.separator}androidTests${
def screenshotDirectory = new File(reportsDirectory,"screenshots").absolutePath
def embedScreenshotsTask = task('embedScreenshots', group: 'reporting') {
+
+ ext.updateSummaryValues = { failedTestJunitReportContent, newFailures ->
+ def totalCounterStr = "id=\"tests\">\n
"
+ def totalCounterStart = failedTestJunitReportContent.indexOf(totalCounterStr) + totalCounterStr.length()
+ def totalCounterEnd = failedTestJunitReportContent.indexOf("
", totalCounterStart)
+
+ def failureCounterStr = "id=\"failures\">\n"
+ def failureCounterStart = failedTestJunitReportContent.indexOf(failureCounterStr, totalCounterEnd) + failureCounterStr.length()
+ def failureCounterEnd = failedTestJunitReportContent.indexOf("
", failureCounterStart)
+
+ def percentInfoStr = "id=\"successRate\">\n"
+ def percentInfoStart = failedTestJunitReportContent.indexOf(percentInfoStr, failureCounterEnd) + percentInfoStr.length()
+ def percentInfoEnd = failedTestJunitReportContent.indexOf("%
", percentInfoStart)
+
+ def total = failedTestJunitReportContent.substring(totalCounterStart, totalCounterEnd).toInteger()
+ def failure = failedTestJunitReportContent.substring(failureCounterStart, failureCounterEnd).toInteger() + newFailures
+ def percent = ((1 - failure / total) * 100).toInteger()
+
+ failedTestJunitReportContent = failedTestJunitReportContent.substring(0, failureCounterStart) + "$failure" + failedTestJunitReportContent.substring(failureCounterEnd)
+ failedTestJunitReportContent = failedTestJunitReportContent.substring(0, percentInfoStart) + "$percent" + failedTestJunitReportContent.substring(percentInfoEnd)
+
+ return [failedTestJunitReportContent,failure,percent]
+ }
+
+ ext.addFailedTestsHeader = {failedTestJunitReportContent, mode ->
+ def tab0 = ""
+ def tab0Index = failedTestJunitReportContent.indexOf(tab0)
+
+ if (tab0Index != -1) {
+ def header = ""
+ if (mode == "Classes") header = "
\n"
+ def newtab0 = "
Failed tests\n\n
\n${mode}\n\n\n
\n
Failed tests
\n${header}\n
"
+ failedTestJunitReportContent = failedTestJunitReportContent.replace(tab0, newtab0)
+ }
+ return failedTestJunitReportContent
+ }
+
+ ext.updateRecapValues = {failedTestJunitReportContent, name, failures, percent, variant ->
+ failedTestJunitReportContent = failedTestJunitReportContent.replace("\"success\"$variant>\n
\n", startIndex) +4
+ startIndex = failedTestJunitReportContent.indexOf("", startIndex) +4
+ def endIndex = failedTestJunitReportContent.indexOf(" | ", startIndex)
+ failedTestJunitReportContent = failedTestJunitReportContent.substring(0, startIndex) + "${failures}" + failedTestJunitReportContent.substring(endIndex)
+ startIndex = failedTestJunitReportContent.indexOf("
", startIndex)
+ failedTestJunitReportContent = failedTestJunitReportContent.substring(0, startIndex) + "\"failures\">${percent}%" + failedTestJunitReportContent.substring(endIndex)
+ return failedTestJunitReportContent
+ }
+
doFirst {
def failureScreenshotsDirectory = new File(reportsDirectory, 'failures')
@@ -312,12 +362,36 @@ def embedScreenshotsTask = task('embedScreenshots', group: 'reporting') {
return
}
+ def indexJunitReportFile = new File(reportsDirectory, "index.html")
+ if (!indexJunitReportFile.exists()) {
+ println "Could not find JUnit report file for test class '${indexJunitReportFile}'"
+ return
+ }
+ def indexJunitReportContent = indexJunitReportFile.text
+
failureScreenshotsDirectory.eachFile { failedTestClassDirectory ->
def failedTestClassName = failedTestClassDirectory.name
+ def failedTestPackageName = failedTestClassName.substring(0,failedTestClassName.lastIndexOf("."))
+
+ def packageJunitReportFile = new File(reportsDirectory, "${failedTestPackageName}.html")
+ if (!packageJunitReportFile.exists()) {
+ println "Could not find JUnit report file for test class '${packageJunitReportFile}'"
+ return
+ }
+ def packageJunitReportContent = packageJunitReportFile.text
failedTestClassDirectory.eachFile { failedTestFile ->
def failedTestName = failedTestFile.name
+ def failedTestClassJunitReportFile = new File(reportsDirectory, "${failedTestClassName}.html")
+ if (!failedTestClassJunitReportFile.exists()) {
+ println "Could not find JUnit report file for test class '${failedTestClassJunitReportFile}'"
+ return
+ }
+ def failedTestJunitReportContent = failedTestClassJunitReportFile.text
+
+ def failures = 0
+
failedTestFile.eachFile { failedTestCase ->
def failedTestCaseDescription = failedTestCase.name
def pt1 = failedTestCaseDescription.indexOf(".")
@@ -329,63 +403,53 @@ def embedScreenshotsTask = task('embedScreenshots', group: 'reporting') {
name += " (${failedTestCaseDescription.substring(pt2+1,pt3)})"
}
- def failedTestClassJunitReportFile = new File(reportsDirectory, "${failedTestClassName}.html")
-
- if (!failedTestClassJunitReportFile.exists()) {
- println "Could not find JUnit report file for test class '${failedTestClassJunitReportFile}'"
- return
- }
-
- def failedTestJunitReportContent = failedTestClassJunitReportFile.text
-
- def tab0 = "Tests\n\n\n"
- def tab0Index = failedTestJunitReportContent.indexOf(tab0)
-
- if (tab0Index != -1) {
- def newtab0 = " Failed tests\n\n \nTests\n\n\n \n Failed tests\n\n "
- failedTestJunitReportContent = failedTestJunitReportContent.replace(tab0, newtab0)
- }
+ failedTestJunitReportContent = addFailedTestsHeader(failedTestJunitReportContent,"Tests")
+ packageJunitReportContent = addFailedTestsHeader(packageJunitReportContent,"Classes")
+ indexJunitReportContent = addFailedTestsHeader(indexJunitReportContent,"Classes")
def failedTest = " ${failedTestName}"
def failedTestIndex = failedTestJunitReportContent.indexOf(failedTest)
def screenshotReport = ""
if (failedTestIndex == -1) {
- def newtestDiv = " \n \n${failedTest}\n \n\n \n\n "
- def endDiv = " \n "
+ //test.html
+ def newtestDiv = " \n \n${failedTest}\n \n\n \n\n \n"
+ def endDiv = " \n ${failedTestName} | \n
passed", " | ${failedTestName} | \n
failed")
- def totalCounterStr = "id=\"tests\">\n "
- def totalCounterStart = failedTestJunitReportContent.indexOf(totalCounterStr) + totalCounterStr.length()
- def totalCounterEnd = failedTestJunitReportContent.indexOf(" ", totalCounterStart)
+ def boxStr = "\"infoBox success\" id=\"successRate\""
+ if (failedTestJunitReportContent.indexOf(boxStr) != -1) {
+ failedTestJunitReportContent = failedTestJunitReportContent.replace(boxStr, "\"infoBox failures\" id=\"successRate\"")
+ }
- def failureCounterStr = "id=\"failures\">\n"
- def failureCounterStart = failedTestJunitReportContent.indexOf(failureCounterStr, totalCounterEnd) + failureCounterStr.length()
- def failureCounterEnd = failedTestJunitReportContent.indexOf(" ", failureCounterStart)
+ //package.html
+ newtestDiv = " | \n| \n${failedTestClassName.substring(failedTestClassName.lastIndexOf(".")+1)}\n | \n"
+ newtestDiv += "\n${failedTestName}\n | \n
\n"
+ endDiv = "\n\n
\n
\n
"
- def percentInfoStart = failedTestJunitReportContent.indexOf(percentInfoStr, failureCounterEnd) + percentInfoStr.length()
- def percentInfoEnd = failedTestJunitReportContent.indexOf("%
", percentInfoStart)
+ if (packageJunitReportContent.indexOf(boxStr) != -1) {
+ packageJunitReportContent = packageJunitReportContent.replace(boxStr, "\"infoBox failures\" id=\"successRate\"")
+ }
- def total = failedTestJunitReportContent.substring(totalCounterStart, totalCounterEnd).toInteger()
- def failure = failedTestJunitReportContent.substring(failureCounterStart, failureCounterEnd).toInteger() + 1
- def percent = ((1 - failure / total) * 100).toInteger()
+ //index.html
+ newtestDiv = "
\n| \n${failedTestClassName.substring(failedTestClassName.lastIndexOf(".")+1)}\n | \n"
+ newtestDiv += "\n${failedTestName}\n | \n
\n"
+ endDiv = "\n\n
\n
\n"
+ screenshotReport += "display conficts detected with \'${name}\' line ${line}:\n

\n"
def insertIndex = failedTestJunitReportContent.indexOf("", failedTestIndex)
def firstPart = failedTestJunitReportContent.substring(0, insertIndex)
@@ -394,6 +458,26 @@ def embedScreenshotsTask = task('embedScreenshots', group: 'reporting') {
failedTestClassJunitReportFile.write(failedTestJunitReportContent)
}
+
+ if (failures != 0) {
+ failedTestJunitReportContent = failedTestJunitReportContent.replace("
${failedTestName} | \n
passed", " | ${failedTestName} | \n
failed")
+ def classSummaryValues = updateSummaryValues(failedTestJunitReportContent,failures)
+ def packageSummaryValues = updateSummaryValues(packageJunitReportContent,failures)
+ def indexSummaryValues = updateSummaryValues(indexJunitReportContent,failures)
+ failedTestJunitReportContent = classSummaryValues[0]
+ packageJunitReportContent = packageSummaryValues[0]
+ indexJunitReportContent = indexSummaryValues[0]
+
+ packageJunitReportContent = updateRecapValues(packageJunitReportContent,failedTestClassName,classSummaryValues[1],classSummaryValues[2],"")
+ indexJunitReportContent = updateRecapValues(indexJunitReportContent,failedTestClassName,classSummaryValues[1],classSummaryValues[2],"/")
+ indexJunitReportContent = updateRecapValues(indexJunitReportContent,failedTestPackageName,packageSummaryValues[1],packageSummaryValues[2],"")
+
+ failedTestClassJunitReportFile.write(failedTestJunitReportContent)
+ packageJunitReportFile.write(packageJunitReportContent)
+ indexJunitReportFile.write(indexJunitReportContent)
+
+
+ }
}
}
print "see report at: ${new File(reportsDirectory, "index.html")}"
|