|
- <%
- Class PlainRunnerTheme
- Public Sub Render(ByRef objRunner)
- %>
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>MVC-Starter Test Runner</title>
- <style type="text/css">
- body {
- font-family: Arial, sans-serif;
- margin: 24px;
- color: #1f2933;
- background: #f7fafc;
- }
-
- h1 {
- margin-bottom: 8px;
- }
-
- .summary {
- margin-bottom: 16px;
- padding: 12px 16px;
- background: #ffffff;
- border: 1px solid #d9e2ec;
- }
-
- .page {
- margin-bottom: 16px;
- padding: 12px 16px;
- border: 1px solid #bcccdc;
- background: #ffffff;
- }
-
- .page.pass {
- border-left: 6px solid #2f855a;
- }
-
- .page.fail {
- border-left: 6px solid #c53030;
- }
-
- .module {
- margin-top: 12px;
- padding-top: 8px;
- border-top: 1px solid #e2e8f0;
- }
-
- .test {
- margin: 6px 0;
- }
-
- .pass-text {
- color: #2f855a;
- }
-
- .fail-text {
- color: #c53030;
- }
-
- code {
- background: #edf2f7;
- padding: 2px 4px;
- }
- </style>
- </head>
- <body>
- <h1>MVC-Starter Test Runner</h1>
- <p>Dev-only aspunit runner for the separate <code>tests/</code> IIS application.</p>
-
- <div id="summary" class="summary">Running tests...</div>
- <div id="results"></div>
-
- <script type="text/javascript">
- (function() {
- var pages = [<%= GetPagesAsJSArray(objRunner.Pages) %>];
- var summaryEl = document.getElementById("summary");
- var resultsEl = document.getElementById("results");
- var totals = { pages: 0, passedPages: 0, tests: 0, passedTests: 0 };
-
- function escapeHtml(value) {
- return String(value)
- .replace(/&/g, "&")
- .replace(/</g, "<")
- .replace(/>/g, ">")
- .replace(/"/g, """)
- .replace(/'/g, "'");
- }
-
- function renderModule(module) {
- var testsHtml = module.tests.map(function(test) {
- return '<div class="test ' + (test.passed ? 'pass-text' : 'fail-text') + '">' +
- '<strong>' + escapeHtml(test.name) + ':</strong> ' +
- escapeHtml(test.description || '') +
- '</div>';
- }).join("");
-
- return '<div class="module">' +
- '<div><strong>' + escapeHtml(module.name) + '</strong> (' + module.passCount + '/' + module.testCount + ')</div>' +
- testsHtml +
- '</div>';
- }
-
- function renderPage(page, data, error) {
- var wrapper = document.createElement("div");
- wrapper.className = "page " + (error || !data.passed ? "fail" : "pass");
-
- if (error) {
- wrapper.innerHTML =
- '<div><strong>' + escapeHtml(page) + '</strong></div>' +
- '<div class="fail-text">' + escapeHtml(error) + '</div>';
- resultsEl.appendChild(wrapper);
- return;
- }
-
- wrapper.innerHTML =
- '<div><strong>' + escapeHtml(page) + '</strong> - ' +
- (data.passed ? '<span class="pass-text">PASS</span>' : '<span class="fail-text">FAIL</span>') +
- ' (' + data.passCount + '/' + data.testCount + ')</div>' +
- data.modules.map(renderModule).join("");
-
- resultsEl.appendChild(wrapper);
- }
-
- function updateSummary(done) {
- summaryEl.innerHTML =
- '<strong>Pages:</strong> ' + totals.passedPages + '/' + totals.pages +
- ' <strong>Tests:</strong> ' + totals.passedTests + '/' + totals.tests +
- (done ? '' : ' <em>Running...</em>');
- }
-
- function next(index) {
- if (index >= pages.length) {
- updateSummary(true);
- return;
- }
-
- var page = pages[index];
- fetch(page + '?task=test', { credentials: 'same-origin' })
- .then(function(response) {
- if (!response.ok) {
- throw new Error('HTTP ' + response.status + ' while loading ' + page);
- }
- return response.json();
- })
- .then(function(data) {
- totals.pages += 1;
- totals.tests += data.testCount;
- totals.passedTests += data.passCount;
- if (data.passed) {
- totals.passedPages += 1;
- }
-
- renderPage(page, data, null);
- updateSummary(false);
- next(index + 1);
- })
- .catch(function(error) {
- totals.pages += 1;
- renderPage(page, null, error.message);
- updateSummary(false);
- next(index + 1);
- });
- }
-
- updateSummary(false);
- next(0);
- })();
- </script>
- </body>
- </html>
- <%
- End Sub
-
- Private Function GetPagesAsJSArray(ByRef pages)
- Dim strReturn, i
-
- strReturn = ""
- For i = 0 To (pages.Count - 1)
- strReturn = strReturn & """" & Replace(pages.Item(i), """", "\""") & """"
- If i < (pages.Count - 1) Then
- strReturn = strReturn & ", "
- End If
- Next
-
- GetPagesAsJSArray = strReturn
- End Function
- End Class
- %>
|