diff --git a/tests/app/testRunner.ts b/tests/app/testRunner.ts index 93b934209..a51778e1b 100644 --- a/tests/app/testRunner.ts +++ b/tests/app/testRunner.ts @@ -262,34 +262,22 @@ var running = false; var testsQueue = new Array(); function printRunTestStats() { - let testFileContent = new Array(); const testCases = new Array(); var failedTestCount = 0; - var failedTestInfo = []; + const failedTestInfo = []; const slowTests = new Array(); let allTests = testsQueue.filter(t => t.isTest); - testFileContent.push(""); - allTests.forEach((testCase, i, arr) => { let testName = testCase.testName; - let duration = (testCase.duration / 1000).toFixed(2); - if (!testCase.isPassed) { failedTestCount++; - - let errorMessage = testCase.errorMessage; - failedTestInfo.push(testCase.testName + " FAILED: " + testCase.errorMessage); - - testCases.push(``); - - } else { - testCases.push(``); } + let duration = (testCase.duration / 1000).toFixed(2); if (testCase.duration > 500) { slowTests.push(`${testCase.testName}: ${duration}s`); } @@ -297,13 +285,11 @@ function printRunTestStats() { const totalTime = (TKUnit.time() - startTime).toFixed(2); - testFileContent.push(``); - - testFileContent = testFileContent.concat(testCases); - - let finalMessage = `\n=== ALL TESTS COMPLETE ===\n` + + let finalMessage = `\n`+ + `=== ALL TESTS COMPLETE ===\n` + `${(allTests.length - failedTestCount)} OK, ${failedTestCount} failed\n` + `DURATION: ${totalTime} ms\n`; + TKUnit.write(finalMessage, messageType.info); failedTestInfo.forEach((message, i, arr) => { @@ -311,40 +297,56 @@ function printRunTestStats() { finalMessage += "\n" + message; }); + // console.log("test-result.xml:\n" + generateTestFile(allTests)); + // DO NOT CHANGE THE FIRST ROW! Used as an indicator for test run pass detection. TKUnit.write(`Tests EOF!`, messageType.info); - testFileContent.push(""); - testFileContent.push(""); + showReportPage(finalMessage); +} - let testFilePath: string; - let testResultsFileName = "test-results.xml"; - if (platform.isIOS) { - testFilePath = fs.path.join(fs.knownFolders.documents().path, testResultsFileName); - } else { - testFilePath = fs.path.join(android.os.Environment.getExternalStorageDirectory().getAbsolutePath(), "Documents", testResultsFileName); - } +function generateTestFile(allTests: TestInfo[]) { + let failedTestCount = 0; - let testFile = fs.File.fromPath(testFilePath); - testFile.writeTextSync(testFileContent.join("")); + const testCases = new Array(); + allTests.forEach((testCase, i, arr) => { + let testName = testCase.testName; + let duration = (testCase.duration / 1000).toFixed(2); - finalMessage += "\n" + "Test results: " + testFilePath; - // finalMessage += "\n" + "----------------- "; - // finalMessage += "\n" + "Slow tests: "; - // slowTests.forEach((message, i, arr) => { - // TKUnit.write(message, messageType.error); - // finalMessage += "\n" + message; - // }); + testCases.push(``) + if (!testCase.isPassed) { + failedTestCount++; + testCases.push(``) + } + testCases.push(``); + }); + const totalTime = (TKUnit.time() - startTime).toFixed(2); + + const result = [ + "", + ``, + ...testCases, + "", + "" + ].join(""); + + return result; +} + +function showReportPage(finalMessage: string) { let stack = new StackLayout(); + let btn = new Button(); btn.text = "Rerun tests"; btn.on("tap", () => runAll(testsSelector)); stack.addChild(btn); + let messageContainer = new TextView(); messageContainer.editable = messageContainer.autocorrect = false; messageContainer.text = finalMessage; stack.addChild(messageContainer); + const page = topmost().currentPage; page.id = unsetValue; page.className = unsetValue; @@ -362,6 +364,7 @@ function printRunTestStats() { } } + function startLog(): void { let testsName: string = this.name; TKUnit.write("START " + testsName + " TESTS.", messageType.info);