@memberjunction/testing-cli 3.4.0 → 4.0.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/dist/commands/compare.d.ts +1 -1
- package/dist/commands/compare.js +4 -8
- package/dist/commands/compare.js.map +1 -1
- package/dist/commands/history.d.ts +1 -1
- package/dist/commands/history.js +4 -8
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/list.d.ts +1 -1
- package/dist/commands/list.js +32 -39
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/report.d.ts +1 -1
- package/dist/commands/report.js +4 -8
- package/dist/commands/report.js.map +1 -1
- package/dist/commands/run.d.ts +1 -1
- package/dist/commands/run.js +34 -38
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/suite.d.ts +1 -1
- package/dist/commands/suite.js +22 -26
- package/dist/commands/suite.js.map +1 -1
- package/dist/commands/validate.d.ts +1 -1
- package/dist/commands/validate.js +28 -58
- package/dist/commands/validate.js.map +1 -1
- package/dist/index.d.ts +12 -12
- package/dist/index.js +12 -40
- package/dist/index.js.map +1 -1
- package/dist/lib/mj-provider.js +20 -30
- package/dist/lib/mj-provider.js.map +1 -1
- package/dist/types.js +1 -2
- package/dist/types.js.map +1 -1
- package/dist/utils/config-loader.d.ts +1 -1
- package/dist/utils/config-loader.js +8 -16
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/output-formatter.d.ts +1 -1
- package/dist/utils/output-formatter.js +33 -63
- package/dist/utils/output-formatter.js.map +1 -1
- package/dist/utils/spinner-manager.js +3 -10
- package/dist/utils/spinner-manager.js.map +1 -1
- package/dist/utils/variable-parser.js +4 -9
- package/dist/utils/variable-parser.js.map +1 -1
- package/package.json +16 -15
package/dist/commands/compare.js
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @fileoverview Compare command implementation
|
|
4
3
|
* @module @memberjunction/testing-cli
|
|
5
4
|
*/
|
|
6
|
-
|
|
7
|
-
exports.CompareCommand = void 0;
|
|
8
|
-
const output_formatter_1 = require("../utils/output-formatter");
|
|
5
|
+
import { OutputFormatter } from '../utils/output-formatter.js';
|
|
9
6
|
/**
|
|
10
7
|
* Compare command - Compare test runs to detect regressions
|
|
11
8
|
*
|
|
12
9
|
* Note: This is a placeholder implementation. Full comparison requires
|
|
13
10
|
* tracking test runs with version/commit metadata.
|
|
14
11
|
*/
|
|
15
|
-
class CompareCommand {
|
|
12
|
+
export class CompareCommand {
|
|
16
13
|
/**
|
|
17
14
|
* Execute the compare command
|
|
18
15
|
*
|
|
@@ -23,7 +20,7 @@ class CompareCommand {
|
|
|
23
20
|
*/
|
|
24
21
|
async execute(runId1, runId2, flags, contextUser) {
|
|
25
22
|
try {
|
|
26
|
-
console.log(
|
|
23
|
+
console.log(OutputFormatter.formatInfo('Compare command not yet implemented'));
|
|
27
24
|
console.log('\nPlanned features:');
|
|
28
25
|
console.log(' - Compare two specific test runs by ID');
|
|
29
26
|
console.log(' - Compare runs by version or git commit');
|
|
@@ -41,10 +38,9 @@ class CompareCommand {
|
|
|
41
38
|
// - Exit with non-zero if regressions detected
|
|
42
39
|
}
|
|
43
40
|
catch (error) {
|
|
44
|
-
console.error(
|
|
41
|
+
console.error(OutputFormatter.formatError('Failed to compare test runs', error));
|
|
45
42
|
process.exit(1);
|
|
46
43
|
}
|
|
47
44
|
}
|
|
48
45
|
}
|
|
49
|
-
exports.CompareCommand = CompareCommand;
|
|
50
46
|
//# sourceMappingURL=compare.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/commands/compare.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/commands/compare.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,OAAO,cAAc;IACvB;;;;;;;OAOG;IACH,KAAK,CAAC,OAAO,CACT,MAA0B,EAC1B,MAA0B,EAC1B,KAAmB,EACnB,WAAsB;QAEtB,IAAI,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,qCAAqC,CAAC,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;YAEnE,kCAAkC;YAClC,qCAAqC;YACrC,qDAAqD;YACrD,yDAAyD;YACzD,oCAAoC;YACpC,+CAA+C;QAEnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,6BAA6B,EAAE,KAAc,CAAC,CAAC,CAAC;YAC1F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;CACJ"}
|
package/dist/commands/history.js
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @fileoverview History command implementation
|
|
4
3
|
* @module @memberjunction/testing-cli
|
|
5
4
|
*/
|
|
6
|
-
|
|
7
|
-
exports.HistoryCommand = void 0;
|
|
8
|
-
const output_formatter_1 = require("../utils/output-formatter");
|
|
5
|
+
import { OutputFormatter } from '../utils/output-formatter.js';
|
|
9
6
|
/**
|
|
10
7
|
* History command - View test execution history
|
|
11
8
|
*
|
|
12
9
|
* Note: This is a placeholder implementation. Full history tracking requires
|
|
13
10
|
* querying Test Run Results entities from the database.
|
|
14
11
|
*/
|
|
15
|
-
class HistoryCommand {
|
|
12
|
+
export class HistoryCommand {
|
|
16
13
|
/**
|
|
17
14
|
* Execute the history command
|
|
18
15
|
*
|
|
@@ -22,7 +19,7 @@ class HistoryCommand {
|
|
|
22
19
|
*/
|
|
23
20
|
async execute(testId, flags, contextUser) {
|
|
24
21
|
try {
|
|
25
|
-
console.log(
|
|
22
|
+
console.log(OutputFormatter.formatInfo('History command not yet implemented'));
|
|
26
23
|
console.log('\nPlanned features:');
|
|
27
24
|
console.log(' - View execution history for specific tests');
|
|
28
25
|
console.log(' - Filter by date range and status');
|
|
@@ -38,10 +35,9 @@ class HistoryCommand {
|
|
|
38
35
|
// - Show detailed oracle results in verbose mode
|
|
39
36
|
}
|
|
40
37
|
catch (error) {
|
|
41
|
-
console.error(
|
|
38
|
+
console.error(OutputFormatter.formatError('Failed to show history', error));
|
|
42
39
|
process.exit(1);
|
|
43
40
|
}
|
|
44
41
|
}
|
|
45
42
|
}
|
|
46
|
-
exports.HistoryCommand = HistoryCommand;
|
|
47
43
|
//# sourceMappingURL=history.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,OAAO,cAAc;IACvB;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,CAAC,MAA0B,EAAE,KAAmB,EAAE,WAAsB;QACjF,IAAI,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,qCAAqC,CAAC,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;YAEhE,+BAA+B;YAC/B,6CAA6C;YAC7C,wCAAwC;YACxC,8CAA8C;YAC9C,iDAAiD;QAErD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,wBAAwB,EAAE,KAAc,CAAC,CAAC,CAAC;YACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;CACJ"}
|
package/dist/commands/list.d.ts
CHANGED
package/dist/commands/list.js
CHANGED
|
@@ -1,21 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @fileoverview List command implementation
|
|
4
3
|
* @module @memberjunction/testing-cli
|
|
5
4
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
exports.ListCommand = void 0;
|
|
11
|
-
const testing_engine_1 = require("@memberjunction/testing-engine");
|
|
12
|
-
const output_formatter_1 = require("../utils/output-formatter");
|
|
13
|
-
const mj_provider_1 = require("../lib/mj-provider");
|
|
14
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
5
|
+
import { TestEngine, VariableResolver } from '@memberjunction/testing-engine';
|
|
6
|
+
import { OutputFormatter } from '../utils/output-formatter.js';
|
|
7
|
+
import { initializeMJProvider, closeMJProvider, getContextUser } from '../lib/mj-provider.js';
|
|
8
|
+
import chalk from 'chalk';
|
|
15
9
|
/**
|
|
16
10
|
* List command - List available tests, suites, and types
|
|
17
11
|
*/
|
|
18
|
-
class ListCommand {
|
|
12
|
+
export class ListCommand {
|
|
19
13
|
/**
|
|
20
14
|
* Execute the list command
|
|
21
15
|
*
|
|
@@ -25,12 +19,12 @@ class ListCommand {
|
|
|
25
19
|
async execute(flags, contextUser) {
|
|
26
20
|
try {
|
|
27
21
|
// Initialize MJ provider (database connection and metadata)
|
|
28
|
-
await
|
|
22
|
+
await initializeMJProvider();
|
|
29
23
|
// Get context user after initialization if not provided
|
|
30
24
|
if (!contextUser) {
|
|
31
|
-
contextUser = await
|
|
25
|
+
contextUser = await getContextUser();
|
|
32
26
|
}
|
|
33
|
-
const engine =
|
|
27
|
+
const engine = TestEngine.Instance;
|
|
34
28
|
await engine.Config(false, contextUser);
|
|
35
29
|
if (flags.types) {
|
|
36
30
|
this.listTestTypes(engine, flags);
|
|
@@ -42,13 +36,13 @@ class ListCommand {
|
|
|
42
36
|
this.listTests(engine, flags);
|
|
43
37
|
}
|
|
44
38
|
// Clean up resources
|
|
45
|
-
await
|
|
39
|
+
await closeMJProvider();
|
|
46
40
|
}
|
|
47
41
|
catch (error) {
|
|
48
|
-
console.error(
|
|
42
|
+
console.error(OutputFormatter.formatError('Failed to list tests', error));
|
|
49
43
|
// Clean up resources before exit
|
|
50
44
|
try {
|
|
51
|
-
await
|
|
45
|
+
await closeMJProvider();
|
|
52
46
|
}
|
|
53
47
|
catch {
|
|
54
48
|
// Ignore cleanup errors
|
|
@@ -61,17 +55,17 @@ class ListCommand {
|
|
|
61
55
|
*/
|
|
62
56
|
listTestTypes(engine, flags) {
|
|
63
57
|
const types = engine.TestTypes;
|
|
64
|
-
console.log(
|
|
58
|
+
console.log(chalk.bold(`\nTest Types (${types.length}):\n`));
|
|
65
59
|
for (const type of types) {
|
|
66
|
-
console.log(
|
|
60
|
+
console.log(chalk.cyan(` ${type.Name}`));
|
|
67
61
|
if (type.Description) {
|
|
68
|
-
console.log(
|
|
62
|
+
console.log(chalk.gray(` ${type.Description}`));
|
|
69
63
|
}
|
|
70
64
|
// Show variables if flag is set
|
|
71
65
|
if (flags?.showVariables && type.VariablesSchema) {
|
|
72
66
|
const variables = this.parseVariablesSchema(type.VariablesSchema);
|
|
73
67
|
if (variables.length > 0) {
|
|
74
|
-
console.log(
|
|
68
|
+
console.log(chalk.yellow(` Variables:`));
|
|
75
69
|
for (const variable of variables) {
|
|
76
70
|
this.displayVariable(variable, 6);
|
|
77
71
|
}
|
|
@@ -89,15 +83,15 @@ class ListCommand {
|
|
|
89
83
|
if (flags.status) {
|
|
90
84
|
suites = suites.filter(s => s.Status?.toLowerCase() === flags.status?.toLowerCase());
|
|
91
85
|
}
|
|
92
|
-
console.log(
|
|
86
|
+
console.log(chalk.bold(`\nTest Suites (${suites.length}):\n`));
|
|
93
87
|
for (const suite of suites) {
|
|
94
88
|
const testCount = this.getTestCountForSuite(engine, suite);
|
|
95
|
-
console.log(
|
|
89
|
+
console.log(chalk.cyan(` ${suite.Name}`) + chalk.gray(` (${testCount} tests)`));
|
|
96
90
|
if (suite.Description) {
|
|
97
|
-
console.log(
|
|
91
|
+
console.log(chalk.gray(` ${suite.Description}`));
|
|
98
92
|
}
|
|
99
93
|
if (flags.verbose && suite.Configuration) {
|
|
100
|
-
console.log(
|
|
94
|
+
console.log(chalk.gray(` Config: ${suite.Configuration}`));
|
|
101
95
|
}
|
|
102
96
|
}
|
|
103
97
|
console.log('');
|
|
@@ -141,15 +135,15 @@ class ListCommand {
|
|
|
141
135
|
}
|
|
142
136
|
typeMap.get(typeName).push(test);
|
|
143
137
|
}
|
|
144
|
-
console.log(
|
|
145
|
-
const resolver = new
|
|
138
|
+
console.log(chalk.bold(`\nAvailable Tests (${tests.length}):\n`));
|
|
139
|
+
const resolver = new VariableResolver();
|
|
146
140
|
for (const [typeName, testsInType] of typeMap) {
|
|
147
|
-
console.log(
|
|
141
|
+
console.log(chalk.bold.cyan(`${typeName} (${testsInType.length}):`));
|
|
148
142
|
for (const test of testsInType) {
|
|
149
143
|
const tags = this.formatTags(test.Tags);
|
|
150
|
-
console.log(` ${
|
|
144
|
+
console.log(` ${chalk.white(test.Name)} ${tags}`);
|
|
151
145
|
if (flags.verbose && test.Description) {
|
|
152
|
-
console.log(
|
|
146
|
+
console.log(chalk.gray(` ${test.Description}`));
|
|
153
147
|
}
|
|
154
148
|
// Show variables if flag is set
|
|
155
149
|
if (flags.showVariables) {
|
|
@@ -157,7 +151,7 @@ class ListCommand {
|
|
|
157
151
|
if (testType?.VariablesSchema) {
|
|
158
152
|
const variables = resolver.getAvailableVariables(testType.VariablesSchema, test.Variables);
|
|
159
153
|
if (variables.length > 0) {
|
|
160
|
-
console.log(
|
|
154
|
+
console.log(chalk.yellow(` Variables:`));
|
|
161
155
|
for (const variable of variables) {
|
|
162
156
|
this.displayVariable(variable, 6);
|
|
163
157
|
}
|
|
@@ -190,7 +184,7 @@ class ListCommand {
|
|
|
190
184
|
return '';
|
|
191
185
|
try {
|
|
192
186
|
const tags = JSON.parse(tagsJson);
|
|
193
|
-
return
|
|
187
|
+
return chalk.gray(`Tags: ${tags.join(', ')}`);
|
|
194
188
|
}
|
|
195
189
|
catch {
|
|
196
190
|
return '';
|
|
@@ -201,7 +195,7 @@ class ListCommand {
|
|
|
201
195
|
*/
|
|
202
196
|
parseVariablesSchema(schemaJson) {
|
|
203
197
|
try {
|
|
204
|
-
const resolver = new
|
|
198
|
+
const resolver = new VariableResolver();
|
|
205
199
|
const schema = resolver.parseTypeSchema(schemaJson);
|
|
206
200
|
return schema?.variables || [];
|
|
207
201
|
}
|
|
@@ -214,19 +208,18 @@ class ListCommand {
|
|
|
214
208
|
*/
|
|
215
209
|
displayVariable(variable, indent) {
|
|
216
210
|
const prefix = ' '.repeat(indent);
|
|
217
|
-
const required = variable.required ?
|
|
211
|
+
const required = variable.required ? chalk.red('*') : '';
|
|
218
212
|
const defaultVal = variable.defaultValue !== undefined
|
|
219
|
-
?
|
|
213
|
+
? chalk.gray(` (default: ${variable.defaultValue})`)
|
|
220
214
|
: '';
|
|
221
|
-
console.log(`${prefix}${
|
|
215
|
+
console.log(`${prefix}${chalk.white(variable.name)}${required}: ${chalk.cyan(variable.dataType)}${defaultVal}`);
|
|
222
216
|
if (variable.description) {
|
|
223
|
-
console.log(`${prefix} ${
|
|
217
|
+
console.log(`${prefix} ${chalk.gray(variable.description)}`);
|
|
224
218
|
}
|
|
225
219
|
if (variable.possibleValues && variable.possibleValues.length > 0) {
|
|
226
220
|
const values = variable.possibleValues.map(pv => pv.value).join(', ');
|
|
227
|
-
console.log(`${prefix} ${
|
|
221
|
+
console.log(`${prefix} ${chalk.gray(`Values: [${values}]`)}`);
|
|
228
222
|
}
|
|
229
223
|
}
|
|
230
224
|
}
|
|
231
|
-
exports.ListCommand = ListCommand;
|
|
232
225
|
//# sourceMappingURL=list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/report.js
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @fileoverview Report command implementation
|
|
4
3
|
* @module @memberjunction/testing-cli
|
|
5
4
|
*/
|
|
6
|
-
|
|
7
|
-
exports.ReportCommand = void 0;
|
|
8
|
-
const output_formatter_1 = require("../utils/output-formatter");
|
|
5
|
+
import { OutputFormatter } from '../utils/output-formatter.js';
|
|
9
6
|
/**
|
|
10
7
|
* Report command - Generate test run reports
|
|
11
8
|
*
|
|
12
9
|
* Note: This is a placeholder implementation. Full reporting requires
|
|
13
10
|
* querying Test Run Results entities and aggregating historical data.
|
|
14
11
|
*/
|
|
15
|
-
class ReportCommand {
|
|
12
|
+
export class ReportCommand {
|
|
16
13
|
/**
|
|
17
14
|
* Execute the report command
|
|
18
15
|
*
|
|
@@ -21,7 +18,7 @@ class ReportCommand {
|
|
|
21
18
|
*/
|
|
22
19
|
async execute(flags, contextUser) {
|
|
23
20
|
try {
|
|
24
|
-
console.log(
|
|
21
|
+
console.log(OutputFormatter.formatInfo('Report command not yet implemented'));
|
|
25
22
|
console.log('\nPlanned features:');
|
|
26
23
|
console.log(' - Generate reports for test runs over date ranges');
|
|
27
24
|
console.log(' - Include cost analysis and trends');
|
|
@@ -37,10 +34,9 @@ class ReportCommand {
|
|
|
37
34
|
// - Generate formatted reports
|
|
38
35
|
}
|
|
39
36
|
catch (error) {
|
|
40
|
-
console.error(
|
|
37
|
+
console.error(OutputFormatter.formatError('Failed to generate report', error));
|
|
41
38
|
process.exit(1);
|
|
42
39
|
}
|
|
43
40
|
}
|
|
44
41
|
}
|
|
45
|
-
exports.ReportCommand = ReportCommand;
|
|
46
42
|
//# sourceMappingURL=report.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,OAAO,aAAa;IACtB;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CAAC,KAAkB,EAAE,WAAqB;QACnD,IAAI,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;YAE/C,iCAAiC;YACjC,yCAAyC;YACzC,wBAAwB;YACxB,4DAA4D;YAC5D,+BAA+B;QAEnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,2BAA2B,EAAE,KAAc,CAAC,CAAC,CAAC;YACxF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;CACJ"}
|
package/dist/commands/run.d.ts
CHANGED
package/dist/commands/run.js
CHANGED
|
@@ -1,22 +1,19 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @fileoverview Run command implementation
|
|
4
3
|
* @module @memberjunction/testing-cli
|
|
5
4
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const mj_provider_1 = require("../lib/mj-provider");
|
|
13
|
-
const variable_parser_1 = require("../utils/variable-parser");
|
|
5
|
+
import { TestEngine } from '@memberjunction/testing-engine';
|
|
6
|
+
import { OutputFormatter } from '../utils/output-formatter.js';
|
|
7
|
+
import { SpinnerManager } from '../utils/spinner-manager.js';
|
|
8
|
+
import { loadCLIConfig } from '../utils/config-loader.js';
|
|
9
|
+
import { initializeMJProvider, closeMJProvider, getContextUser } from '../lib/mj-provider.js';
|
|
10
|
+
import { parseVariableFlags, getTestVariablesSchema } from '../utils/variable-parser.js';
|
|
14
11
|
/**
|
|
15
12
|
* Run command - Execute a single test or filtered set of tests
|
|
16
13
|
*/
|
|
17
|
-
class RunCommand {
|
|
14
|
+
export class RunCommand {
|
|
18
15
|
constructor() {
|
|
19
|
-
this.spinner = new
|
|
16
|
+
this.spinner = new SpinnerManager();
|
|
20
17
|
}
|
|
21
18
|
/**
|
|
22
19
|
* Execute the run command
|
|
@@ -28,23 +25,23 @@ class RunCommand {
|
|
|
28
25
|
async execute(testId, flags, contextUser) {
|
|
29
26
|
try {
|
|
30
27
|
// Initialize MJ provider (database connection and metadata)
|
|
31
|
-
await
|
|
28
|
+
await initializeMJProvider();
|
|
32
29
|
// Get context user after initialization if not provided
|
|
33
30
|
if (!contextUser) {
|
|
34
|
-
contextUser = await
|
|
31
|
+
contextUser = await getContextUser();
|
|
35
32
|
}
|
|
36
|
-
const config =
|
|
37
|
-
const format = flags.format || config.defaultFormat;
|
|
33
|
+
const config = loadCLIConfig();
|
|
34
|
+
const format = flags.format || config.defaultFormat || 'console';
|
|
38
35
|
const environment = flags.environment || config.defaultEnvironment;
|
|
39
36
|
// Get engine instance
|
|
40
|
-
const engine =
|
|
37
|
+
const engine = TestEngine.Instance;
|
|
41
38
|
await engine.Config(false, contextUser);
|
|
42
39
|
let test;
|
|
43
40
|
if (testId) {
|
|
44
41
|
// Run specific test by ID
|
|
45
42
|
test = engine.GetTestByID(testId);
|
|
46
43
|
if (!test) {
|
|
47
|
-
console.error(
|
|
44
|
+
console.error(OutputFormatter.formatError(`Test not found: ${testId}`));
|
|
48
45
|
process.exit(1);
|
|
49
46
|
}
|
|
50
47
|
}
|
|
@@ -52,39 +49,39 @@ class RunCommand {
|
|
|
52
49
|
// Run test by name
|
|
53
50
|
test = engine.GetTestByName(flags.name);
|
|
54
51
|
if (!test) {
|
|
55
|
-
console.error(
|
|
52
|
+
console.error(OutputFormatter.formatError(`Test not found: ${flags.name}`));
|
|
56
53
|
process.exit(1);
|
|
57
54
|
}
|
|
58
55
|
}
|
|
59
56
|
else if (flags.suite) {
|
|
60
57
|
// Run test suite (delegate to suite command)
|
|
61
|
-
console.error(
|
|
58
|
+
console.error(OutputFormatter.formatError('Use "mj test suite" command to run test suites'));
|
|
62
59
|
process.exit(1);
|
|
63
60
|
}
|
|
64
61
|
else if (flags.tag || flags.category || flags.difficulty) {
|
|
65
62
|
// Run tests by filter
|
|
66
|
-
console.error(
|
|
63
|
+
console.error(OutputFormatter.formatError('Filtered test execution not yet implemented'));
|
|
67
64
|
process.exit(1);
|
|
68
65
|
}
|
|
69
66
|
else if (flags.all) {
|
|
70
67
|
// Run all tests
|
|
71
|
-
console.error(
|
|
68
|
+
console.error(OutputFormatter.formatError('Use "mj test suite" command to run all tests'));
|
|
72
69
|
process.exit(1);
|
|
73
70
|
}
|
|
74
71
|
else {
|
|
75
|
-
console.error(
|
|
72
|
+
console.error(OutputFormatter.formatError('Must specify test ID, --name, or other filter'));
|
|
76
73
|
process.exit(1);
|
|
77
74
|
}
|
|
78
75
|
// Parse variables from --var flags
|
|
79
|
-
const variablesSchema =
|
|
80
|
-
const variables =
|
|
76
|
+
const variablesSchema = getTestVariablesSchema(engine, test.ID);
|
|
77
|
+
const variables = parseVariableFlags(flags.var, variablesSchema);
|
|
81
78
|
// Dry run mode
|
|
82
79
|
if (flags.dryRun) {
|
|
83
|
-
console.log(
|
|
84
|
-
console.log(
|
|
85
|
-
console.log(
|
|
80
|
+
console.log(OutputFormatter.formatInfo(`Would run test: ${test.Name}`));
|
|
81
|
+
console.log(OutputFormatter.formatInfo(`Type: ${test.Type}`));
|
|
82
|
+
console.log(OutputFormatter.formatInfo(`Environment: ${environment}`));
|
|
86
83
|
if (variables) {
|
|
87
|
-
console.log(
|
|
84
|
+
console.log(OutputFormatter.formatInfo(`Variables: ${JSON.stringify(variables)}`));
|
|
88
85
|
}
|
|
89
86
|
return;
|
|
90
87
|
}
|
|
@@ -99,10 +96,10 @@ class RunCommand {
|
|
|
99
96
|
// Handle both single result and array of results (RepeatCount > 1)
|
|
100
97
|
if (Array.isArray(result)) {
|
|
101
98
|
// Multiple iterations - display summary and all results
|
|
102
|
-
console.log(
|
|
99
|
+
console.log(OutputFormatter.formatInfo(`Ran ${result.length} iterations`));
|
|
103
100
|
let allPassed = true;
|
|
104
101
|
for (const iterationResult of result) {
|
|
105
|
-
const output =
|
|
102
|
+
const output = OutputFormatter.formatTestResult(iterationResult, format);
|
|
106
103
|
console.log(output);
|
|
107
104
|
if (iterationResult.status !== 'Passed') {
|
|
108
105
|
allPassed = false;
|
|
@@ -110,31 +107,31 @@ class RunCommand {
|
|
|
110
107
|
}
|
|
111
108
|
// Write to file if requested (write all results as JSON array)
|
|
112
109
|
if (flags.output) {
|
|
113
|
-
|
|
110
|
+
OutputFormatter.writeToFile(JSON.stringify(result, null, 2), flags.output);
|
|
114
111
|
}
|
|
115
112
|
// Clean up resources
|
|
116
|
-
await
|
|
113
|
+
await closeMJProvider();
|
|
117
114
|
// Exit with appropriate code (pass only if all iterations passed)
|
|
118
115
|
process.exit(allPassed ? 0 : 1);
|
|
119
116
|
}
|
|
120
117
|
else {
|
|
121
118
|
// Single result
|
|
122
|
-
const output =
|
|
119
|
+
const output = OutputFormatter.formatTestResult(result, format);
|
|
123
120
|
console.log(output);
|
|
124
121
|
// Write to file if requested
|
|
125
|
-
|
|
122
|
+
OutputFormatter.writeToFile(output, flags.output);
|
|
126
123
|
// Clean up resources
|
|
127
|
-
await
|
|
124
|
+
await closeMJProvider();
|
|
128
125
|
// Exit with appropriate code
|
|
129
126
|
process.exit(result.status === 'Passed' ? 0 : 1);
|
|
130
127
|
}
|
|
131
128
|
}
|
|
132
129
|
catch (error) {
|
|
133
130
|
this.spinner.fail();
|
|
134
|
-
console.error(
|
|
131
|
+
console.error(OutputFormatter.formatError('Failed to run test', error));
|
|
135
132
|
// Clean up resources before exit
|
|
136
133
|
try {
|
|
137
|
-
await
|
|
134
|
+
await closeMJProvider();
|
|
138
135
|
}
|
|
139
136
|
catch {
|
|
140
137
|
// Ignore cleanup errors
|
|
@@ -143,5 +140,4 @@ class RunCommand {
|
|
|
143
140
|
}
|
|
144
141
|
}
|
|
145
142
|
}
|
|
146
|
-
exports.RunCommand = RunCommand;
|
|
147
143
|
//# sourceMappingURL=run.js.map
|
package/dist/commands/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/suite.d.ts
CHANGED