@wp-tester/config 0.1.2 → 0.1.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAA0F,MAAM,kBAAkB,CAAC;AAUvJ,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,GAAG,MAAM,GAC9B,OAAO,CAAC,sBAAsB,CAAC,CAqNjC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAuH,MAAM,kBAAkB,CAAC;AAWpL,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,GAAG,MAAM,GAC9B,OAAO,CAAC,sBAAsB,CAAC,CAqOjC"}
package/dist/config.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { readFile } from "fs/promises";
2
2
  import { existsSync } from "fs";
3
+ import { dirname, join } from "path";
3
4
  import { getProjectRootMount } from "./auto-mount.js";
4
5
  import { detectProjectType } from "./options/project-type-detect.js";
5
6
  import { getProjectDir, resolveAbsolute, normalizeConfigPath } from "./path-utils.js";
@@ -53,8 +54,8 @@ export async function resolveConfig(config) {
53
54
  other: true,
54
55
  };
55
56
  const reporters = {
56
- ...(resolvedConfig.reporters ?? {}),
57
57
  default: undefined, // Will be set below
58
+ json: undefined, // Will be set below if configured
58
59
  };
59
60
  // Normalize default reporter:
60
61
  // - `true` or empty object `{}` -> apply default options (show all)
@@ -75,6 +76,20 @@ export async function resolveConfig(config) {
75
76
  // Object with specific options -> use as-is
76
77
  reporters.default = inputDefault;
77
78
  }
79
+ // Resolve JSON reporter if configured
80
+ const inputJson = resolvedConfig.reporters?.json;
81
+ if (inputJson) {
82
+ // Get config directory for default output path
83
+ const configDir = configPath ? dirname(configPath) : projectDir;
84
+ const defaultOutputFile = join(configDir, "wp-tester-results.json");
85
+ const resolvedJson = {
86
+ ...inputJson,
87
+ outputFile: inputJson.outputFile
88
+ ? resolveAbsolute(inputJson.outputFile, configDir)
89
+ : defaultOutputFile,
90
+ };
91
+ reporters.json = resolvedJson;
92
+ }
78
93
  // Expand environments with version arrays into multiple environments
79
94
  const expandedEnvironments = await expandEnvironments(resolvedConfig.environments, projectDir);
80
95
  // Resolve environments: convert ExpandedEnvironment[] to ResolvedEnvironment[]
@@ -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":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export type { WPTesterConfig, EnvironmentVariables, Environment, Tests, PHPUnitConfig, TestType, Reporters, BaseReporterOptions, DefaultReporterOptions, Mount, Blueprint, JsonReporterOptions, WatchConfig, } from "./types.js";
2
- export type { ResolvedEnvironment, ResolvedWPTesterConfig, ResolvedPHPUnitConfig, ResolvedTests, ResolvedBlueprint, ResolvedReporters, ResolvedPath, } from './resolved-types.js';
2
+ export type { ResolvedEnvironment, ResolvedWPTesterConfig, ResolvedPHPUnitConfig, ResolvedTests, ResolvedBlueprint, ResolvedReporters, ResolvedJsonReporterOptions, ResolvedPath, } from './resolved-types.js';
3
3
  export { resolveConfig, } from "./config.js";
4
4
  export { readConfigFile, writeConfigFile, getDefaultConfig, isConfigWritable, } from "./config-file.js";
5
5
  export { configPath, getSchemaPath, getProjectDir, getConfigDir, getConfigPath, normalizeConfigPath, resolveAbsolute, getWorkingDirectory, toResolvedPath, } from "./path-utils.js";
@@ -11,5 +11,6 @@ export type { ProjectType } from './options/project-type-detect.js';
11
11
  export { optionNames, optionMap, setupOptions, type OptionName, type ConfigOption, type ConfigOptionContext } from './options/index.js';
12
12
  export { smokeTestsOption } from './options/smoke-tests.js';
13
13
  export { phpunitOption } from './options/phpunit.js';
14
+ export { ciOption } from './options/ci.js';
14
15
  export { findPhpUnitConfig, findPhpUnitExecutable, parseBootstrapPath } from './options/phpunit-detect.js';
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,WAAW,EACX,KAAK,EACL,aAAa,EACb,QAAQ,EACR,SAAS,EACT,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,EACL,SAAS,EACT,mBAAmB,EACnB,WAAW,GACZ,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,GACb,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,aAAa,GACd,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,kBAAkB,EAClB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,kBAAkB,EAClB,KAAK,mBAAmB,GACzB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACrI,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,WAAW,EACX,KAAK,EACL,aAAa,EACb,QAAQ,EACR,SAAS,EACT,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,EACL,SAAS,EACT,mBAAmB,EACnB,WAAW,GACZ,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,2BAA2B,EAC3B,YAAY,GACb,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,aAAa,GACd,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,kBAAkB,EAClB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,kBAAkB,EAClB,KAAK,mBAAmB,GACzB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACrI,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -10,5 +10,6 @@ export { hostToVfs, vfsToHost } from './path-mappers.js';
10
10
  export { optionNames, optionMap, setupOptions } from './options/index.js';
11
11
  export { smokeTestsOption } from './options/smoke-tests.js';
12
12
  export { phpunitOption } from './options/phpunit.js';
13
+ export { ciOption } from './options/ci.js';
13
14
  export { findPhpUnitConfig, findPhpUnitExecutable, parseBootstrapPath } from './options/phpunit-detect.js';
14
15
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4BA,YAAY;AACZ,OAAO,EACL,aAAa,GACd,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,kBAAkB,EAClB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,kBAAkB,GAEnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGtD,UAAU;AACV,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAgE,MAAM,iBAAiB,CAAC;AACrI,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA6BA,YAAY;AACZ,OAAO,EACL,aAAa,GACd,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,kBAAkB,EAClB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,kBAAkB,GAEnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGtD,UAAU;AACV,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAgE,MAAM,iBAAiB,CAAC;AACrI,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { WPTesterConfig } from "../types.js";
2
+ /**
3
+ * CI config option
4
+ * Creates a GitHub Action workflow for running wp-tester
5
+ */
6
+ export declare function ciOption(config: WPTesterConfig, context?: {
7
+ configPath?: string;
8
+ skipPrompt?: boolean;
9
+ }): Promise<WPTesterConfig>;
10
+ //# sourceMappingURL=ci.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../src/options/ci.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAwR/C;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACtD,OAAO,CAAC,cAAc,CAAC,CA8NzB"}
@@ -0,0 +1,429 @@
1
+ import * as clack from "@clack/prompts";
2
+ import { mkdir, writeFile, access, readFile } from "fs/promises";
3
+ import { join, dirname, relative } from "path";
4
+ import { execSync } from "child_process";
5
+ import pc from "picocolors";
6
+ import { getProjectDir } from "../path-utils.js";
7
+ const WORKFLOW_PATH = ".github/workflows/wp-tester.yml";
8
+ /**
9
+ * Check if the project is a git repository
10
+ */
11
+ function isGitRepo(projectPath) {
12
+ try {
13
+ execSync("git rev-parse --git-dir", {
14
+ cwd: projectPath,
15
+ encoding: "utf8",
16
+ stdio: ["pipe", "pipe", "pipe"],
17
+ });
18
+ return true;
19
+ }
20
+ catch {
21
+ return false;
22
+ }
23
+ }
24
+ /**
25
+ * Get the root directory of the git repository
26
+ * @param projectPath - Starting directory to search from
27
+ * @returns Absolute path to git root, or null if not in a git repo
28
+ */
29
+ function getGitRoot(projectPath) {
30
+ try {
31
+ const result = execSync("git rev-parse --show-toplevel", {
32
+ cwd: projectPath,
33
+ encoding: "utf8",
34
+ stdio: ["pipe", "pipe", "pipe"],
35
+ });
36
+ return result.trim();
37
+ }
38
+ catch {
39
+ return null;
40
+ }
41
+ }
42
+ /**
43
+ * Detect the default branch name from git
44
+ */
45
+ function detectDefaultBranch(projectPath) {
46
+ try {
47
+ // Try to get the default branch from remote HEAD
48
+ const result = execSync("git symbolic-ref refs/remotes/origin/HEAD", {
49
+ cwd: projectPath,
50
+ encoding: "utf8",
51
+ stdio: ["pipe", "pipe", "pipe"],
52
+ }).trim();
53
+ // Result is like "refs/remotes/origin/main"
54
+ const branch = result.split("/").pop();
55
+ if (branch) {
56
+ return branch;
57
+ }
58
+ }
59
+ catch {
60
+ // Remote HEAD not set, try other methods
61
+ }
62
+ try {
63
+ // Check which common branch names exist locally
64
+ const branches = execSync("git branch --list main master trunk", {
65
+ cwd: projectPath,
66
+ encoding: "utf8",
67
+ stdio: ["pipe", "pipe", "pipe"],
68
+ }).trim();
69
+ // Parse branch list and return first match
70
+ const branchList = branches
71
+ .split("\n")
72
+ .map((b) => b.replace("*", "").trim())
73
+ .filter((b) => b.length > 0);
74
+ if (branchList.includes("main"))
75
+ return "main";
76
+ if (branchList.includes("master"))
77
+ return "master";
78
+ if (branchList.includes("trunk"))
79
+ return "trunk";
80
+ }
81
+ catch {
82
+ // Git command failed
83
+ }
84
+ // Default to "main"
85
+ return "main";
86
+ }
87
+ /**
88
+ * Extract configuration from existing workflow
89
+ */
90
+ function extractConfigFromWorkflow(content) {
91
+ const config = {};
92
+ // Extract branches
93
+ const branchMatch = content.match(/branches:\s*\[([^\]]+)\]/);
94
+ if (branchMatch) {
95
+ config.branches = branchMatch[1]
96
+ .split(",")
97
+ .map((b) => b.trim().replace(/['"]/g, ""))
98
+ .filter((b) => b.length > 0);
99
+ }
100
+ // Extract Node.js version
101
+ const nodeMatch = content.match(/node-version:\s*['"]?(\d+)['"]?/);
102
+ if (nodeMatch) {
103
+ config.nodeVersion = nodeMatch[1];
104
+ }
105
+ // Check if caching is enabled
106
+ config.enableCaching = content.includes("actions/cache@");
107
+ // Extract wp-tester args
108
+ const argsMatch = content.match(/npx\s+(?:@wp-tester\/cli|wp-tester)(?:@\S+)?\s+test\s*(.*?)(?:\s*\$\{\{|$)/m);
109
+ if (argsMatch && argsMatch[1]) {
110
+ config.wpTesterArgs = argsMatch[1].trim();
111
+ }
112
+ return config;
113
+ }
114
+ /**
115
+ * Generate the GitHub Action workflow content
116
+ */
117
+ function generateWorkflowContent(config) {
118
+ const { branches, nodeVersion, enableCaching, wpTesterArgs } = config;
119
+ // Clean up args - split by whitespace for multi-line formatting
120
+ const argsArray = wpTesterArgs
121
+ .split(/\s+/)
122
+ .map((arg) => arg.trim())
123
+ .filter((arg) => arg.length > 0);
124
+ const branchList = branches.join(", ");
125
+ const cacheStep = enableCaching
126
+ ? `
127
+ - name: Cache node modules
128
+ uses: actions/cache@v4
129
+ with:
130
+ path: ~/.npm
131
+ key: \${{ runner.os }}-node-\${{ hashFiles('**/package-lock.json') }}
132
+ restore-keys: |
133
+ \${{ runner.os }}-node-
134
+ `
135
+ : "";
136
+ return `# WP Tester - WordPress Testing Workflow
137
+ # This workflow runs wp-tester to test your WordPress plugin/theme
138
+ #
139
+ # For more information, see: https://github.com/bgrgicak/wp-tester
140
+ #
141
+ # Configuration:
142
+ # - Branches: ${branchList}
143
+ # - Node.js: ${nodeVersion}
144
+ # - Caching: ${enableCaching ? "enabled" : "disabled"}
145
+ #
146
+ # To customize:
147
+ # - Add arguments like --test=phpunit or --failed-only
148
+ # - See 'npx wp-tester --help' for all available options
149
+
150
+ name: WP Tester
151
+
152
+ on:
153
+ push:
154
+ branches: [${branchList}]
155
+ pull_request:
156
+ branches: [${branchList}]
157
+ workflow_dispatch:
158
+ inputs:
159
+ wp-tester-args:
160
+ description: 'Additional arguments for wp-tester'
161
+ required: false
162
+ default: ''
163
+
164
+ jobs:
165
+ test:
166
+ name: WP Tester
167
+ runs-on: ubuntu-latest
168
+
169
+ steps:
170
+ - name: Checkout code
171
+ uses: actions/checkout@v4
172
+
173
+ - name: Setup Node.js
174
+ uses: actions/setup-node@v4
175
+ with:
176
+ node-version: '${nodeVersion}'
177
+ ${cacheStep}
178
+ - name: Run WP Tester
179
+ run: >
180
+ npx @wp-tester/cli@latest test${argsArray.length > 0 ? `\n ${argsArray.join("\n ")}` : ""}
181
+ \${{ github.event.inputs.wp-tester-args }}
182
+ `;
183
+ }
184
+ /**
185
+ * Check if workflow file already exists
186
+ */
187
+ async function workflowExists(projectPath) {
188
+ try {
189
+ await access(join(projectPath, WORKFLOW_PATH));
190
+ return true;
191
+ }
192
+ catch {
193
+ return false;
194
+ }
195
+ }
196
+ /**
197
+ * Read existing workflow file
198
+ */
199
+ async function readExistingWorkflow(projectPath) {
200
+ try {
201
+ const content = await readFile(join(projectPath, WORKFLOW_PATH), "utf8");
202
+ return content;
203
+ }
204
+ catch {
205
+ return null;
206
+ }
207
+ }
208
+ /**
209
+ * Display success message with workflow details
210
+ */
211
+ function displaySuccessMessage(workflowPath, config) {
212
+ const relativePath = relative(process.cwd(), workflowPath) || workflowPath;
213
+ const branchInfo = config.branches.length === 1
214
+ ? `Triggers on push/PR to '${config.branches[0]}' branch`
215
+ : `Triggers on: ${config.branches.join(", ")}`;
216
+ const cacheInfo = config.enableCaching ? " with caching" : "";
217
+ const message = `${pc.cyan(relativePath)}
218
+
219
+ ${branchInfo}
220
+ Node.js ${config.nodeVersion}${cacheInfo}
221
+ You can also trigger it manually from GitHub Actions.`;
222
+ clack.note(message, pc.green("✓ GitHub Action created successfully!"));
223
+ }
224
+ /**
225
+ * Display configuration help
226
+ */
227
+ function displayConfigHelp() {
228
+ const helpText = `
229
+ ${pc.bold("wp-tester CLI Arguments")}
230
+
231
+ ${pc.cyan("Common options:")}
232
+ --test=<type> Run specific tests: wp, plugin, theme, phpunit
233
+ --passWithNoTests Allow passing when no tests found
234
+
235
+ Press enter to run tests using default options.
236
+ `;
237
+ clack.note(helpText, "Configuration Help");
238
+ }
239
+ /**
240
+ * CI config option
241
+ * Creates a GitHub Action workflow for running wp-tester
242
+ */
243
+ export async function ciOption(config, context) {
244
+ const configPath = context?.configPath;
245
+ const skipPrompt = context?.skipPrompt ?? false;
246
+ const projectPath = getProjectDir(config, configPath);
247
+ // Check if this is a git repository and get the git root
248
+ if (!isGitRepo(projectPath)) {
249
+ clack.log.warn("This directory is not a git repository. GitHub Actions require git.");
250
+ const continueAnyway = await clack.confirm({
251
+ message: "Continue anyway?",
252
+ initialValue: false,
253
+ });
254
+ if (clack.isCancel(continueAnyway) || !continueAnyway) {
255
+ return config;
256
+ }
257
+ }
258
+ // Get the git root directory - this is where the workflow should be stored
259
+ const gitRoot = getGitRoot(projectPath);
260
+ const workflowBasePath = gitRoot || projectPath;
261
+ // Check if user wants to set up CI
262
+ if (!skipPrompt) {
263
+ const setupCI = await clack.select({
264
+ message: "Would you like to create a GitHub Action for automated testing?",
265
+ options: [
266
+ {
267
+ value: true,
268
+ label: "Yes",
269
+ hint: "Create .github/workflows/wp-tester.yml",
270
+ },
271
+ { value: false, label: "No", hint: "Skip CI setup" },
272
+ ],
273
+ initialValue: true,
274
+ });
275
+ if (clack.isCancel(setupCI)) {
276
+ clack.cancel("Setup cancelled.");
277
+ process.exit(0);
278
+ }
279
+ if (!setupCI) {
280
+ return config;
281
+ }
282
+ }
283
+ // Default configuration
284
+ let workflowConfig = {
285
+ branches: [detectDefaultBranch(workflowBasePath)],
286
+ nodeVersion: "20",
287
+ enableCaching: true,
288
+ wpTesterArgs: "",
289
+ };
290
+ // Check if workflow already exists
291
+ const exists = await workflowExists(workflowBasePath);
292
+ if (exists) {
293
+ const existingContent = await readExistingWorkflow(workflowBasePath);
294
+ if (existingContent) {
295
+ const extracted = extractConfigFromWorkflow(existingContent);
296
+ workflowConfig = {
297
+ ...workflowConfig,
298
+ ...extracted,
299
+ branches: extracted.branches || workflowConfig.branches,
300
+ wpTesterArgs: extracted.wpTesterArgs || "",
301
+ };
302
+ }
303
+ const overwrite = await clack.select({
304
+ message: `${WORKFLOW_PATH} already exists. What would you like to do?`,
305
+ options: [
306
+ {
307
+ value: "edit",
308
+ label: "Edit configuration",
309
+ hint: "Modify settings (preserves detected values)",
310
+ },
311
+ {
312
+ value: "overwrite",
313
+ label: "Overwrite with defaults",
314
+ hint: "Start fresh with default configuration",
315
+ },
316
+ { value: "skip", label: "Keep existing", hint: "Don't make changes" },
317
+ ],
318
+ initialValue: "edit",
319
+ });
320
+ if (clack.isCancel(overwrite)) {
321
+ clack.cancel("Setup cancelled.");
322
+ process.exit(0);
323
+ }
324
+ if (overwrite === "skip") {
325
+ clack.log.info("Keeping existing workflow file.");
326
+ return config;
327
+ }
328
+ if (overwrite === "overwrite") {
329
+ workflowConfig = {
330
+ branches: [detectDefaultBranch(workflowBasePath)],
331
+ nodeVersion: "20",
332
+ enableCaching: true,
333
+ wpTesterArgs: "",
334
+ };
335
+ }
336
+ }
337
+ // Configure branches
338
+ const branchInput = await clack.text({
339
+ message: "Target branches for CI triggers (comma-separated):",
340
+ initialValue: workflowConfig.branches.join(", "),
341
+ placeholder: "main, develop",
342
+ validate: (value) => {
343
+ if (!value || value.trim().length === 0) {
344
+ return "At least one branch is required";
345
+ }
346
+ return undefined;
347
+ },
348
+ });
349
+ if (clack.isCancel(branchInput)) {
350
+ clack.cancel("Setup cancelled.");
351
+ process.exit(0);
352
+ }
353
+ workflowConfig.branches = branchInput
354
+ .split(",")
355
+ .map((b) => b.trim())
356
+ .filter((b) => b.length > 0);
357
+ // Configure Node.js version
358
+ const nodeVersion = await clack.select({
359
+ message: "Node.js version:",
360
+ options: [
361
+ { value: "22", label: "22 (Latest LTS)", hint: "Recommended" },
362
+ { value: "20", label: "20 (LTS)" },
363
+ { value: "18", label: "18 (Maintenance LTS)" },
364
+ ],
365
+ initialValue: workflowConfig.nodeVersion,
366
+ });
367
+ if (clack.isCancel(nodeVersion)) {
368
+ clack.cancel("Setup cancelled.");
369
+ process.exit(0);
370
+ }
371
+ workflowConfig.nodeVersion = nodeVersion;
372
+ // Configure caching
373
+ const enableCaching = await clack.confirm({
374
+ message: "Enable npm caching for faster builds?",
375
+ initialValue: workflowConfig.enableCaching,
376
+ });
377
+ if (clack.isCancel(enableCaching)) {
378
+ clack.cancel("Setup cancelled.");
379
+ process.exit(0);
380
+ }
381
+ workflowConfig.enableCaching = enableCaching;
382
+ // Show help for wp-tester arguments
383
+ displayConfigHelp();
384
+ // Configure wp-tester arguments
385
+ const argsInput = await clack.text({
386
+ message: "wp-tester arguments (press Enter for defaults):",
387
+ placeholder: "e.g., --test=phpunit --failed-only",
388
+ initialValue: workflowConfig.wpTesterArgs,
389
+ });
390
+ if (clack.isCancel(argsInput)) {
391
+ clack.cancel("Setup cancelled.");
392
+ process.exit(0);
393
+ }
394
+ workflowConfig.wpTesterArgs =
395
+ typeof argsInput === "string" ? argsInput.trim() : "";
396
+ // Generate workflow content
397
+ const workflowContent = generateWorkflowContent(workflowConfig);
398
+ // Show preview
399
+ clack.note(pc.dim(workflowContent), "Workflow Preview");
400
+ // Confirm creation
401
+ const confirmCreate = await clack.confirm({
402
+ message: "Create this workflow?",
403
+ initialValue: true,
404
+ });
405
+ if (clack.isCancel(confirmCreate) || !confirmCreate) {
406
+ clack.log.info("Workflow creation cancelled.");
407
+ return config;
408
+ }
409
+ // Create directory and file with spinner
410
+ const workflowFullPath = join(workflowBasePath, WORKFLOW_PATH);
411
+ const workflowDir = dirname(workflowFullPath);
412
+ const spinner = clack.spinner();
413
+ spinner.start("Creating workflow file...");
414
+ try {
415
+ await mkdir(workflowDir, { recursive: true });
416
+ await writeFile(workflowFullPath, workflowContent, "utf8");
417
+ spinner.stop("Workflow file created!");
418
+ }
419
+ catch (error) {
420
+ const message = error instanceof Error ? error.message : "Unknown error";
421
+ spinner.stop("Failed to create workflow file");
422
+ clack.log.error(`Error: ${message}`);
423
+ process.exit(1);
424
+ }
425
+ // Display success message
426
+ displaySuccessMessage(workflowFullPath, workflowConfig);
427
+ return config;
428
+ }
429
+ //# sourceMappingURL=ci.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/options/ci.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { projectRootOption } from './project-root.js';
3
3
  import { projectTypeOption } from './project-type.js';
4
4
  import { smokeTestsOption } from './smoke-tests.js';
5
5
  import { phpunitOption } from './phpunit.js';
6
+ import { ciOption } from './ci.js';
6
7
  export interface ConfigOptionContext {
7
8
  configPath?: string;
8
9
  [key: string]: unknown;
@@ -29,6 +30,12 @@ declare const optionMapInternal: {
29
30
  configPath: string;
30
31
  };
31
32
  };
33
+ ci: {
34
+ handler: typeof ciOption;
35
+ getContext: (configPath: string) => {
36
+ configPath: string;
37
+ };
38
+ };
32
39
  };
33
40
  export declare const optionMap: Record<string, ConfigOptionDefinition>;
34
41
  export type OptionName = keyof typeof optionMapInternal;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,mBAAmB,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;AAE9G,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,mBAAmB,CAAC;CAC1D;AAED,QAAA,MAAM,iBAAiB;;;;;;;;;;;;iCAYM,MAAM;;;;;CAEe,CAAC;AAEnD,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAqB,CAAC;AAEnF,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAExD,eAAO,MAAM,WAAW,EAAqC,KAAK,CAAC,UAAU,CAAC,CAAC;AAE/E,eAAO,MAAM,YAAY,gBAAmD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAEhC,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,mBAAmB,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;AAE9G,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,mBAAmB,CAAC;CAC1D;AAED,QAAA,MAAM,iBAAiB;;;;;;;;;;;;iCAYM,MAAM;;;;;;;iCAIN,MAAM;;;;CAEe,CAAC;AAEnD,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAqB,CAAC;AAEnF,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAExD,eAAO,MAAM,WAAW,EAAqC,KAAK,CAAC,UAAU,CAAC,CAAC;AAE/E,eAAO,MAAM,YAAY,gBAAmD,CAAC"}
@@ -2,6 +2,7 @@ import { projectRootOption } from './project-root.js';
2
2
  import { projectTypeOption } from './project-type.js';
3
3
  import { smokeTestsOption } from './smoke-tests.js';
4
4
  import { phpunitOption } from './phpunit.js';
5
+ import { ciOption } from './ci.js';
5
6
  const optionMapInternal = {
6
7
  'project-root': {
7
8
  handler: projectRootOption,
@@ -15,6 +16,10 @@ const optionMapInternal = {
15
16
  'phpunit': {
16
17
  handler: phpunitOption,
17
18
  getContext: (configPath) => ({ promptIfNotDetected: true, configPath }),
19
+ },
20
+ 'ci': {
21
+ handler: ciOption,
22
+ getContext: (configPath) => ({ configPath }),
18
23
  }
19
24
  };
20
25
  export const optionMap = optionMapInternal;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAc1C,MAAM,iBAAiB,GAAG;IACxB,cAAc,EAAE;QACd,OAAO,EAAE,iBAAiB;KAC3B;IACD,cAAc,EAAE;QACd,OAAO,EAAE,iBAAiB;KAC3B;IACD,aAAa,EAAE;QACb,OAAO,EAAE,gBAAgB;KAC1B;IACD,SAAS,EAAE;QACT,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,CAAC,UAAkB,EAAE,EAAE,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;KAChF;CAC+C,CAAC;AAEnD,MAAM,CAAC,MAAM,SAAS,GAA2C,iBAAiB,CAAC;AAInF,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAsB,CAAC;AAE/E,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAchC,MAAM,iBAAiB,GAAG;IACxB,cAAc,EAAE;QACd,OAAO,EAAE,iBAAiB;KAC3B;IACD,cAAc,EAAE;QACd,OAAO,EAAE,iBAAiB;KAC3B;IACD,aAAa,EAAE;QACb,OAAO,EAAE,gBAAgB;KAC1B;IACD,SAAS,EAAE;QACT,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,CAAC,UAAkB,EAAE,EAAE,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;KAChF;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,QAAQ;QACjB,UAAU,EAAE,CAAC,UAAkB,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;KACrD;CAC+C,CAAC;AAEnD,MAAM,CAAC,MAAM,SAAS,GAA2C,iBAAiB,CAAC;AAInF,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAsB,CAAC;AAE/E,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC"}
@@ -1,5 +1,12 @@
1
1
  import type { BlueprintV1Declaration } from "@wp-playground/blueprints";
2
- import type { Mount, Tests, Environment, WPTesterConfig, TestMode, ProjectType, BaseReporterOptions, JsonReporterOptions } from "./wp-tester-config.js";
2
+ import type { Mount, Tests, Environment, WPTesterConfig, TestMode, ProjectType, BaseReporterOptions } from "./wp-tester-config.js";
3
+ /**
4
+ * Resolved JSON reporter options with required outputFile.
5
+ */
6
+ export interface ResolvedJsonReporterOptions extends BaseReporterOptions {
7
+ /** Absolute path where the JSON report file will be written */
8
+ outputFile: string;
9
+ }
3
10
  /**
4
11
  * Resolved reporters configuration.
5
12
  * Supports boolean shorthand for default reporter (true = enable with defaults).
@@ -7,8 +14,8 @@ import type { Mount, Tests, Environment, WPTesterConfig, TestMode, ProjectType,
7
14
  export interface ResolvedReporters {
8
15
  /** Default reporter options (supports boolean shorthand: true = enable with defaults) */
9
16
  default?: boolean | BaseReporterOptions;
10
- /** JSON reporter options */
11
- json?: JsonReporterOptions;
17
+ /** JSON reporter options with resolved outputFile path */
18
+ json?: ResolvedJsonReporterOptions;
12
19
  }
13
20
  /**
14
21
  * Resolved PHPUnit configuration with resolved paths and required testMode.