@memberjunction/cli 5.37.0 → 5.39.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 +519 -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/bundle/index.d.ts +21 -0
- package/dist/commands/bundle/index.d.ts.map +1 -0
- package/dist/commands/bundle/index.js +62 -0
- package/dist/commands/bundle/index.js.map +1 -0
- package/dist/commands/migrate/index.d.ts +29 -0
- package/dist/commands/migrate/index.d.ts.map +1 -1
- package/dist/commands/migrate/index.js +111 -5
- package/dist/commands/migrate/index.js.map +1 -1
- 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/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +13 -0
- package/dist/config.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/db-preflight.d.ts +42 -0
- package/dist/lib/db-preflight.d.ts.map +1 -0
- package/dist/lib/db-preflight.js +113 -0
- package/dist/lib/db-preflight.js.map +1 -0
- package/dist/lib/db-version.d.ts +36 -0
- package/dist/lib/db-version.d.ts.map +1 -0
- package/dist/lib/db-version.js +45 -0
- package/dist/lib/db-version.js.map +1 -0
- package/dist/lib/migration-fetch.d.ts +49 -0
- package/dist/lib/migration-fetch.d.ts.map +1 -0
- package/dist/lib/migration-fetch.js +152 -0
- package/dist/lib/migration-fetch.js.map +1 -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/dist/light-commands.d.ts.map +1 -1
- package/dist/light-commands.js +2 -0
- package/dist/light-commands.js.map +1 -1
- package/oclif.manifest.json +1635 -702
- package/package.json +22 -17
- package/regression-compose/docker-compose.bacpac-standalone.yml +109 -0
- package/regression-compose/docker-compose.standalone.yml +50 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/cli",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.39.0",
|
|
5
5
|
"description": "MemberJunction command line tools",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"oclif"
|
|
@@ -24,10 +24,11 @@
|
|
|
24
24
|
"files": [
|
|
25
25
|
"/bin",
|
|
26
26
|
"/dist",
|
|
27
|
-
"/oclif.manifest.json"
|
|
27
|
+
"/oclif.manifest.json",
|
|
28
|
+
"/regression-compose"
|
|
28
29
|
],
|
|
29
30
|
"scripts": {
|
|
30
|
-
"build": "tsc && tsc-alias -f && oclif manifest",
|
|
31
|
+
"build": "tsc && tsc-alias -f && oclif manifest && node scripts/copy-regression-assets.mjs",
|
|
31
32
|
"prepack": "npm run build && oclif readme",
|
|
32
33
|
"postpack": "rimraf oclif.manifest.json",
|
|
33
34
|
"version": "oclif readme && git add README.md",
|
|
@@ -54,23 +55,23 @@
|
|
|
54
55
|
},
|
|
55
56
|
"dependencies": {
|
|
56
57
|
"@inquirer/prompts": "^8.2.0",
|
|
57
|
-
"@memberjunction/ai-cli": "5.
|
|
58
|
-
"@memberjunction/codegen-lib": "5.
|
|
59
|
-
"@memberjunction/config": "5.
|
|
60
|
-
"@memberjunction/core": "5.
|
|
61
|
-
"@memberjunction/generic-database-provider": "5.
|
|
62
|
-
"@memberjunction/installer": "5.
|
|
63
|
-
"@memberjunction/db-auto-doc": "5.
|
|
64
|
-
"@memberjunction/metadata-sync": "5.
|
|
65
|
-
"@memberjunction/open-app-engine": "5.
|
|
66
|
-
"@memberjunction/query-gen": "5.
|
|
67
|
-
"@memberjunction/server-bootstrap-lite": "5.
|
|
58
|
+
"@memberjunction/ai-cli": "5.39.0",
|
|
59
|
+
"@memberjunction/codegen-lib": "5.39.0",
|
|
60
|
+
"@memberjunction/config": "5.39.0",
|
|
61
|
+
"@memberjunction/core": "5.39.0",
|
|
62
|
+
"@memberjunction/generic-database-provider": "5.39.0",
|
|
63
|
+
"@memberjunction/installer": "5.39.0",
|
|
64
|
+
"@memberjunction/db-auto-doc": "5.39.0",
|
|
65
|
+
"@memberjunction/metadata-sync": "5.39.0",
|
|
66
|
+
"@memberjunction/open-app-engine": "5.39.0",
|
|
67
|
+
"@memberjunction/query-gen": "5.39.0",
|
|
68
|
+
"@memberjunction/server-bootstrap-lite": "5.39.0",
|
|
68
69
|
"@memberjunction/skyway-core": "^0.6.1",
|
|
69
70
|
"@memberjunction/skyway-postgres": "^0.6.1",
|
|
70
71
|
"@memberjunction/skyway-sqlserver": "^0.6.1",
|
|
71
|
-
"@memberjunction/sql-converter": "5.
|
|
72
|
-
"@memberjunction/sqlserver-dataprovider": "5.
|
|
73
|
-
"@memberjunction/testing-cli": "5.
|
|
72
|
+
"@memberjunction/sql-converter": "5.39.0",
|
|
73
|
+
"@memberjunction/sqlserver-dataprovider": "5.39.0",
|
|
74
|
+
"@memberjunction/testing-cli": "5.39.0",
|
|
74
75
|
"@oclif/core": "^3.27.0",
|
|
75
76
|
"@oclif/plugin-help": "^6.2.37",
|
|
76
77
|
"@oclif/plugin-version": "^2.2.36",
|
|
@@ -83,7 +84,10 @@
|
|
|
83
84
|
"fast-glob": "^3.3.3",
|
|
84
85
|
"figlet": "^1.10.0",
|
|
85
86
|
"fs-extra": "^11.3.3",
|
|
87
|
+
"mssql": "^11.0.1",
|
|
86
88
|
"ora-classic": "^5.4.2",
|
|
89
|
+
"pg": "^8.13.1",
|
|
90
|
+
"pg-query-stream": "~4.8.0",
|
|
87
91
|
"recast": "^0.23.11",
|
|
88
92
|
"simple-git": "^3.30.0",
|
|
89
93
|
"zod": "~3.24.4"
|
|
@@ -92,6 +96,7 @@
|
|
|
92
96
|
"@oclif/prettier-config": "^0.2.1",
|
|
93
97
|
"@types/figlet": "^1.7.0",
|
|
94
98
|
"@types/fs-extra": "^11.0.4",
|
|
99
|
+
"@types/pg": "^8.11.10",
|
|
95
100
|
"oclif": "^4.22.73",
|
|
96
101
|
"rimraf": "6.1.2",
|
|
97
102
|
"tsx": "^4.21.0",
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Bacpac standalone — run the FULL MJ stack from PUBLISHED images (no monorepo)
|
|
2
|
+
# against a database imported from a .bacpac. Driven by `mj test regression up
|
|
3
|
+
# --bacpac=<file>` when outside the monorepo.
|
|
4
|
+
#
|
|
5
|
+
# ┌─ sqlserver ──┐
|
|
6
|
+
# │ └─ bacpac-import (one-shot, amd64) ── SqlPackage import into DB
|
|
7
|
+
# │ └─ api (memberjunction/api) ── boots → mj migrate + codegen (= upgrade)
|
|
8
|
+
# │ └─ explorer (memberjunction/explorer) ── nginx, /api→api, runtime Auth0
|
|
9
|
+
# │ └─ test-runner ── push prompts+suite, drive explorer URL, reports
|
|
10
|
+
#
|
|
11
|
+
# PREREQUISITE: `memberjunction/explorer` is not published yet (a separate
|
|
12
|
+
# workstream — runtime-configurable Explorer image). Until it exists, the
|
|
13
|
+
# `explorer` service can't pull and external bacpac stays dormant. Everything
|
|
14
|
+
# else (Mode B/C/D via docker-compose.standalone.yml) is independent of it.
|
|
15
|
+
name: mj-regression-bacpac
|
|
16
|
+
|
|
17
|
+
x-db: &db-conn
|
|
18
|
+
DB_HOST: sqlserver
|
|
19
|
+
DB_PORT: "1433"
|
|
20
|
+
DB_USERNAME: sa
|
|
21
|
+
DB_PASSWORD: "${TEST_SA_PASSWORD:-TestPassword123!}"
|
|
22
|
+
DB_DATABASE: "${DB_DATABASE:-MemberJunction_Imported}"
|
|
23
|
+
DB_TRUST_SERVER_CERTIFICATE: "true"
|
|
24
|
+
MJ_BASE_ENCRYPTION_KEY: "${MJ_BASE_ENCRYPTION_KEY:-}"
|
|
25
|
+
|
|
26
|
+
services:
|
|
27
|
+
sqlserver:
|
|
28
|
+
image: mcr.microsoft.com/mssql/server:2022-latest
|
|
29
|
+
platform: linux/amd64
|
|
30
|
+
environment:
|
|
31
|
+
ACCEPT_EULA: "Y"
|
|
32
|
+
MSSQL_SA_PASSWORD: "${TEST_SA_PASSWORD:-TestPassword123!}"
|
|
33
|
+
healthcheck:
|
|
34
|
+
test: /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "$$MSSQL_SA_PASSWORD" -Q "SELECT 1" -C -No
|
|
35
|
+
interval: 10s
|
|
36
|
+
timeout: 5s
|
|
37
|
+
retries: 15
|
|
38
|
+
start_period: 30s
|
|
39
|
+
|
|
40
|
+
bacpac-import:
|
|
41
|
+
image: ${MJ_IMAGE:-memberjunction/agentic-test-runner:latest}
|
|
42
|
+
platform: linux/amd64 # SqlPackage is x64-only
|
|
43
|
+
depends_on:
|
|
44
|
+
sqlserver:
|
|
45
|
+
condition: service_healthy
|
|
46
|
+
environment:
|
|
47
|
+
<<: *db-conn
|
|
48
|
+
BACPAC_FILE: "/app/bacpac/${BACPAC_FILE:-db.bacpac}"
|
|
49
|
+
BACPAC_UPGRADE: "${BACPAC_UPGRADE:-true}"
|
|
50
|
+
volumes:
|
|
51
|
+
- ${BACPAC_DIR:-./bacpac}:/app/bacpac:ro
|
|
52
|
+
command: ["import-bacpac"]
|
|
53
|
+
|
|
54
|
+
api:
|
|
55
|
+
image: ${MJ_API_IMAGE:-memberjunction/api:latest}
|
|
56
|
+
depends_on:
|
|
57
|
+
bacpac-import:
|
|
58
|
+
condition: service_completed_successfully
|
|
59
|
+
# MJAPI's entrypoint runs `mj migrate` + `mj codegen` on boot → this IS the
|
|
60
|
+
# bacpac "upgrade" step. (BACPAC_UPGRADE=false is advisory here; skipping
|
|
61
|
+
# migrate needs a SKIP_MIGRATIONS flag on the api image — see plan.)
|
|
62
|
+
environment:
|
|
63
|
+
<<: *db-conn
|
|
64
|
+
healthcheck:
|
|
65
|
+
test: ["CMD-SHELL", "curl -fsS http://localhost:4000/healthcheck || exit 1"]
|
|
66
|
+
interval: 10s
|
|
67
|
+
timeout: 5s
|
|
68
|
+
retries: 30
|
|
69
|
+
start_period: 60s
|
|
70
|
+
|
|
71
|
+
explorer:
|
|
72
|
+
image: ${MJ_EXPLORER_IMAGE:-memberjunction/explorer:latest} # ⟵ PREREQUISITE
|
|
73
|
+
depends_on:
|
|
74
|
+
api:
|
|
75
|
+
condition: service_healthy
|
|
76
|
+
environment:
|
|
77
|
+
# Runtime config consumed by the (future) runtime-configurable Explorer image.
|
|
78
|
+
AUTH0_DOMAIN: "${AUTH0_DOMAIN:-}"
|
|
79
|
+
AUTH0_CLIENTID: "${AUTH0_CLIENTID:-}"
|
|
80
|
+
API_SERVICE: "api" # nginx proxies /api/ → http://api:4000
|
|
81
|
+
healthcheck:
|
|
82
|
+
test: ["CMD-SHELL", "curl -fsS http://localhost:4200/ || exit 1"]
|
|
83
|
+
interval: 10s
|
|
84
|
+
timeout: 5s
|
|
85
|
+
retries: 30
|
|
86
|
+
start_period: 30s
|
|
87
|
+
|
|
88
|
+
test-runner:
|
|
89
|
+
image: ${MJ_IMAGE:-memberjunction/agentic-test-runner:latest}
|
|
90
|
+
depends_on:
|
|
91
|
+
explorer:
|
|
92
|
+
condition: service_healthy
|
|
93
|
+
env_file:
|
|
94
|
+
- path: ${USER_ENV_FILE:-/dev/null}
|
|
95
|
+
required: false
|
|
96
|
+
environment:
|
|
97
|
+
<<: *db-conn
|
|
98
|
+
# AI vendor keys (Gemini is the primary model; Anthropic is failover).
|
|
99
|
+
AI_VENDOR_API_KEY__GeminiLLM: "${AI_VENDOR_API_KEY__GeminiLLM:-}"
|
|
100
|
+
AI_VENDOR_API_KEY__AnthropicLLM: "${AI_VENDOR_API_KEY__AnthropicLLM:-}"
|
|
101
|
+
TEST_SUITE_NAME: "${TEST_SUITE_NAME:-}"
|
|
102
|
+
EXTRA_METADATA_DIRS: "/work/metadata"
|
|
103
|
+
MAX_PARALLEL_WORKERS: "${MAX_PARALLEL_WORKERS:-4}"
|
|
104
|
+
shm_size: '2gb'
|
|
105
|
+
volumes:
|
|
106
|
+
- ${TARGET_DIR:-./bacpac}:/work:ro
|
|
107
|
+
- ./test-results:/app/test-results
|
|
108
|
+
# baseUrl comes from the target; default points at the in-network explorer.
|
|
109
|
+
command: ["run", "--target=/work/${TARGET_FILE:-target.json}"]
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Standalone compose — run the regression suite from OUTSIDE the MJ monorepo,
|
|
2
|
+
# using the PUBLISHED agentic-test-runner image. No source build.
|
|
3
|
+
#
|
|
4
|
+
# Driven by `mj test regression remote --target=<file>` when not in the monorepo,
|
|
5
|
+
# or directly:
|
|
6
|
+
# TARGET_DIR=$(pwd)/my-suite TARGET_FILE=target.json USER_ENV_FILE=$(pwd)/.env \
|
|
7
|
+
# docker compose -f docker-compose.standalone.yml up
|
|
8
|
+
#
|
|
9
|
+
# Mode D (bring-your-own-app) — layer your app's compose so it boots on the same
|
|
10
|
+
# network; point the target's baseUrl at its in-network hostname:
|
|
11
|
+
# docker compose -f docker-compose.standalone.yml -f your-app.compose.yml up
|
|
12
|
+
#
|
|
13
|
+
# Provider DB: the test engine needs an MJ database (DB_*) to load test defs +
|
|
14
|
+
# Computer Use prompts and record results — your instance under test, or a
|
|
15
|
+
# throwaway. Auth `env:` references in the target resolve from USER_ENV_FILE.
|
|
16
|
+
name: mj-regression-standalone
|
|
17
|
+
|
|
18
|
+
services:
|
|
19
|
+
test-runner:
|
|
20
|
+
image: ${MJ_IMAGE:-memberjunction/agentic-test-runner:latest}
|
|
21
|
+
# Inject the user's whole .env (DB_*, auth env: refs, AI keys) into the
|
|
22
|
+
# container. Absolute path so it resolves regardless of cwd; optional so a
|
|
23
|
+
# missing file is fine (vars can come from the environment block below).
|
|
24
|
+
env_file:
|
|
25
|
+
- path: ${USER_ENV_FILE:-/dev/null}
|
|
26
|
+
required: false
|
|
27
|
+
environment:
|
|
28
|
+
# Provider DB (override via your .env / environment).
|
|
29
|
+
DB_HOST: "${DB_HOST:-host.docker.internal}"
|
|
30
|
+
DB_PORT: "${DB_PORT:-1433}"
|
|
31
|
+
DB_DATABASE: "${DB_DATABASE:-}"
|
|
32
|
+
DB_USERNAME: "${DB_USERNAME:-}"
|
|
33
|
+
DB_PASSWORD: "${DB_PASSWORD:-}"
|
|
34
|
+
DB_TRUST_SERVER_CERTIFICATE: "${DB_TRUST_SERVER_CERTIFICATE:-true}"
|
|
35
|
+
MJ_BASE_ENCRYPTION_KEY: "${MJ_BASE_ENCRYPTION_KEY:-}"
|
|
36
|
+
# AI vendor keys (Gemini is the primary model; Anthropic is failover).
|
|
37
|
+
AI_VENDOR_API_KEY__GeminiLLM: "${AI_VENDOR_API_KEY__GeminiLLM:-}"
|
|
38
|
+
AI_VENDOR_API_KEY__AnthropicLLM: "${AI_VENDOR_API_KEY__AnthropicLLM:-}"
|
|
39
|
+
TEST_SUITE_NAME: "${TEST_SUITE_NAME:-}"
|
|
40
|
+
MAX_PARALLEL_WORKERS: "${MAX_PARALLEL_WORKERS:-4}"
|
|
41
|
+
extra_hosts:
|
|
42
|
+
# Lets DB_HOST=host.docker.internal reach a DB published on the host (Linux too).
|
|
43
|
+
- "host.docker.internal:host-gateway"
|
|
44
|
+
shm_size: '2gb'
|
|
45
|
+
volumes:
|
|
46
|
+
# Your suite dir: target.json + metadata/ (tests + test-suites). Mounted at
|
|
47
|
+
# /work; the target's extraMetadataDirs should point at /work/metadata.
|
|
48
|
+
- ${TARGET_DIR:-./bacpac}:/work:ro
|
|
49
|
+
- ./test-results:/app/test-results
|
|
50
|
+
command: ["run", "--target=/work/${TARGET_FILE:-target.json}"]
|