From 41faf249c96579fa0fa85fa46360a57cc0a5066d Mon Sep 17 00:00:00 2001 From: Quentin Monnier Date: Fri, 2 Dec 2022 18:01:14 -0500 Subject: [PATCH] fix path compatibility for any os --- app/build.gradle | 65 ++++++++++--------- .../linphone/methods/UITestsScreenshots.kt | 4 +- 2 files changed, 36 insertions(+), 33 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index eb4b67147..49ce515c2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -91,6 +91,7 @@ android { //testInstrumentationRunnerArguments clearPackageData: 'true' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testOptions { + //execution 'ANDROIDX_TEST_ORCHESTRATOR' animationsDisabled = true } } @@ -268,13 +269,14 @@ dependencies { //debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.4' // UITests dependencies - debugImplementation 'androidx.test:runner:1.1.3' - debugImplementation 'androidx.test:core:1.1.3' - debugImplementation 'androidx.test.ext:junit-ktx:1.1.3' + debugImplementation 'androidx.test:runner:1.5.1' + debugImplementation 'androidx.test:core:1.5.0' + debugImplementation 'androidx.test.ext:junit-ktx:1.1.4' - debugImplementation 'androidx.test.espresso:espresso-core:3.4.0' - debugImplementation 'androidx.test.espresso:espresso-idling-resource:3.4.0' + debugImplementation 'androidx.test.espresso:espresso-core:3.5.0' + debugImplementation 'androidx.test.espresso:espresso-idling-resource:3.5.0' debugImplementation 'androidx.test.uiautomator:uiautomator:2.2.0' + //androidTestUtil 'androidx.test:orchestrator:1.4.2' } task generateContactsXml(type: Copy) { @@ -306,8 +308,8 @@ if (crashlyticsAvailable) { // screenshots ui tests -def reportsDirectory = "$buildDir/reports/androidTests/connected" -def screenshotDirectory = "$reportsDirectory/screenshots" +def reportsDirectory = new File(buildDir,"reports${File.separator}androidTests${File.separator}connected").absolutePath +def screenshotDirectory = new File(reportsDirectory,"screenshots").absolutePath def embedScreenshotsTask = task('embedScreenshots', group: 'reporting') { doFirst { @@ -315,7 +317,7 @@ def embedScreenshotsTask = task('embedScreenshots', group: 'reporting') { def failureScreenshotsDirectory = new File(reportsDirectory, 'failures') if (!failureScreenshotsDirectory.exists()) { - println 'Could not find screenshot failures. Skipping...' + println "Could not find screenshot failures at $failureScreenshotsDirectory Skipping..." return } @@ -328,10 +330,10 @@ def embedScreenshotsTask = task('embedScreenshots', group: 'reporting') { failedTestFile.eachFile { failedTestCase -> def failedTestCaseDescription = failedTestCase.name def pt1 = failedTestCaseDescription.indexOf(".") - def line = failedTestCaseDescription.substring(0,pt1) - def pt2 = failedTestCaseDescription.indexOf(".",pt1) - def name = failedTestCaseDescription.substring(pt1,pt2) - def pt3 = failedTestCaseDescription.indexOf(".",pt2) + def line = failedTestCaseDescription.substring(0, pt1) + def pt2 = failedTestCaseDescription.indexOf(".", pt1) + def name = failedTestCaseDescription.substring(pt1, pt2) + def pt3 = failedTestCaseDescription.indexOf(".", pt2) if (pt3 != -1) name += " (${failedTestCaseDescription.substring(pt3)})" def failedTestClassJunitReportFile = new File(reportsDirectory, "${failedTestClassName}.html") @@ -348,7 +350,7 @@ def embedScreenshotsTask = task('embedScreenshots', group: 'reporting') { if (tab0Index != -1) { def newtab0 = "Failed tests\n\n
  • \nTests\n
  • \n\n
    \n

    Failed tests

    \n
    \n
    " - failedTestJunitReportContent = failedTestJunitReportContent.replace(tab0,newtab0) + failedTestJunitReportContent = failedTestJunitReportContent.replace(tab0, newtab0) } def failedTest = "

    ${failedTestName}

    " @@ -358,27 +360,27 @@ def embedScreenshotsTask = task('embedScreenshots', group: 'reporting') { if (failedTestIndex == -1) { def newtestDiv = "
    \n\n${failedTest}\n\n
    \n
    \n
    \n
    " def endDiv = "
    \n
    " - failedTestJunitReportContent = failedTestJunitReportContent.replace(endDiv,newtestDiv+endDiv) - failedTestJunitReportContent = failedTestJunitReportContent.replace("${failedTestName}\npassed","${failedTestName}\nfailed") + failedTestJunitReportContent = failedTestJunitReportContent.replace(endDiv, newtestDiv + endDiv) + failedTestJunitReportContent = failedTestJunitReportContent.replace("${failedTestName}\npassed", "${failedTestName}\nfailed") def totalCounterStr = "id=\"tests\">\n
    " def totalCounterStart = failedTestJunitReportContent.indexOf(totalCounterStr) + totalCounterStr.length() - def totalCounterEnd = failedTestJunitReportContent.indexOf("
    ",totalCounterStart) + def totalCounterEnd = failedTestJunitReportContent.indexOf("
    ", totalCounterStart) def failureCounterStr = "id=\"failures\">\n
    " - def failureCounterStart = failedTestJunitReportContent.indexOf(failureCounterStr,totalCounterEnd) + failureCounterStr.length() - def failureCounterEnd = failedTestJunitReportContent.indexOf("
    ",failureCounterStart) + 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 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()+1 - def percent = ((1 - failure/total)*100).toInteger() + def total = failedTestJunitReportContent.substring(totalCounterStart, totalCounterEnd).toInteger() + def failure = failedTestJunitReportContent.substring(failureCounterStart, failureCounterEnd).toInteger() + 1 + 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) + failedTestJunitReportContent = failedTestJunitReportContent.substring(0, failureCounterStart) + "$failure" + failedTestJunitReportContent.substring(failureCounterEnd) + failedTestJunitReportContent = failedTestJunitReportContent.substring(0, percentInfoStart) + "$percent" + failedTestJunitReportContent.substring(percentInfoEnd) if (failedTestJunitReportContent.indexOf("\"infoBox success\" id=\"successRate\"") != -1) { failedTestJunitReportContent = failedTestJunitReportContent.replace("\"infoBox success\" id=\"successRate\"", "\"infoBox failures\" id=\"successRate\"") @@ -387,17 +389,17 @@ def embedScreenshotsTask = task('embedScreenshots', group: 'reporting') { failedTestIndex = failedTestJunitReportContent.indexOf(failedTest) } else screenshotReport = "\n\n" - def imagesrc = "failures/${failedTestClassName}/${failedTestName}/${failedTestCase.name}" + def imagesrc = new File("failures", failedTestClassName + File.separator + failedTestName + File.separator + failedTestCaseDescription).toString() screenshotReport += "display conficts detected with \"${name}\" line ${line}: (reference | capture | difference)\n" screenshotReport += "
    \n" - screenshotReport += "\n" - screenshotReport += "\n" - screenshotReport += "\n" + screenshotReport += "\n" + screenshotReport += "\n" + screenshotReport += "\n" screenshotReport += "
    " - def insertIndex = failedTestJunitReportContent.indexOf("",failedTestIndex) - def firstPart = failedTestJunitReportContent.substring(0,insertIndex) + def insertIndex = failedTestJunitReportContent.indexOf("", failedTestIndex) + def firstPart = failedTestJunitReportContent.substring(0, insertIndex) def secondPart = failedTestJunitReportContent.substring(insertIndex) failedTestJunitReportContent = firstPart + screenshotReport + secondPart @@ -405,6 +407,7 @@ def embedScreenshotsTask = task('embedScreenshots', group: 'reporting') { } } } + print "see report at: ${new File(reportsDirectory, "index.html")}" } } diff --git a/app/src/androidTest/java/org/linphone/methods/UITestsScreenshots.kt b/app/src/androidTest/java/org/linphone/methods/UITestsScreenshots.kt index 0da71a2ec..3563ab486 100644 --- a/app/src/androidTest/java/org/linphone/methods/UITestsScreenshots.kt +++ b/app/src/androidTest/java/org/linphone/methods/UITestsScreenshots.kt @@ -19,7 +19,7 @@ object UITestsScreenshots { getExternalStoragePublicDirectory(DIRECTORY_PICTURES), "linphone_uitests" ).absolutePath, - "$testClass/$testFunction/$startTime" + testClass + File.separator + testFunction + File.separator + startTime ) } @@ -45,7 +45,7 @@ object UITestsScreenshots { ) { if (!screenshotComparison) return if (name.contains(".") || variant?.contains(".") == true) { - throw Exception("[UITests] \".\" character is forbidden for screencheck methods arguments name and variant") + throw Exception("[UITests] \".\" character is forbidden for takeScreenshot methods arguments name and variant") } screenshot(line.toString() + ".$name" + if (variant != null) ".$variant" else "") }