elit 3.3.3 → 3.3.5
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/build.d.mts +1 -1
- package/dist/build.js +1 -0
- package/dist/build.js.map +1 -0
- package/dist/build.mjs +1 -0
- package/dist/build.mjs.map +1 -0
- package/dist/chokidar.js +1 -0
- package/dist/chokidar.js.map +1 -0
- package/dist/chokidar.mjs +1 -0
- package/dist/chokidar.mjs.map +1 -0
- package/dist/cli.js +4720 -37
- package/dist/config.d.mts +3 -1
- package/dist/config.d.ts +3 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -0
- package/dist/config.mjs +1 -0
- package/dist/config.mjs.map +1 -0
- package/dist/coverage.d.mts +85 -0
- package/dist/coverage.d.ts +76 -0
- package/dist/coverage.d.ts.map +1 -0
- package/dist/coverage.js +1549 -0
- package/dist/coverage.js.map +1 -0
- package/dist/coverage.mjs +1520 -0
- package/dist/coverage.mjs.map +1 -0
- package/dist/database.d.mts +31 -6
- package/dist/database.d.ts +31 -6
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +60 -33
- package/dist/database.js.map +1 -0
- package/dist/database.mjs +60 -33
- package/dist/database.mjs.map +1 -0
- package/dist/dom.js +1 -0
- package/dist/dom.js.map +1 -0
- package/dist/dom.mjs +1 -0
- package/dist/dom.mjs.map +1 -0
- package/dist/el.js +1 -0
- package/dist/el.js.map +1 -0
- package/dist/el.mjs +1 -0
- package/dist/el.mjs.map +1 -0
- package/dist/fs.js +1 -0
- package/dist/fs.js.map +1 -0
- package/dist/fs.mjs +1 -0
- package/dist/fs.mjs.map +1 -0
- package/dist/hmr.js +1 -0
- package/dist/hmr.js.map +1 -0
- package/dist/hmr.mjs +1 -0
- package/dist/hmr.mjs.map +1 -0
- package/dist/http.js +1 -0
- package/dist/http.js.map +1 -0
- package/dist/http.mjs +1 -0
- package/dist/http.mjs.map +1 -0
- package/dist/https.d.mts +1 -1
- package/dist/https.js +1 -0
- package/dist/https.js.map +1 -0
- package/dist/https.mjs +1 -0
- package/dist/https.mjs.map +1 -0
- package/dist/index.d.mts +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -0
- package/dist/mime-types.js +1 -0
- package/dist/mime-types.js.map +1 -0
- package/dist/mime-types.mjs +1 -0
- package/dist/mime-types.mjs.map +1 -0
- package/dist/path.js +1 -0
- package/dist/path.js.map +1 -0
- package/dist/path.mjs +1 -0
- package/dist/path.mjs.map +1 -0
- package/dist/router.js +1 -0
- package/dist/router.js.map +1 -0
- package/dist/router.mjs +1 -0
- package/dist/router.mjs.map +1 -0
- package/dist/runtime.js +1 -0
- package/dist/runtime.js.map +1 -0
- package/dist/runtime.mjs +1 -0
- package/dist/runtime.mjs.map +1 -0
- package/dist/{server-Cz3z-5ls.d.mts → server-BFTzgJpO.d.mts} +62 -1
- package/dist/{server-BG2CaVMh.d.ts → server-CIXtexNS.d.ts} +62 -1
- package/dist/server.d.mts +1 -1
- package/dist/server.d.ts +9 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +45 -3
- package/dist/server.js.map +1 -0
- package/dist/server.mjs +45 -3
- package/dist/server.mjs.map +1 -0
- package/dist/state.d.mts +1 -1
- package/dist/state.js +1 -0
- package/dist/state.js.map +1 -0
- package/dist/state.mjs +1 -0
- package/dist/state.mjs.map +1 -0
- package/dist/style.js +1 -0
- package/dist/style.js.map +1 -0
- package/dist/style.mjs +1 -0
- package/dist/style.mjs.map +1 -0
- package/dist/test-globals.d.ts +184 -0
- package/dist/test-reporter.d.mts +77 -0
- package/dist/test-reporter.d.ts +73 -0
- package/dist/test-reporter.d.ts.map +1 -0
- package/dist/test-reporter.js +726 -0
- package/dist/test-reporter.js.map +1 -0
- package/dist/test-reporter.mjs +696 -0
- package/dist/test-reporter.mjs.map +1 -0
- package/dist/test-runtime.d.mts +122 -0
- package/dist/test-runtime.d.ts +120 -0
- package/dist/test-runtime.d.ts.map +1 -0
- package/dist/test-runtime.js +1292 -0
- package/dist/test-runtime.js.map +1 -0
- package/dist/test-runtime.mjs +1269 -0
- package/dist/test-runtime.mjs.map +1 -0
- package/dist/test.d.mts +39 -0
- package/dist/test.d.ts +38 -0
- package/dist/test.d.ts.map +1 -0
- package/dist/test.js +4966 -0
- package/dist/test.js.map +1 -0
- package/dist/test.mjs +4944 -0
- package/dist/test.mjs.map +1 -0
- package/dist/types.d.mts +62 -1
- package/dist/types.d.ts +52 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/types.mjs +1 -0
- package/dist/types.mjs.map +1 -0
- package/dist/ws.d.ts.map +1 -1
- package/dist/ws.js +24 -2
- package/dist/ws.js.map +1 -0
- package/dist/ws.mjs +24 -2
- package/dist/ws.mjs.map +1 -0
- package/dist/wss.js +24 -2
- package/dist/wss.js.map +1 -0
- package/dist/wss.mjs +24 -2
- package/dist/wss.mjs.map +1 -0
- package/package.json +37 -5
- package/src/cli.ts +165 -1
- package/src/config.ts +3 -1
- package/src/coverage.ts +1479 -0
- package/src/database.ts +71 -35
- package/src/server.ts +25 -1
- package/src/test-globals.d.ts +184 -0
- package/src/test-reporter.ts +609 -0
- package/src/test-runtime.ts +1359 -0
- package/src/test.ts +368 -0
- package/src/types.ts +59 -0
- package/src/ws.ts +32 -2
package/src/cli.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { createDevServer } from './server';
|
|
|
8
8
|
import { build } from './build';
|
|
9
9
|
import type { DevServerOptions, BuildOptions, PreviewOptions } from './types';
|
|
10
10
|
|
|
11
|
-
const COMMANDS = ['dev', 'build', 'preview', 'help', 'version'] as const;
|
|
11
|
+
const COMMANDS = ['dev', 'build', 'preview', 'test', 'help', 'version'] as const;
|
|
12
12
|
type Command = typeof COMMANDS[number];
|
|
13
13
|
|
|
14
14
|
/**
|
|
@@ -97,6 +97,9 @@ async function main() {
|
|
|
97
97
|
case 'preview':
|
|
98
98
|
await runPreview(args.slice(1));
|
|
99
99
|
break;
|
|
100
|
+
case 'test':
|
|
101
|
+
await runTest(args.slice(1));
|
|
102
|
+
break;
|
|
100
103
|
case 'version':
|
|
101
104
|
printVersion();
|
|
102
105
|
break;
|
|
@@ -278,6 +281,148 @@ async function runPreview(args: string[]) {
|
|
|
278
281
|
setupShutdownHandlers(() => devServer.close());
|
|
279
282
|
}
|
|
280
283
|
|
|
284
|
+
async function runTest(args: string[]) {
|
|
285
|
+
const cliOptions = parseTestArgs(args);
|
|
286
|
+
const config = await loadConfig();
|
|
287
|
+
|
|
288
|
+
// Merge config test options with CLI options (CLI options take precedence)
|
|
289
|
+
let options = config?.test
|
|
290
|
+
? { ...config.test, ...cliOptions } as TestOptions
|
|
291
|
+
: cliOptions;
|
|
292
|
+
|
|
293
|
+
// Import test runner dynamically
|
|
294
|
+
const { runJestTests, runWatchMode } = await import('./test');
|
|
295
|
+
|
|
296
|
+
// Determine run mode based on flags
|
|
297
|
+
// Default behavior: run once, use --watch/-w for watch mode
|
|
298
|
+
const isWatch = options.watch;
|
|
299
|
+
|
|
300
|
+
if (isWatch) {
|
|
301
|
+
// Watch mode (explicit --watch or -w flag)
|
|
302
|
+
await runWatchMode({
|
|
303
|
+
files: options.files,
|
|
304
|
+
include: options.include,
|
|
305
|
+
exclude: options.exclude,
|
|
306
|
+
reporter: options.reporter,
|
|
307
|
+
timeout: options.timeout,
|
|
308
|
+
bail: options.bail,
|
|
309
|
+
coverage: options.coverage,
|
|
310
|
+
describePattern: options.describe,
|
|
311
|
+
testPattern: options.testName,
|
|
312
|
+
});
|
|
313
|
+
} else {
|
|
314
|
+
// Run once mode (default behavior)
|
|
315
|
+
await runJestTests({
|
|
316
|
+
files: options.files,
|
|
317
|
+
include: options.include,
|
|
318
|
+
exclude: options.exclude,
|
|
319
|
+
reporter: options.reporter,
|
|
320
|
+
timeout: options.timeout,
|
|
321
|
+
bail: options.bail,
|
|
322
|
+
coverage: options.coverage,
|
|
323
|
+
describePattern: options.describe,
|
|
324
|
+
testPattern: options.testName,
|
|
325
|
+
});
|
|
326
|
+
|
|
327
|
+
// Exit with appropriate code
|
|
328
|
+
process.exit(0);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
interface TestOptions {
|
|
333
|
+
files?: string[];
|
|
334
|
+
include?: string[];
|
|
335
|
+
exclude?: string[];
|
|
336
|
+
reporter?: 'default' | 'dot' | 'json' | 'verbose';
|
|
337
|
+
timeout?: number;
|
|
338
|
+
testTimeout?: number;
|
|
339
|
+
bail?: boolean;
|
|
340
|
+
run?: boolean;
|
|
341
|
+
watch?: boolean;
|
|
342
|
+
describe?: string;
|
|
343
|
+
testName?: string;
|
|
344
|
+
coverage?: {
|
|
345
|
+
enabled: boolean;
|
|
346
|
+
provider: 'v8' | 'istanbul';
|
|
347
|
+
reporter?: ('text' | 'html' | 'lcov' | 'json' | 'coverage-final.json' | 'clover')[];
|
|
348
|
+
include?: string[];
|
|
349
|
+
exclude?: string[];
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
function parseTestArgs(args: string[]): TestOptions {
|
|
354
|
+
const options: TestOptions = {};
|
|
355
|
+
|
|
356
|
+
// Parse flags first to determine mode
|
|
357
|
+
for (let i = 0; i < args.length; i++) {
|
|
358
|
+
const arg = args[i];
|
|
359
|
+
|
|
360
|
+
switch (arg) {
|
|
361
|
+
case '--run':
|
|
362
|
+
case '-r':
|
|
363
|
+
options.run = true;
|
|
364
|
+
break;
|
|
365
|
+
case '--watch':
|
|
366
|
+
case '-w':
|
|
367
|
+
options.watch = true;
|
|
368
|
+
break;
|
|
369
|
+
case '--coverage':
|
|
370
|
+
case '-c':
|
|
371
|
+
options.coverage = {
|
|
372
|
+
enabled: true,
|
|
373
|
+
provider: 'v8',
|
|
374
|
+
reporter: ['text', 'html'],
|
|
375
|
+
};
|
|
376
|
+
break;
|
|
377
|
+
case '--coverage-reporter':
|
|
378
|
+
case '-cr':
|
|
379
|
+
// Parse comma-separated reporter list
|
|
380
|
+
const reporterValue = args[++i];
|
|
381
|
+
if (reporterValue) {
|
|
382
|
+
const reporters = reporterValue.split(',').map(r => r.trim()) as ('text' | 'html' | 'lcov' | 'json' | 'coverage-final.json' | 'clover')[];
|
|
383
|
+
if (!options.coverage) {
|
|
384
|
+
options.coverage = {
|
|
385
|
+
enabled: true,
|
|
386
|
+
provider: 'v8',
|
|
387
|
+
reporter: reporters,
|
|
388
|
+
};
|
|
389
|
+
} else {
|
|
390
|
+
options.coverage.enabled = true;
|
|
391
|
+
options.coverage.reporter = reporters;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
break;
|
|
395
|
+
case '--file':
|
|
396
|
+
case '-f':
|
|
397
|
+
// Parse comma-separated file list
|
|
398
|
+
const filesValue = args[++i];
|
|
399
|
+
if (filesValue) {
|
|
400
|
+
// Split by comma and trim whitespace
|
|
401
|
+
options.files = filesValue.split(',').map(f => f.trim());
|
|
402
|
+
}
|
|
403
|
+
break;
|
|
404
|
+
case '--describe':
|
|
405
|
+
case '-d':
|
|
406
|
+
// Parse describe name filter
|
|
407
|
+
const describeValue = args[++i];
|
|
408
|
+
if (describeValue) {
|
|
409
|
+
options.describe = describeValue;
|
|
410
|
+
}
|
|
411
|
+
break;
|
|
412
|
+
case '--it':
|
|
413
|
+
case '-t':
|
|
414
|
+
// Parse test name filter
|
|
415
|
+
const testValue = args[++i];
|
|
416
|
+
if (testValue) {
|
|
417
|
+
options.testName = testValue;
|
|
418
|
+
}
|
|
419
|
+
break;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
return options;
|
|
424
|
+
}
|
|
425
|
+
|
|
281
426
|
function parseDevArgs(args: string[]): Partial<DevServerOptions> {
|
|
282
427
|
const options: Partial<DevServerOptions> = {};
|
|
283
428
|
|
|
@@ -345,6 +490,7 @@ Commands:
|
|
|
345
490
|
dev Start development server
|
|
346
491
|
build Build for production
|
|
347
492
|
preview Preview production build
|
|
493
|
+
test Run tests
|
|
348
494
|
version Show version number
|
|
349
495
|
help Show this help message
|
|
350
496
|
|
|
@@ -382,6 +528,24 @@ Note: Preview mode has full feature parity with dev mode:
|
|
|
382
528
|
- Proxy forwarding and Web Workers
|
|
383
529
|
- HTTPS support, custom middleware, and SSR
|
|
384
530
|
|
|
531
|
+
Test Options:
|
|
532
|
+
-r, --run Run all tests once (default, same as no flags)
|
|
533
|
+
-w, --watch Run in watch mode
|
|
534
|
+
-f, --file <files> Run specific files (comma-separated), e.g.: --file ./test1.test.ts,./test2.spec.ts
|
|
535
|
+
-d, --describe <name> Run only tests matching describe name, e.g.: --describe "Footer Component"
|
|
536
|
+
-t, --it <name> Run only tests matching test name, e.g.: --it "should create"
|
|
537
|
+
-c, --coverage Generate coverage report
|
|
538
|
+
-cr, --coverage-reporter <reporters> Coverage reporter formats (comma-separated): text, html, lcov, json, coverage-final.json, clover
|
|
539
|
+
|
|
540
|
+
Note: Test command behaviors:
|
|
541
|
+
- elit test Run all tests once (default)
|
|
542
|
+
- elit test --run Run all tests once (same as default)
|
|
543
|
+
- elit test -f ./test.ts Run specific file(s) once
|
|
544
|
+
- elit test -d "Footer" Run only tests in describe blocks matching "Footer"
|
|
545
|
+
- elit test -t "should create" Run only tests matching "should create"
|
|
546
|
+
- elit test --watch Run in watch mode
|
|
547
|
+
- elit test --coverage Run with coverage report
|
|
548
|
+
|
|
385
549
|
Config File:
|
|
386
550
|
Create elit.config.ts, elit.config.js, or elit.config.json in project root
|
|
387
551
|
|
package/src/config.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import { existsSync, readFileSync } from './fs';
|
|
6
6
|
import { resolve } from './path';
|
|
7
|
-
import type { DevServerOptions, BuildOptions, PreviewOptions } from './types';
|
|
7
|
+
import type { DevServerOptions, BuildOptions, PreviewOptions, TestOptions } from './types';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Helper: Read file and ensure string output (eliminates duplication in file reading)
|
|
@@ -54,6 +54,8 @@ export interface ElitConfig {
|
|
|
54
54
|
build?: BuildOptions | BuildOptions[];
|
|
55
55
|
/** Preview server configuration */
|
|
56
56
|
preview?: PreviewOptions;
|
|
57
|
+
/** Test configuration */
|
|
58
|
+
test?: TestOptions;
|
|
57
59
|
}
|
|
58
60
|
|
|
59
61
|
/**
|