Skip to content

Commit 274d217

Browse files
jakra-mbgithub-actions[bot]
authored andcommitted
Improve render tests report (internal-14795)
GitOrigin-RevId: 6b1b99bf35c7d0f7f81d07a09da17d0971e759a8
1 parent 289b965 commit 274d217

3 files changed

Lines changed: 364 additions & 225 deletions

File tree

test/integration/query-tests/index.test.ts

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {applyOperations} from '../lib/operation-handlers.js';
1111
import {deepEqual, generateDiffLog} from '../lib/json-diff.js';
1212
// @ts-expect-error Cannot find module 'virtual:integration-tests' or its corresponding type declarations.
1313
import {integrationTests} from 'virtual:integration-tests';
14-
import {getStatsHTML, setupHTML, updateHTML} from '../../util/html_generator';
14+
import {getStatsHTML, setupHTML, updateHTML, registerIgnoredNotRun} from '../../util/html_generator';
1515
import {mapboxgl} from '../lib/mapboxgl.js';
1616
import {sendFragment, sendBrowserDiagnostics} from '../lib/utils';
1717
import {transformRequest} from '../lib/transform-request.js';
@@ -56,11 +56,14 @@ type TestMetadata = {
5656
name: string;
5757
minDiff: number;
5858
status: string;
59+
ignoredOutcome?: string;
60+
color?: string;
5961
errors: Error[];
6062
actual?: string;
6163
expected?: string;
6264
expectedPath?: string;
6365
imgDiff?: string;
66+
error?: Error;
6467
}
6568

6669
const container = document.createElement('div');
@@ -74,6 +77,8 @@ let map;
7477
let reportFragment: string | undefined;
7578

7679
const getTest = (queryTestName) => async () => {
80+
const fullTestName = `query-tests/${queryTestName}`;
81+
const isTodo = ignores.todo.includes(fullTestName);
7782
let errorMessage: string | undefined;
7883
try {
7984
const queryTest = integrationTests[queryTestName];
@@ -135,6 +140,8 @@ const getTest = (queryTestName) => async () => {
135140
const testMetaData: TestMetadata = {
136141
name: queryTestName,
137142
actual: map.getCanvas().toDataURL(),
143+
width: options.width,
144+
height: options.height,
138145
minDiff: options.minDiff || 0,
139146
status: 'passed',
140147
errors: []
@@ -160,6 +167,12 @@ const getTest = (queryTestName) => async () => {
160167

161168
testMetaData.status = success ? 'passed' : 'failed';
162169

170+
if (isTodo) {
171+
testMetaData.status = 'ignored';
172+
testMetaData.color = '#9E9E9E';
173+
testMetaData.ignoredOutcome = success ? 'passed' : 'failed';
174+
}
175+
163176
if (import.meta.env.VITE_CI === 'false' && import.meta.env.VITE_UPDATE === 'true') {
164177
await server.commands.writeFile(`${testPath}/expected.json`, jsonDiff.replace('+ ', '').trim());
165178
} else if (import.meta.env.VITE_CI === 'false') {
@@ -171,7 +184,14 @@ const getTest = (queryTestName) => async () => {
171184

172185
if (!success) errorMessage = `Query test ${queryTestName} failed`;
173186
} catch (error) {
174-
reportFragment = updateHTML({
187+
reportFragment = updateHTML(isTodo ? {
188+
name: queryTestName,
189+
status: 'ignored',
190+
color: '#9E9E9E',
191+
ignoredOutcome: 'failed',
192+
error,
193+
errors: []
194+
} : {
175195
name: queryTestName,
176196
status: 'failed',
177197
error,
@@ -185,10 +205,12 @@ const getTest = (queryTestName) => async () => {
185205
};
186206

187207
const {ignores, timeout} = getEnvironmentParams();
208+
const skippedTests: string[] = [];
188209

189210
Object.keys(integrationTests).forEach((testName) => {
190211
const queryTestName = `query-tests/${testName}`;
191212
if (ignores.skip.includes(queryTestName)) {
213+
skippedTests.push(testName);
192214
test.skip(testName, getTest(testName));
193215
} else if (ignores.todo.includes(queryTestName)) {
194216
test.todo(testName, getTest(testName));
@@ -199,6 +221,9 @@ Object.keys(integrationTests).forEach((testName) => {
199221

200222
afterAll(async () => {
201223
document.body.removeChild(container);
224+
for (const testName of skippedTests) {
225+
await sendFragment(reportFragmentIdx++, registerIgnoredNotRun(testName));
226+
}
202227
await sendBrowserDiagnostics();
203228
await sendFragment(0, getStatsHTML());
204229
// We cannot use `server.commands.writeFile` here because the HTML file is large

test/integration/render-tests/index.test.ts

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import ignoreLinuxFirefox from '../../ignores/linux-firefox.js';
99
import {parseStyle, parseOptions, getActualImage, calculateDiff, diffCanvas, diffCtx, getActualImageDataURL, mapRef, fakeCanvasContainer} from './utils.js';
1010
// @ts-expect-error Cannot find module 'virtual:integration-tests' or its corresponding type declarations.
1111
import {integrationTests} from 'virtual:integration-tests';
12-
import {getStatsHTML, updateHTML} from '../../util/html_generator';
12+
import {getStatsHTML, updateHTML, registerIgnoredNotRun} from '../../util/html_generator';
1313
import {mapboxgl} from '../lib/mapboxgl.js';
1414
import {sendFragment, sendBrowserDiagnostics} from '../lib/utils';
1515

@@ -91,15 +91,22 @@ type TestMetadata = {
9191
minDiff: number;
9292
allowed: number;
9393
status: string;
94+
ignoredOutcome?: string;
95+
color?: string;
96+
width?: number;
97+
height?: number;
9498
actual?: string;
9599
expected?: string;
96100
expectedPath?: string;
97101
imgDiff?: string;
102+
error?: Error;
98103
}
99104

100105
let reportFragment: string | undefined;
101106

102107
const getTest = (renderTestName: string) => async () => {
108+
const fullTestName = `render-tests/${renderTestName}`;
109+
const isTodo = ignores.todo.includes(fullTestName);
103110
let errorMessage: string | undefined;
104111
try {
105112
const renderTest = integrationTests[renderTestName];
@@ -128,9 +135,17 @@ const getTest = (renderTestName: string) => async () => {
128135
name: renderTestName,
129136
minDiff: Math.round(100000 * minDiff) / 100000,
130137
allowed: options.allowed,
138+
width: w,
139+
height: h,
131140
status: pass ? 'passed' : 'failed',
132141
};
133142

143+
if (isTodo) {
144+
testMetaData.status = 'ignored';
145+
testMetaData.color = '#9E9E9E';
146+
testMetaData.ignoredOutcome = pass ? 'passed' : 'failed';
147+
}
148+
134149
if (minDiffImage && expectedIndex !== -1 && (import.meta.env.VITE_CI === 'false' || !pass)) {
135150
diffCanvas.width = w;
136151
diffCanvas.height = h;
@@ -157,7 +172,13 @@ const getTest = (renderTestName: string) => async () => {
157172

158173
reportFragment = updateHTML(testMetaData);
159174
} catch (error) {
160-
reportFragment = updateHTML({
175+
reportFragment = updateHTML(isTodo ? {
176+
name: renderTestName,
177+
status: 'ignored',
178+
color: '#9E9E9E',
179+
ignoredOutcome: 'failed',
180+
error,
181+
} : {
161182
name: renderTestName,
162183
status: 'failed',
163184
error,
@@ -170,10 +191,12 @@ const getTest = (renderTestName: string) => async () => {
170191
};
171192

172193
const {ignores, timeout} = getEnvironmentParams();
194+
const skippedTests: string[] = [];
173195

174196
Object.keys(integrationTests).forEach((testName) => {
175197
const renderTestName = `render-tests/${testName}`;
176198
if (ignores.skip.includes(renderTestName)) {
199+
skippedTests.push(testName);
177200
test.skip(testName, getTest(testName));
178201
} else if (ignores.todo.includes(renderTestName)) {
179202
test.todo(testName, getTest(testName));
@@ -183,6 +206,9 @@ Object.keys(integrationTests).forEach((testName) => {
183206
});
184207

185208
afterAll(async () => {
209+
for (const testName of skippedTests) {
210+
await sendFragment(reportFragmentIdx++, registerIgnoredNotRun(testName));
211+
}
186212
await sendBrowserDiagnostics();
187213
await sendFragment(0, getStatsHTML());
188214
// We cannot use `server.commands.writeFile` here because the HTML file is large

0 commit comments

Comments
 (0)