@arghajit/dummy 0.3.19 → 0.3.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/data-reader.js +116 -0
- package/dist/lib/data.js +39 -0
- package/dist/lib/utils.js +1 -0
- package/dist/pulse.js +3 -6
- package/dist/reporter/playwright-pulse-reporter.js +65 -58
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/index.d.ts +6 -2
- package/package.json +1 -1
- package/scripts/generate-email-report.mjs +21 -9
- package/scripts/generate-report.mjs +606 -223
- package/scripts/generate-static-report.mjs +699 -275
- package/scripts/merge-pulse-report.js +2 -1
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
'use server';
|
|
2
|
+
import * as fs from 'fs/promises';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
const reportFileName = 'playwright-pulse-report.json'; // Use a constant for the filename
|
|
5
|
+
const reportFilePath = path.resolve(process.cwd(), reportFileName); // Default path relative to cwd
|
|
6
|
+
let cachedReportData = null;
|
|
7
|
+
let lastReadTime = null;
|
|
8
|
+
const CACHE_DURATION = 5000; // Cache duration in milliseconds (e.g., 5 seconds)
|
|
9
|
+
export async function readReportDataInternal() {
|
|
10
|
+
const now = Date.now();
|
|
11
|
+
// Use cache if it's recent and not forced refresh
|
|
12
|
+
if (cachedReportData && lastReadTime && (now - lastReadTime < CACHE_DURATION)) {
|
|
13
|
+
// console.log("Returning cached report data.");
|
|
14
|
+
return cachedReportData;
|
|
15
|
+
}
|
|
16
|
+
// console.log(`Attempting to read report file from: ${reportFilePath}`);
|
|
17
|
+
try {
|
|
18
|
+
const fileContent = await fs.readFile(reportFilePath, 'utf-8');
|
|
19
|
+
let parsedData;
|
|
20
|
+
try {
|
|
21
|
+
parsedData = JSON.parse(fileContent);
|
|
22
|
+
}
|
|
23
|
+
catch (parseError) {
|
|
24
|
+
console.error(`Error parsing JSON from ${reportFilePath}:`, parseError);
|
|
25
|
+
throw new Error(`Invalid JSON in report file: ${parseError.message}`);
|
|
26
|
+
}
|
|
27
|
+
// --- Date Reviver ---
|
|
28
|
+
// Function to convert ISO date strings back to Date objects recursively
|
|
29
|
+
const reviveDates = (key, value) => {
|
|
30
|
+
// Matches ISO 8601 date format (YYYY-MM-DDTHH:mm:ss.sssZ)
|
|
31
|
+
const isoDateRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z$/;
|
|
32
|
+
if (typeof value === 'string' && isoDateRegex.test(value)) {
|
|
33
|
+
const date = new Date(value);
|
|
34
|
+
// Check if the parsed date is valid before returning
|
|
35
|
+
if (!isNaN(date.getTime())) {
|
|
36
|
+
return date;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return value;
|
|
40
|
+
};
|
|
41
|
+
// Re-parse with the date reviver
|
|
42
|
+
const reportData = JSON.parse(fileContent, reviveDates);
|
|
43
|
+
// Basic validation after parsing and date revival
|
|
44
|
+
if (!reportData || typeof reportData !== 'object') {
|
|
45
|
+
throw new Error('Report file is empty or not a valid object.');
|
|
46
|
+
}
|
|
47
|
+
if (!reportData.metadata || typeof reportData.metadata.generatedAt !== 'string') { // generatedAt should remain string from JSON
|
|
48
|
+
throw new Error('Invalid or missing metadata in report file.');
|
|
49
|
+
}
|
|
50
|
+
if (!Array.isArray(reportData.results)) {
|
|
51
|
+
throw new Error('Missing or invalid "results" array in report file.');
|
|
52
|
+
}
|
|
53
|
+
// Optional: Validate run data if present
|
|
54
|
+
if (reportData.run && typeof reportData.run !== 'object') {
|
|
55
|
+
throw new Error('Invalid "run" data in report file.');
|
|
56
|
+
}
|
|
57
|
+
if (reportData.run && !(reportData.run.timestamp instanceof Date)) {
|
|
58
|
+
console.warn('Warning: Run timestamp was not correctly revived to a Date object.');
|
|
59
|
+
// Potentially attempt fallback parsing or throw error
|
|
60
|
+
reportData.run.timestamp = new Date(reportData.run.timestamp); // Attempt fallback
|
|
61
|
+
if (isNaN(reportData.run.timestamp.getTime())) {
|
|
62
|
+
throw new Error('Invalid run timestamp format.');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Validate dates within results and steps
|
|
66
|
+
reportData.results.forEach((result, index) => {
|
|
67
|
+
if (!(result.startTime instanceof Date) || !(result.endTime instanceof Date)) {
|
|
68
|
+
console.warn(`Warning: Invalid start/end time for result index ${index}. Attempting fallback parsing.`);
|
|
69
|
+
result.startTime = new Date(result.startTime);
|
|
70
|
+
result.endTime = new Date(result.endTime);
|
|
71
|
+
if (isNaN(result.startTime.getTime()) || isNaN(result.endTime.getTime())) {
|
|
72
|
+
throw new Error(`Invalid start/end time in result index ${index}.`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (Array.isArray(result.steps)) {
|
|
76
|
+
result.steps.forEach((step, stepIndex) => {
|
|
77
|
+
if (!(step.startTime instanceof Date) || !(step.endTime instanceof Date)) {
|
|
78
|
+
console.warn(`Warning: Invalid start/end time for step index ${stepIndex} in result index ${index}. Attempting fallback parsing.`);
|
|
79
|
+
step.startTime = new Date(step.startTime);
|
|
80
|
+
step.endTime = new Date(step.endTime);
|
|
81
|
+
if (isNaN(step.startTime.getTime()) || isNaN(step.endTime.getTime())) {
|
|
82
|
+
throw new Error(`Invalid start/end time in step index ${stepIndex}, result index ${index}.`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
result.steps = []; // Initialize if steps array is missing
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
cachedReportData = reportData;
|
|
92
|
+
lastReadTime = now;
|
|
93
|
+
// console.log("Successfully read, parsed, and cached report file.");
|
|
94
|
+
return reportData;
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
if (error.code === 'ENOENT') {
|
|
98
|
+
console.warn(`Report file not found at ${reportFilePath}. Returning empty data structure. Ensure Playwright tests ran with the reporter enabled and the file exists.`);
|
|
99
|
+
// Return a valid, empty structure
|
|
100
|
+
const defaultReport = {
|
|
101
|
+
run: null,
|
|
102
|
+
results: [],
|
|
103
|
+
metadata: { generatedAt: new Date().toISOString() }
|
|
104
|
+
};
|
|
105
|
+
cachedReportData = defaultReport; // Cache the default empty state
|
|
106
|
+
lastReadTime = now;
|
|
107
|
+
return defaultReport;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
// Log the specific error for debugging
|
|
111
|
+
console.error(`Error processing report file at ${reportFilePath}:`, error);
|
|
112
|
+
// Propagate a user-friendly error
|
|
113
|
+
throw new Error(`Failed to load report data: ${error.message}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
package/dist/lib/data.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use server';
|
|
2
|
+
import { readReportDataInternal } from './data-reader'; // Import the server-only reader
|
|
3
|
+
// --- Modified Data Fetching Functions ---
|
|
4
|
+
export const getLatestTestRun = async () => {
|
|
5
|
+
await new Promise(resolve => setTimeout(resolve, 20)); // Minimal delay for demo
|
|
6
|
+
const reportData = await readReportDataInternal();
|
|
7
|
+
return reportData.run;
|
|
8
|
+
};
|
|
9
|
+
export const getTestResultById = async (testId) => {
|
|
10
|
+
await new Promise(resolve => setTimeout(resolve, 20)); // Minimal delay for demo
|
|
11
|
+
const reportData = await readReportDataInternal();
|
|
12
|
+
return reportData.results.find(r => r.id === testId) || null;
|
|
13
|
+
};
|
|
14
|
+
export const getTrendData = async (limit = 1) => {
|
|
15
|
+
await new Promise(resolve => setTimeout(resolve, 30)); // Minimal delay for demo
|
|
16
|
+
const reportData = await readReportDataInternal();
|
|
17
|
+
if (reportData.run) {
|
|
18
|
+
const run = reportData.run;
|
|
19
|
+
// Return a single data point based on the current run
|
|
20
|
+
// You might want a more sophisticated trend mechanism later
|
|
21
|
+
return [{
|
|
22
|
+
date: run.timestamp.toISOString().split('T')[0], // Use date part of timestamp
|
|
23
|
+
passed: run.passed,
|
|
24
|
+
failed: run.failed,
|
|
25
|
+
skipped: run.skipped,
|
|
26
|
+
}];
|
|
27
|
+
}
|
|
28
|
+
return [];
|
|
29
|
+
};
|
|
30
|
+
export const getAllTestResults = async () => {
|
|
31
|
+
await new Promise(resolve => setTimeout(resolve, 50)); // Minimal delay for demo
|
|
32
|
+
const reportData = await readReportDataInternal();
|
|
33
|
+
return reportData.results;
|
|
34
|
+
};
|
|
35
|
+
export const getTestRuns = async (limit = 1) => {
|
|
36
|
+
await new Promise(resolve => setTimeout(resolve, 30)); // Minimal delay for demo
|
|
37
|
+
const reportData = await readReportDataInternal();
|
|
38
|
+
return reportData.run ? [reportData.run] : [];
|
|
39
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function cn(...inputs) { }
|
package/dist/pulse.js
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.pulse = void 0;
|
|
4
|
-
const test_1 = require("@playwright/test");
|
|
5
|
-
exports.pulse = {
|
|
1
|
+
import { test } from "@playwright/test";
|
|
2
|
+
export const pulse = {
|
|
6
3
|
/**
|
|
7
4
|
* Sets the severity level for the current test.
|
|
8
5
|
* * @param level - The severity level ('Minor' | 'Low' | 'Medium' | 'High' | 'Critical')
|
|
@@ -16,7 +13,7 @@ exports.pulse = {
|
|
|
16
13
|
// Default to "Medium" if an invalid string is passed
|
|
17
14
|
const selectedLevel = validLevels.includes(level) ? level : "Medium";
|
|
18
15
|
// Add the annotation to Playwright's test info
|
|
19
|
-
|
|
16
|
+
test.info().annotations.push({
|
|
20
17
|
type: "pulse_severity",
|
|
21
18
|
description: selectedLevel,
|
|
22
19
|
});
|
|
@@ -116,33 +116,22 @@ class PlaywrightPulseReporter {
|
|
|
116
116
|
const severityAnnotation = annotations.find((a) => a.type === "pulse_severity");
|
|
117
117
|
return (severityAnnotation === null || severityAnnotation === void 0 ? void 0 : severityAnnotation.description) || "Medium";
|
|
118
118
|
}
|
|
119
|
-
|
|
119
|
+
extractCodeSnippet(filePath, targetLine, targetColumn) {
|
|
120
|
+
var _a;
|
|
120
121
|
try {
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
return undefined;
|
|
122
|
+
const fsSync = require('fs');
|
|
123
|
+
if (!fsSync.existsSync(filePath)) {
|
|
124
|
+
return '';
|
|
125
125
|
}
|
|
126
|
-
const
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
for (let i = startLine; i < endLine; i++) {
|
|
131
|
-
const lineNum = i + 1;
|
|
132
|
-
const isTargetLine = lineNum === targetLine;
|
|
133
|
-
const lineContent = lines[i] || "";
|
|
134
|
-
const prefix = isTargetLine ? ">" : " ";
|
|
135
|
-
snippetLines.push(`${prefix} ${lineNum.toString().padStart(4)} | ${lineContent}`);
|
|
136
|
-
if (isTargetLine && targetColumn > 0) {
|
|
137
|
-
const pointer = " " + " ".repeat(4) + " | " + " ".repeat(Math.max(0, targetColumn)) + "^";
|
|
138
|
-
snippetLines.push(pointer);
|
|
139
|
-
}
|
|
126
|
+
const content = fsSync.readFileSync(filePath, 'utf8');
|
|
127
|
+
const lines = content.split('\n');
|
|
128
|
+
if (targetLine < 1 || targetLine > lines.length) {
|
|
129
|
+
return '';
|
|
140
130
|
}
|
|
141
|
-
return
|
|
131
|
+
return ((_a = lines[targetLine - 1]) === null || _a === void 0 ? void 0 : _a.trim()) || '';
|
|
142
132
|
}
|
|
143
|
-
catch (
|
|
144
|
-
|
|
145
|
-
return undefined;
|
|
133
|
+
catch (e) {
|
|
134
|
+
return '';
|
|
146
135
|
}
|
|
147
136
|
}
|
|
148
137
|
getBrowserDetails(test) {
|
|
@@ -195,7 +184,7 @@ class PlaywrightPulseReporter {
|
|
|
195
184
|
}
|
|
196
185
|
return finalString.trim();
|
|
197
186
|
}
|
|
198
|
-
async processStep(step, testId, browserDetails, testCase
|
|
187
|
+
async processStep(step, testId, browserDetails, testCase) {
|
|
199
188
|
var _a, _b, _c, _d;
|
|
200
189
|
let stepStatus = "passed";
|
|
201
190
|
let errorMessage = ((_a = step.error) === null || _a === void 0 ? void 0 : _a.message) || undefined;
|
|
@@ -209,18 +198,10 @@ class PlaywrightPulseReporter {
|
|
|
209
198
|
const startTime = new Date(step.startTime);
|
|
210
199
|
const endTime = new Date(startTime.getTime() + Math.max(0, duration));
|
|
211
200
|
let codeLocation = "";
|
|
212
|
-
let codeSnippet =
|
|
201
|
+
let codeSnippet = '';
|
|
213
202
|
if (step.location) {
|
|
214
203
|
codeLocation = `${path.relative(this.config.rootDir, step.location.file)}:${step.location.line}:${step.location.column}`;
|
|
215
|
-
|
|
216
|
-
codeSnippet = await this.extractCodeSnippet(step.location.file, step.location.line, step.location.column);
|
|
217
|
-
if (!codeSnippet) {
|
|
218
|
-
console.warn(`Pulse Reporter: extractCodeSnippet returned undefined for step "${step.title}" at ${step.location.file}:${step.location.line}:${step.location.column}`);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
catch (error) {
|
|
222
|
-
console.error(`Pulse Reporter: Failed to extract code snippet for step "${step.title}":`, error);
|
|
223
|
-
}
|
|
204
|
+
codeSnippet = this.extractCodeSnippet(step.location.file, step.location.line, step.location.column);
|
|
224
205
|
}
|
|
225
206
|
return {
|
|
226
207
|
id: `${testId}_step_${startTime.toISOString()}-${duration}-${(0, crypto_1.randomUUID)()}`,
|
|
@@ -240,7 +221,6 @@ class PlaywrightPulseReporter {
|
|
|
240
221
|
? "before"
|
|
241
222
|
: "after"
|
|
242
223
|
: undefined,
|
|
243
|
-
isFailedStep: isFailedStep,
|
|
244
224
|
steps: [],
|
|
245
225
|
};
|
|
246
226
|
}
|
|
@@ -248,33 +228,35 @@ class PlaywrightPulseReporter {
|
|
|
248
228
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
249
229
|
const project = (_a = test.parent) === null || _a === void 0 ? void 0 : _a.project();
|
|
250
230
|
const browserDetails = this.getBrowserDetails(test);
|
|
251
|
-
|
|
231
|
+
// Captured outcome from Playwright
|
|
232
|
+
const outcome = test.outcome();
|
|
233
|
+
// Calculate final status based on the last result (Last-Run-Wins)
|
|
234
|
+
// result.status in onTestEnd is typically the status of the test run (passed if flaky passed)
|
|
235
|
+
// But we double check the last result in test.results just to be sure/consistent
|
|
236
|
+
const lastResult = test.results[test.results.length - 1];
|
|
237
|
+
const finalStatus = convertStatus(lastResult ? lastResult.status : result.status, test);
|
|
238
|
+
// Existing behavior: fail if flaky (implied by user request "existing status field should remain failed")
|
|
239
|
+
// If outcome is flaky, status should be 'failed' to indicate initial failure, but final_status is 'passed'
|
|
240
|
+
let testStatus = finalStatus;
|
|
241
|
+
if (outcome === 'flaky') {
|
|
242
|
+
testStatus = 'flaky';
|
|
243
|
+
}
|
|
252
244
|
const startTime = new Date(result.startTime);
|
|
253
245
|
const endTime = new Date(startTime.getTime() + result.duration);
|
|
254
|
-
const processAllSteps = async (steps
|
|
246
|
+
const processAllSteps = async (steps) => {
|
|
255
247
|
let processed = [];
|
|
256
|
-
let foundFailedStep = false;
|
|
257
248
|
for (const step of steps) {
|
|
258
|
-
const
|
|
259
|
-
if (isThisStepFailed) {
|
|
260
|
-
foundFailedStep = true;
|
|
261
|
-
}
|
|
262
|
-
const processedStep = await this.processStep(step, test.id, browserDetails, test, isThisStepFailed);
|
|
249
|
+
const processedStep = await this.processStep(step, test.id, browserDetails, test);
|
|
263
250
|
processed.push(processedStep);
|
|
264
251
|
if (step.steps && step.steps.length > 0) {
|
|
265
|
-
processedStep.steps = await processAllSteps(step.steps
|
|
252
|
+
processedStep.steps = await processAllSteps(step.steps);
|
|
266
253
|
}
|
|
267
254
|
}
|
|
268
255
|
return processed;
|
|
269
256
|
};
|
|
270
|
-
let codeSnippet =
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
codeSnippet = await this.extractCodeSnippet(test.location.file, test.location.line, test.location.column);
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
catch (e) {
|
|
277
|
-
console.warn(`Pulse Reporter: Could not extract code snippet for ${test.title}`, e);
|
|
257
|
+
let codeSnippet = '';
|
|
258
|
+
if (((_b = test.location) === null || _b === void 0 ? void 0 : _b.file) && ((_c = test.location) === null || _c === void 0 ? void 0 : _c.line) && ((_d = test.location) === null || _d === void 0 ? void 0 : _d.column)) {
|
|
259
|
+
codeSnippet = this.extractCodeSnippet(test.location.file, test.location.line, test.location.column);
|
|
278
260
|
}
|
|
279
261
|
// 1. Get Spec File Name
|
|
280
262
|
const specFileName = ((_e = test.location) === null || _e === void 0 ? void 0 : _e.file)
|
|
@@ -308,6 +290,8 @@ class PlaywrightPulseReporter {
|
|
|
308
290
|
name: test.titlePath().join(" > "),
|
|
309
291
|
suiteName: (project === null || project === void 0 ? void 0 : project.name) || ((_g = this.config.projects[0]) === null || _g === void 0 ? void 0 : _g.name) || "Default Suite",
|
|
310
292
|
status: testStatus,
|
|
293
|
+
outcome: outcome === 'flaky' ? outcome : undefined, // Only Include if flaky
|
|
294
|
+
final_status: finalStatus, // New Field
|
|
311
295
|
duration: result.duration,
|
|
312
296
|
startTime: startTime,
|
|
313
297
|
endTime: endTime,
|
|
@@ -366,15 +350,36 @@ class PlaywrightPulseReporter {
|
|
|
366
350
|
this.results.push(pulseResult);
|
|
367
351
|
}
|
|
368
352
|
_getFinalizedResults(allResults) {
|
|
369
|
-
const
|
|
353
|
+
const resultsMap = new Map();
|
|
370
354
|
for (const result of allResults) {
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
355
|
+
if (!resultsMap.has(result.id)) {
|
|
356
|
+
resultsMap.set(result.id, []);
|
|
357
|
+
}
|
|
358
|
+
resultsMap.get(result.id).push(result);
|
|
359
|
+
}
|
|
360
|
+
const finalResults = [];
|
|
361
|
+
for (const [testId, attempts] of resultsMap.entries()) {
|
|
362
|
+
attempts.sort((a, b) => a.retries - b.retries);
|
|
363
|
+
const firstAttempt = attempts[0];
|
|
364
|
+
const retryAttempts = attempts.slice(1);
|
|
365
|
+
if (retryAttempts.length > 0) {
|
|
366
|
+
firstAttempt.retryHistory = retryAttempts;
|
|
367
|
+
// Calculate final status and outcome from the last attempt if retries exist
|
|
368
|
+
const lastAttempt = attempts[attempts.length - 1];
|
|
369
|
+
firstAttempt.final_status = lastAttempt.status;
|
|
370
|
+
// If the last attempt was flaky, ensure outcome is set on the main result
|
|
371
|
+
if (lastAttempt.outcome === 'flaky' || lastAttempt.status === 'flaky') {
|
|
372
|
+
firstAttempt.outcome = 'flaky';
|
|
373
|
+
firstAttempt.status = 'flaky';
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
else {
|
|
377
|
+
// If no retries, ensure final_status is undefined (as requested)
|
|
378
|
+
delete firstAttempt.final_status;
|
|
375
379
|
}
|
|
380
|
+
finalResults.push(firstAttempt);
|
|
376
381
|
}
|
|
377
|
-
return
|
|
382
|
+
return finalResults;
|
|
378
383
|
}
|
|
379
384
|
onError(error) {
|
|
380
385
|
var _a;
|
|
@@ -434,6 +439,7 @@ class PlaywrightPulseReporter {
|
|
|
434
439
|
finalRunData.passed = finalResultsList.filter((r) => r.status === "passed").length;
|
|
435
440
|
finalRunData.failed = finalResultsList.filter((r) => r.status === "failed").length;
|
|
436
441
|
finalRunData.skipped = finalResultsList.filter((r) => r.status === "skipped").length;
|
|
442
|
+
finalRunData.flaky = finalResultsList.filter((r) => r.status === "flaky").length;
|
|
437
443
|
finalRunData.totalTests = finalResultsList.length;
|
|
438
444
|
const reviveDates = (key, value) => {
|
|
439
445
|
const isoDateRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z$/;
|
|
@@ -494,6 +500,7 @@ class PlaywrightPulseReporter {
|
|
|
494
500
|
passed: finalResults.filter((r) => r.status === "passed").length,
|
|
495
501
|
failed: finalResults.filter((r) => r.status === "failed").length,
|
|
496
502
|
skipped: finalResults.filter((r) => r.status === "skipped").length,
|
|
503
|
+
flaky: finalResults.filter((r) => r.status === "flaky").length,
|
|
497
504
|
duration,
|
|
498
505
|
environment: environmentDetails,
|
|
499
506
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/typescript/lib/lib.es2023.d.ts","../node_modules/typescript/lib/lib.es2024.d.ts","../node_modules/typescript/lib/lib.esnext.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/typescript/lib/lib.es2023.array.d.ts","../node_modules/typescript/lib/lib.es2023.collection.d.ts","../node_modules/typescript/lib/lib.es2023.intl.d.ts","../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2024.collection.d.ts","../node_modules/typescript/lib/lib.es2024.object.d.ts","../node_modules/typescript/lib/lib.es2024.promise.d.ts","../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2024.string.d.ts","../node_modules/typescript/lib/lib.esnext.array.d.ts","../node_modules/typescript/lib/lib.esnext.collection.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../node_modules/typescript/lib/lib.esnext.iterator.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/playwright-core/types/protocol.d.ts","../node_modules/playwright-core/types/structs.d.ts","../node_modules/playwright-core/types/types.d.ts","../node_modules/playwright/types/test.d.ts","../node_modules/playwright/test.d.ts","../node_modules/@playwright/test/index.d.ts","../src/pulse.ts","../node_modules/lucide-react/dist/lucide-react.d.ts","../src/types/index.ts","../src/lib/report-types.ts","../src/lib/data-reader.ts","../src/lib/data.ts","../node_modules/clsx/clsx.d.ts","../src/lib/utils.ts","../node_modules/playwright/types/testreporter.d.ts","../node_modules/@playwright/test/reporter.d.ts","../src/reporter/attachment-utils.ts","../node_modules/@types/ua-parser-js/index.d.ts","../src/reporter/playwright-pulse-reporter.ts","../src/reporter/index.ts","../node_modules/@types/estree/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/node/compatibility/disposable.d.ts","../node_modules/@types/node/compatibility/indexable.d.ts","../node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/@types/node/compatibility/index.d.ts","../node_modules/@types/node/globals.typedarray.d.ts","../node_modules/@types/node/buffer.buffer.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/file.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/undici-types/retry-handler.d.ts","../node_modules/undici-types/retry-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/util.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/eventsource.d.ts","../node_modules/undici-types/filereader.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/sea.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/index.d.ts"],"fileIdsList":[[83,106,148],[93,106,148],[106,148],[106,145,148],[106,147,148],[148],[106,148,153,182],[106,148,149,154,160,161,168,179,190],[106,148,149,150,160,168],[101,102,103,106,148],[106,148,151,191],[106,148,152,153,161,169],[106,148,153,179,187],[106,148,154,156,160,168],[106,147,148,155],[106,148,156,157],[106,148,160],[106,148,158,160],[106,147,148,160],[106,148,160,161,162,179,190],[106,148,160,161,162,175,179,182],[106,143,148,195],[106,148,156,160,163,168,179,190],[106,148,160,161,163,164,168,179,187,190],[106,148,163,165,179,187,190],[104,105,106,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196],[106,148,160,166],[106,148,167,190,195],[106,148,156,160,168,179],[106,148,169],[106,148,170],[106,147,148,171],[106,145,146,147,148,149,150,151,152,153,154,155,156,157,158,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196],[106,148,173],[106,148,174],[106,148,160,175,176],[106,148,175,177,191,193],[106,148,160,179,180,181,182],[106,148,179,181],[106,148,179,180],[106,148,182],[106,148,183],[106,145,148,179],[106,148,160,185,186],[106,148,185,186],[106,148,153,168,179,187],[106,148,188],[106,148,168,189],[106,148,163,174,190],[106,148,153,191],[106,148,179,192],[106,148,167,193],[106,148,194],[106,148,153,160,162,171,179,190,193,195],[106,148,179,196],[81,106,148],[79,80,106,148,149,161,179],[82,106,148],[106,115,119,148,190],[106,115,148,179,190],[106,110,148],[106,112,115,148,187,190],[106,148,168,187],[106,148,197],[106,110,148,197],[106,112,115,148,168,190],[106,107,108,111,114,148,160,179,190],[106,115,122,148],[106,107,113,148],[106,115,136,137,148],[106,111,115,148,182,190,197],[106,136,148,197],[106,109,110,148,197],[106,115,148],[106,109,110,111,112,113,114,115,116,117,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,137,138,139,140,141,142,148],[106,115,130,148],[106,115,122,123,148],[106,113,115,123,124,148],[106,114,148],[106,107,110,115,148],[106,115,119,123,124,148],[106,119,148],[106,113,115,118,148,190],[106,107,112,115,122,148],[106,148,179],[106,110,115,136,148,195,197],[88,106,148,162,170],[87,89,106,148],[87,106,148],[91,106,148],[84,106,148],[87,94,106,148,161,170],[85,87,88,97,106,148],[87,88,94,96,106,148,153,162,169,170],[86,106,148]],"fileInfos":[{"version":"e41c290ef7dd7dab3493e6cbe5909e0148edf4a8dad0271be08edec368a0f7b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"e12a46ce14b817d4c9e6b2b478956452330bf00c9801b79de46f7a1815b5bd40","impliedFormat":1},{"version":"4fd3f3422b2d2a3dfd5cdd0f387b3a8ec45f006c6ea896a4cb41264c2100bb2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"69e65d976bf166ce4a9e6f6c18f94d2424bf116e90837ace179610dbccad9b42","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"62bb211266ee48b2d0edf0d8d1b191f0c24fc379a82bd4c1692a082c540bc6b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f1e2a172204962276504466a6393426d2ca9c54894b1ad0a6c9dad867a65f876","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"bab26767638ab3557de12c900f0b91f710c7dc40ee9793d5a27d32c04f0bf646","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"61d6a2092f48af66dbfb220e31eea8b10bc02b6932d6e529005fd2d7b3281290","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f6ef9c13ca4e92bc06426a01f2c3198448e949f64f62eb02e2db23146a8d06c","impliedFormat":1},{"version":"32727845ab5bd8a9ef3e4844c567c09f6d418fcf0f90d381c00652a6f23e7f6e","impliedFormat":1},{"version":"254bdfc7c096df05586db7e69fd2c6d78c766d13713fb5a44b74d49fd45e8881","impliedFormat":1},{"version":"4a405da2b4fe59c59b09a9af656f7b40c18293b1e17118a93580585c01c7dc7a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f00324f263189b385c3a9383b1f4dae6237697bcf0801f96aa35c340512d79c","impliedFormat":1},{"version":"ec8997c2e5cea26befc76e7bf990750e96babb16977673a9ff3b5c0575d01e48","impliedFormat":1},"88a8818ff468a6bfbd1e798cf10688016e1035b81b841162722a956be0e3d417",{"version":"6717dad91e44ad22d68f1fc0db74e5eb5398c2c06a2943bf06d3a168e8b1ba45","impliedFormat":99},"e671563fbeb355f1e10a8296d3ff5ab2c1bf362801dbab2548e15e826adc3a71","331a971aff7a6da8693ab1ab38961996fecd854f6a639d430c81f8207dc92e96","b45a158fb0a2eae42e6c5d88d674ec5c72c610cc4840c8e9bb7178445dc4d4e3","83de864087649487b699d01917d4245750b114798d180426480e8019bc8497f5",{"version":"ef73bcfef9907c8b772a30e5a64a6bd86a5669cba3d210fcdcc6b625e3312459","impliedFormat":1},"91087920d3b2235d60b478f3d317c8737b64ce7fadba4dc3f88c9a0fb46080ba",{"version":"c76f94b31ae5c283f441916a9feb84257dca7041625eb7f3c9459fac5ac351cc","impliedFormat":1},{"version":"04392f8e190f9e51301f73d17bbb34babd54858c1efc932d2193962f66dabae2","impliedFormat":1},"c769507a3aab1d5491d133bcece45dd63aed97868e14673f73c11ba15ec90168",{"version":"98cbca6c3c5b2f8d1469dcee88c13304b6cb149fb057ec3b8a85f2e39ff1fc84","impliedFormat":1},"29a00357fe4b27487fa0631dfe3d4908249ed032cc4947b99f4098a7a30ad367","d502b970e98c03636f85ec36014de7c97aa31af702956549e1edc02b12067b03",{"version":"e2b48abff5a8adc6bb1cd13a702b9ef05e6045a98e7cfa95a8779b53b6d0e69d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fd06258805d26c72f5997e07a23155d322d5f05387adb3744a791fe6a0b042d","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"24bd580b5743dc56402c440dc7f9a4f5d592ad7a419f25414d37a7bfe11e342b","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"6bdc71028db658243775263e93a7db2fd2abfce3ca569c3cca5aee6ed5eb186d","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"4d2b0eb911816f66abe4970898f97a2cfc902bcd743cbfa5017fad79f7ef90d8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","impliedFormat":1},{"version":"24b8685c62562f5d98615c5a0c1d05f297cf5065f15246edfe99e81ec4c0e011","impliedFormat":1},{"version":"93507c745e8f29090efb99399c3f77bec07db17acd75634249dc92f961573387","impliedFormat":1},{"version":"339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"08faa97886e71757779428dd4c69a545c32c85fd629d1116d42710b32c6378bc","affectsGlobalScope":true,"impliedFormat":1},{"version":"a72ffc815104fb5c075106ebca459b2d55d07862a773768fce89efc621b3964b","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"3d77c73be94570813f8cadd1f05ebc3dc5e2e4fdefe4d340ca20cd018724ee36","impliedFormat":1},{"version":"d674383111e06b6741c4ad2db962131b5b0fa4d0294b998566c635e86195a453","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3e58c4c18a031cbb17abec7a4ad0bd5ae9fc70c1f4ba1e7fb921ad87c504aca","impliedFormat":1},{"version":"a3e8bafb2af8e850c644f4be7f5156cf7d23b7bfdc3b786bd4d10ed40329649c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"f77d9188e41291acf14f476e931972460a303e1952538f9546e7b370cb8d0d20","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d04e3640dd9eb67f7f1e5bd3d0bf96c784666f7aefc8ac1537af6f2d38d4c29","impliedFormat":1},{"version":"3c884d9d9ec454bdf0d5a0b8465bf8297d2caa4d853851d92cc417ac6f30b969","impliedFormat":1},{"version":"5a369483ac4cfbdf0331c248deeb36140e6907db5e1daed241546b4a2055f82c","impliedFormat":1},{"version":"e8f5b5cc36615c17d330eaf8eebbc0d6bdd942c25991f96ef122f246f4ff722f","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ada07543808f3b967624645a8e1ccd446f8b01ade47842acf1328aec899fed0","affectsGlobalScope":true,"impliedFormat":1},{"version":"c4a806152acbef81593f96cae6f2b04784d776457d97adbe2694478b243fcf03","impliedFormat":1},{"version":"71adf5dbc59568663d252a46179e71e4d544c053978bfc526d11543a3f716f42","impliedFormat":1},{"version":"c60db41f7bee80fb80c0b12819f5e465c8c8b465578da43e36d04f4a4646f57d","impliedFormat":1},{"version":"93bd413918fa921c8729cef45302b24d8b6c7855d72d5bf82d3972595ae8dcbf","impliedFormat":1},{"version":"4ff41188773cbf465807dd2f7059c7494cbee5115608efc297383832a1150c43","impliedFormat":1},{"version":"dccdf1677e531e33f8ac961a68bc537418c9a414797c1ea7e91307501cdc3f5e","impliedFormat":1},{"version":"e184c4b8918ef56c8c9e68bd79f3f3780e2d0d75bf2b8a41da1509a40c2deb46","affectsGlobalScope":true,"impliedFormat":1},{"version":"d206b4baf4ddcc15d9d69a9a2f4999a72a2c6adeaa8af20fa7a9960816287555","impliedFormat":1},{"version":"93f437e1398a4f06a984f441f7fa7a9f0535c04399619b5c22e0b87bdee182cb","impliedFormat":1},{"version":"afbe24ab0d74694372baa632ecb28bb375be53f3be53f9b07ecd7fc994907de5","impliedFormat":1},{"version":"70731d10d5311bd4cf710ef7f6539b62660f4b0bfdbb3f9fbe1d25fe6366a7fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"6b19db3600a17af69d4f33d08cc7076a7d19fb65bb36e442cac58929ec7c9482","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"137c2894e8f3e9672d401cc0a305dc7b1db7c69511cf6d3970fb53302f9eae09","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"235bfb54b4869c26f7e98e3d1f68dbfc85acf4cf5c38a4444a006fbf74a8a43d","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","impliedFormat":1},{"version":"bb715efb4857eb94539eafb420352105a0cff40746837c5140bf6b035dd220ba","affectsGlobalScope":true,"impliedFormat":1},{"version":"1851a3b4db78664f83901bb9cac9e45e03a37bb5933cc5bf37e10bb7e91ab4eb","impliedFormat":1},{"version":"fdedf82878e4c744bc2a1c1e802ae407d63474da51f14a54babe039018e53d8f","affectsGlobalScope":true,"impliedFormat":1},{"version":"27d8987fd22d92efe6560cf0ce11767bf089903ffe26047727debfd1f3bf438b","affectsGlobalScope":true,"impliedFormat":1},{"version":"578d8bb6dcb2a1c03c4c3f8eb71abc9677e1a5c788b7f24848e3138ce17f3400","impliedFormat":1},{"version":"4f029899f9bae07e225c43aef893590541b2b43267383bf5e32e3a884d219ed5","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"5b566927cad2ed2139655d55d690ffa87df378b956e7fe1c96024c4d9f75c4cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"bce947017cb7a2deebcc4f5ba04cead891ce6ad1602a4438ae45ed9aa1f39104","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3dffd70e6375b872f0b4e152de4ae682d762c61a24881ecc5eb9f04c5caf76f","impliedFormat":1},{"version":"e2c72c065a36bc9ab2a00ac6a6f51e71501619a72c0609defd304d46610487a4","impliedFormat":1},{"version":"d91a7d8b5655c42986f1bdfe2105c4408f472831c8f20cf11a8c3345b6b56c8c","impliedFormat":1},{"version":"616075a6ac578cf5a013ee12964188b4412823796ce0b202c6f1d2e4ca8480d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"e8a979b8af001c9fc2e774e7809d233c8ca955a28756f52ee5dee88ccb0611d2","impliedFormat":1},{"version":"cac793cc47c29e26e4ac3601dcb00b4435ebed26203485790e44f2ad8b6ad847","impliedFormat":1}],"root":[85,[87,90],92,95,97,98],"options":{"allowJs":true,"esModuleInterop":true,"jsx":4,"module":99,"outDir":"./","skipLibCheck":true,"strict":true,"target":4},"referencedMap":[[84,1],[94,2],[99,3],[100,3],[145,4],[146,4],[147,5],[106,6],[148,7],[149,8],[150,9],[101,3],[104,10],[102,3],[103,3],[151,11],[152,12],[153,13],[154,14],[155,15],[156,16],[157,16],[159,17],[158,18],[160,19],[161,20],[162,21],[144,22],[105,3],[163,23],[164,24],[165,25],[197,26],[166,27],[167,28],[168,29],[169,30],[170,31],[171,32],[172,33],[173,34],[174,35],[175,36],[176,36],[177,37],[178,3],[179,38],[181,39],[180,40],[182,41],[183,42],[184,43],[185,44],[186,45],[187,46],[188,47],[189,48],[190,49],[191,50],[192,51],[193,52],[194,53],[195,54],[196,55],[96,3],[91,3],[86,3],[79,3],[80,56],[81,57],[83,58],[82,56],[93,58],[77,3],[78,3],[13,3],[14,3],[16,3],[15,3],[2,3],[17,3],[18,3],[19,3],[20,3],[21,3],[22,3],[23,3],[24,3],[3,3],[25,3],[26,3],[4,3],[27,3],[31,3],[28,3],[29,3],[30,3],[32,3],[33,3],[34,3],[5,3],[35,3],[36,3],[37,3],[38,3],[6,3],[42,3],[39,3],[40,3],[41,3],[43,3],[7,3],[44,3],[49,3],[50,3],[45,3],[46,3],[47,3],[48,3],[8,3],[54,3],[51,3],[52,3],[53,3],[55,3],[9,3],[56,3],[57,3],[58,3],[60,3],[59,3],[61,3],[62,3],[10,3],[63,3],[64,3],[65,3],[11,3],[66,3],[67,3],[68,3],[69,3],[70,3],[1,3],[71,3],[72,3],[12,3],[75,3],[74,3],[73,3],[76,3],[122,59],[132,60],[121,59],[142,61],[113,62],[112,63],[141,64],[135,65],[140,66],[115,67],[129,68],[114,69],[138,70],[110,71],[109,64],[139,72],[111,73],[116,74],[117,3],[120,74],[107,3],[143,75],[133,76],[124,77],[125,78],[127,79],[123,80],[126,81],[136,64],[118,82],[119,83],[128,84],[108,85],[131,76],[130,74],[134,3],[137,86],[89,87],[90,88],[88,89],[92,90],[85,91],[95,92],[98,93],[97,94],[87,95]],"version":"5.7.3"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { LucideIcon } from "lucide-react";
|
|
2
|
-
export type TestStatus = "passed" | "failed" | "skipped" | "expected-failure" | "unexpected-success" | "explicitly-skipped";
|
|
2
|
+
export type TestStatus = "passed" | "failed" | "skipped" | "expected-failure" | "unexpected-success" | "explicitly-skipped" | "flaky";
|
|
3
3
|
export interface TestStep {
|
|
4
4
|
id: string;
|
|
5
5
|
title: string;
|
|
@@ -14,7 +14,6 @@ export interface TestStep {
|
|
|
14
14
|
codeSnippet?: string;
|
|
15
15
|
isHook?: boolean;
|
|
16
16
|
hookType?: "before" | "after";
|
|
17
|
-
isFailedStep?: boolean;
|
|
18
17
|
steps?: TestStep[];
|
|
19
18
|
}
|
|
20
19
|
export interface TestResult {
|
|
@@ -37,6 +36,8 @@ export interface TestResult {
|
|
|
37
36
|
suiteName?: string;
|
|
38
37
|
runId: string;
|
|
39
38
|
browser: string;
|
|
39
|
+
outcome?: string;
|
|
40
|
+
final_status?: TestStatus;
|
|
40
41
|
screenshots?: string[];
|
|
41
42
|
videoPath?: string[];
|
|
42
43
|
tracePath?: string;
|
|
@@ -60,6 +61,7 @@ export interface TestResult {
|
|
|
60
61
|
column: number;
|
|
61
62
|
};
|
|
62
63
|
}[];
|
|
64
|
+
retryHistory?: TestResult[];
|
|
63
65
|
}
|
|
64
66
|
export interface TestRun {
|
|
65
67
|
id: string;
|
|
@@ -68,6 +70,7 @@ export interface TestRun {
|
|
|
68
70
|
passed: number;
|
|
69
71
|
failed: number;
|
|
70
72
|
skipped: number;
|
|
73
|
+
flaky?: number;
|
|
71
74
|
duration: number;
|
|
72
75
|
environment?: EnvDetails | EnvDetails[];
|
|
73
76
|
}
|
|
@@ -76,6 +79,7 @@ export interface TrendDataPoint {
|
|
|
76
79
|
passed: number;
|
|
77
80
|
failed: number;
|
|
78
81
|
skipped: number;
|
|
82
|
+
flaky?: number;
|
|
79
83
|
}
|
|
80
84
|
export interface SummaryMetric {
|
|
81
85
|
label: string;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arghajit/dummy",
|
|
3
3
|
"author": "Arghajit Singha",
|
|
4
|
-
"version": "0.3.
|
|
4
|
+
"version": "0.3.28",
|
|
5
5
|
"description": "A Playwright reporter and dashboard for visualizing test results.",
|
|
6
6
|
"homepage": "https://arghajit47.github.io/playwright-pulse/",
|
|
7
7
|
"repository": {
|
|
@@ -242,6 +242,17 @@ function generateMinifiedHTML(reportData) {
|
|
|
242
242
|
severity
|
|
243
243
|
)}; font-size: 0.8em; font-weight: 600; padding: 3px 8px; border-radius: 4px; color: #fff; margin-left: 10px; white-space: nowrap;">${severity}</span>`;
|
|
244
244
|
|
|
245
|
+
// --- NEW: Retry Count Badge ---
|
|
246
|
+
const retryCountBadge = (test.retryHistory && test.retryHistory.length > 0)
|
|
247
|
+
? `<span style="background-color: #f59e0b; border: 1px solid #d97706; font-size: 0.8em; font-weight: 700; padding: 4px 10px; border-radius: 50px; color: #fff; margin-left: 10px; white-space: nowrap; display: inline-flex; align-items: center; gap: 4px;">
|
|
248
|
+
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="vertical-align: middle;">
|
|
249
|
+
<path d="M1 4v6h6"/>
|
|
250
|
+
<path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"/>
|
|
251
|
+
</svg>
|
|
252
|
+
Retry Count: ${test.retryHistory.length}
|
|
253
|
+
</span>`
|
|
254
|
+
: '';
|
|
255
|
+
|
|
245
256
|
// --- NEW: Tags Logic ---
|
|
246
257
|
const tagsBadges = (test.tags || [])
|
|
247
258
|
.map(
|
|
@@ -266,6 +277,7 @@ function generateMinifiedHTML(reportData) {
|
|
|
266
277
|
test.name
|
|
267
278
|
)}">${sanitizeHTML(testTitle)}</span>
|
|
268
279
|
|
|
280
|
+
${retryCountBadge}
|
|
269
281
|
${severityBadge}
|
|
270
282
|
${tagsBadges}
|
|
271
283
|
</li>
|
|
@@ -532,10 +544,10 @@ function generateMinifiedHTML(reportData) {
|
|
|
532
544
|
</div>
|
|
533
545
|
<div class="run-info">
|
|
534
546
|
<strong>Run Date:</strong> ${formatDate(
|
|
535
|
-
runSummary.timestamp
|
|
547
|
+
runSummary.timestamp,
|
|
536
548
|
)}<br>
|
|
537
549
|
<strong>Total Duration:</strong> ${formatDuration(
|
|
538
|
-
runSummary.duration
|
|
550
|
+
runSummary.duration,
|
|
539
551
|
)}
|
|
540
552
|
</div>
|
|
541
553
|
</header>
|
|
@@ -583,11 +595,11 @@ function generateMinifiedHTML(reportData) {
|
|
|
583
595
|
<div class="filters-section">
|
|
584
596
|
<input type="text" id="filter-min-name" placeholder="Search by test name...">
|
|
585
597
|
<select id="filter-min-status">
|
|
586
|
-
<option value="">All
|
|
587
|
-
<option value="passed"
|
|
588
|
-
<option value="failed"
|
|
589
|
-
<option value="skipped"
|
|
590
|
-
<option value="unknown"
|
|
598
|
+
<option value="">All Status</option>
|
|
599
|
+
<option value="passed">✅ Passed</option>
|
|
600
|
+
<option value="failed">❌ Failed</option>
|
|
601
|
+
<option value="skipped">⏭️ Skipped</option>
|
|
602
|
+
<option value="unknown">❓ Unknown</option>
|
|
591
603
|
</select>
|
|
592
604
|
<select id="filter-min-browser">
|
|
593
605
|
<option value="">All Browsers</option>
|
|
@@ -595,8 +607,8 @@ function generateMinifiedHTML(reportData) {
|
|
|
595
607
|
.map(
|
|
596
608
|
(browser) =>
|
|
597
609
|
`<option value="${sanitizeHTML(
|
|
598
|
-
browser.toLowerCase()
|
|
599
|
-
)}">${sanitizeHTML(capitalize(browser))}</option
|
|
610
|
+
browser.toLowerCase(),
|
|
611
|
+
)}">${sanitizeHTML(capitalize(browser))}</option>`,
|
|
600
612
|
)
|
|
601
613
|
.join("")}
|
|
602
614
|
</select>
|