@levr-one/cli 0.9.30 → 0.10.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 +10 -10
- package/dist/cli.js +8 -21
- package/dist/{importHandler-r9ynjdNv.js → importHandler-TVAFta_i.js} +2 -2
- package/dist/{listHandler-D15Qm_g3.js → listHandler-AYN1KpE-.js} +1 -1
- package/dist/{loginHandler-DS9P6oO_.js → loginHandler-CX2L4fjs.js} +2 -2
- package/dist/{pushHandler-BKHPXveG.js → pushHandler-Ck7lMC39.js} +2 -5
- package/dist/{resolve-workspace-Lsb77Zgi.js → resolve-workspace-Ba9NuCRq.js} +1 -1
- package/dist/{runHandler-844a5HNE.js → runHandler-COp3W6GN.js} +2 -2
- package/dist/{sdk-client-M5r7px3O.js → sdk-client-DHD7tgY0.js} +0 -7
- package/dist/{selectHandler-CPEvi2Zm.js → selectHandler-CzolM41G.js} +1 -1
- package/dist/{statusHandler-CoVkm9zn.js → statusHandler-BvK4zSEf.js} +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -142,16 +142,15 @@ levr push ./results.xml --source "backend-unit-tests" --run-name "nightly"
|
|
|
142
142
|
|
|
143
143
|
**Flags:**
|
|
144
144
|
|
|
145
|
-
| Flag
|
|
146
|
-
|
|
|
147
|
-
| `--
|
|
148
|
-
| `--
|
|
149
|
-
| `--
|
|
150
|
-
| `--
|
|
151
|
-
| `--
|
|
152
|
-
| `--
|
|
153
|
-
| `--
|
|
154
|
-
| `--verbose` | `-v` | Show detailed output |
|
|
145
|
+
| Flag | Alias | Description |
|
|
146
|
+
| ---------------------------- | ----- | ------------------------------------------------------------------------------------------------------------ |
|
|
147
|
+
| `--workspace-id <uuid>` | `-w` | Workspace ID (required for multi-workspace JWT auth) |
|
|
148
|
+
| `--team-id <uuid>` | `-t` | Team ID (optional; server resolves default if omitted. Or set `LEVR_TEAM_ID`) |
|
|
149
|
+
| `--source <name>` | `-s` | Automation source name — groups recurring imports and remembers team (auto-detected in CI). Required unless `--automation-source` is set |
|
|
150
|
+
| `--automation-source <uuid>` | `-a` | UUID of an existing automation source (never creates one). Used instead of `--source`. Or set `LEVR_AUTOMATION_SOURCE_ID` |
|
|
151
|
+
| `--run-name <name>` | `-r` | Name for the test run |
|
|
152
|
+
| `--format <type>` | `-f` | File format: `junit`, `gherkin`, `cucumber-json`, `ctrf-json` (auto-detected if omitted) |
|
|
153
|
+
| `--verbose` | `-v` | Show detailed output |
|
|
155
154
|
|
|
156
155
|
### Automation sources
|
|
157
156
|
|
|
@@ -352,6 +351,7 @@ All configuration is via environment variables. Flags take precedence.
|
|
|
352
351
|
| `LEVR_MCP_URL` | MCP server URL written by `levr mcp add` (derived from the API URL when unset) | derived |
|
|
353
352
|
| `LEVR_TEAM_ID` | Default team ID (optional; server resolves from automation source or workspace default) | |
|
|
354
353
|
| `LEVR_SOURCE` | Automation source name override (groups imports, remembers team) | |
|
|
354
|
+
| `LEVR_AUTOMATION_SOURCE_ID` | UUID of an existing automation source; used instead of the source name (same as `--automation-source`) | |
|
|
355
355
|
|
|
356
356
|
## Troubleshooting
|
|
357
357
|
|
package/dist/cli.js
CHANGED
|
@@ -213,7 +213,7 @@ Examples:
|
|
|
213
213
|
aliases: { d: "device-code" }
|
|
214
214
|
},
|
|
215
215
|
loader: async () => {
|
|
216
|
-
const { loginHandler } = await import("./loginHandler-
|
|
216
|
+
const { loginHandler } = await import("./loginHandler-CX2L4fjs.js");
|
|
217
217
|
return loginHandler;
|
|
218
218
|
}
|
|
219
219
|
});
|
|
@@ -252,7 +252,7 @@ Examples:
|
|
|
252
252
|
},
|
|
253
253
|
parameters: {},
|
|
254
254
|
loader: async () => {
|
|
255
|
-
const { statusHandler } = await import("./statusHandler-
|
|
255
|
+
const { statusHandler } = await import("./statusHandler-BvK4zSEf.js");
|
|
256
256
|
return statusHandler;
|
|
257
257
|
}
|
|
258
258
|
});
|
|
@@ -339,19 +339,6 @@ Examples:
|
|
|
339
339
|
brief: "File format (auto-detected if omitted)",
|
|
340
340
|
optional: true
|
|
341
341
|
},
|
|
342
|
-
"parent-folder-id": {
|
|
343
|
-
kind: "parsed",
|
|
344
|
-
parse: String,
|
|
345
|
-
brief: "Destination folder ID",
|
|
346
|
-
placeholder: "uuid",
|
|
347
|
-
optional: true
|
|
348
|
-
},
|
|
349
|
-
"update-mode": {
|
|
350
|
-
kind: "enum",
|
|
351
|
-
values: ["update", "create_new"],
|
|
352
|
-
default: "update",
|
|
353
|
-
brief: "How to handle existing tests"
|
|
354
|
-
},
|
|
355
342
|
verbose: {
|
|
356
343
|
kind: "boolean",
|
|
357
344
|
default: false,
|
|
@@ -369,7 +356,7 @@ Examples:
|
|
|
369
356
|
}
|
|
370
357
|
},
|
|
371
358
|
loader: async () => {
|
|
372
|
-
const { pushHandler } = await import("./pushHandler-
|
|
359
|
+
const { pushHandler } = await import("./pushHandler-Ck7lMC39.js");
|
|
373
360
|
return pushHandler;
|
|
374
361
|
}
|
|
375
362
|
});
|
|
@@ -489,7 +476,7 @@ Examples:
|
|
|
489
476
|
}
|
|
490
477
|
},
|
|
491
478
|
loader: async () => {
|
|
492
|
-
const { importHandler } = await import("./importHandler-
|
|
479
|
+
const { importHandler } = await import("./importHandler-TVAFta_i.js");
|
|
493
480
|
return importHandler;
|
|
494
481
|
}
|
|
495
482
|
});
|
|
@@ -510,7 +497,7 @@ Examples:
|
|
|
510
497
|
},
|
|
511
498
|
parameters: {},
|
|
512
499
|
loader: async () => {
|
|
513
|
-
const { listHandler } = await import("./listHandler-
|
|
500
|
+
const { listHandler } = await import("./listHandler-AYN1KpE-.js");
|
|
514
501
|
return listHandler;
|
|
515
502
|
}
|
|
516
503
|
});
|
|
@@ -543,7 +530,7 @@ Examples:
|
|
|
543
530
|
flags: {}
|
|
544
531
|
},
|
|
545
532
|
loader: async () => {
|
|
546
|
-
const { selectHandler } = await import("./selectHandler-
|
|
533
|
+
const { selectHandler } = await import("./selectHandler-CzolM41G.js");
|
|
547
534
|
return selectHandler;
|
|
548
535
|
}
|
|
549
536
|
});
|
|
@@ -629,14 +616,14 @@ Examples:
|
|
|
629
616
|
}
|
|
630
617
|
},
|
|
631
618
|
loader: async () => {
|
|
632
|
-
const { gatesRunHandler } = await import("./runHandler-
|
|
619
|
+
const { gatesRunHandler } = await import("./runHandler-COp3W6GN.js");
|
|
633
620
|
return gatesRunHandler;
|
|
634
621
|
}
|
|
635
622
|
});
|
|
636
623
|
|
|
637
624
|
//#endregion
|
|
638
625
|
//#region package.json
|
|
639
|
-
var version = "0.
|
|
626
|
+
var version = "0.10.0";
|
|
640
627
|
|
|
641
628
|
//#endregion
|
|
642
629
|
//#region src/app.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getApiUrl, getTeamId } from "./env-CHeKHu5S.js";
|
|
2
|
-
import { authGetProfileV1, configureClient, teamFindAllV1, testCaseImportCommitV1, testCaseImportPreviewV1 } from "./sdk-client-
|
|
2
|
+
import { authGetProfileV1, configureClient, teamFindAllV1, testCaseImportCommitV1, testCaseImportPreviewV1 } from "./sdk-client-DHD7tgY0.js";
|
|
3
3
|
import "./workspace-store-DDOxnut1.js";
|
|
4
|
-
import { resolveWorkspace } from "./resolve-workspace-
|
|
4
|
+
import { resolveWorkspace } from "./resolve-workspace-Ba9NuCRq.js";
|
|
5
5
|
import "./token-refresh-Cu5RpkLJ.js";
|
|
6
6
|
import { resolveToken } from "./resolve-token-DbQsmn03.js";
|
|
7
7
|
import chalk from "chalk";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./env-CHeKHu5S.js";
|
|
2
|
-
import { authGetSitesV1, configureClient } from "./sdk-client-
|
|
2
|
+
import { authGetSitesV1, configureClient } from "./sdk-client-DHD7tgY0.js";
|
|
3
3
|
import { loadWorkspace } from "./workspace-store-DDOxnut1.js";
|
|
4
4
|
import "./token-refresh-Cu5RpkLJ.js";
|
|
5
5
|
import { resolveToken } from "./resolve-token-DbQsmn03.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CLI_CLIENT_ID, getApiUrl, getAuthUrl, setSessionApiUrl, writeCredentials } from "./env-CHeKHu5S.js";
|
|
2
|
-
import { configureClient } from "./sdk-client-
|
|
2
|
+
import { configureClient } from "./sdk-client-DHD7tgY0.js";
|
|
3
3
|
import "./workspace-store-DDOxnut1.js";
|
|
4
|
-
import { autoSelectWorkspace } from "./resolve-workspace-
|
|
4
|
+
import { autoSelectWorkspace } from "./resolve-workspace-Ba9NuCRq.js";
|
|
5
5
|
import chalk from "chalk";
|
|
6
6
|
import { createHash, randomBytes } from "node:crypto";
|
|
7
7
|
import { createServer } from "node:http";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getApiUrl, getAutomationSourceIdOverride, getSourceOverride, getTeamId } from "./env-CHeKHu5S.js";
|
|
2
|
-
import { client, configureClient, uploadImport } from "./sdk-client-
|
|
2
|
+
import { client, configureClient, uploadImport } from "./sdk-client-DHD7tgY0.js";
|
|
3
3
|
import "./workspace-store-DDOxnut1.js";
|
|
4
|
-
import { resolveWorkspace } from "./resolve-workspace-
|
|
4
|
+
import { resolveWorkspace } from "./resolve-workspace-Ba9NuCRq.js";
|
|
5
5
|
import "./token-refresh-Cu5RpkLJ.js";
|
|
6
6
|
import { resolveToken } from "./resolve-token-DbQsmn03.js";
|
|
7
7
|
import { readFileSync, statSync } from "node:fs";
|
|
@@ -429,7 +429,6 @@ async function pushHandler(flags, file) {
|
|
|
429
429
|
this.logger.debug(`Team: ${uploadTeamId ?? (automationSourceId ? "(automation source's team)" : "(server default)")}`);
|
|
430
430
|
this.logger.debug(`File: ${file} (${formatBytes(fileStat.size)})`);
|
|
431
431
|
if (flags.format) this.logger.debug(`Format: ${flags.format}`);
|
|
432
|
-
if (flags["update-mode"]) this.logger.debug(`Update mode: ${flags["update-mode"]}`);
|
|
433
432
|
if (automationSourceId) this.logger.debug(`Automation source: ${automationSourceId} (${automationSourceOrigin})`);
|
|
434
433
|
else if (sourceName) this.logger.debug(`Source: ${sourceName} (${sourceOrigin})`);
|
|
435
434
|
if (ciMeta) {
|
|
@@ -452,9 +451,7 @@ async function pushHandler(flags, file) {
|
|
|
452
451
|
file: new File([fileBuffer], fileName),
|
|
453
452
|
fileName,
|
|
454
453
|
format: flags.format,
|
|
455
|
-
parentFolderId: flags["parent-folder-id"],
|
|
456
454
|
runName: flags["run-name"],
|
|
457
|
-
updateMode: flags["update-mode"],
|
|
458
455
|
...automationSourceId ? { automationSourceId } : { automationSource: sourceName },
|
|
459
456
|
importMetadata: ciMeta
|
|
460
457
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./env-CHeKHu5S.js";
|
|
2
|
-
import { client, configureClient, issueFindAllV1, issueGateVerificationReportGateResultsV1, issueGateVerificationVerifyGatesV1 } from "./sdk-client-
|
|
2
|
+
import { client, configureClient, issueFindAllV1, issueGateVerificationReportGateResultsV1, issueGateVerificationVerifyGatesV1 } from "./sdk-client-DHD7tgY0.js";
|
|
3
3
|
import "./workspace-store-DDOxnut1.js";
|
|
4
|
-
import { resolveWorkspace } from "./resolve-workspace-
|
|
4
|
+
import { resolveWorkspace } from "./resolve-workspace-Ba9NuCRq.js";
|
|
5
5
|
import "./token-refresh-Cu5RpkLJ.js";
|
|
6
6
|
import { resolveToken } from "./resolve-token-DbQsmn03.js";
|
|
7
7
|
import { existsSync } from "node:fs";
|
|
@@ -15124,9 +15124,7 @@ const zImportCreateV1Body = z.object({
|
|
|
15124
15124
|
"cucumber-json",
|
|
15125
15125
|
"ctrf-json"
|
|
15126
15126
|
]).optional().describe(""),
|
|
15127
|
-
parent_folder_id: z.string().optional().describe(""),
|
|
15128
15127
|
run_name: z.string().max(250).optional().describe(""),
|
|
15129
|
-
update_mode: z.enum(["update", "create_new"]).optional().describe(""),
|
|
15130
15128
|
automation_source: z.string().max(100).optional().describe(""),
|
|
15131
15129
|
automation_source_id: z.string().optional().describe(""),
|
|
15132
15130
|
import_metadata: z.string().optional().describe("")
|
|
@@ -27787,9 +27785,6 @@ const zOpenStreamingRunDto = z.object({
|
|
|
27787
27785
|
team_id: z.string().optional().describe(""),
|
|
27788
27786
|
automation_source: z.string().max(100).describe(""),
|
|
27789
27787
|
run_name: z.string().max(250).optional().describe(""),
|
|
27790
|
-
parent_folder_id: z.string().optional().describe(""),
|
|
27791
|
-
parent_folder_name: z.string().max(250).optional().describe(""),
|
|
27792
|
-
update_mode: z.enum(["update", "create_new"]).optional().describe(""),
|
|
27793
27788
|
metadata: z.record(z.string(), z.unknown()).optional().describe("")
|
|
27794
27789
|
});
|
|
27795
27790
|
const zStreamingRunResponseDto = z.object({
|
|
@@ -32035,9 +32030,7 @@ async function uploadImport(options) {
|
|
|
32035
32030
|
file: options.file,
|
|
32036
32031
|
team_id: options.teamId,
|
|
32037
32032
|
format: options.format,
|
|
32038
|
-
parent_folder_id: options.parentFolderId,
|
|
32039
32033
|
run_name: options.runName,
|
|
32040
|
-
update_mode: options.updateMode,
|
|
32041
32034
|
automation_source: options.automationSource,
|
|
32042
32035
|
automation_source_id: options.automationSourceId,
|
|
32043
32036
|
import_metadata: options.importMetadata ? JSON.stringify(options.importMetadata) : void 0
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./env-CHeKHu5S.js";
|
|
2
|
-
import { authGetSitesV1, configureClient } from "./sdk-client-
|
|
2
|
+
import { authGetSitesV1, configureClient } from "./sdk-client-DHD7tgY0.js";
|
|
3
3
|
import { saveWorkspace } from "./workspace-store-DDOxnut1.js";
|
|
4
4
|
import "./token-refresh-Cu5RpkLJ.js";
|
|
5
5
|
import { resolveToken } from "./resolve-token-DbQsmn03.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getApiUrl, getPatToken, readCredentials } from "./env-CHeKHu5S.js";
|
|
2
|
-
import { authGetProfileV1, configureClient } from "./sdk-client-
|
|
2
|
+
import { authGetProfileV1, configureClient } from "./sdk-client-DHD7tgY0.js";
|
|
3
3
|
import { isTokenExpired } from "./token-refresh-Cu5RpkLJ.js";
|
|
4
4
|
import chalk from "chalk";
|
|
5
5
|
|