@memberjunction/cli 5.37.0 → 5.38.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 +74 -0
- package/dist/baseline/cli-helpers.d.ts +12 -0
- package/dist/baseline/cli-helpers.d.ts.map +1 -0
- package/dist/baseline/cli-helpers.js +40 -0
- package/dist/baseline/cli-helpers.js.map +1 -0
- package/dist/baseline/comparator.d.ts +26 -0
- package/dist/baseline/comparator.d.ts.map +1 -0
- package/dist/baseline/comparator.js +527 -0
- package/dist/baseline/comparator.js.map +1 -0
- package/dist/baseline/connection.d.ts +39 -0
- package/dist/baseline/connection.d.ts.map +1 -0
- package/dist/baseline/connection.js +104 -0
- package/dist/baseline/connection.js.map +1 -0
- package/dist/baseline/data-dumper.d.ts +23 -0
- package/dist/baseline/data-dumper.d.ts.map +1 -0
- package/dist/baseline/data-dumper.js +94 -0
- package/dist/baseline/data-dumper.js.map +1 -0
- package/dist/baseline/emitter.d.ts +36 -0
- package/dist/baseline/emitter.d.ts.map +1 -0
- package/dist/baseline/emitter.js +512 -0
- package/dist/baseline/emitter.js.map +1 -0
- package/dist/baseline/index.d.ts +18 -0
- package/dist/baseline/index.d.ts.map +1 -0
- package/dist/baseline/index.js +14 -0
- package/dist/baseline/index.js.map +1 -0
- package/dist/baseline/introspector-mssql.d.ts +15 -0
- package/dist/baseline/introspector-mssql.d.ts.map +1 -0
- package/dist/baseline/introspector-mssql.js +673 -0
- package/dist/baseline/introspector-mssql.js.map +1 -0
- package/dist/baseline/introspector-postgres.d.ts +14 -0
- package/dist/baseline/introspector-postgres.d.ts.map +1 -0
- package/dist/baseline/introspector-postgres.js +277 -0
- package/dist/baseline/introspector-postgres.js.map +1 -0
- package/dist/baseline/report.d.ts +7 -0
- package/dist/baseline/report.d.ts.map +1 -0
- package/dist/baseline/report.js +105 -0
- package/dist/baseline/report.js.map +1 -0
- package/dist/baseline/types.d.ts +286 -0
- package/dist/baseline/types.d.ts.map +1 -0
- package/dist/baseline/types.js +10 -0
- package/dist/baseline/types.js.map +1 -0
- package/dist/baseline/util.d.ts +112 -0
- package/dist/baseline/util.d.ts.map +1 -0
- package/dist/baseline/util.js +325 -0
- package/dist/baseline/util.js.map +1 -0
- package/dist/commands/baseline/build.d.ts +29 -0
- package/dist/commands/baseline/build.d.ts.map +1 -0
- package/dist/commands/baseline/build.js +188 -0
- package/dist/commands/baseline/build.js.map +1 -0
- package/dist/commands/baseline/compare.d.ts +19 -0
- package/dist/commands/baseline/compare.d.ts.map +1 -0
- package/dist/commands/baseline/compare.js +133 -0
- package/dist/commands/baseline/compare.js.map +1 -0
- package/dist/commands/baseline/roundtrip.d.ts +23 -0
- package/dist/commands/baseline/roundtrip.d.ts.map +1 -0
- package/dist/commands/baseline/roundtrip.js +245 -0
- package/dist/commands/baseline/roundtrip.js.map +1 -0
- package/dist/commands/test/compare.d.ts +3 -0
- package/dist/commands/test/compare.d.ts.map +1 -1
- package/dist/commands/test/compare.js +23 -3
- package/dist/commands/test/compare.js.map +1 -1
- package/dist/commands/test/regression/build.d.ts +14 -0
- package/dist/commands/test/regression/build.d.ts.map +1 -0
- package/dist/commands/test/regression/build.js +48 -0
- package/dist/commands/test/regression/build.js.map +1 -0
- package/dist/commands/test/regression/compare.d.ts +15 -0
- package/dist/commands/test/regression/compare.d.ts.map +1 -0
- package/dist/commands/test/regression/compare.js +66 -0
- package/dist/commands/test/regression/compare.js.map +1 -0
- package/dist/commands/test/regression/down.d.ts +10 -0
- package/dist/commands/test/regression/down.d.ts.map +1 -0
- package/dist/commands/test/regression/down.js +29 -0
- package/dist/commands/test/regression/down.js.map +1 -0
- package/dist/commands/test/regression/export.d.ts +11 -0
- package/dist/commands/test/regression/export.d.ts.map +1 -0
- package/dist/commands/test/regression/export.js +56 -0
- package/dist/commands/test/regression/export.js.map +1 -0
- package/dist/commands/test/regression/gen-forms.d.ts +7 -0
- package/dist/commands/test/regression/gen-forms.d.ts.map +1 -0
- package/dist/commands/test/regression/gen-forms.js +18 -0
- package/dist/commands/test/regression/gen-forms.js.map +1 -0
- package/dist/commands/test/regression/index.d.ts +7 -0
- package/dist/commands/test/regression/index.d.ts.map +1 -0
- package/dist/commands/test/regression/index.js +33 -0
- package/dist/commands/test/regression/index.js.map +1 -0
- package/dist/commands/test/regression/init.d.ts +21 -0
- package/dist/commands/test/regression/init.d.ts.map +1 -0
- package/dist/commands/test/regression/init.js +111 -0
- package/dist/commands/test/regression/init.js.map +1 -0
- package/dist/commands/test/regression/remote.d.ts +23 -0
- package/dist/commands/test/regression/remote.d.ts.map +1 -0
- package/dist/commands/test/regression/remote.js +140 -0
- package/dist/commands/test/regression/remote.js.map +1 -0
- package/dist/commands/test/regression/up.d.ts +21 -0
- package/dist/commands/test/regression/up.d.ts.map +1 -0
- package/dist/commands/test/regression/up.js +111 -0
- package/dist/commands/test/regression/up.js.map +1 -0
- package/dist/commands/test/run.d.ts +1 -0
- package/dist/commands/test/run.d.ts.map +1 -1
- package/dist/commands/test/run.js +6 -0
- package/dist/commands/test/run.js.map +1 -1
- package/dist/commands/test/suite.d.ts +5 -0
- package/dist/commands/test/suite.d.ts.map +1 -1
- package/dist/commands/test/suite.js +27 -0
- package/dist/commands/test/suite.js.map +1 -1
- package/dist/commands/translate-sql/index.d.ts.map +1 -1
- package/dist/commands/translate-sql/index.js +3 -2
- package/dist/commands/translate-sql/index.js.map +1 -1
- package/dist/init-templates/bring-your-own-app/README.md +74 -0
- package/dist/init-templates/bring-your-own-app/byo-metadata/.mj-sync.json +10 -0
- package/dist/init-templates/bring-your-own-app/byo-metadata/test-suites/.byo-suite.json +51 -0
- package/dist/init-templates/bring-your-own-app/byo-metadata/test-suites/.mj-sync.json +12 -0
- package/dist/init-templates/bring-your-own-app/byo-metadata/tests/.T01-counter-increment.json +63 -0
- package/dist/init-templates/bring-your-own-app/byo-metadata/tests/.T02-contact-form-submit.json +63 -0
- package/dist/init-templates/bring-your-own-app/byo-metadata/tests/.mj-sync.json +12 -0
- package/dist/init-templates/bring-your-own-app/docker-compose.app.yml +76 -0
- package/dist/init-templates/bring-your-own-app/target.json +23 -0
- package/dist/init-templates/generic-web/README.md +115 -0
- package/dist/init-templates/generic-web/metadata/.mj-sync.json +10 -0
- package/dist/init-templates/generic-web/metadata/test-suites/.generic-web-suite.json +48 -0
- package/dist/init-templates/generic-web/metadata/test-suites/.mj-sync.json +12 -0
- package/dist/init-templates/generic-web/metadata/tests/.GW01-home-loads.json +74 -0
- package/dist/init-templates/generic-web/metadata/tests/.GW02-search-array-map.json +82 -0
- package/dist/init-templates/generic-web/metadata/tests/.mj-sync.json +12 -0
- package/dist/init-templates/generic-web/oracles/mdn-oracles.cjs +121 -0
- package/dist/init-templates/generic-web/target.json +25 -0
- package/dist/init-templates/github-actions/README.md +26 -0
- package/dist/init-templates/github-actions/regression.yml +52 -0
- package/dist/init-templates/remote-mj/README.md +95 -0
- package/dist/init-templates/remote-mj/target.json +22 -0
- package/dist/init-templates/static-file-server/Dockerfile +23 -0
- package/dist/init-templates/static-file-server/README.md +88 -0
- package/dist/init-templates/static-file-server/docker-compose.app.yml +44 -0
- package/dist/init-templates/static-file-server/metadata/.mj-sync.json +10 -0
- package/dist/init-templates/static-file-server/metadata/test-suites/.mj-sync.json +12 -0
- package/dist/init-templates/static-file-server/metadata/test-suites/.static-server-suite.json +27 -0
- package/dist/init-templates/static-file-server/metadata/tests/.SS01-home-loads.json +45 -0
- package/dist/init-templates/static-file-server/metadata/tests/.SS02-navigate-about.json +45 -0
- package/dist/init-templates/static-file-server/metadata/tests/.mj-sync.json +12 -0
- package/dist/init-templates/static-file-server/public/about.html +12 -0
- package/dist/init-templates/static-file-server/public/index.html +27 -0
- package/dist/init-templates/static-file-server/target.json +16 -0
- package/dist/lib/regression/docker-helpers.d.ts +98 -0
- package/dist/lib/regression/docker-helpers.d.ts.map +1 -0
- package/dist/lib/regression/docker-helpers.js +184 -0
- package/dist/lib/regression/docker-helpers.js.map +1 -0
- package/oclif.manifest.json +1356 -509
- package/package.json +22 -17
- package/regression-compose/docker-compose.bacpac-standalone.yml +109 -0
- package/regression-compose/docker-compose.standalone.yml +50 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class TestRegressionUp extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
detach: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
7
|
+
bacpac: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
8
|
+
'bacpac-no-upgrade': import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
9
|
+
suite: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
10
|
+
metadata: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
11
|
+
image: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
12
|
+
'explorer-image': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
13
|
+
'env-file': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
14
|
+
};
|
|
15
|
+
run(): Promise<void>;
|
|
16
|
+
/** Inside the monorepo: build-from-source compose (+ bacpac overlay). */
|
|
17
|
+
private runInMonorepo;
|
|
18
|
+
/** Outside the monorepo: only --bacpac is supported (published-image full stack). */
|
|
19
|
+
private runExternal;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=up.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"up.d.ts","sourceRoot":"","sources":["../../../../src/commands/test/regression/up.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAa7C,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,OAAO;IACnD,MAAM,CAAC,WAAW,SAGuC;IAEzD,MAAM,CAAC,QAAQ,WAKb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;MAYV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAY1B,yEAAyE;YAC3D,aAAa;IA4B3B,qFAAqF;YACvE,WAAW;CA0C1B"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { Command, Flags } from '@oclif/core';
|
|
2
|
+
import { existsSync, statSync } from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { AGENTIC_TEST_RUNNER_IMAGE, BACPAC_OVERLAY, BACPAC_STANDALONE_COMPOSE, dockerComposeArgs, isInsideMonorepo, resolveStandaloneCompose, spawnInherit, } from '../../../lib/regression/docker-helpers.js';
|
|
5
|
+
export default class TestRegressionUp extends Command {
|
|
6
|
+
static { this.description = 'Run the self-contained MJ regression stack (Mode A). With --bacpac, the DB is imported ' +
|
|
7
|
+
'from a .bacpac. Inside the monorepo this builds from source; outside, --bacpac runs the ' +
|
|
8
|
+
'published-image stack (plain `up` is monorepo-only).'; }
|
|
9
|
+
static { this.examples = [
|
|
10
|
+
'<%= config.bin %> <%= command.id %>',
|
|
11
|
+
'<%= config.bin %> <%= command.id %> --detach',
|
|
12
|
+
'<%= config.bin %> <%= command.id %> --bacpac=./db.bacpac --suite="My Suite" --metadata=./my-suite-metadata',
|
|
13
|
+
'<%= config.bin %> <%= command.id %> --bacpac=./db.bacpac --bacpac-no-upgrade',
|
|
14
|
+
]; }
|
|
15
|
+
static { this.flags = {
|
|
16
|
+
detach: Flags.boolean({ char: 'd', description: 'Run containers in the background (docker compose up -d).', default: false }),
|
|
17
|
+
bacpac: Flags.string({ description: 'Path to a .bacpac of a real MJ database to import and test against.' }),
|
|
18
|
+
'bacpac-no-upgrade': Flags.boolean({
|
|
19
|
+
description: 'Import the bacpac as-is — skip migrate/codegen. Only safe at the current MJ version. Requires --bacpac.',
|
|
20
|
+
default: false,
|
|
21
|
+
}),
|
|
22
|
+
suite: Flags.string({ description: 'Test suite to run (TEST_SUITE_NAME). Use with --bacpac + --metadata.' }),
|
|
23
|
+
metadata: Flags.string({ description: 'Directory of your test + test-suite metadata (pushed before the run). Requires --bacpac.' }),
|
|
24
|
+
image: Flags.string({ description: '(external) Published agentic-test-runner image. Default: ' + AGENTIC_TEST_RUNNER_IMAGE + '.' }),
|
|
25
|
+
'explorer-image': Flags.string({ description: '(external bacpac) Published Explorer image (prerequisite). Default: memberjunction/explorer:latest.' }),
|
|
26
|
+
'env-file': Flags.string({ description: '(external) .env injected into the runner (auth env: refs).' }),
|
|
27
|
+
}; }
|
|
28
|
+
async run() {
|
|
29
|
+
const { flags } = await this.parse(TestRegressionUp);
|
|
30
|
+
if ((flags['bacpac-no-upgrade'] || flags.metadata) && !flags.bacpac) {
|
|
31
|
+
this.error('--bacpac-no-upgrade and --metadata require --bacpac.');
|
|
32
|
+
}
|
|
33
|
+
if (isInsideMonorepo()) {
|
|
34
|
+
await this.runInMonorepo(flags);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
await this.runExternal(flags);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/** Inside the monorepo: build-from-source compose (+ bacpac overlay). */
|
|
41
|
+
async runInMonorepo(flags) {
|
|
42
|
+
const childEnv = { ...process.env };
|
|
43
|
+
const overlays = [];
|
|
44
|
+
if (flags.bacpac) {
|
|
45
|
+
const abs = path.resolve(flags.bacpac);
|
|
46
|
+
if (!existsSync(abs) || !statSync(abs).isFile())
|
|
47
|
+
this.error(`✗ Bacpac file not found: ${abs}`);
|
|
48
|
+
overlays.push(BACPAC_OVERLAY);
|
|
49
|
+
childEnv.BACPAC_DIR = path.dirname(abs);
|
|
50
|
+
childEnv.BACPAC_FILE = `/app/bacpac/${path.basename(abs)}`;
|
|
51
|
+
childEnv.BACPAC_UPGRADE = flags['bacpac-no-upgrade'] ? 'false' : 'true';
|
|
52
|
+
this.log(`▶ Bacpac: ${abs} (upgrade=${childEnv.BACPAC_UPGRADE})`);
|
|
53
|
+
if (flags.metadata) {
|
|
54
|
+
const metaAbs = path.resolve(flags.metadata);
|
|
55
|
+
if (!existsSync(metaAbs) || !statSync(metaAbs).isDirectory())
|
|
56
|
+
this.error(`✗ --metadata directory not found: ${metaAbs}`);
|
|
57
|
+
childEnv.USER_METADATA_DIR = metaAbs;
|
|
58
|
+
childEnv.EXTRA_METADATA_DIRS = '/app/user-metadata';
|
|
59
|
+
this.log(` Suite metadata: ${metaAbs}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (flags.suite) {
|
|
63
|
+
childEnv.TEST_SUITE_NAME = flags.suite;
|
|
64
|
+
this.log(` Suite: ${flags.suite}`);
|
|
65
|
+
}
|
|
66
|
+
const composeArgs = dockerComposeArgs('full', ['up'], overlays);
|
|
67
|
+
if (flags.detach)
|
|
68
|
+
composeArgs.push('-d');
|
|
69
|
+
const code = await spawnInherit('docker', composeArgs, { env: childEnv });
|
|
70
|
+
if (code !== 0)
|
|
71
|
+
this.exit(code);
|
|
72
|
+
}
|
|
73
|
+
/** Outside the monorepo: only --bacpac is supported (published-image full stack). */
|
|
74
|
+
async runExternal(flags) {
|
|
75
|
+
if (!flags.bacpac) {
|
|
76
|
+
this.error('Plain `up` boots the full self-contained MJ stack built from source — monorepo-only.\n' +
|
|
77
|
+
' Outside the monorepo, use `up --bacpac=<file>` (published-image stack) or ' +
|
|
78
|
+
'`mj test regression remote --target=<file>` for a URL.');
|
|
79
|
+
}
|
|
80
|
+
const abs = path.resolve(flags.bacpac);
|
|
81
|
+
if (!existsSync(abs) || !statSync(abs).isFile())
|
|
82
|
+
this.error(`✗ Bacpac file not found: ${abs}`);
|
|
83
|
+
if (!flags.metadata)
|
|
84
|
+
this.error('External --bacpac requires --metadata (a dir with target.json + metadata/ for your suite).');
|
|
85
|
+
const metaAbs = path.resolve(flags.metadata);
|
|
86
|
+
if (!existsSync(metaAbs) || !statSync(metaAbs).isDirectory())
|
|
87
|
+
this.error(`✗ --metadata directory not found: ${metaAbs}`);
|
|
88
|
+
const compose = resolveStandaloneCompose(BACPAC_STANDALONE_COMPOSE);
|
|
89
|
+
if (!existsSync(compose))
|
|
90
|
+
this.error(`✗ Standalone bacpac compose not found (${compose}). Reinstall @memberjunction/cli.`);
|
|
91
|
+
const childEnv = {
|
|
92
|
+
...process.env,
|
|
93
|
+
MJ_IMAGE: flags.image ?? AGENTIC_TEST_RUNNER_IMAGE,
|
|
94
|
+
MJ_EXPLORER_IMAGE: flags['explorer-image'] ?? 'memberjunction/explorer:latest',
|
|
95
|
+
BACPAC_DIR: path.dirname(abs),
|
|
96
|
+
BACPAC_FILE: path.basename(abs),
|
|
97
|
+
BACPAC_UPGRADE: flags['bacpac-no-upgrade'] ? 'false' : 'true',
|
|
98
|
+
TARGET_DIR: metaAbs,
|
|
99
|
+
TARGET_FILE: 'target.json',
|
|
100
|
+
USER_ENV_FILE: flags['env-file'] ? path.resolve(flags['env-file']) : '/dev/null',
|
|
101
|
+
TEST_SUITE_NAME: flags.suite ?? '',
|
|
102
|
+
};
|
|
103
|
+
this.warn('External bacpac requires the `memberjunction/explorer` image (a published-Explorer prerequisite ' +
|
|
104
|
+
'that is a separate workstream). If it cannot be pulled, the explorer service will fail to start.');
|
|
105
|
+
this.log(`▶ docker compose (bacpac-standalone) — bacpac=${abs} upgrade=${childEnv.BACPAC_UPGRADE}`);
|
|
106
|
+
const code = await spawnInherit('docker', ['compose', '-f', compose, 'up', '--abort-on-container-exit', '--exit-code-from', 'test-runner'], { env: childEnv });
|
|
107
|
+
if (code !== 0)
|
|
108
|
+
this.exit(code);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=up.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"up.js","sourceRoot":"","sources":["../../../../src/commands/test/regression/up.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ export default class TestRun extends Command {
|
|
|
12
12
|
output: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
13
13
|
'dry-run': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
14
14
|
verbose: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
15
|
+
'oracles-module': import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
15
16
|
};
|
|
16
17
|
run(): Promise<void>;
|
|
17
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/test/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,aAAa,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAC1C,MAAM,CAAC,WAAW,SAAyC;IAE3D,MAAM,CAAC,QAAQ,WAMb;IAEF,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/test/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,aAAa,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAC1C,MAAM,CAAC,WAAW,SAAyC;IAE3D,MAAM,CAAC,QAAQ,WAMb;IAEF,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;;;;;;;MAkCV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAuB3B"}
|
|
@@ -42,6 +42,11 @@ export default class TestRun extends Command {
|
|
|
42
42
|
description: 'Show detailed execution information',
|
|
43
43
|
default: false,
|
|
44
44
|
}),
|
|
45
|
+
'oracles-module': Flags.string({
|
|
46
|
+
description: 'Path to a JS/TS module that exports custom IOracle classes or instances. ' +
|
|
47
|
+
'Each export is registered on the engine before the test runs — used by non-MJ ' +
|
|
48
|
+
'adopters to plug app-specific oracle types without modifying TestingFramework.',
|
|
49
|
+
}),
|
|
45
50
|
}; }
|
|
46
51
|
async run() {
|
|
47
52
|
const { RunCommand } = await import('@memberjunction/testing-cli');
|
|
@@ -57,6 +62,7 @@ export default class TestRun extends Command {
|
|
|
57
62
|
output: flags.output,
|
|
58
63
|
dryRun: flags['dry-run'],
|
|
59
64
|
verbose: flags.verbose,
|
|
65
|
+
oraclesModule: flags['oracles-module'],
|
|
60
66
|
});
|
|
61
67
|
}
|
|
62
68
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/test/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;aACnC,gBAAW,GAAG,qCAAqC,CAAC;aAEpD,aAAQ,GAAG;QAChB,+CAA+C;QAC/C,mEAAmE;QACnE,qEAAqE;QACrE,mFAAmF;QACnF,yDAAyD;KAC1D,CAAC;aAEK,SAAI,GAAG;QACZ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,oBAAoB;YACjC,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAC;aAEK,UAAK,GAAG;QACb,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,sBAAsB;SACpC,CAAC;QACF,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;YACxB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,0CAA0C;SACxD,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,eAAe;YAC5B,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;YACxC,OAAO,EAAE,SAAS;SACnB,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,kBAAkB;SAChC,CAAC;QACF,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;YACvB,WAAW,EAAE,4BAA4B;YACzC,OAAO,EAAE,KAAK;SACf,CAAC;QACF,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,qCAAqC;YAClD,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;QAEnE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAElD,IAAI,CAAC;YACH,yCAAyC;YACzC,2EAA2E;YAC3E,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;YACpC,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE;gBACpC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,MAAM,EAAE,KAAK,CAAC,MAAyC;gBACvD,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;gBACxB,OAAO,EAAE,KAAK,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/test/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;aACnC,gBAAW,GAAG,qCAAqC,CAAC;aAEpD,aAAQ,GAAG;QAChB,+CAA+C;QAC/C,mEAAmE;QACnE,qEAAqE;QACrE,mFAAmF;QACnF,yDAAyD;KAC1D,CAAC;aAEK,SAAI,GAAG;QACZ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,oBAAoB;YACjC,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAC;aAEK,UAAK,GAAG;QACb,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,sBAAsB;SACpC,CAAC;QACF,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;YACxB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,0CAA0C;SACxD,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,eAAe;YAC5B,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;YACxC,OAAO,EAAE,SAAS;SACnB,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,kBAAkB;SAChC,CAAC;QACF,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;YACvB,WAAW,EAAE,4BAA4B;YACzC,OAAO,EAAE,KAAK;SACf,CAAC;QACF,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,qCAAqC;YAClD,OAAO,EAAE,KAAK;SACf,CAAC;QACF,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,WAAW,EACT,2EAA2E;gBAC3E,gFAAgF;gBAChF,gFAAgF;SACnF,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;QAEnE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAElD,IAAI,CAAC;YACH,yCAAyC;YACzC,2EAA2E;YAC3E,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;YACpC,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE;gBACpC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,MAAM,EAAE,KAAK,CAAC,MAAyC;gBACvD,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;gBACxB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,aAAa,EAAE,KAAK,CAAC,gBAAgB,CAAC;aACvC,CAAC,CAAC;QAEL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,KAAc,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC"}
|
|
@@ -10,6 +10,11 @@ export default class TestSuite extends Command {
|
|
|
10
10
|
format: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
11
|
output: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
12
12
|
verbose: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
delay: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
14
|
+
parallel: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
15
|
+
'max-parallel': import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
16
|
+
'flaky-check': import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
17
|
+
'oracles-module': import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
13
18
|
};
|
|
14
19
|
run(): Promise<void>;
|
|
15
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suite.d.ts","sourceRoot":"","sources":["../../../src/commands/test/suite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,aAAa,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,OAAO;IAC5C,MAAM,CAAC,WAAW,SAA0B;IAE5C,MAAM,CAAC,QAAQ,WAKb;IAEF,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK
|
|
1
|
+
{"version":3,"file":"suite.d.ts","sourceRoot":"","sources":["../../../src/commands/test/suite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,aAAa,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,OAAO;IAC5C,MAAM,CAAC,WAAW,SAA0B;IAE5C,MAAM,CAAC,QAAQ,WAKb;IAEF,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;MA2CV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyB3B"}
|
|
@@ -33,6 +33,28 @@ export default class TestSuite extends Command {
|
|
|
33
33
|
description: 'Show detailed execution information',
|
|
34
34
|
default: false,
|
|
35
35
|
}),
|
|
36
|
+
delay: Flags.integer({
|
|
37
|
+
char: 'd',
|
|
38
|
+
description: 'Delay in milliseconds between test executions (avoids Auth0 rate limits)',
|
|
39
|
+
default: 0,
|
|
40
|
+
}),
|
|
41
|
+
parallel: Flags.boolean({
|
|
42
|
+
char: 'p',
|
|
43
|
+
description: 'Run tests in parallel with shared browser sessions',
|
|
44
|
+
default: false,
|
|
45
|
+
}),
|
|
46
|
+
'max-parallel': Flags.integer({
|
|
47
|
+
description: 'Maximum number of parallel workers (default 4)',
|
|
48
|
+
default: 4,
|
|
49
|
+
}),
|
|
50
|
+
'flaky-check': Flags.integer({
|
|
51
|
+
description: 'Run each test N times to detect flakiness (variance > 0.3 or mixed pass/fail = flaky). Recommended: 3 or 5',
|
|
52
|
+
}),
|
|
53
|
+
'oracles-module': Flags.string({
|
|
54
|
+
description: 'Path to a JS/TS module that exports custom IOracle classes or instances. ' +
|
|
55
|
+
'Each export is registered on the engine before the suite runs — used by non-MJ ' +
|
|
56
|
+
'adopters to plug app-specific oracle types without modifying TestingFramework.',
|
|
57
|
+
}),
|
|
36
58
|
}; }
|
|
37
59
|
async run() {
|
|
38
60
|
const { SuiteCommand } = await import('@memberjunction/testing-cli');
|
|
@@ -46,6 +68,11 @@ export default class TestSuite extends Command {
|
|
|
46
68
|
format: flags.format,
|
|
47
69
|
output: flags.output,
|
|
48
70
|
verbose: flags.verbose,
|
|
71
|
+
delay: flags.delay,
|
|
72
|
+
parallel: flags.parallel,
|
|
73
|
+
maxParallel: flags['max-parallel'],
|
|
74
|
+
flakyCheck: flags['flaky-check'],
|
|
75
|
+
oraclesModule: flags['oracles-module'],
|
|
49
76
|
});
|
|
50
77
|
}
|
|
51
78
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suite.js","sourceRoot":"","sources":["../../../src/commands/test/suite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,OAAO;aACrC,gBAAW,GAAG,sBAAsB,CAAC;aAErC,aAAQ,GAAG;QAChB,gDAAgD;QAChD,kEAAkE;QAClE,8DAA8D;QAC9D,4EAA4E;KAC7E,CAAC;aAEK,SAAI,GAAG;QACZ,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,0BAA0B;YACvC,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAC;aAEK,UAAK,GAAG;QACb,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,4BAA4B;SAC1C,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,eAAe;YAC5B,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;YACxC,OAAO,EAAE,SAAS;SACnB,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,kBAAkB;SAChC,CAAC;QACF,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,qCAAqC;YAClD,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;QAErE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEpD,IAAI,CAAC;YACH,2CAA2C;YAC3C,2EAA2E;YAC3E,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;YACxC,MAAM,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;gBACvC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,KAAK,CAAC,MAAyC;gBACvD,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"suite.js","sourceRoot":"","sources":["../../../src/commands/test/suite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,OAAO;aACrC,gBAAW,GAAG,sBAAsB,CAAC;aAErC,aAAQ,GAAG;QAChB,gDAAgD;QAChD,kEAAkE;QAClE,8DAA8D;QAC9D,4EAA4E;KAC7E,CAAC;aAEK,SAAI,GAAG;QACZ,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,0BAA0B;YACvC,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAC;aAEK,UAAK,GAAG;QACb,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,4BAA4B;SAC1C,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,eAAe;YAC5B,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;YACxC,OAAO,EAAE,SAAS;SACnB,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,kBAAkB;SAChC,CAAC;QACF,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,qCAAqC;YAClD,OAAO,EAAE,KAAK;SACf,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,0EAA0E;YACvF,OAAO,EAAE,CAAC;SACX,CAAC;QACF,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC;YACtB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,oDAAoD;YACjE,OAAO,EAAE,KAAK;SACf,CAAC;QACF,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC;YAC5B,WAAW,EAAE,gDAAgD;YAC7D,OAAO,EAAE,CAAC;SACX,CAAC;QACF,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC;YAC3B,WAAW,EAAE,4GAA4G;SAC1H,CAAC;QACF,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,WAAW,EACT,2EAA2E;gBAC3E,iFAAiF;gBACjF,gFAAgF;SACnF,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;QAErE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEpD,IAAI,CAAC;YACH,2CAA2C;YAC3C,2EAA2E;YAC3E,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;YACxC,MAAM,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;gBACvC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,KAAK,CAAC,MAAyC;gBACvD,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC;gBAClC,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC;gBAChC,aAAa,EAAE,KAAK,CAAC,gBAAgB,CAAC;aACvC,CAAC,CAAC;QAEL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,KAAc,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/translate-sql/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAY7C;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAAO;IAC7C,MAAM,CAAC,WAAW,SAAiF;IAEnG,MAAM,CAAC,QAAQ,WAKb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;MAmCV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB1B;;OAEG;YACW,eAAe;IAgC7B;;OAEG;YACW,cAAc;IAgG5B;;OAEG;YACW,mBAAmB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/translate-sql/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAY7C;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAAO;IAC7C,MAAM,CAAC,WAAW,SAAiF;IAEnG,MAAM,CAAC,QAAQ,WAKb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;MAmCV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB1B;;OAEG;YACW,eAAe;IAgC7B;;OAEG;YACW,cAAc;IAgG5B;;OAEG;YACW,mBAAmB;CAmDpC"}
|
|
@@ -188,9 +188,10 @@ export default class TranslateSQL extends Command {
|
|
|
188
188
|
try {
|
|
189
189
|
const { Metadata } = await import('@memberjunction/core');
|
|
190
190
|
const md = new Metadata(); // global-provider-ok: CLI tool, single-provider context
|
|
191
|
-
// Queries
|
|
191
|
+
// Queries — read from QueryEngine for event-driven freshness
|
|
192
|
+
const { QueryEngine } = await import('@memberjunction/core-entities');
|
|
192
193
|
if (scope === 'all' || scope === 'queries') {
|
|
193
|
-
for (const query of
|
|
194
|
+
for (const query of QueryEngine.Instance.Queries) {
|
|
194
195
|
if (query.SQL) {
|
|
195
196
|
fragments.push({ label: `Query: ${query.Name}`, sql: query.SQL });
|
|
196
197
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/translate-sql/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/translate-sql/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# bring-your-own-app — Mode D scaffold
|
|
2
|
+
|
|
3
|
+
A minimal scaffold for **Mode D** of the MJ regression suite: boot **your own app** inside the same Docker network as the test-runner, point the runner at it via an in-network hostname (`http://byo-app:3000`), and run your tests against it.
|
|
4
|
+
|
|
5
|
+
This scaffold gives you the pieces; you bring the app.
|
|
6
|
+
|
|
7
|
+
## What this folder contains
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
bring-your-own-app/
|
|
11
|
+
├── README.md (this file)
|
|
12
|
+
├── target.json Target profile — points the runner at http://byo-app:3000
|
|
13
|
+
├── docker-compose.app.yml Mode D overlay template — adds the `byo-app` service to the regression stack
|
|
14
|
+
└── byo-metadata/ MJ test metadata for your suite
|
|
15
|
+
├── .mj-sync.json
|
|
16
|
+
├── tests/
|
|
17
|
+
│ ├── .mj-sync.json
|
|
18
|
+
│ ├── .T01-counter-increment.json (example — adapt to YOUR app's workflows)
|
|
19
|
+
│ └── .T02-contact-form-submit.json (example — adapt to YOUR app's workflows)
|
|
20
|
+
└── test-suites/
|
|
21
|
+
├── .mj-sync.json
|
|
22
|
+
└── .byo-suite.json
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## What to customize
|
|
26
|
+
|
|
27
|
+
1. **`docker-compose.app.yml`** — choose either `build:` (your app's source + Dockerfile) or `image:` (a pre-built image). Adjust the healthcheck to whatever indicates "YOUR app is ready."
|
|
28
|
+
2. **`target.json`** — set `baseUrl`, `auth` (if your app requires login), and `allowedDomains` for your app.
|
|
29
|
+
3. **`byo-metadata/tests/*.json`** — the two starter tests describe hypothetical "counter" and "contact form" workflows; rewrite the goals + `judgeValidationCriteria` for workflows in YOUR app. Reference your routes / form fields / expected text.
|
|
30
|
+
4. **`byo-metadata/test-suites/.byo-suite.json`** — wires your tests together into the BYO suite the runner executes.
|
|
31
|
+
|
|
32
|
+
## How it runs
|
|
33
|
+
|
|
34
|
+
The BYO suite layers on top of the existing 5-container MJ regression stack — it reuses MJAPI/SQL for test storage and reuses the test-runner image for execution. The overlay adds the `byo-app` service and overrides three env vars on `test-runner` to redirect the run.
|
|
35
|
+
|
|
36
|
+
Via the CLI:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
mj test regression remote \
|
|
40
|
+
--target=./bring-your-own-app/target.json \
|
|
41
|
+
--overlay=./bring-your-own-app/docker-compose.app.yml
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Or directly with docker compose (from the MJ repo root):
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
docker compose \
|
|
48
|
+
-f docker/regression/docker-compose.test.yml \
|
|
49
|
+
-f bring-your-own-app/docker-compose.app.yml \
|
|
50
|
+
--env-file docker/regression/.env.test \
|
|
51
|
+
--profile full \
|
|
52
|
+
up --abort-on-container-exit --exit-code-from test-runner
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## What runs, in order
|
|
56
|
+
|
|
57
|
+
1. The base `mj-regression` stack comes up: `sqlserver` → `db-setup` (migrations, codegen, MJ metadata push) → `mjapi` → `mjexplorer` → `test-runner`.
|
|
58
|
+
2. The overlay adds `byo-app` to the network and makes `test-runner` wait for its healthcheck.
|
|
59
|
+
3. Env-var overrides on `test-runner`:
|
|
60
|
+
- `TEST_SUITE_NAME=BYO Regression Suite` — runs YOUR suite instead of the MJ Explorer one.
|
|
61
|
+
- `EXTRA_METADATA_DIRS=/app/byo-metadata` — pushes your tests + suite to the DB alongside MJ defaults.
|
|
62
|
+
- `MJ_TEST_VAR_baseUrl=http://byo-app:3000` — drives the `{{baseUrl}}` placeholder in every BYO test JSON.
|
|
63
|
+
- `MJ_TEST_VAR_allowedDomains=["byo-app"]` — drives `{{allowedDomains}}` (JSON-parsed automatically because it starts with `[`).
|
|
64
|
+
4. The test-runner fires your suite. Results land in `docker/regression/test-results/run-<TIMESTAMP>/`.
|
|
65
|
+
|
|
66
|
+
## Path notes
|
|
67
|
+
|
|
68
|
+
Docker Compose resolves relative paths in overlay files using the directory of the **first** `-f` file, not the overlay's own location. The first file is `docker/regression/docker-compose.test.yml`, so paths in `docker-compose.app.yml` are relative to `docker/regression/`. Adjust accordingly if your scaffold lives elsewhere — or use absolute paths.
|
|
69
|
+
|
|
70
|
+
## Next steps
|
|
71
|
+
|
|
72
|
+
- Replace the two example tests with goals that exercise YOUR app's real workflows.
|
|
73
|
+
- Add additional tests as needed (one JSON file per test).
|
|
74
|
+
- If your app needs authentication, fill in `target.json`'s `auth.bindings` (the runner supports several strategies — see the MJ regression suite docs).
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fields": {
|
|
3
|
+
"Name": "BYO Regression Suite",
|
|
4
|
+
"Description": "Regression suite targeting the bring-your-own-app demo (Angular + Express with two intentional bugs). Both tests are EXPECTED TO FAIL against the buggy demo app — that's the point: this exercises the runner's ability to catch real regressions in non-MJ applications.",
|
|
5
|
+
"Status": "Active",
|
|
6
|
+
"Configuration": {
|
|
7
|
+
"applicationContext": "## BYO Demo App\n\nA tiny Angular + Express SPA. Two routes, no authentication, no shared session state.\n\n### Routes\n- `/counter` — a counter UI with a single `+1` button. Clicking the button increments a displayed number starting at 0.\n- `/contact` — a contact form (Name, Email, Message fields) with a Submit button. After successful submission, a green confirmation banner appears inline below the form.\n\n### Navigation landmarks\n- A horizontal top nav at the page top has two links — `Counter` and `Contact` — that route between the two pages. No login, no app switcher.\n- The page body is centered in a max-width container; there is no sidebar.\n\n### Conventions\n- All UI is rendered immediately on page load; there is no spinner. A blank page is an error state, not a loading state.\n- Form inputs are labeled above the field (Name / Email / Message)."
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
"relatedEntities": {
|
|
11
|
+
"MJ: Test Suite Tests": [
|
|
12
|
+
{
|
|
13
|
+
"fields": {
|
|
14
|
+
"SuiteID": "@parent:ID",
|
|
15
|
+
"TestID": "@lookup:MJ: Tests.Name=BYO T01 - Counter Increments On Click",
|
|
16
|
+
"Sequence": 1,
|
|
17
|
+
"Status": "Active"
|
|
18
|
+
},
|
|
19
|
+
"primaryKey": {
|
|
20
|
+
"ID": "7B9ADBD3-49F4-40CE-9ECA-82FA2F3B708C"
|
|
21
|
+
},
|
|
22
|
+
"sync": {
|
|
23
|
+
"lastModified": "2026-05-27T00:01:43.716Z",
|
|
24
|
+
"checksum": "60393c8ae768aca333cae0cdd26d108f587b1d7afd07b7413f820d6005d70a6c"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"fields": {
|
|
29
|
+
"SuiteID": "@parent:ID",
|
|
30
|
+
"TestID": "@lookup:MJ: Tests.Name=BYO T02 - Contact Form Shows Confirmation",
|
|
31
|
+
"Sequence": 2,
|
|
32
|
+
"Status": "Active"
|
|
33
|
+
},
|
|
34
|
+
"primaryKey": {
|
|
35
|
+
"ID": "591ED672-02FD-437D-94A2-7B5F2BDBDD41"
|
|
36
|
+
},
|
|
37
|
+
"sync": {
|
|
38
|
+
"lastModified": "2026-05-27T00:01:43.727Z",
|
|
39
|
+
"checksum": "c0ee680734d7d5104d24ebf6b4cd801b6054cd3872390a53077e10cb606a55d3"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
"primaryKey": {
|
|
45
|
+
"ID": "2C65B8C5-CD3E-4EAD-8017-3EB0866E392C"
|
|
46
|
+
},
|
|
47
|
+
"sync": {
|
|
48
|
+
"lastModified": "2026-05-27T00:01:43.686Z",
|
|
49
|
+
"checksum": "1331e83ca3cb279c0463d84ed3972b902f35ab23f136abd6e2767192e92b0d84"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fields": {
|
|
3
|
+
"TypeID": "@lookup:MJ: Test Types.Name=Computer Use",
|
|
4
|
+
"Name": "BYO T01 - Counter Increments On Click",
|
|
5
|
+
"Description": "Navigates to the counter page, clicks the '+1' button three times, and verifies the displayed count went UP. Demonstrates the regression suite catching a broken counter — the BYO app intentionally decrements on click instead, so this test is expected to FAIL when the suite is run against the buggy app.",
|
|
6
|
+
"InputDefinition": {
|
|
7
|
+
"goal": "Open the page at {{baseUrl}}/counter. The page shows a counter (currently 0) and a button labeled '+1'. Click the '+1' button three times. After three clicks, the counter MUST display 3. If it displays anything other than 3 (e.g., -3, 0, or any negative number), the test goal has NOT been met. Report the final count you observed.",
|
|
8
|
+
"startUrl": "{{baseUrl}}/counter",
|
|
9
|
+
"allowedDomains": "{{allowedDomains}}"
|
|
10
|
+
},
|
|
11
|
+
"ExpectedOutcomes": {
|
|
12
|
+
"goalCompleted": true,
|
|
13
|
+
"finalUrlPattern": "/counter$",
|
|
14
|
+
"minConfidence": 0.7,
|
|
15
|
+
"maxSteps": 12,
|
|
16
|
+
"judgeValidationCriteria": [
|
|
17
|
+
"The counter displays the value 3 (not -3, 0, or any other value)",
|
|
18
|
+
"The +1 button was clicked exactly three times",
|
|
19
|
+
"The counter went UP with each click, not down"
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
"Configuration": {
|
|
23
|
+
"headless": true,
|
|
24
|
+
"maxSteps": 12,
|
|
25
|
+
"maxExecutionTime": 120000,
|
|
26
|
+
"screenshotHistoryDepth": 3,
|
|
27
|
+
"viewportWidth": 1280,
|
|
28
|
+
"viewportHeight": 720,
|
|
29
|
+
"controllerPromptName": "Computer Use - Controller",
|
|
30
|
+
"judgePromptName": "Computer Use - Judge",
|
|
31
|
+
"judgeFrequency": "EveryNSteps:2",
|
|
32
|
+
"oracles": [
|
|
33
|
+
{
|
|
34
|
+
"type": "goal-completion",
|
|
35
|
+
"weight": 0.7,
|
|
36
|
+
"config": {
|
|
37
|
+
"minConfidence": 0.7
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"type": "step-count",
|
|
42
|
+
"weight": 0.3,
|
|
43
|
+
"config": {
|
|
44
|
+
"maxSteps": 12
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"scoringWeights": {
|
|
49
|
+
"goal-completion": 0.7,
|
|
50
|
+
"step-count": 0.3
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"Status": "Active",
|
|
54
|
+
"Tags": "byo-app,smoke,regression"
|
|
55
|
+
},
|
|
56
|
+
"primaryKey": {
|
|
57
|
+
"ID": "D712B7E1-7B67-42A5-8C88-F994D1F3D5CD"
|
|
58
|
+
},
|
|
59
|
+
"sync": {
|
|
60
|
+
"lastModified": "2026-05-27T00:01:43.605Z",
|
|
61
|
+
"checksum": "e820483652ec4bc9a26bdb4b033feed7347a04be4a808687b4a260774ec03e41"
|
|
62
|
+
}
|
|
63
|
+
}
|
package/dist/init-templates/bring-your-own-app/byo-metadata/tests/.T02-contact-form-submit.json
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fields": {
|
|
3
|
+
"TypeID": "@lookup:MJ: Test Types.Name=Computer Use",
|
|
4
|
+
"Name": "BYO T02 - Contact Form Shows Confirmation",
|
|
5
|
+
"Description": "Navigates to the contact form, fills it out with valid data, clicks Submit, and verifies a 'Thanks!' confirmation message appears. Demonstrates the regression suite catching a broken form — the BYO app's Submit handler is a no-op, so this test is expected to FAIL when run against the buggy app.",
|
|
6
|
+
"InputDefinition": {
|
|
7
|
+
"goal": "Open the page at {{baseUrl}}/contact. Fill out the contact form with: Name='Alex Tester', Email='alex@example.com', Message='Hello, this is a regression test.' Then click the Submit button. After submission, a visible confirmation message containing the word 'Thanks' MUST appear on the page (typically styled in green or as a banner). If no such confirmation message appears within 3 seconds of clicking Submit, the test goal has NOT been met. Report whether you saw a 'Thanks' confirmation.",
|
|
8
|
+
"startUrl": "{{baseUrl}}/contact",
|
|
9
|
+
"allowedDomains": "{{allowedDomains}}"
|
|
10
|
+
},
|
|
11
|
+
"ExpectedOutcomes": {
|
|
12
|
+
"goalCompleted": true,
|
|
13
|
+
"finalUrlPattern": "/contact$",
|
|
14
|
+
"minConfidence": 0.7,
|
|
15
|
+
"maxSteps": 14,
|
|
16
|
+
"judgeValidationCriteria": [
|
|
17
|
+
"All three form fields (Name, Email, Message) were filled with the requested values",
|
|
18
|
+
"The Submit button was clicked",
|
|
19
|
+
"A confirmation message containing 'Thanks' is visible on the page after submission"
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
"Configuration": {
|
|
23
|
+
"headless": true,
|
|
24
|
+
"maxSteps": 14,
|
|
25
|
+
"maxExecutionTime": 150000,
|
|
26
|
+
"screenshotHistoryDepth": 3,
|
|
27
|
+
"viewportWidth": 1280,
|
|
28
|
+
"viewportHeight": 720,
|
|
29
|
+
"controllerPromptName": "Computer Use - Controller",
|
|
30
|
+
"judgePromptName": "Computer Use - Judge",
|
|
31
|
+
"judgeFrequency": "EveryNSteps:2",
|
|
32
|
+
"oracles": [
|
|
33
|
+
{
|
|
34
|
+
"type": "goal-completion",
|
|
35
|
+
"weight": 0.7,
|
|
36
|
+
"config": {
|
|
37
|
+
"minConfidence": 0.7
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"type": "step-count",
|
|
42
|
+
"weight": 0.3,
|
|
43
|
+
"config": {
|
|
44
|
+
"maxSteps": 14
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"scoringWeights": {
|
|
49
|
+
"goal-completion": 0.7,
|
|
50
|
+
"step-count": 0.3
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"Status": "Active",
|
|
54
|
+
"Tags": "byo-app,regression"
|
|
55
|
+
},
|
|
56
|
+
"primaryKey": {
|
|
57
|
+
"ID": "71B14201-ADC0-4FF3-A553-D0C98E84ADAA"
|
|
58
|
+
},
|
|
59
|
+
"sync": {
|
|
60
|
+
"lastModified": "2026-05-27T00:01:43.624Z",
|
|
61
|
+
"checksum": "a33d5762423e867f7a58f570c138c6eb539ff23e33044c87bb7852da58acf01a"
|
|
62
|
+
}
|
|
63
|
+
}
|