Modified: trunk/Websites/perf.webkit.org/browser-tests/test-group-result-page-tests.js (240181 => 240182)
--- trunk/Websites/perf.webkit.org/browser-tests/test-group-result-page-tests.js 2019-01-18 23:15:56 UTC (rev 240181)
+++ trunk/Websites/perf.webkit.org/browser-tests/test-group-result-page-tests.js 2019-01-18 23:26:52 UTC (rev 240182)
@@ -6,7 +6,7 @@
'models/data-model.js', 'models/metric.js', '../shared/statistics.js',], 'TestGroupResultPage', 'Metric');
}
- async function prepareTestGroupResultPage(context, resultA, resultB)
+ async function prepareTestGroupResultPage(context, buildRequestsA, buildRequestsB)
{
const [TestGroupResultPage, Metric] = await importMarkupComponent(context);
@@ -20,15 +20,15 @@
const mockTestGroup = {
requestedCommitSets: () => ['A', 'B'],
- test: () => ({test: () => 'speeodmeter-2', name: () => 'speedometer-2'}),
+ test: () => ({test: () => 'speedometer-2', name: () => 'speedometer-2'}),
labelForCommitSet: (commitSet) => commitSet,
- requestsForCommitSet: (commitSet) => ({'A': resultA, 'B': resultB}[commitSet]),
+ requestsForCommitSet: (commitSet) => ({'A': buildRequestsA, 'B': buildRequestsB}[commitSet]),
compareTestResults: (...args) => ({isStatisticallySignificant: true, changeType: 'worse'}),
name: () => 'mock-test-group',
};
const mockAnalysisResults = {
- viewForMetric: (metric) => ({resultForRequest: (buildRequest) => (buildRequest === null ? null : {value: buildRequest})})
+ viewForMetric: (metric) => ({resultForRequest: (buildRequest) => (buildRequest.value === null ? null : {value: buildRequest.value})})
};
const page = new TestGroupResultPage('test');
@@ -40,9 +40,19 @@
return page;
}
+ function prepareBuildRequests(buildRequestValues, isTestBooleanList, hasCompletedBooleanList)
+ {
+ return Array.from(buildRequestValues.entries()).map((entry) => {
+ const [index, value] = entry;
+ const isTest = isTestBooleanList ? isTestBooleanList[index] : true;
+ const hasCompleted = hasCompletedBooleanList ? hasCompletedBooleanList[index] : true;
+ return {value, isTest: () => isTest, isBuild: () => !isTest, hasCompleted: () => hasCompleted};
+ });
+ }
+
it('should render failed test group with empty bar', async () => {
const context = new BrowsingContext();
- const page = await prepareTestGroupResultPage(context, [null, 3, 5], [2, 4, 6]);
+ const page = await prepareTestGroupResultPage(context, prepareBuildRequests([null, 3, 5]), prepareBuildRequests([2, 4, 6]));
await page.enqueueToRender();
const document = context.document;
document.open();
@@ -56,7 +66,7 @@
const context = new BrowsingContext();
const resultA = [1, 3, 5];
const resultB = [2, 4, 6];
- const page = await prepareTestGroupResultPage(context, resultA, resultB);
+ const page = await prepareTestGroupResultPage(context, prepareBuildRequests(resultA), prepareBuildRequests(resultB));
page.enqueueToRender();
const document = context.document;
document.open();
@@ -77,4 +87,27 @@
previousNodeWidth = currentNodeWidth;
}
});
+
+ it('should not render rows for build requests those are not test', async () => {
+ const context = new BrowsingContext();
+ const resultA = [null, 1, 3, 5];
+ const isTestBooleanListA = [false, true, true, true];
+ const isBuildBooleanListA = [true, true, true, true];
+ const resultB = [null, 2, 4, 6];
+ const isTestBooleanListB = [false, true, true, true];
+ const isBuildBooleanListB = [false, true, true, true];
+ const page = await prepareTestGroupResultPage(context,
+ prepareBuildRequests(resultA, isTestBooleanListA, isBuildBooleanListA),
+ prepareBuildRequests(resultB, isTestBooleanListB, isBuildBooleanListB));
+ page.enqueueToRender();
+ const document = context.document;
+ document.open();
+ document.write(page.generateMarkup());
+ document.close();
+
+ const barNodes = context.document.querySelectorAll('.result-cell');
+ expect(barNodes.length).to.be(8);
+ expect(barNodes[0].textContent).to.be('Build completed');
+ expect(barNodes[4].textContent).to.be('Build failed');
+ });
});
\ No newline at end of file
Modified: trunk/Websites/perf.webkit.org/tools/js/test-group-result-page.js (240181 => 240182)
--- trunk/Websites/perf.webkit.org/tools/js/test-group-result-page.js 2019-01-18 23:15:56 UTC (rev 240181)
+++ trunk/Websites/perf.webkit.org/tools/js/test-group-result-page.js 2019-01-18 23:26:52 UTC (rev 240182)
@@ -31,10 +31,14 @@
for (const commitSet of testGroup.requestedCommitSets())
{
const buildRequestsForCommitSet = testGroup.requestsForCommitSet(commitSet);
- const results = buildRequestsForCommitSet.map((buildRequest) => analysisResultsView.resultForRequest(buildRequest));
+ const buildTypeRequests = buildRequestsForCommitSet.filter((buildRequest) => buildRequest.isBuild());
+ const testTypeRequests = buildRequestsForCommitSet.filter((buildRequest) => buildRequest.isTest());
+
+ const buildTypeResults = buildTypeRequests.map((buildRequest) => ({isBuild: true, hasCompleted: buildRequest.hasCompleted()}));
+ const results = [...buildTypeResults, ...testTypeRequests.map((buildRequest) => analysisResultsView.resultForRequest(buildRequest))];
resultsByCommitSet.set(commitSet, results);
for (const result of results) {
- if (!result)
+ if (!result || result.isBuild)
continue;
maxValue = Math.max(maxValue, result.value);
minValue = Math.min(minValue, result.value);
@@ -77,8 +81,8 @@
const tableBodies = [];
- const beforeResults = resultsByCommitSet.get(requestedCommitSets[0]).filter((result) => !!result);
- const afterResults = resultsByCommitSet.get(requestedCommitSets[1]).filter((result) => !!result);
+ const beforeResults = resultsByCommitSet.get(requestedCommitSets[0]).filter((result) => !!result && !result.isBuild);
+ const afterResults = resultsByCommitSet.get(requestedCommitSets[1]).filter((result) => !!result && !result.isBuild);
const comparison = testGroup.compareTestResults(metric, beforeResults, afterResults);
const changeStyleClassForMean = `${comparison.isStatisticallySignificantForMean ? comparison.changeType : 'insignificant'}-result`;
const changeStyleClassForIndividual = `${comparison.isStatisticallySignificantForIndividual ? comparison.changeType : 'insignificant'}-result`;
@@ -100,8 +104,16 @@
const label = testGroup.labelForCommitSet(commitSet);
for (const result of results) {
- const cellValue = result ? formatValue(result.value, result.interval).join('') : 'Failed';
- const barWidth = result ? widthForValue(result.value) : 0;
+ let cellValue = null;
+ let barWidth = 0;
+ if (!result)
+ cellValue = 'Failed';
+ else if (result.isBuild)
+ cellValue = 'Build ' + (result.hasCompleted ? 'completed' : 'failed');
+ else {
+ cellValue = formatValue(result.value, result.interval).join('');
+ barWidth = widthForValue(result.value);
+ }
tableRows.push(this._constructTableRow(cellValue, barWidth, firstRow, results.length, label, averageColumnContents));
firstRow = false;
}