@crvy/rprtr 0.1.4 → 0.2.3
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/CHANGELOG.md +66 -0
- package/README.md +8 -7
- package/dist/{chunk-KLGJSEKV.js → chunk-473CWZ4V.js} +539 -130
- package/dist/{chunk-WRMHUY5A.js → chunk-HAFWYUNO.js} +181 -130
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +6 -4
- package/dist/index.css +26 -0
- package/dist/index.js +300 -79
- package/dist/offline-reports.d.ts +4 -0
- package/dist/offline-reports.d.ts.map +1 -1
- package/dist/report-state.d.ts +3 -1
- package/dist/report-state.d.ts.map +1 -1
- package/dist/reporter-utils.d.ts +0 -1
- package/dist/reporter-utils.d.ts.map +1 -1
- package/dist/reporter.cjs +186 -134
- package/dist/reporter.d.ts +1 -1
- package/dist/reporter.d.ts.map +1 -1
- package/dist/reporter.js +8 -6
- package/dist/schemas/http.d.ts +44 -0
- package/dist/schemas/http.d.ts.map +1 -0
- package/dist/schemas.d.ts +25 -6
- package/dist/schemas.d.ts.map +1 -1
- package/dist/server/app.d.ts +8 -1
- package/dist/server/app.d.ts.map +1 -1
- package/dist/server/handlers.d.ts +6 -0
- package/dist/server/handlers.d.ts.map +1 -1
- package/dist/server/playwright-config.d.ts +2 -0
- package/dist/server/playwright-config.d.ts.map +1 -0
- package/dist/server/report-persistence.d.ts +27 -0
- package/dist/server/report-persistence.d.ts.map +1 -0
- package/dist/server/routes-context.d.ts +13 -0
- package/dist/server/routes-context.d.ts.map +1 -0
- package/dist/server/routes.d.ts +6 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/run-controller.d.ts +87 -0
- package/dist/server/run-controller.d.ts.map +1 -0
- package/dist/server/run-routes.d.ts +3 -0
- package/dist/server/run-routes.d.ts.map +1 -0
- package/dist/server/shutdown.d.ts +17 -0
- package/dist/server/shutdown.d.ts.map +1 -0
- package/dist/server.cjs +733 -276
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -2
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -5
|
@@ -170,169 +170,211 @@ function resolveBaselineTargets(input) {
|
|
|
170
170
|
}
|
|
171
171
|
|
|
172
172
|
// src/schemas.ts
|
|
173
|
+
import { z as z2 } from "zod";
|
|
174
|
+
|
|
175
|
+
// src/schemas/http.ts
|
|
173
176
|
import { z } from "zod";
|
|
174
|
-
var
|
|
177
|
+
var ApproveRequestBodySchema = z.object({
|
|
178
|
+
id: z.string(),
|
|
179
|
+
retry: z.number(),
|
|
180
|
+
image: z.string()
|
|
181
|
+
});
|
|
182
|
+
var RunTestDescriptorSchema = z.object({
|
|
175
183
|
file: z.string(),
|
|
176
|
-
line: z.number()
|
|
184
|
+
line: z.number(),
|
|
185
|
+
column: z.number().optional(),
|
|
186
|
+
projectName: z.string().optional(),
|
|
187
|
+
titlePath: z.array(z.string())
|
|
177
188
|
});
|
|
178
|
-
var
|
|
179
|
-
|
|
180
|
-
actual: z.string().optional(),
|
|
181
|
-
expect: z.string().optional(),
|
|
182
|
-
diff: z.string().optional(),
|
|
183
|
-
error: z.string().optional(),
|
|
184
|
-
source: VisualSourceSchema.optional()
|
|
189
|
+
var RunRequestBodySchema = z.object({
|
|
190
|
+
tests: z.array(RunTestDescriptorSchema).optional()
|
|
185
191
|
});
|
|
186
|
-
var
|
|
192
|
+
var RunResponseSchema = z.discriminatedUnion("ok", [
|
|
193
|
+
z.object({ ok: z.literal(true) }),
|
|
187
194
|
z.object({
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
}),
|
|
195
|
+
ok: z.literal(false),
|
|
196
|
+
reason: z.enum(["no-config", "already-running", "no-tests"])
|
|
197
|
+
})
|
|
198
|
+
]);
|
|
199
|
+
var StopResponseSchema = z.discriminatedUnion("ok", [
|
|
200
|
+
z.object({ ok: z.literal(true) }),
|
|
194
201
|
z.object({
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
202
|
+
ok: z.literal(false),
|
|
203
|
+
reason: z.literal("not-running")
|
|
204
|
+
})
|
|
205
|
+
]);
|
|
206
|
+
|
|
207
|
+
// src/schemas.ts
|
|
208
|
+
var LocationSchema = z2.object({
|
|
209
|
+
file: z2.string(),
|
|
210
|
+
line: z2.number(),
|
|
211
|
+
column: z2.number().optional()
|
|
212
|
+
});
|
|
213
|
+
var VisualSourceSchema = z2.enum(["comparison", "baseline-only", "declared-only"]);
|
|
214
|
+
var ImagesSchema = z2.object({
|
|
215
|
+
actual: z2.string().optional(),
|
|
216
|
+
expect: z2.string().optional(),
|
|
217
|
+
diff: z2.string().optional(),
|
|
218
|
+
error: z2.string().optional(),
|
|
219
|
+
source: VisualSourceSchema.optional()
|
|
220
|
+
});
|
|
221
|
+
var ScreenshotDeclarationSchema = z2.discriminatedUnion("kind", [
|
|
222
|
+
z2.object({
|
|
223
|
+
visualName: z2.string(),
|
|
224
|
+
kind: z2.literal("named"),
|
|
225
|
+
declaredName: z2.string(),
|
|
226
|
+
snapshotBaseName: z2.string(),
|
|
227
|
+
occurrenceIndex: z2.number()
|
|
228
|
+
}),
|
|
229
|
+
z2.object({
|
|
230
|
+
visualName: z2.string(),
|
|
231
|
+
kind: z2.literal("unnamed"),
|
|
232
|
+
occurrenceIndex: z2.number()
|
|
198
233
|
})
|
|
199
234
|
]);
|
|
200
|
-
var AttachmentSchema =
|
|
201
|
-
name:
|
|
202
|
-
path:
|
|
203
|
-
contentType:
|
|
235
|
+
var AttachmentSchema = z2.object({
|
|
236
|
+
name: z2.string(),
|
|
237
|
+
path: z2.string(),
|
|
238
|
+
contentType: z2.string()
|
|
204
239
|
});
|
|
205
|
-
var TestStatusSchema =
|
|
206
|
-
var TestResultStatusSchema =
|
|
207
|
-
var TestResultSchema =
|
|
240
|
+
var TestStatusSchema = z2.enum(["unknown", "pending", "running", "failed", "approved", "success", "retrying"]);
|
|
241
|
+
var TestResultStatusSchema = z2.enum(["failed", "success", "pending"]);
|
|
242
|
+
var TestResultSchema = z2.object({
|
|
208
243
|
status: TestResultStatusSchema,
|
|
209
|
-
retries:
|
|
210
|
-
images:
|
|
211
|
-
visualDeclarations:
|
|
212
|
-
error:
|
|
213
|
-
duration:
|
|
244
|
+
retries: z2.number(),
|
|
245
|
+
images: z2.record(z2.string(), ImagesSchema).optional(),
|
|
246
|
+
visualDeclarations: z2.array(ScreenshotDeclarationSchema).optional(),
|
|
247
|
+
error: z2.string().optional(),
|
|
248
|
+
duration: z2.number().optional()
|
|
214
249
|
});
|
|
215
|
-
var TestDataSchema =
|
|
216
|
-
id:
|
|
217
|
-
titlePath:
|
|
218
|
-
browser:
|
|
219
|
-
projectName:
|
|
220
|
-
title:
|
|
221
|
-
skip:
|
|
222
|
-
retries:
|
|
250
|
+
var TestDataSchema = z2.object({
|
|
251
|
+
id: z2.string(),
|
|
252
|
+
titlePath: z2.array(z2.string()),
|
|
253
|
+
browser: z2.string(),
|
|
254
|
+
projectName: z2.string().optional(),
|
|
255
|
+
title: z2.string(),
|
|
256
|
+
skip: z2.union([z2.boolean(), z2.string()]).optional(),
|
|
257
|
+
retries: z2.number().optional(),
|
|
223
258
|
status: TestStatusSchema.optional(),
|
|
224
|
-
results:
|
|
225
|
-
approved:
|
|
226
|
-
attachments:
|
|
259
|
+
results: z2.array(TestResultSchema).optional(),
|
|
260
|
+
approved: z2.record(z2.string(), z2.number()).nullable().optional(),
|
|
261
|
+
attachments: z2.array(AttachmentSchema).optional(),
|
|
227
262
|
location: LocationSchema.optional()
|
|
228
263
|
});
|
|
229
264
|
var CrvyRprtrTestSchema = TestDataSchema.extend({
|
|
230
|
-
checked:
|
|
265
|
+
checked: z2.boolean()
|
|
231
266
|
});
|
|
232
|
-
var CrvyRprtrSuiteSchema =
|
|
233
|
-
() =>
|
|
234
|
-
path:
|
|
235
|
-
skip:
|
|
267
|
+
var CrvyRprtrSuiteSchema = z2.lazy(
|
|
268
|
+
() => z2.object({
|
|
269
|
+
path: z2.array(z2.string()),
|
|
270
|
+
skip: z2.boolean(),
|
|
236
271
|
status: TestStatusSchema.optional(),
|
|
237
|
-
opened:
|
|
238
|
-
checked:
|
|
239
|
-
indeterminate:
|
|
240
|
-
children:
|
|
272
|
+
opened: z2.boolean(),
|
|
273
|
+
checked: z2.boolean(),
|
|
274
|
+
indeterminate: z2.boolean(),
|
|
275
|
+
children: z2.record(z2.string(), z2.union([CrvyRprtrSuiteSchema, CrvyRprtrTestSchema])).optional()
|
|
241
276
|
})
|
|
242
277
|
);
|
|
243
|
-
var IncomingWebSocketMessageSchema =
|
|
244
|
-
type:
|
|
245
|
-
data:
|
|
278
|
+
var IncomingWebSocketMessageSchema = z2.object({
|
|
279
|
+
type: z2.enum(["test-begin", "test-end", "run-end", "approve", "sync", "register"]),
|
|
280
|
+
data: z2.unknown()
|
|
246
281
|
});
|
|
247
|
-
var WebSocketMessageSchema =
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
type:
|
|
252
|
-
data:
|
|
253
|
-
status:
|
|
254
|
-
removedTestIds:
|
|
282
|
+
var WebSocketMessageSchema = z2.discriminatedUnion("type", [
|
|
283
|
+
z2.object({ type: z2.literal("test-begin"), data: TestDataSchema }),
|
|
284
|
+
z2.object({ type: z2.literal("test-update"), data: TestDataSchema }),
|
|
285
|
+
z2.object({
|
|
286
|
+
type: z2.literal("run-end"),
|
|
287
|
+
data: z2.object({
|
|
288
|
+
status: z2.enum(["passed", "failed", "skipped"]),
|
|
289
|
+
removedTestIds: z2.array(z2.string())
|
|
255
290
|
})
|
|
256
291
|
}),
|
|
257
|
-
|
|
258
|
-
type:
|
|
259
|
-
data:
|
|
260
|
-
tests:
|
|
261
|
-
isUpdateMode:
|
|
292
|
+
z2.object({
|
|
293
|
+
type: z2.literal("sync"),
|
|
294
|
+
data: z2.object({
|
|
295
|
+
tests: z2.record(z2.string(), TestDataSchema),
|
|
296
|
+
isUpdateMode: z2.boolean().optional()
|
|
262
297
|
})
|
|
263
298
|
}),
|
|
264
|
-
|
|
299
|
+
z2.object({ type: z2.literal("approve"), data: z2.unknown() }),
|
|
300
|
+
z2.object({
|
|
301
|
+
type: z2.literal("run-status"),
|
|
302
|
+
data: z2.object({
|
|
303
|
+
running: z2.boolean()
|
|
304
|
+
})
|
|
305
|
+
})
|
|
265
306
|
]);
|
|
266
|
-
var TestBeginDataSchema =
|
|
267
|
-
id:
|
|
268
|
-
title:
|
|
269
|
-
titlePath:
|
|
270
|
-
browser:
|
|
271
|
-
projectName:
|
|
307
|
+
var TestBeginDataSchema = z2.object({
|
|
308
|
+
id: z2.string(),
|
|
309
|
+
title: z2.string(),
|
|
310
|
+
titlePath: z2.array(z2.string()),
|
|
311
|
+
browser: z2.string(),
|
|
312
|
+
projectName: z2.string().optional(),
|
|
272
313
|
location: LocationSchema
|
|
273
314
|
});
|
|
274
|
-
var TestEndDataSchema =
|
|
275
|
-
id:
|
|
276
|
-
status:
|
|
277
|
-
attachments:
|
|
278
|
-
visualNames:
|
|
279
|
-
visualDeclarations:
|
|
315
|
+
var TestEndDataSchema = z2.object({
|
|
316
|
+
id: z2.string(),
|
|
317
|
+
status: z2.enum(["passed", "failed", "skipped"]),
|
|
318
|
+
attachments: z2.array(AttachmentSchema),
|
|
319
|
+
visualNames: z2.array(z2.string()).default([]),
|
|
320
|
+
visualDeclarations: z2.preprocess(
|
|
280
321
|
(value) => value === null ? void 0 : value,
|
|
281
|
-
|
|
322
|
+
z2.array(ScreenshotDeclarationSchema).optional()
|
|
282
323
|
),
|
|
283
|
-
error:
|
|
284
|
-
duration:
|
|
324
|
+
error: z2.string().optional(),
|
|
325
|
+
duration: z2.number().optional()
|
|
285
326
|
});
|
|
286
|
-
var RunEndDataSchema =
|
|
287
|
-
status:
|
|
327
|
+
var RunEndDataSchema = z2.object({
|
|
328
|
+
status: z2.enum(["passed", "failed", "skipped"])
|
|
288
329
|
});
|
|
289
|
-
var RegisterDataSchema =
|
|
290
|
-
playwrightSnapshotDir:
|
|
291
|
-
playwrightTestDir:
|
|
292
|
-
playwrightSnapshotPathTemplate:
|
|
293
|
-
playwrightToHaveScreenshotPathTemplate:
|
|
330
|
+
var RegisterDataSchema = z2.object({
|
|
331
|
+
playwrightSnapshotDir: z2.string().optional(),
|
|
332
|
+
playwrightTestDir: z2.string().optional(),
|
|
333
|
+
playwrightSnapshotPathTemplate: z2.string().optional(),
|
|
334
|
+
playwrightToHaveScreenshotPathTemplate: z2.string().optional(),
|
|
335
|
+
configFile: z2.string().optional(),
|
|
336
|
+
cwd: z2.string().optional()
|
|
294
337
|
});
|
|
295
|
-
var ReportDataSchema =
|
|
296
|
-
isRunning:
|
|
297
|
-
tests:
|
|
298
|
-
browsers:
|
|
299
|
-
isUpdateMode:
|
|
300
|
-
screenshotDir:
|
|
338
|
+
var ReportDataSchema = z2.object({
|
|
339
|
+
isRunning: z2.boolean(),
|
|
340
|
+
tests: z2.record(z2.string(), TestDataSchema),
|
|
341
|
+
browsers: z2.array(z2.string()),
|
|
342
|
+
isUpdateMode: z2.boolean(),
|
|
343
|
+
screenshotDir: z2.string()
|
|
301
344
|
});
|
|
302
|
-
var LoadedReportDataSchema =
|
|
303
|
-
tests:
|
|
304
|
-
isUpdateMode:
|
|
345
|
+
var LoadedReportDataSchema = z2.object({
|
|
346
|
+
tests: z2.record(z2.string(), TestDataSchema).optional(),
|
|
347
|
+
isUpdateMode: z2.boolean().optional()
|
|
305
348
|
});
|
|
306
|
-
var OfflineEventSchema =
|
|
307
|
-
type:
|
|
308
|
-
data:
|
|
309
|
-
timestamp:
|
|
310
|
-
workerIndex:
|
|
349
|
+
var OfflineEventSchema = z2.object({
|
|
350
|
+
type: z2.enum(["test-begin", "test-end", "run-end"]),
|
|
351
|
+
data: z2.unknown(),
|
|
352
|
+
timestamp: z2.number(),
|
|
353
|
+
workerIndex: z2.number()
|
|
311
354
|
});
|
|
312
|
-
var OfflineReportSchema =
|
|
313
|
-
version:
|
|
314
|
-
generatedAt:
|
|
315
|
-
workers:
|
|
316
|
-
events:
|
|
355
|
+
var OfflineReportSchema = z2.object({
|
|
356
|
+
version: z2.number(),
|
|
357
|
+
generatedAt: z2.string(),
|
|
358
|
+
workers: z2.number(),
|
|
359
|
+
events: z2.array(OfflineEventSchema)
|
|
317
360
|
});
|
|
318
|
-
var
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
361
|
+
var ReportApiResponseSchema = z2.object({
|
|
362
|
+
tests: z2.record(z2.string(), TestDataSchema),
|
|
363
|
+
isUpdateMode: z2.boolean().optional(),
|
|
364
|
+
isRunning: z2.boolean().optional(),
|
|
365
|
+
runEnabled: z2.boolean().optional()
|
|
322
366
|
});
|
|
323
|
-
var
|
|
324
|
-
tests: z.record(z.string(), TestDataSchema),
|
|
325
|
-
isUpdateMode: z.boolean().optional()
|
|
326
|
-
});
|
|
327
|
-
var ClientBootstrapDataSchema = z.object({
|
|
367
|
+
var ClientBootstrapDataSchema = z2.object({
|
|
328
368
|
report: ReportApiResponseSchema.extend({
|
|
329
|
-
isUpdateMode:
|
|
369
|
+
isUpdateMode: z2.boolean()
|
|
330
370
|
}),
|
|
331
|
-
liveUpdates:
|
|
332
|
-
approvalEnabled:
|
|
333
|
-
approvalMessage:
|
|
371
|
+
liveUpdates: z2.boolean(),
|
|
372
|
+
approvalEnabled: z2.boolean(),
|
|
373
|
+
approvalMessage: z2.string().optional(),
|
|
374
|
+
runEnabled: z2.boolean().optional(),
|
|
375
|
+
isRunning: z2.boolean().optional()
|
|
334
376
|
});
|
|
335
|
-
var ImagesViewModeSchema =
|
|
377
|
+
var ImagesViewModeSchema = z2.enum(["side-by-side", "swap", "slide", "blend"]);
|
|
336
378
|
function safeParse(schema, data) {
|
|
337
379
|
const result = schema.safeParse(data);
|
|
338
380
|
if (result.success) {
|
|
@@ -484,7 +526,12 @@ function createMutableReportState(screenshotDir = "./screenshots") {
|
|
|
484
526
|
function applyTestBeginEvent(state, data) {
|
|
485
527
|
const { id, title, titlePath, browser, projectName, location } = data;
|
|
486
528
|
state.currentRunIds.add(id);
|
|
487
|
-
state.reportData.tests[id]
|
|
529
|
+
const existing = state.reportData.tests[id];
|
|
530
|
+
if (existing !== void 0) {
|
|
531
|
+
existing.status = "running";
|
|
532
|
+
return existing;
|
|
533
|
+
}
|
|
534
|
+
const created = {
|
|
488
535
|
id,
|
|
489
536
|
titlePath: titlePath ?? [],
|
|
490
537
|
browser: browser ?? "",
|
|
@@ -496,7 +543,8 @@ function applyTestBeginEvent(state, data) {
|
|
|
496
543
|
location,
|
|
497
544
|
status: "running"
|
|
498
545
|
};
|
|
499
|
-
|
|
546
|
+
state.reportData.tests[id] = created;
|
|
547
|
+
return created;
|
|
500
548
|
}
|
|
501
549
|
function applyTestEndEvent(state, data, options = {}) {
|
|
502
550
|
const test = state.reportData.tests[data.id];
|
|
@@ -534,11 +582,13 @@ function applyTestEndEvent(state, data, options = {}) {
|
|
|
534
582
|
diffCount
|
|
535
583
|
};
|
|
536
584
|
}
|
|
537
|
-
function finalizeRunEvent(state) {
|
|
585
|
+
function finalizeRunEvent(state, options = {}) {
|
|
538
586
|
state.reportData.isRunning = false;
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
587
|
+
if (options.preserveNonCurrent !== true) {
|
|
588
|
+
state.reportData.tests = Object.fromEntries(
|
|
589
|
+
Object.entries(state.reportData.tests).filter(([id]) => state.currentRunIds.has(id))
|
|
590
|
+
);
|
|
591
|
+
}
|
|
542
592
|
state.currentRunIds.clear();
|
|
543
593
|
const runTests = Object.values(state.reportData.tests).filter((test) => test !== void 0);
|
|
544
594
|
return {
|
|
@@ -554,6 +604,8 @@ export {
|
|
|
554
604
|
applyTestBeginEvent,
|
|
555
605
|
applyTestEndEvent,
|
|
556
606
|
finalizeRunEvent,
|
|
607
|
+
ApproveRequestBodySchema,
|
|
608
|
+
RunRequestBodySchema,
|
|
557
609
|
IncomingWebSocketMessageSchema,
|
|
558
610
|
TestBeginDataSchema,
|
|
559
611
|
TestEndDataSchema,
|
|
@@ -561,7 +613,6 @@ export {
|
|
|
561
613
|
RegisterDataSchema,
|
|
562
614
|
LoadedReportDataSchema,
|
|
563
615
|
OfflineReportSchema,
|
|
564
|
-
ApproveRequestBodySchema,
|
|
565
616
|
ClientBootstrapDataSchema,
|
|
566
617
|
safeParse,
|
|
567
618
|
withResolvedVisualNames,
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAKA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAO7D,UAAU,kBAAmB,SAAQ,aAAa;IAChD,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAKA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAO7D,UAAU,kBAAmB,SAAQ,aAAa;IAChD,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,kBAAkB,CA8BpE"}
|
package/dist/cli.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
startServer
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-473CWZ4V.js";
|
|
5
|
+
import "./chunk-HAFWYUNO.js";
|
|
6
6
|
|
|
7
7
|
// src/cli.ts
|
|
8
8
|
import { join } from "path";
|
|
@@ -40,7 +40,8 @@ function resolveCliOptions(args) {
|
|
|
40
40
|
port: { type: "string", short: "p", default: `${DEFAULT_PORT}` },
|
|
41
41
|
"screenshot-dir": { type: "string", short: "s" },
|
|
42
42
|
"report-path": { type: "string", short: "r" },
|
|
43
|
-
"output-dir": { type: "string", short: "o" }
|
|
43
|
+
"output-dir": { type: "string", short: "o" },
|
|
44
|
+
config: { type: "string", short: "c" }
|
|
44
45
|
}
|
|
45
46
|
});
|
|
46
47
|
if (positionals.length > 1) {
|
|
@@ -53,7 +54,8 @@ function resolveCliOptions(args) {
|
|
|
53
54
|
port: parseInt(values.port ?? `${DEFAULT_PORT}`, 10),
|
|
54
55
|
screenshotDir,
|
|
55
56
|
reportPath,
|
|
56
|
-
outputDir: values["output-dir"] ?? DEFAULT_OUTPUT_DIR
|
|
57
|
+
outputDir: values["output-dir"] ?? DEFAULT_OUTPUT_DIR,
|
|
58
|
+
playwrightConfig: values.config
|
|
57
59
|
};
|
|
58
60
|
}
|
|
59
61
|
if (isDirectExecution(import.meta.url)) {
|
package/dist/index.css
CHANGED
|
@@ -215,6 +215,9 @@
|
|
|
215
215
|
.pointer-events-none {
|
|
216
216
|
pointer-events: none;
|
|
217
217
|
}
|
|
218
|
+
.invisible {
|
|
219
|
+
visibility: hidden;
|
|
220
|
+
}
|
|
218
221
|
.visible {
|
|
219
222
|
visibility: visible;
|
|
220
223
|
}
|
|
@@ -251,6 +254,9 @@
|
|
|
251
254
|
.left-0\.5 {
|
|
252
255
|
left: calc(var(--spacing) * 0.5);
|
|
253
256
|
}
|
|
257
|
+
.isolate {
|
|
258
|
+
isolation: isolate;
|
|
259
|
+
}
|
|
254
260
|
.z-10 {
|
|
255
261
|
z-index: 10;
|
|
256
262
|
}
|
|
@@ -721,6 +727,9 @@
|
|
|
721
727
|
.text-\[9px\] {
|
|
722
728
|
font-size: 9px;
|
|
723
729
|
}
|
|
730
|
+
.text-\[10px\] {
|
|
731
|
+
font-size: 10px;
|
|
732
|
+
}
|
|
724
733
|
.leading-6 {
|
|
725
734
|
--tw-leading: calc(var(--spacing) * 6);
|
|
726
735
|
line-height: calc(var(--spacing) * 6);
|
|
@@ -839,6 +848,11 @@
|
|
|
839
848
|
.filter {
|
|
840
849
|
filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
|
|
841
850
|
}
|
|
851
|
+
.transition {
|
|
852
|
+
transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
|
|
853
|
+
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
854
|
+
transition-duration: var(--tw-duration, var(--default-transition-duration));
|
|
855
|
+
}
|
|
842
856
|
.transition-all {
|
|
843
857
|
transition-property: all;
|
|
844
858
|
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
|
|
@@ -867,6 +881,13 @@
|
|
|
867
881
|
-webkit-user-select: none;
|
|
868
882
|
user-select: none;
|
|
869
883
|
}
|
|
884
|
+
.group-hover\:opacity-100 {
|
|
885
|
+
&:is(:where(.group):hover *) {
|
|
886
|
+
@media (hover: hover) {
|
|
887
|
+
opacity: 100%;
|
|
888
|
+
}
|
|
889
|
+
}
|
|
890
|
+
}
|
|
870
891
|
.placeholder\:text-fg-muted {
|
|
871
892
|
&::placeholder {
|
|
872
893
|
color: var(--color-fg-muted);
|
|
@@ -906,6 +927,11 @@
|
|
|
906
927
|
border-color: var(--color-accent);
|
|
907
928
|
}
|
|
908
929
|
}
|
|
930
|
+
.focus\:opacity-100 {
|
|
931
|
+
&:focus {
|
|
932
|
+
opacity: 100%;
|
|
933
|
+
}
|
|
934
|
+
}
|
|
909
935
|
.focus-visible\:ring-2 {
|
|
910
936
|
&:focus-visible {
|
|
911
937
|
--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
|