retestkit 1.13.0 → 1.14.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 CHANGED
@@ -75,24 +75,104 @@ npm run test:e2e
75
75
 
76
76
  E2E tests have extended timeouts (5 minutes per test) and run serially to avoid resource contention. They create isolated temporary workspaces that are cleaned up after each test.
77
77
 
78
+ ## Quick Start
79
+
80
+ RetestKit is designed for **zero-configuration installation**. Just add the server to your MCP client and run `/init` to configure.
81
+
82
+ ### Adding to MCP Clients
83
+
84
+ **VS Code / GitHub Copilot** (`.vscode/mcp.json`):
85
+ ```json
86
+ {
87
+ "servers": {
88
+ "retestkit": {
89
+ "type": "stdio",
90
+ "command": "npx",
91
+ "args": ["retestkit"]
92
+ }
93
+ }
94
+ }
95
+ ```
96
+
97
+ **Claude Desktop** (`claude_desktop_config.json`):
98
+ ```json
99
+ {
100
+ "mcpServers": {
101
+ "retestkit": {
102
+ "command": "npx",
103
+ "args": ["retestkit"]
104
+ }
105
+ }
106
+ }
107
+ ```
108
+
109
+ **Cursor / Cline** (settings):
110
+ ```json
111
+ {
112
+ "mcpServers": {
113
+ "retestkit": {
114
+ "command": "npx",
115
+ "args": ["retestkit"]
116
+ }
117
+ }
118
+ }
119
+ ```
120
+
121
+ > **Note:** No `env` or `inputs` sections needed. All configuration happens via the `/init` prompt after the server starts.
122
+
123
+ ### First-Time Setup
124
+
125
+ After adding the server to your MCP client:
126
+
127
+ 1. **Run `/init`** - The init prompt guides you through configuration
128
+ 2. **Provide target URL** - The URL of the web application to test
129
+ 3. **Configuration saved** - Settings are stored in `.mcp/retestkit.json`
130
+
131
+ The `/init` prompt handles:
132
+ - Creating the config file (`.mcp/retestkit.json`)
133
+ - Setting up shortcuts (e.g., `/retest` command)
134
+ - Guiding you to start testing with `/cover`
135
+
78
136
  ## Configuration
79
137
 
80
- Configuration is done via environment variables:
81
-
82
- | Variable | Default | Description |
83
- |----------|---------|-------------|
84
- | `TRANSPORT` | `stdio` | Transport type: `stdio` or `http` |
85
- | `PORT` | `3000` | HTTP port (when `TRANSPORT=http`) |
86
- | `LOG_LEVEL` | `info` | Log level: `debug`, `info`, `warn`, `error` |
87
- | `RETEST_WORKSPACE_DIR` | `./retest` | Directory for analysis workspaces |
88
- | `PLAYWRIGHT_MCP_COMMAND` | `npx` | Command to spawn Playwright MCP |
89
- | `PLAYWRIGHT_MCP_ARGS` | `@playwright/mcp@latest` | Comma-separated args for Playwright MCP |
90
- | `CHECKPOINT_INTERVAL` | `5` | Steps between crawl checkpoints |
91
- | `SCREENSHOT_FORMAT` | `png` | Screenshot format: `png` or `jpeg` |
92
- | `SCREENSHOT_QUALITY` | `80` | JPEG quality (1-100) |
93
- | `DEFAULT_MAX_STEPS` | `50` | Default max crawl steps |
94
- | `DEFAULT_MAX_MINUTES` | `30` | Default max crawl duration |
95
- | `DEFAULT_MAX_PAGES` | `20` | Default max pages to crawl |
138
+ RetestKit uses `.mcp/retestkit.json` for all configuration. This file is created automatically when you run `/init`.
139
+
140
+ **Example `.mcp/retestkit.json`:**
141
+ ```json
142
+ {
143
+ "version": 1,
144
+ "targetUrl": "https://myapp.com",
145
+ "specsPath": "./specs",
146
+ "allowedDomains": ["myapp.com", "*.myapp.com"],
147
+ "transport": "stdio",
148
+ "port": 3000,
149
+ "workspaceDir": "./retest",
150
+ "limits": {
151
+ "maxSteps": 50,
152
+ "maxMinutes": 30,
153
+ "maxPages": 20
154
+ },
155
+ "logging": {
156
+ "level": "info"
157
+ },
158
+ "playwright": {
159
+ "command": "npx",
160
+ "args": ["@playwright/mcp@latest"]
161
+ },
162
+ "checkpointInterval": 5,
163
+ "screenshotFormat": "png",
164
+ "screenshotQuality": 80
165
+ }
166
+ ```
167
+
168
+ **Config file discovery order:**
169
+ 1. CLI flag: `--config /path/to/config.json`
170
+ 2. Environment: `RETESTKIT_CONFIG=/path/to/config.json`
171
+ 3. Workspace: `./.mcp/retestkit.json`
172
+ 4. User-level: `~/.config/retestkit/config.json`
173
+ 5. Built-in defaults
174
+
175
+ > **Note:** Environment variables are **not supported** for configuration values. Only `RETESTKIT_CONFIG` is recognized (to specify the config file path for CI/CD pipelines).
96
176
 
97
177
  ## Available Tools
98
178
 
package/dist/config.d.ts CHANGED
@@ -52,7 +52,8 @@ export declare function loadConfigFile(configPath: string): LoadConfigFileResult
52
52
  * 4. User-level: ~/.config/retestkit/config.json
53
53
  * 5. Built-in defaults
54
54
  *
55
- * Environment variables override file config values.
55
+ * All configuration comes from the config file. Environment variables
56
+ * are NOT supported except for RETESTKIT_CONFIG to specify the file path.
56
57
  *
57
58
  * @param cliConfigPath Optional path from --config CLI flag
58
59
  * @returns Validated Config object
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,0BAA0B,CAAC;AAElC;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,iBAAiB,CA+BxE;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,oBAAoB,CA8CvE;AAyDD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CA2BzD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAO5E;AAED,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,0BAA0B,CAAC;AAElC;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,iBAAiB,CA+BxE;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,oBAAoB,CA8CvE;AAyDD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CA2BzD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAO5E;AAED,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC"}
package/dist/config.js CHANGED
@@ -91,57 +91,52 @@ export function loadConfigFile(configPath) {
91
91
  }
92
92
  }
93
93
  /**
94
- * Merges file-based config with environment variables.
95
- * Environment variables take precedence over file config.
94
+ * Maps file-based config to runtime config format.
95
+ * No environment variable overrides - all config comes from the file.
96
+ * Only RETESTKIT_CONFIG env var is supported (for config file path).
96
97
  */
97
- function mergeConfigWithEnv(fileConfig) {
98
+ function mapFileConfigToRuntime(fileConfig) {
98
99
  const rawConfig = {};
99
- // Start with file config values (mapped to runtime config schema)
100
- if (fileConfig) {
101
- if (fileConfig.logging?.level) {
102
- rawConfig.logLevel = fileConfig.logging.level;
103
- }
104
- if (fileConfig.limits?.maxSteps) {
105
- rawConfig.defaultMaxSteps = fileConfig.limits.maxSteps;
106
- }
107
- if (fileConfig.limits?.maxMinutes) {
108
- rawConfig.defaultMaxMinutes = fileConfig.limits.maxMinutes;
109
- }
110
- if (fileConfig.limits?.maxPages) {
111
- rawConfig.defaultMaxPages = fileConfig.limits.maxPages;
112
- }
113
- if (fileConfig.playwright?.command) {
114
- rawConfig.playwrightMcpCommand = fileConfig.playwright.command;
115
- }
116
- if (fileConfig.playwright?.args) {
117
- rawConfig.playwrightMcpArgs = fileConfig.playwright.args.join(",");
118
- }
100
+ if (!fileConfig) {
101
+ return rawConfig;
102
+ }
103
+ // Map file config values to runtime config schema
104
+ if (fileConfig.transport) {
105
+ rawConfig.transport = fileConfig.transport;
106
+ }
107
+ if (fileConfig.port !== undefined) {
108
+ rawConfig.port = fileConfig.port;
109
+ }
110
+ if (fileConfig.workspaceDir) {
111
+ rawConfig.workspaceDir = fileConfig.workspaceDir;
112
+ }
113
+ if (fileConfig.logging?.level) {
114
+ rawConfig.logLevel = fileConfig.logging.level;
115
+ }
116
+ if (fileConfig.limits?.maxSteps) {
117
+ rawConfig.defaultMaxSteps = fileConfig.limits.maxSteps;
118
+ }
119
+ if (fileConfig.limits?.maxMinutes) {
120
+ rawConfig.defaultMaxMinutes = fileConfig.limits.maxMinutes;
121
+ }
122
+ if (fileConfig.limits?.maxPages) {
123
+ rawConfig.defaultMaxPages = fileConfig.limits.maxPages;
124
+ }
125
+ if (fileConfig.playwright?.command) {
126
+ rawConfig.playwrightMcpCommand = fileConfig.playwright.command;
127
+ }
128
+ if (fileConfig.playwright?.args) {
129
+ rawConfig.playwrightMcpArgs = fileConfig.playwright.args;
130
+ }
131
+ if (fileConfig.checkpointInterval !== undefined) {
132
+ rawConfig.checkpointInterval = fileConfig.checkpointInterval;
133
+ }
134
+ if (fileConfig.screenshotFormat) {
135
+ rawConfig.screenshotFormat = fileConfig.screenshotFormat;
136
+ }
137
+ if (fileConfig.screenshotQuality !== undefined) {
138
+ rawConfig.screenshotQuality = fileConfig.screenshotQuality;
119
139
  }
120
- // Environment variables override file config
121
- if (process.env.TRANSPORT)
122
- rawConfig.transport = process.env.TRANSPORT;
123
- if (process.env.PORT)
124
- rawConfig.port = process.env.PORT;
125
- if (process.env.LOG_LEVEL)
126
- rawConfig.logLevel = process.env.LOG_LEVEL;
127
- if (process.env.RETEST_WORKSPACE_DIR)
128
- rawConfig.workspaceDir = process.env.RETEST_WORKSPACE_DIR;
129
- if (process.env.PLAYWRIGHT_MCP_COMMAND)
130
- rawConfig.playwrightMcpCommand = process.env.PLAYWRIGHT_MCP_COMMAND;
131
- if (process.env.PLAYWRIGHT_MCP_ARGS)
132
- rawConfig.playwrightMcpArgs = process.env.PLAYWRIGHT_MCP_ARGS;
133
- if (process.env.RETEST_CHECKPOINT_INTERVAL)
134
- rawConfig.checkpointInterval = process.env.RETEST_CHECKPOINT_INTERVAL;
135
- if (process.env.RETEST_SCREENSHOT_FORMAT)
136
- rawConfig.screenshotFormat = process.env.RETEST_SCREENSHOT_FORMAT;
137
- if (process.env.RETEST_SCREENSHOT_QUALITY)
138
- rawConfig.screenshotQuality = process.env.RETEST_SCREENSHOT_QUALITY;
139
- if (process.env.RETEST_DEFAULT_MAX_STEPS)
140
- rawConfig.defaultMaxSteps = process.env.RETEST_DEFAULT_MAX_STEPS;
141
- if (process.env.RETEST_DEFAULT_MAX_MINUTES)
142
- rawConfig.defaultMaxMinutes = process.env.RETEST_DEFAULT_MAX_MINUTES;
143
- if (process.env.RETEST_DEFAULT_MAX_PAGES)
144
- rawConfig.defaultMaxPages = process.env.RETEST_DEFAULT_MAX_PAGES;
145
140
  return rawConfig;
146
141
  }
147
142
  /**
@@ -152,7 +147,8 @@ function mergeConfigWithEnv(fileConfig) {
152
147
  * 4. User-level: ~/.config/retestkit/config.json
153
148
  * 5. Built-in defaults
154
149
  *
155
- * Environment variables override file config values.
150
+ * All configuration comes from the config file. Environment variables
151
+ * are NOT supported except for RETESTKIT_CONFIG to specify the file path.
156
152
  *
157
153
  * @param cliConfigPath Optional path from --config CLI flag
158
154
  * @returns Validated Config object
@@ -170,8 +166,8 @@ export function loadConfig(cliConfigPath) {
170
166
  }
171
167
  fileConfig = fileResult.config;
172
168
  }
173
- // Merge file config with env vars
174
- const rawConfig = mergeConfigWithEnv(fileConfig);
169
+ // Map file config to runtime format (no env var overrides)
170
+ const rawConfig = mapFileConfigToRuntime(fileConfig);
175
171
  const result = ConfigSchema.safeParse(rawConfig);
176
172
  if (!result.success) {
177
173
  const errors = result.error.issues
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAe,MAAM,qBAAqB,CAAC;AAChE,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GAEvB,MAAM,0BAA0B,CAAC;AAmBlC;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,aAAsB;IACnD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAE/D,0CAA0C;IAC1C,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC1B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC;QAClE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IAErE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAE7C,MAAM,MAAM,GAAsB;QAChC,OAAO,EAAE,aAAa;QACtB,OAAO;QACP,aAAa;QACb,QAAQ;KACT,CAAC;IAEF,8BAA8B;IAC9B,IAAI,aAAa,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,YAAY,GAAG,aAAa,CAAC;IACtC,CAAC;SAAM,IAAI,OAAO,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC;IAChC,CAAC;SAAM,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,YAAY,GAAG,aAAa,CAAC;IACtC,CAAC;SAAM,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAaD;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB;IAC/C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEjC,gCAAgC;QAChC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,GAAG,sBAAsB,EAAE,CAAC;YAC1D,OAAO,CAAC,IAAI,CACV,wBAAwB,UAAU,4BAA4B,IAAI,CAAC,OAAO,IAAI;gBAC5E,gCAAgC,sBAAsB,qCAAqC,CAC9F,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;iBAC/B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;iBAC3D,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,uBAAuB,UAAU,KAAK,MAAM,EAAE;gBACrD,IAAI,EAAE,UAAU;aACjB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,MAAM,CAAC,IAAI;YACnB,IAAI,EAAE,UAAU;SACjB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,+BAA+B,UAAU,KAAK,GAAG,CAAC,OAAO,EAAE;gBAClE,IAAI,EAAE,UAAU;aACjB,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,8BAA8B,UAAU,KAAK,OAAO,EAAE;YAC7D,IAAI,EAAE,UAAU;SACjB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAC7B,UAAuB;IAEvB,MAAM,SAAS,GAA4B,EAAE,CAAC;IAE9C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,kDAAkD;IAClD,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;QACzB,SAAS,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;IAC7C,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAClC,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;IACnC,CAAC;IACD,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;QAC5B,SAAS,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;IACnD,CAAC;IACD,IAAI,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QAC9B,SAAS,CAAC,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;IAChD,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;QAChC,SAAS,CAAC,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;IACzD,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;QAClC,SAAS,CAAC,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;IAC7D,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;QAChC,SAAS,CAAC,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;IACzD,CAAC;IACD,IAAI,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;QACnC,SAAS,CAAC,oBAAoB,GAAG,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;IACjE,CAAC;IACD,IAAI,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;QAChC,SAAS,CAAC,iBAAiB,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;IAC3D,CAAC;IACD,IAAI,UAAU,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;QAChD,SAAS,CAAC,kBAAkB,GAAG,UAAU,CAAC,kBAAkB,CAAC;IAC/D,CAAC;IACD,IAAI,UAAU,CAAC,gBAAgB,EAAE,CAAC;QAChC,SAAS,CAAC,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,CAAC;IAC3D,CAAC;IACD,IAAI,UAAU,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC/C,SAAS,CAAC,iBAAiB,GAAG,UAAU,CAAC,iBAAiB,CAAC;IAC7D,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,UAAU,CAAC,aAAsB;IAC/C,MAAM,KAAK,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;IAC5C,IAAI,UAAkC,CAAC;IAEvC,4BAA4B;IAC5B,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,mCAAmC;YACnC,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QACD,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;IACjC,CAAC;IAED,2DAA2D;IAC3D,MAAM,SAAS,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAErD,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAEjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aAC/B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;aAC3D,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,aAAsB;IAClD,MAAM,KAAK,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACpD,CAAC"}
@@ -25,7 +25,7 @@ export declare const ConfigSchema: z.ZodObject<{
25
25
  }>>;
26
26
  workspaceDir: z.ZodDefault<z.ZodString>;
27
27
  playwrightMcpCommand: z.ZodDefault<z.ZodString>;
28
- playwrightMcpArgs: z.ZodPipe<z.ZodDefault<z.ZodOptional<z.ZodString>>, z.ZodTransform<string[], string>>;
28
+ playwrightMcpArgs: z.ZodPipe<z.ZodDefault<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>>, z.ZodTransform<string[], string | string[]>>;
29
29
  checkpointInterval: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
30
30
  screenshotFormat: z.ZodDefault<z.ZodEnum<{
31
31
  png: "png";
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/schemas/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,aAAa;;;EAA4B,CAAC;AACvD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,QAAQ;;;;;EAA6C,CAAC;AACnE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;iBA4BtB,CAAC;AAEJ,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/schemas/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,aAAa;;;EAA4B,CAAC;AACvD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,QAAQ;;;;;EAA6C,CAAC;AACnE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;iBAqBvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
@@ -1,8 +1,7 @@
1
1
  import { z } from "zod";
2
2
  export const TransportType = z.enum(["stdio", "http"]);
3
3
  export const LogLevel = z.enum(["debug", "info", "warn", "error"]);
4
- export const ConfigSchema = z
5
- .object({
4
+ export const ConfigSchema = z.object({
6
5
  transport: TransportType.default("stdio"),
7
6
  port: z.coerce.number().int().min(1).max(65535).default(3000),
8
7
  logLevel: LogLevel.default("info"),
@@ -10,21 +9,19 @@ export const ConfigSchema = z
10
9
  workspaceDir: z.string().default("./retest"),
11
10
  playwrightMcpCommand: z.string().default("npx"),
12
11
  playwrightMcpArgs: z
13
- .string()
12
+ .union([z.string(), z.array(z.string())])
14
13
  .optional()
15
14
  .default("@playwright/mcp@latest")
16
- .transform((val) => (val ? val.split(",") : ["@playwright/mcp@latest"])),
15
+ .transform((val) => {
16
+ if (Array.isArray(val))
17
+ return val;
18
+ return val ? val.split(",") : ["@playwright/mcp@latest"];
19
+ }),
17
20
  checkpointInterval: z.coerce.number().int().min(1).default(5),
18
21
  screenshotFormat: z.enum(["png", "jpeg"]).default("png"),
19
22
  screenshotQuality: z.coerce.number().int().min(1).max(100).default(80),
20
23
  defaultMaxSteps: z.coerce.number().int().min(1).default(50),
21
24
  defaultMaxMinutes: z.coerce.number().int().min(1).default(30),
22
25
  defaultMaxPages: z.coerce.number().int().min(1).default(20),
23
- })
24
- .refine((config) => {
25
- if (config.transport === "http" && !process.env.PORT) {
26
- return true; // Use default port
27
- }
28
- return true;
29
- }, { message: "PORT is required when TRANSPORT=http" });
26
+ });
30
27
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/schemas/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAGvD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAGnE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IAC7D,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;IAClC,uBAAuB;IACvB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;IAC5C,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC/C,iBAAiB,EAAE,CAAC;SACjB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,wBAAwB,CAAC;SACjC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC1E,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7D,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACxD,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACtE,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3D,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7D,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC5D,CAAC;KACD,MAAM,CACL,CAAC,MAAM,EAAE,EAAE;IACT,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC,CAAC,mBAAmB;IAClC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,EACD,EAAE,OAAO,EAAE,sCAAsC,EAAE,CACpD,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/schemas/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAGvD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAGnE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IAC7D,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;IAClC,uBAAuB;IACvB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;IAC5C,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC/C,iBAAiB,EAAE,CAAC;SACjB,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;SACxC,QAAQ,EAAE;SACV,OAAO,CAAC,wBAAwB,CAAC;SACjC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;QACjB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;QACnC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC;IAC3D,CAAC,CAAC;IACJ,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7D,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACxD,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACtE,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3D,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7D,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC5D,CAAC,CAAC"}
@@ -2,13 +2,20 @@ import { z } from "zod";
2
2
  /**
3
3
  * Schema for .mcp/retestkit.json configuration file.
4
4
  *
5
- * This is the file-based configuration format, separate from the
6
- * runtime ConfigSchema which merges env vars and CLI flags.
5
+ * This is the file-based configuration format. All configuration
6
+ * is done via this file; environment variables are not supported
7
+ * except for RETESTKIT_CONFIG to specify the config file path.
7
8
  */
8
9
  export declare const FileConfigSchema: z.ZodObject<{
9
10
  version: z.ZodLiteral<1>;
11
+ transport: z.ZodOptional<z.ZodEnum<{
12
+ stdio: "stdio";
13
+ http: "http";
14
+ }>>;
15
+ port: z.ZodOptional<z.ZodNumber>;
10
16
  targetUrl: z.ZodOptional<z.ZodString>;
11
17
  specsPath: z.ZodOptional<z.ZodString>;
18
+ workspaceDir: z.ZodOptional<z.ZodString>;
12
19
  allowedDomains: z.ZodOptional<z.ZodArray<z.ZodString>>;
13
20
  limits: z.ZodOptional<z.ZodObject<{
14
21
  maxSteps: z.ZodOptional<z.ZodNumber>;
@@ -27,6 +34,12 @@ export declare const FileConfigSchema: z.ZodObject<{
27
34
  error: "error";
28
35
  }>>;
29
36
  }, z.core.$strip>>;
37
+ checkpointInterval: z.ZodOptional<z.ZodNumber>;
38
+ screenshotFormat: z.ZodOptional<z.ZodEnum<{
39
+ png: "png";
40
+ jpeg: "jpeg";
41
+ }>>;
42
+ screenshotQuality: z.ZodOptional<z.ZodNumber>;
30
43
  }, z.core.$strip>;
31
44
  export type FileConfig = z.infer<typeof FileConfigSchema>;
32
45
  /**
@@ -34,8 +47,14 @@ export type FileConfig = z.infer<typeof FileConfigSchema>;
34
47
  * All fields optional to allow incremental configuration.
35
48
  */
36
49
  export declare const PartialFileConfigSchema: z.ZodObject<{
50
+ transport: z.ZodOptional<z.ZodOptional<z.ZodEnum<{
51
+ stdio: "stdio";
52
+ http: "http";
53
+ }>>>;
54
+ port: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
37
55
  targetUrl: z.ZodOptional<z.ZodOptional<z.ZodString>>;
38
56
  specsPath: z.ZodOptional<z.ZodOptional<z.ZodString>>;
57
+ workspaceDir: z.ZodOptional<z.ZodOptional<z.ZodString>>;
39
58
  allowedDomains: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
40
59
  limits: z.ZodOptional<z.ZodOptional<z.ZodObject<{
41
60
  maxSteps: z.ZodOptional<z.ZodNumber>;
@@ -54,6 +73,12 @@ export declare const PartialFileConfigSchema: z.ZodObject<{
54
73
  error: "error";
55
74
  }>>;
56
75
  }, z.core.$strip>>>;
76
+ checkpointInterval: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
77
+ screenshotFormat: z.ZodOptional<z.ZodOptional<z.ZodEnum<{
78
+ png: "png";
79
+ jpeg: "jpeg";
80
+ }>>>;
81
+ screenshotQuality: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
57
82
  version: z.ZodOptional<z.ZodLiteral<1>>;
58
83
  }, z.core.$strip>;
59
84
  export type PartialFileConfig = z.infer<typeof PartialFileConfigSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"file-config.d.ts","sourceRoot":"","sources":["../../src/schemas/file-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;GAKG;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;iBAqD3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;iBAElC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC"}
1
+ {"version":3,"file":"file-config.d.ts","sourceRoot":"","sources":["../../src/schemas/file-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;GAMG;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyF3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAElC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC"}
@@ -1,10 +1,11 @@
1
1
  import { z } from "zod";
2
- import { LogLevel } from "./config.js";
2
+ import { LogLevel, TransportType } from "./config.js";
3
3
  /**
4
4
  * Schema for .mcp/retestkit.json configuration file.
5
5
  *
6
- * This is the file-based configuration format, separate from the
7
- * runtime ConfigSchema which merges env vars and CLI flags.
6
+ * This is the file-based configuration format. All configuration
7
+ * is done via this file; environment variables are not supported
8
+ * except for RETESTKIT_CONFIG to specify the config file path.
8
9
  */
9
10
  export const FileConfigSchema = z.object({
10
11
  /**
@@ -12,6 +13,16 @@ export const FileConfigSchema = z.object({
12
13
  * Current version is 1.
13
14
  */
14
15
  version: z.literal(1),
16
+ /**
17
+ * Transport type for MCP communication.
18
+ * Default: "stdio"
19
+ */
20
+ transport: TransportType.optional(),
21
+ /**
22
+ * HTTP port when transport is "http".
23
+ * Default: 3000
24
+ */
25
+ port: z.number().int().min(1).max(65535).optional(),
15
26
  /**
16
27
  * Default target URL for testing operations.
17
28
  * Can be overridden per-operation via tool input.
@@ -21,6 +32,11 @@ export const FileConfigSchema = z.object({
21
32
  * Path where test specs are stored, relative to workspace.
22
33
  */
23
34
  specsPath: z.string().optional(),
35
+ /**
36
+ * Directory for analysis workspaces.
37
+ * Default: "./retest"
38
+ */
39
+ workspaceDir: z.string().optional(),
24
40
  /**
25
41
  * Allowed domains for crawling. If specified, crawler will
26
42
  * only visit URLs matching these domains.
@@ -53,6 +69,21 @@ export const FileConfigSchema = z.object({
53
69
  level: LogLevel.optional(),
54
70
  })
55
71
  .optional(),
72
+ /**
73
+ * Steps between crawl checkpoints.
74
+ * Default: 5
75
+ */
76
+ checkpointInterval: z.number().int().min(1).optional(),
77
+ /**
78
+ * Screenshot format for captured images.
79
+ * Default: "png"
80
+ */
81
+ screenshotFormat: z.enum(["png", "jpeg"]).optional(),
82
+ /**
83
+ * JPEG quality for screenshots (1-100).
84
+ * Default: 80
85
+ */
86
+ screenshotQuality: z.number().int().min(1).max(100).optional(),
56
87
  });
57
88
  /**
58
89
  * Schema for validating partial config during init questionnaire.
@@ -1 +1 @@
1
- {"version":3,"file":"file-config.js","sourceRoot":"","sources":["../../src/schemas/file-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC;;;OAGG;IACH,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAErB;;;OAGG;IACH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAEtC;;OAEG;IACH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEhC;;;OAGG;IACH,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAE9C;;OAEG;IACH,MAAM,EAAE,CAAC;SACN,MAAM,CAAC;QACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC5C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC9C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;KAC7C,CAAC;SACD,QAAQ,EAAE;IAEb;;OAEG;IACH,UAAU,EAAE,CAAC;SACV,MAAM,CAAC;QACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KACrC,CAAC;SACD,QAAQ,EAAE;IAEb;;OAEG;IACH,OAAO,EAAE,CAAC;SACP,MAAM,CAAC;QACN,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE;KAC3B,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC;IACvE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"file-config.js","sourceRoot":"","sources":["../../src/schemas/file-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEtD;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC;;;OAGG;IACH,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAErB;;;OAGG;IACH,SAAS,EAAE,aAAa,CAAC,QAAQ,EAAE;IAEnC;;;OAGG;IACH,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;IAEnD;;;OAGG;IACH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAEtC;;OAEG;IACH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEhC;;;OAGG;IACH,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEnC;;;OAGG;IACH,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAE9C;;OAEG;IACH,MAAM,EAAE,CAAC;SACN,MAAM,CAAC;QACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC5C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC9C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;KAC7C,CAAC;SACD,QAAQ,EAAE;IAEb;;OAEG;IACH,UAAU,EAAE,CAAC;SACV,MAAM,CAAC;QACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KACrC,CAAC;SACD,QAAQ,EAAE;IAEb;;OAEG;IACH,OAAO,EAAE,CAAC;SACP,MAAM,CAAC;QACN,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE;KAC3B,CAAC;SACD,QAAQ,EAAE;IAEb;;;OAGG;IACH,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAEtD;;;OAGG;IACH,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;IAEpD;;;OAGG;IACH,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CAC/D,CAAC,CAAC;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC;IACvE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "retestkit",
3
- "version": "1.13.0",
3
+ "version": "1.14.0",
4
4
  "description": "MCP server for web application testing",
5
5
  "type": "module",
6
6
  "exports": {