@midleman/playwright-reporter 0.1.0
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/README.md +373 -0
- package/dist/buffers.d.ts +13 -0
- package/dist/buffers.d.ts.map +1 -0
- package/dist/buffers.js +58 -0
- package/dist/buffers.js.map +1 -0
- package/dist/counts.d.ts +32 -0
- package/dist/counts.d.ts.map +1 -0
- package/dist/counts.js +66 -0
- package/dist/counts.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/payload.d.ts +33 -0
- package/dist/payload.d.ts.map +1 -0
- package/dist/payload.js +87 -0
- package/dist/payload.js.map +1 -0
- package/dist/payload.test.d.ts +2 -0
- package/dist/payload.test.d.ts.map +1 -0
- package/dist/payload.test.js +198 -0
- package/dist/payload.test.js.map +1 -0
- package/dist/reporter.d.ts +47 -0
- package/dist/reporter.d.ts.map +1 -0
- package/dist/reporter.js +470 -0
- package/dist/reporter.js.map +1 -0
- package/dist/reporter.test.d.ts +2 -0
- package/dist/reporter.test.d.ts.map +1 -0
- package/dist/reporter.test.js +216 -0
- package/dist/reporter.test.js.map +1 -0
- package/dist/schemas.d.ts +485 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +128 -0
- package/dist/schemas.js.map +1 -0
- package/dist/schemas.test.d.ts +2 -0
- package/dist/schemas.test.d.ts.map +1 -0
- package/dist/schemas.test.js +313 -0
- package/dist/schemas.test.js.map +1 -0
- package/dist/storage/api.d.ts +13 -0
- package/dist/storage/api.d.ts.map +1 -0
- package/dist/storage/api.js +86 -0
- package/dist/storage/api.js.map +1 -0
- package/dist/storage/api.test.d.ts +2 -0
- package/dist/storage/api.test.d.ts.map +1 -0
- package/dist/storage/api.test.js +184 -0
- package/dist/storage/api.test.js.map +1 -0
- package/dist/storage/parquet.d.ts +10 -0
- package/dist/storage/parquet.d.ts.map +1 -0
- package/dist/storage/parquet.js +157 -0
- package/dist/storage/parquet.js.map +1 -0
- package/dist/storage/s3.d.ts +35 -0
- package/dist/storage/s3.d.ts.map +1 -0
- package/dist/storage/s3.js +129 -0
- package/dist/storage/s3.js.map +1 -0
- package/dist/types.d.ts +36 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +26 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +44 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +195 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.test.d.ts +2 -0
- package/dist/utils.test.d.ts.map +1 -0
- package/dist/utils.test.js +150 -0
- package/dist/utils.test.js.map +1 -0
- package/package.json +41 -0
package/dist/utils.js
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.toRelativeSpec = exports.inferBrowserFromProject = exports.clamp = exports.b64url = exports.shortRef = exports.iso = void 0;
|
|
40
|
+
exports.getGithubMetadata = getGithubMetadata;
|
|
41
|
+
exports.getRepoName = getRepoName;
|
|
42
|
+
exports.getRunId = getRunId;
|
|
43
|
+
exports.getDatePartition = getDatePartition;
|
|
44
|
+
exports.inferOs = inferOs;
|
|
45
|
+
exports.fetchCommitInfo = fetchCommitInfo;
|
|
46
|
+
exports.buildReportUrl = buildReportUrl;
|
|
47
|
+
const path_1 = __importDefault(require("path"));
|
|
48
|
+
/** Generate ISO timestamp */
|
|
49
|
+
const iso = (d) => (d ? new Date(d) : new Date()).toISOString();
|
|
50
|
+
exports.iso = iso;
|
|
51
|
+
/** Extract short ref from full GitHub ref */
|
|
52
|
+
const shortRef = (ref) => {
|
|
53
|
+
if (!ref)
|
|
54
|
+
return undefined;
|
|
55
|
+
const parts = ref.split('/');
|
|
56
|
+
if (parts.length >= 3 && parts[0] === 'refs' && parts[1] === 'heads')
|
|
57
|
+
return parts.slice(2).join('/');
|
|
58
|
+
if (parts.length >= 3 && parts[0] === 'refs' && parts[1] === 'tags')
|
|
59
|
+
return parts.slice(2).join('/');
|
|
60
|
+
return ref;
|
|
61
|
+
};
|
|
62
|
+
exports.shortRef = shortRef;
|
|
63
|
+
/** Generate URL-safe base64 string */
|
|
64
|
+
const b64url = (s) => Buffer.from(s).toString('base64').replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_');
|
|
65
|
+
exports.b64url = b64url;
|
|
66
|
+
/** Clamp number to range */
|
|
67
|
+
const clamp = (n, lo, hi) => Math.max(lo, Math.min(hi, n));
|
|
68
|
+
exports.clamp = clamp;
|
|
69
|
+
/** Infer browser name from Playwright project name */
|
|
70
|
+
const inferBrowserFromProject = (proj) => {
|
|
71
|
+
if (!proj)
|
|
72
|
+
return undefined;
|
|
73
|
+
const p = proj.toLowerCase();
|
|
74
|
+
if (p.includes('electron'))
|
|
75
|
+
return 'electron';
|
|
76
|
+
if (p.includes('chromium'))
|
|
77
|
+
return 'chromium';
|
|
78
|
+
if (p.includes('firefox'))
|
|
79
|
+
return 'firefox';
|
|
80
|
+
if (p.includes('webkit'))
|
|
81
|
+
return 'webkit';
|
|
82
|
+
if (p.includes('chrome'))
|
|
83
|
+
return 'chrome';
|
|
84
|
+
if (p.includes('edge'))
|
|
85
|
+
return 'edge';
|
|
86
|
+
if (p.includes('safari'))
|
|
87
|
+
return 'safari';
|
|
88
|
+
return undefined;
|
|
89
|
+
};
|
|
90
|
+
exports.inferBrowserFromProject = inferBrowserFromProject;
|
|
91
|
+
/** Convert absolute spec path to relative path */
|
|
92
|
+
const toRelativeSpec = (repoRoot, p) => {
|
|
93
|
+
try {
|
|
94
|
+
return path_1.default.relative(repoRoot, p) || p;
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return p || 'unknown';
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
exports.toRelativeSpec = toRelativeSpec;
|
|
101
|
+
/** Extract GitHub Actions metadata from environment */
|
|
102
|
+
function getGithubMetadata() {
|
|
103
|
+
const branchName = (0, exports.shortRef)(process.env.GITHUB_REF) || process.env.GITHUB_HEAD_REF || process.env.BRANCH;
|
|
104
|
+
const sha = process.env.GITHUB_SHA || process.env.COMMIT_SHA;
|
|
105
|
+
const workflowName = process.env.GITHUB_WORKFLOW || process.env.WORKFLOW_NAME;
|
|
106
|
+
const jobName = process.env.GITHUB_JOB || process.env.JOB_NAME;
|
|
107
|
+
let runUrl;
|
|
108
|
+
if (process.env.GITHUB_SERVER_URL && process.env.GITHUB_REPOSITORY && process.env.GITHUB_RUN_ID) {
|
|
109
|
+
runUrl = `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}/actions/runs/${process.env.GITHUB_RUN_ID}`;
|
|
110
|
+
}
|
|
111
|
+
return { branchName, sha, workflowName, jobName, runUrl };
|
|
112
|
+
}
|
|
113
|
+
/** Get repository name from environment or options */
|
|
114
|
+
function getRepoName(optionValue) {
|
|
115
|
+
if (optionValue)
|
|
116
|
+
return optionValue;
|
|
117
|
+
const fromEnv = process.env.REPORTER_REPO_NAME || process.env.GITHUB_REPOSITORY;
|
|
118
|
+
if (fromEnv) {
|
|
119
|
+
// GITHUB_REPOSITORY is "owner/repo", extract just repo name
|
|
120
|
+
const parts = fromEnv.split('/');
|
|
121
|
+
return parts[parts.length - 1];
|
|
122
|
+
}
|
|
123
|
+
return 'local';
|
|
124
|
+
}
|
|
125
|
+
/** Get run ID from environment or generate one */
|
|
126
|
+
function getRunId() {
|
|
127
|
+
// In GitHub Actions, use workflow run ID + attempt for uniqueness across retries
|
|
128
|
+
const runId = process.env.GITHUB_RUN_ID;
|
|
129
|
+
const attempt = process.env.GITHUB_RUN_ATTEMPT || '1';
|
|
130
|
+
if (runId) {
|
|
131
|
+
return `${runId}-${attempt}`;
|
|
132
|
+
}
|
|
133
|
+
// Local development: generate unique ID
|
|
134
|
+
return `local-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
135
|
+
}
|
|
136
|
+
/** Get current date in YYYY-MM-DD format for partitioning */
|
|
137
|
+
function getDatePartition() {
|
|
138
|
+
return new Date().toISOString().split('T')[0];
|
|
139
|
+
}
|
|
140
|
+
/** Infer OS from platform or environment */
|
|
141
|
+
function inferOs() {
|
|
142
|
+
const platform = process.platform;
|
|
143
|
+
if (platform === 'darwin')
|
|
144
|
+
return 'mac';
|
|
145
|
+
if (platform === 'win32')
|
|
146
|
+
return 'win';
|
|
147
|
+
return 'linux';
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Get commit info using git commands
|
|
151
|
+
* Works locally and in CI without requiring API tokens
|
|
152
|
+
*/
|
|
153
|
+
async function fetchCommitInfo(sha) {
|
|
154
|
+
const { execSync } = await Promise.resolve().then(() => __importStar(require('child_process')));
|
|
155
|
+
try {
|
|
156
|
+
// Use provided SHA or HEAD
|
|
157
|
+
const ref = sha || 'HEAD';
|
|
158
|
+
// Get commit subject line (first line only, no newlines)
|
|
159
|
+
const message = execSync(`git log -1 --format=%s ${ref}`, {
|
|
160
|
+
encoding: 'utf-8',
|
|
161
|
+
timeout: 5000,
|
|
162
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
163
|
+
}).trim();
|
|
164
|
+
// Get commit author name
|
|
165
|
+
const author = execSync(`git log -1 --format=%an ${ref}`, {
|
|
166
|
+
encoding: 'utf-8',
|
|
167
|
+
timeout: 5000,
|
|
168
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
169
|
+
}).trim();
|
|
170
|
+
return {
|
|
171
|
+
message: message || undefined,
|
|
172
|
+
author: author || undefined,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
catch (err) {
|
|
176
|
+
// Git not available or not in a repo - silently return empty
|
|
177
|
+
// This is expected in some CI environments or when testing the reporter itself
|
|
178
|
+
return {};
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Build the report URL for a test in the Playwright HTML report
|
|
183
|
+
* Uses predictable CloudFront URL pattern
|
|
184
|
+
*/
|
|
185
|
+
function buildReportUrl(testId) {
|
|
186
|
+
const baseUrl = process.env.REPORT_BASE_URL || 'https://d38p2avprg8il3.cloudfront.net';
|
|
187
|
+
const runId = process.env.GITHUB_RUN_ID;
|
|
188
|
+
const attempt = process.env.GITHUB_RUN_ATTEMPT || '1';
|
|
189
|
+
// Only generate URL in CI environment
|
|
190
|
+
if (!runId)
|
|
191
|
+
return undefined;
|
|
192
|
+
const reportDir = `playwright-report-${runId}-${attempt}`;
|
|
193
|
+
return `${baseUrl}/${reportDir}/index.html#?testId=${encodeURIComponent(testId)}`;
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../src/utils.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const utils_1 = require("./utils");
|
|
5
|
+
(0, vitest_1.describe)('iso', () => {
|
|
6
|
+
(0, vitest_1.it)('returns ISO string for given date', () => {
|
|
7
|
+
const date = new Date('2024-01-15T10:30:00.000Z');
|
|
8
|
+
(0, vitest_1.expect)((0, utils_1.iso)(date)).toBe('2024-01-15T10:30:00.000Z');
|
|
9
|
+
});
|
|
10
|
+
(0, vitest_1.it)('returns current time ISO string when no date provided', () => {
|
|
11
|
+
const before = new Date().toISOString();
|
|
12
|
+
const result = (0, utils_1.iso)();
|
|
13
|
+
const after = new Date().toISOString();
|
|
14
|
+
(0, vitest_1.expect)(result >= before).toBe(true);
|
|
15
|
+
(0, vitest_1.expect)(result <= after).toBe(true);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
(0, vitest_1.describe)('b64url', () => {
|
|
19
|
+
(0, vitest_1.it)('encodes string to base64url', () => {
|
|
20
|
+
const result = (0, utils_1.b64url)('hello world');
|
|
21
|
+
(0, vitest_1.expect)(result).toBe(Buffer.from('hello world').toString('base64url'));
|
|
22
|
+
});
|
|
23
|
+
(0, vitest_1.it)('handles special characters', () => {
|
|
24
|
+
const result = (0, utils_1.b64url)('test::path/to/file.ts::test-id');
|
|
25
|
+
(0, vitest_1.expect)(result).toBeDefined();
|
|
26
|
+
// Should not contain + or / (base64url uses - and _)
|
|
27
|
+
(0, vitest_1.expect)(result).not.toMatch(/[+/]/);
|
|
28
|
+
});
|
|
29
|
+
(0, vitest_1.it)('produces consistent output', () => {
|
|
30
|
+
const input = 'run-123::tests/foo.spec.ts::test-456';
|
|
31
|
+
(0, vitest_1.expect)((0, utils_1.b64url)(input)).toBe((0, utils_1.b64url)(input));
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
(0, vitest_1.describe)('inferBrowserFromProject', () => {
|
|
35
|
+
vitest_1.it.each([
|
|
36
|
+
['chromium', 'chromium'],
|
|
37
|
+
['Chromium', 'chromium'],
|
|
38
|
+
['firefox', 'firefox'],
|
|
39
|
+
['Firefox', 'firefox'],
|
|
40
|
+
['webkit', 'webkit'],
|
|
41
|
+
['WebKit', 'webkit'],
|
|
42
|
+
['safari', 'safari'],
|
|
43
|
+
['Safari', 'safari'],
|
|
44
|
+
['chrome', 'chrome'],
|
|
45
|
+
['Chrome', 'chrome'],
|
|
46
|
+
['edge', 'edge'],
|
|
47
|
+
['Edge', 'edge'],
|
|
48
|
+
['electron', 'electron'],
|
|
49
|
+
['Electron Desktop', 'electron'],
|
|
50
|
+
])('infers browser from project name "%s"', (project, expected) => {
|
|
51
|
+
(0, vitest_1.expect)((0, utils_1.inferBrowserFromProject)(project)).toBe(expected);
|
|
52
|
+
});
|
|
53
|
+
(0, vitest_1.it)('returns undefined for non-browser project names', () => {
|
|
54
|
+
(0, vitest_1.expect)((0, utils_1.inferBrowserFromProject)('desktop')).toBeUndefined();
|
|
55
|
+
(0, vitest_1.expect)((0, utils_1.inferBrowserFromProject)('mobile')).toBeUndefined();
|
|
56
|
+
(0, vitest_1.expect)((0, utils_1.inferBrowserFromProject)('api')).toBeUndefined();
|
|
57
|
+
});
|
|
58
|
+
(0, vitest_1.it)('handles undefined project', () => {
|
|
59
|
+
(0, vitest_1.expect)((0, utils_1.inferBrowserFromProject)(undefined)).toBeUndefined();
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
(0, vitest_1.describe)('toRelativeSpec', () => {
|
|
63
|
+
(0, vitest_1.it)('converts absolute path to relative', () => {
|
|
64
|
+
const result = (0, utils_1.toRelativeSpec)('/home/user/project', '/home/user/project/tests/example.spec.ts');
|
|
65
|
+
(0, vitest_1.expect)(result).toBe('tests/example.spec.ts');
|
|
66
|
+
});
|
|
67
|
+
(0, vitest_1.it)('returns relative path without leading slash', () => {
|
|
68
|
+
const result = (0, utils_1.toRelativeSpec)('/home/user/project', '/home/user/project/tests/example.spec.ts');
|
|
69
|
+
(0, vitest_1.expect)(result.startsWith('/')).toBe(false);
|
|
70
|
+
});
|
|
71
|
+
(0, vitest_1.it)('returns relative path with ../ for paths outside repo root', () => {
|
|
72
|
+
const result = (0, utils_1.toRelativeSpec)('/home/user/project', '/other/path/test.ts');
|
|
73
|
+
// path.relative returns a relative path with ../
|
|
74
|
+
(0, vitest_1.expect)(result).toContain('..');
|
|
75
|
+
});
|
|
76
|
+
(0, vitest_1.it)('handles Windows-style paths', () => {
|
|
77
|
+
const result = (0, utils_1.toRelativeSpec)('C:\\Users\\dev\\project', 'C:\\Users\\dev\\project\\tests\\example.spec.ts');
|
|
78
|
+
(0, vitest_1.expect)(result).toBeDefined();
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
(0, vitest_1.describe)('getRepoName', () => {
|
|
82
|
+
const originalEnv = process.env;
|
|
83
|
+
(0, vitest_1.beforeEach)(() => {
|
|
84
|
+
vitest_1.vi.resetModules();
|
|
85
|
+
process.env = { ...originalEnv };
|
|
86
|
+
delete process.env.REPORTER_REPO_NAME;
|
|
87
|
+
delete process.env.GITHUB_REPOSITORY;
|
|
88
|
+
});
|
|
89
|
+
(0, vitest_1.afterEach)(() => {
|
|
90
|
+
process.env = originalEnv;
|
|
91
|
+
});
|
|
92
|
+
(0, vitest_1.it)('returns override if provided', () => {
|
|
93
|
+
(0, vitest_1.expect)((0, utils_1.getRepoName)('my-custom-repo')).toBe('my-custom-repo');
|
|
94
|
+
});
|
|
95
|
+
(0, vitest_1.it)('extracts repo name from GITHUB_REPOSITORY', () => {
|
|
96
|
+
process.env.GITHUB_REPOSITORY = 'posit-dev/positron';
|
|
97
|
+
(0, vitest_1.expect)((0, utils_1.getRepoName)()).toBe('positron');
|
|
98
|
+
});
|
|
99
|
+
(0, vitest_1.it)('returns "local" when no repo info available', () => {
|
|
100
|
+
(0, vitest_1.expect)((0, utils_1.getRepoName)()).toBe('local');
|
|
101
|
+
});
|
|
102
|
+
(0, vitest_1.it)('prefers REPORTER_REPO_NAME over GITHUB_REPOSITORY', () => {
|
|
103
|
+
process.env.REPORTER_REPO_NAME = 'custom-name';
|
|
104
|
+
process.env.GITHUB_REPOSITORY = 'posit-dev/positron';
|
|
105
|
+
(0, vitest_1.expect)((0, utils_1.getRepoName)()).toBe('custom-name');
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
(0, vitest_1.describe)('getRunId', () => {
|
|
109
|
+
const originalEnv = process.env;
|
|
110
|
+
(0, vitest_1.beforeEach)(() => {
|
|
111
|
+
vitest_1.vi.resetModules();
|
|
112
|
+
process.env = { ...originalEnv };
|
|
113
|
+
delete process.env.GITHUB_RUN_ID;
|
|
114
|
+
delete process.env.GITHUB_RUN_ATTEMPT;
|
|
115
|
+
});
|
|
116
|
+
(0, vitest_1.afterEach)(() => {
|
|
117
|
+
process.env = originalEnv;
|
|
118
|
+
});
|
|
119
|
+
(0, vitest_1.it)('returns GITHUB_RUN_ID with attempt number', () => {
|
|
120
|
+
process.env.GITHUB_RUN_ID = '123456789';
|
|
121
|
+
process.env.GITHUB_RUN_ATTEMPT = '2';
|
|
122
|
+
(0, vitest_1.expect)((0, utils_1.getRunId)()).toBe('123456789-2');
|
|
123
|
+
});
|
|
124
|
+
(0, vitest_1.it)('defaults attempt to 1 when not specified', () => {
|
|
125
|
+
process.env.GITHUB_RUN_ID = '123456789';
|
|
126
|
+
(0, vitest_1.expect)((0, utils_1.getRunId)()).toBe('123456789-1');
|
|
127
|
+
});
|
|
128
|
+
(0, vitest_1.it)('generates local ID when GITHUB_RUN_ID not available', () => {
|
|
129
|
+
const runId = (0, utils_1.getRunId)();
|
|
130
|
+
(0, vitest_1.expect)(runId).toMatch(/^local-\d+-[a-z0-9]+$/);
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
(0, vitest_1.describe)('getDatePartition', () => {
|
|
134
|
+
(0, vitest_1.it)('returns date in YYYY-MM-DD format', () => {
|
|
135
|
+
const result = (0, utils_1.getDatePartition)();
|
|
136
|
+
(0, vitest_1.expect)(result).toMatch(/^\d{4}-\d{2}-\d{2}$/);
|
|
137
|
+
});
|
|
138
|
+
(0, vitest_1.it)('returns current UTC date', () => {
|
|
139
|
+
const now = new Date();
|
|
140
|
+
const expected = now.toISOString().split('T')[0];
|
|
141
|
+
(0, vitest_1.expect)((0, utils_1.getDatePartition)()).toBe(expected);
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
(0, vitest_1.describe)('inferOs', () => {
|
|
145
|
+
(0, vitest_1.it)('returns valid OS enum value', () => {
|
|
146
|
+
const result = (0, utils_1.inferOs)();
|
|
147
|
+
(0, vitest_1.expect)(['mac', 'win', 'linux']).toContain(result);
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
//# sourceMappingURL=utils.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../src/utils.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@midleman/playwright-reporter",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Playwright reporter that writes test results to S3 as Parquet files",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "tsc",
|
|
9
|
+
"watch": "tsc --watch",
|
|
10
|
+
"test": "vitest run",
|
|
11
|
+
"test:watch": "vitest",
|
|
12
|
+
"test:coverage": "vitest run --coverage",
|
|
13
|
+
"clean": "rm -rf dist"
|
|
14
|
+
},
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"@aws-sdk/client-s3": "^3.500.0",
|
|
17
|
+
"@dsnp/parquetjs": "^1.8.0",
|
|
18
|
+
"zod": "^3.23.0"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@playwright/test": "^1.40.0",
|
|
22
|
+
"@types/node": "^20.0.0",
|
|
23
|
+
"@vitest/coverage-v8": "^4.0.17",
|
|
24
|
+
"typescript": "^5.4.0",
|
|
25
|
+
"vitest": "^4.0.17"
|
|
26
|
+
},
|
|
27
|
+
"peerDependencies": {
|
|
28
|
+
"@playwright/test": ">=1.40.0"
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"dist"
|
|
32
|
+
],
|
|
33
|
+
"keywords": [
|
|
34
|
+
"playwright",
|
|
35
|
+
"reporter",
|
|
36
|
+
"parquet",
|
|
37
|
+
"s3",
|
|
38
|
+
"test-results"
|
|
39
|
+
],
|
|
40
|
+
"license": "MIT"
|
|
41
|
+
}
|