@wundr.io/cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +551 -0
- package/bin/wundr.js +39 -0
- package/dist/ai/ai-service.d.ts +152 -0
- package/dist/ai/ai-service.d.ts.map +1 -0
- package/dist/ai/ai-service.js +430 -0
- package/dist/ai/ai-service.js.map +1 -0
- package/dist/ai/claude-client.d.ts +130 -0
- package/dist/ai/claude-client.d.ts.map +1 -0
- package/dist/ai/claude-client.js +339 -0
- package/dist/ai/claude-client.js.map +1 -0
- package/dist/ai/conversation-manager.d.ts +164 -0
- package/dist/ai/conversation-manager.d.ts.map +1 -0
- package/dist/ai/conversation-manager.js +612 -0
- package/dist/ai/conversation-manager.js.map +1 -0
- package/dist/ai/index.d.ts +5 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +8 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/cli.d.ts +36 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +173 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/ai.d.ts +89 -0
- package/dist/commands/ai.d.ts.map +1 -0
- package/dist/commands/ai.js +735 -0
- package/dist/commands/ai.js.map +1 -0
- package/dist/commands/analyze-optimized.d.ts +14 -0
- package/dist/commands/analyze-optimized.d.ts.map +1 -0
- package/dist/commands/analyze-optimized.js +437 -0
- package/dist/commands/analyze-optimized.js.map +1 -0
- package/dist/commands/analyze.d.ts +65 -0
- package/dist/commands/analyze.d.ts.map +1 -0
- package/dist/commands/analyze.js +435 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/batch.d.ts +71 -0
- package/dist/commands/batch.d.ts.map +1 -0
- package/dist/commands/batch.js +738 -0
- package/dist/commands/batch.js.map +1 -0
- package/dist/commands/chat.d.ts +71 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +674 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/claude-init.d.ts +28 -0
- package/dist/commands/claude-init.d.ts.map +1 -0
- package/dist/commands/claude-init.js +587 -0
- package/dist/commands/claude-init.js.map +1 -0
- package/dist/commands/claude-setup.d.ts +32 -0
- package/dist/commands/claude-setup.d.ts.map +1 -0
- package/dist/commands/claude-setup.js +570 -0
- package/dist/commands/claude-setup.js.map +1 -0
- package/dist/commands/computer-setup-commands.d.ts +39 -0
- package/dist/commands/computer-setup-commands.d.ts.map +1 -0
- package/dist/commands/computer-setup-commands.js +563 -0
- package/dist/commands/computer-setup-commands.js.map +1 -0
- package/dist/commands/computer-setup.d.ts +7 -0
- package/dist/commands/computer-setup.d.ts.map +1 -0
- package/dist/commands/computer-setup.js +481 -0
- package/dist/commands/computer-setup.js.map +1 -0
- package/dist/commands/create-command.d.ts +7 -0
- package/dist/commands/create-command.d.ts.map +1 -0
- package/dist/commands/create-command.js +158 -0
- package/dist/commands/create-command.js.map +1 -0
- package/dist/commands/create.d.ts +74 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +556 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/dashboard.d.ts +91 -0
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/commands/dashboard.js +537 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/govern.d.ts +70 -0
- package/dist/commands/govern.d.ts.map +1 -0
- package/dist/commands/govern.js +480 -0
- package/dist/commands/govern.js.map +1 -0
- package/dist/commands/init.d.ts +55 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +584 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/performance-optimizer.d.ts +30 -0
- package/dist/commands/performance-optimizer.d.ts.map +1 -0
- package/dist/commands/performance-optimizer.js +649 -0
- package/dist/commands/performance-optimizer.js.map +1 -0
- package/dist/commands/plugins.d.ts +87 -0
- package/dist/commands/plugins.d.ts.map +1 -0
- package/dist/commands/plugins.js +685 -0
- package/dist/commands/plugins.js.map +1 -0
- package/dist/commands/setup.d.ts +29 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +399 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/test-init.d.ts +9 -0
- package/dist/commands/test-init.d.ts.map +1 -0
- package/dist/commands/test-init.js +222 -0
- package/dist/commands/test-init.js.map +1 -0
- package/dist/commands/test.d.ts +25 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +217 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/commands/watch.d.ts +76 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +610 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/context/context-manager.d.ts +155 -0
- package/dist/context/context-manager.d.ts.map +1 -0
- package/dist/context/context-manager.js +383 -0
- package/dist/context/context-manager.js.map +1 -0
- package/dist/context/index.d.ts +3 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +6 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/session-manager.d.ts +207 -0
- package/dist/context/session-manager.d.ts.map +1 -0
- package/dist/context/session-manager.js +682 -0
- package/dist/context/session-manager.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/interactive/interactive-mode.d.ts +76 -0
- package/dist/interactive/interactive-mode.d.ts.map +1 -0
- package/dist/interactive/interactive-mode.js +730 -0
- package/dist/interactive/interactive-mode.js.map +1 -0
- package/dist/nlp/command-mapper.d.ts +174 -0
- package/dist/nlp/command-mapper.d.ts.map +1 -0
- package/dist/nlp/command-mapper.js +623 -0
- package/dist/nlp/command-mapper.js.map +1 -0
- package/dist/nlp/command-parser.d.ts +106 -0
- package/dist/nlp/command-parser.d.ts.map +1 -0
- package/dist/nlp/command-parser.js +416 -0
- package/dist/nlp/command-parser.js.map +1 -0
- package/dist/nlp/index.d.ts +5 -0
- package/dist/nlp/index.d.ts.map +1 -0
- package/dist/nlp/index.js +8 -0
- package/dist/nlp/index.js.map +1 -0
- package/dist/nlp/intent-classifier.d.ts +59 -0
- package/dist/nlp/intent-classifier.d.ts.map +1 -0
- package/dist/nlp/intent-classifier.js +384 -0
- package/dist/nlp/intent-classifier.js.map +1 -0
- package/dist/nlp/intent-parser.d.ts +152 -0
- package/dist/nlp/intent-parser.d.ts.map +1 -0
- package/dist/nlp/intent-parser.js +739 -0
- package/dist/nlp/intent-parser.js.map +1 -0
- package/dist/plugins/plugin-manager.d.ts +120 -0
- package/dist/plugins/plugin-manager.d.ts.map +1 -0
- package/dist/plugins/plugin-manager.js +595 -0
- package/dist/plugins/plugin-manager.js.map +1 -0
- package/dist/types/index.d.ts +224 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/config-manager.d.ts +73 -0
- package/dist/utils/config-manager.d.ts.map +1 -0
- package/dist/utils/config-manager.js +339 -0
- package/dist/utils/config-manager.js.map +1 -0
- package/dist/utils/error-handler.d.ts +46 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +169 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/logger.d.ts +25 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +94 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +119 -0
- package/src/ai/ai-service.ts +595 -0
- package/src/ai/claude-client.ts +490 -0
- package/src/ai/conversation-manager.ts +907 -0
- package/src/ai/index.ts +8 -0
- package/src/cli.ts +202 -0
- package/src/commands/ai.ts +995 -0
- package/src/commands/analyze-optimized.ts +641 -0
- package/src/commands/analyze.ts +576 -0
- package/src/commands/batch.ts +935 -0
- package/src/commands/chat.ts +876 -0
- package/src/commands/claude-init.ts +715 -0
- package/src/commands/claude-setup.ts +697 -0
- package/src/commands/computer-setup-commands.ts +709 -0
- package/src/commands/computer-setup.ts +565 -0
- package/src/commands/create-command.ts +175 -0
- package/src/commands/create.ts +727 -0
- package/src/commands/dashboard.ts +691 -0
- package/src/commands/govern.ts +635 -0
- package/src/commands/init.ts +677 -0
- package/src/commands/performance-optimizer.ts +864 -0
- package/src/commands/plugins.ts +848 -0
- package/src/commands/setup.ts +508 -0
- package/src/commands/test-init.ts +242 -0
- package/src/commands/test.ts +264 -0
- package/src/commands/watch.ts +755 -0
- package/src/context/context-manager.ts +546 -0
- package/src/context/index.ts +9 -0
- package/src/context/session-manager.ts +1019 -0
- package/src/index.ts +64 -0
- package/src/interactive/interactive-mode.ts +830 -0
- package/src/nlp/command-mapper.ts +885 -0
- package/src/nlp/command-parser.ts +564 -0
- package/src/nlp/index.ts +4 -0
- package/src/nlp/intent-classifier.ts +458 -0
- package/src/nlp/intent-parser.ts +1101 -0
- package/src/plugins/plugin-manager.ts +744 -0
- package/src/types/index.ts +252 -0
- package/src/types/modules.d.ts +56 -0
- package/src/utils/config-manager.ts +391 -0
- package/src/utils/error-handler.ts +192 -0
- package/src/utils/logger.ts +104 -0
- package/templates/batch/ci-cd.yaml +62 -0
- package/templates/component/{{fileName}}.test.tsx +17 -0
- package/templates/component/{{fileName}}.tsx +21 -0
- package/templates/service/{{fileName}}.ts +98 -0
- package/templates/wundr-test.config.js +0 -0
- package/test-suites/api/health.spec.ts +134 -0
- package/test-suites/helpers/test-config.ts +84 -0
- package/test-suites/ui/accessibility.spec.ts +102 -0
- package/test-suites/ui/smoke.spec.ts +92 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TestInitCommand = void 0;
|
|
4
|
+
exports.createTestInitCommand = createTestInitCommand;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const commander_1 = require("commander");
|
|
7
|
+
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
8
|
+
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
9
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
10
|
+
const inquirer_1 = tslib_1.__importDefault(require("inquirer"));
|
|
11
|
+
class TestInitCommand {
|
|
12
|
+
async run() {
|
|
13
|
+
console.log(chalk_1.default.blue('\n🧪 Initializing Wundr Test Configuration\n'));
|
|
14
|
+
const answers = await inquirer_1.default.prompt([
|
|
15
|
+
{
|
|
16
|
+
type: 'input',
|
|
17
|
+
name: 'baseURL',
|
|
18
|
+
message: "What is your application's base URL?",
|
|
19
|
+
default: 'http://localhost:3000',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
type: 'input',
|
|
23
|
+
name: 'apiURL',
|
|
24
|
+
message: 'What is your API base URL?',
|
|
25
|
+
default: 'http://localhost:3000/api',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
type: 'checkbox',
|
|
29
|
+
name: 'testSuites',
|
|
30
|
+
message: 'Which test suites would you like to enable?',
|
|
31
|
+
choices: [
|
|
32
|
+
{ name: 'Smoke Tests', value: 'smoke', checked: true },
|
|
33
|
+
{
|
|
34
|
+
name: 'Accessibility Tests',
|
|
35
|
+
value: 'accessibility',
|
|
36
|
+
checked: true,
|
|
37
|
+
},
|
|
38
|
+
{ name: 'API Tests', value: 'api', checked: true },
|
|
39
|
+
{ name: 'Performance Tests', value: 'performance', checked: false },
|
|
40
|
+
{ name: 'Security Tests', value: 'security', checked: false },
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
type: 'checkbox',
|
|
45
|
+
name: 'browsers',
|
|
46
|
+
message: 'Which browsers should we test?',
|
|
47
|
+
choices: [
|
|
48
|
+
{ name: 'Chromium', value: 'chromium', checked: true },
|
|
49
|
+
{ name: 'Firefox', value: 'firefox', checked: false },
|
|
50
|
+
{ name: 'Safari (WebKit)', value: 'webkit', checked: false },
|
|
51
|
+
{ name: 'Mobile', value: 'mobile', checked: true },
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
type: 'confirm',
|
|
56
|
+
name: 'headless',
|
|
57
|
+
message: 'Run tests in headless mode?',
|
|
58
|
+
default: true,
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
type: 'confirm',
|
|
62
|
+
name: 'ci',
|
|
63
|
+
message: 'Would you like to add CI/CD configuration?',
|
|
64
|
+
default: true,
|
|
65
|
+
},
|
|
66
|
+
]);
|
|
67
|
+
// Generate configuration
|
|
68
|
+
const config = this.generateConfig(answers);
|
|
69
|
+
// Write configuration file
|
|
70
|
+
const configPath = path_1.default.join(process.cwd(), 'wundr-test.config.js');
|
|
71
|
+
await fs_extra_1.default.writeFile(configPath, config);
|
|
72
|
+
console.log(chalk_1.default.green('\n✅ Test configuration created: wundr-test.config.js'));
|
|
73
|
+
// Add package.json scripts
|
|
74
|
+
await this.updatePackageJson();
|
|
75
|
+
// Generate CI configuration if requested
|
|
76
|
+
if (answers.ci) {
|
|
77
|
+
await this.generateCIConfig(answers);
|
|
78
|
+
}
|
|
79
|
+
// Show next steps
|
|
80
|
+
console.log(chalk_1.default.cyan('\n📋 Next Steps:'));
|
|
81
|
+
console.log(' 1. Install Playwright: npm install -D @playwright/test');
|
|
82
|
+
console.log(' 2. Run tests: npm run test:wundr');
|
|
83
|
+
console.log(' 3. View report: npm run test:report');
|
|
84
|
+
console.log(' 4. Customize wundr-test.config.js as needed');
|
|
85
|
+
}
|
|
86
|
+
generateConfig(answers) {
|
|
87
|
+
const testSuites = answers.testSuites.reduce((acc, suite) => {
|
|
88
|
+
acc[suite] = true;
|
|
89
|
+
return acc;
|
|
90
|
+
}, {});
|
|
91
|
+
const projects = answers.browsers
|
|
92
|
+
.map((browser) => {
|
|
93
|
+
if (browser === 'mobile') {
|
|
94
|
+
return ` {
|
|
95
|
+
name: 'mobile',
|
|
96
|
+
use: {
|
|
97
|
+
browserName: 'chromium',
|
|
98
|
+
viewport: { width: 375, height: 667 },
|
|
99
|
+
userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X)'
|
|
100
|
+
}
|
|
101
|
+
}`;
|
|
102
|
+
}
|
|
103
|
+
return ` {
|
|
104
|
+
name: '${browser}',
|
|
105
|
+
use: {
|
|
106
|
+
browserName: '${browser}',
|
|
107
|
+
viewport: { width: 1280, height: 720 }
|
|
108
|
+
}
|
|
109
|
+
}`;
|
|
110
|
+
})
|
|
111
|
+
.join(',\n');
|
|
112
|
+
return `/**
|
|
113
|
+
* Wundr Test Configuration
|
|
114
|
+
* Generated on ${new Date().toISOString()}
|
|
115
|
+
*/
|
|
116
|
+
|
|
117
|
+
module.exports = {
|
|
118
|
+
// Base URL of your application
|
|
119
|
+
baseURL: '${answers.baseURL}',
|
|
120
|
+
|
|
121
|
+
// Test execution settings
|
|
122
|
+
timeout: 30000,
|
|
123
|
+
retries: 2,
|
|
124
|
+
workers: 4,
|
|
125
|
+
|
|
126
|
+
// Browser settings
|
|
127
|
+
headless: ${answers.headless},
|
|
128
|
+
slowMo: 0,
|
|
129
|
+
|
|
130
|
+
// Screenshot and video settings
|
|
131
|
+
screenshot: 'only-on-failure',
|
|
132
|
+
video: 'retain-on-failure',
|
|
133
|
+
trace: 'on-first-retry',
|
|
134
|
+
|
|
135
|
+
// API configuration
|
|
136
|
+
api: {
|
|
137
|
+
baseURL: '${answers.apiURL}',
|
|
138
|
+
headers: {
|
|
139
|
+
'Content-Type': 'application/json'
|
|
140
|
+
},
|
|
141
|
+
timeout: 10000
|
|
142
|
+
},
|
|
143
|
+
|
|
144
|
+
// Enabled test suites
|
|
145
|
+
testSuites: ${JSON.stringify(testSuites, null, 4)},
|
|
146
|
+
|
|
147
|
+
// Projects/browsers to test
|
|
148
|
+
projects: [
|
|
149
|
+
${projects}
|
|
150
|
+
]
|
|
151
|
+
};`;
|
|
152
|
+
}
|
|
153
|
+
async updatePackageJson() {
|
|
154
|
+
const packageJsonPath = path_1.default.join(process.cwd(), 'package.json');
|
|
155
|
+
if (await fs_extra_1.default.pathExists(packageJsonPath)) {
|
|
156
|
+
const packageJson = await fs_extra_1.default.readJson(packageJsonPath);
|
|
157
|
+
packageJson.scripts = packageJson.scripts || {};
|
|
158
|
+
packageJson.scripts['test:wundr'] = 'wundr test';
|
|
159
|
+
packageJson.scripts['test:wundr:ui'] = 'wundr test --type ui';
|
|
160
|
+
packageJson.scripts['test:wundr:api'] = 'wundr test --type api';
|
|
161
|
+
packageJson.scripts['test:wundr:headed'] = 'wundr test --headed';
|
|
162
|
+
packageJson.scripts['test:report'] = 'wundr test --report';
|
|
163
|
+
await fs_extra_1.default.writeJson(packageJsonPath, packageJson, { spaces: 2 });
|
|
164
|
+
console.log(chalk_1.default.green('✅ Added test scripts to package.json'));
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
async generateCIConfig(answers) {
|
|
168
|
+
const githubWorkflow = `name: Wundr Tests
|
|
169
|
+
|
|
170
|
+
on:
|
|
171
|
+
push:
|
|
172
|
+
branches: [ main, master ]
|
|
173
|
+
pull_request:
|
|
174
|
+
branches: [ main, master ]
|
|
175
|
+
|
|
176
|
+
jobs:
|
|
177
|
+
test:
|
|
178
|
+
runs-on: ubuntu-latest
|
|
179
|
+
|
|
180
|
+
steps:
|
|
181
|
+
- uses: actions/checkout@v3
|
|
182
|
+
|
|
183
|
+
- name: Setup Node.js
|
|
184
|
+
uses: actions/setup-node@v3
|
|
185
|
+
with:
|
|
186
|
+
node-version: '18'
|
|
187
|
+
|
|
188
|
+
- name: Install dependencies
|
|
189
|
+
run: npm ci
|
|
190
|
+
|
|
191
|
+
- name: Install Playwright
|
|
192
|
+
run: npx playwright install --with-deps
|
|
193
|
+
|
|
194
|
+
- name: Run Wundr tests
|
|
195
|
+
run: npm run test:wundr
|
|
196
|
+
env:
|
|
197
|
+
TEST_BASE_URL: '${answers.baseURL}'
|
|
198
|
+
|
|
199
|
+
- name: Upload test results
|
|
200
|
+
if: always()
|
|
201
|
+
uses: actions/upload-artifact@v3
|
|
202
|
+
with:
|
|
203
|
+
name: test-results
|
|
204
|
+
path: test-results/
|
|
205
|
+
retention-days: 30`;
|
|
206
|
+
const githubDir = path_1.default.join(process.cwd(), '.github', 'workflows');
|
|
207
|
+
await fs_extra_1.default.ensureDir(githubDir);
|
|
208
|
+
await fs_extra_1.default.writeFile(path_1.default.join(githubDir, 'wundr-tests.yml'), githubWorkflow);
|
|
209
|
+
console.log(chalk_1.default.green('✅ Created GitHub Actions workflow: .github/workflows/wundr-tests.yml'));
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
exports.TestInitCommand = TestInitCommand;
|
|
213
|
+
function createTestInitCommand() {
|
|
214
|
+
const command = new commander_1.Command('test-init')
|
|
215
|
+
.description('Initialize Wundr test configuration for your project')
|
|
216
|
+
.action(async () => {
|
|
217
|
+
const initCommand = new TestInitCommand();
|
|
218
|
+
await initCommand.run();
|
|
219
|
+
});
|
|
220
|
+
return command;
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=test-init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-init.js","sourceRoot":"","sources":["../../src/commands/test-init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
export interface TestOptions {
|
|
3
|
+
type?: 'ui' | 'api' | 'unit' | 'all';
|
|
4
|
+
browser?: 'chromium' | 'firefox' | 'webkit';
|
|
5
|
+
headed?: boolean;
|
|
6
|
+
baseUrl?: string;
|
|
7
|
+
config?: string;
|
|
8
|
+
report?: boolean;
|
|
9
|
+
watch?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare class TestCommand {
|
|
12
|
+
private testConfigPath;
|
|
13
|
+
private testsPath;
|
|
14
|
+
constructor();
|
|
15
|
+
run(options: TestOptions): Promise<void>;
|
|
16
|
+
private loadConfig;
|
|
17
|
+
private setupTestEnvironment;
|
|
18
|
+
private runUITests;
|
|
19
|
+
private runAPITests;
|
|
20
|
+
private runUnitTests;
|
|
21
|
+
private runAllTests;
|
|
22
|
+
private runCommand;
|
|
23
|
+
}
|
|
24
|
+
export declare function createTestCommand(): Command;
|
|
25
|
+
//# sourceMappingURL=test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;IACrC,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAS;;IAQpB,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;YAuChC,UAAU;YAgCV,oBAAoB;YAyCpB,UAAU;YA8BV,WAAW;YAkBX,YAAY;YAeZ,WAAW;IAQzB,OAAO,CAAC,UAAU;CAkBnB;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAiC3C"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TestCommand = void 0;
|
|
4
|
+
exports.createTestCommand = createTestCommand;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const commander_1 = require("commander");
|
|
7
|
+
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
8
|
+
const child_process_1 = require("child_process");
|
|
9
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
10
|
+
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
11
|
+
const ora_1 = tslib_1.__importDefault(require("ora"));
|
|
12
|
+
class TestCommand {
|
|
13
|
+
testConfigPath;
|
|
14
|
+
testsPath;
|
|
15
|
+
constructor() {
|
|
16
|
+
// Tests are bundled with the CLI package
|
|
17
|
+
this.testsPath = path_1.default.join(__dirname, '../../test-suites');
|
|
18
|
+
this.testConfigPath = path_1.default.join(process.cwd(), 'wundr-test.config.js');
|
|
19
|
+
}
|
|
20
|
+
async run(options) {
|
|
21
|
+
const spinner = (0, ora_1.default)('Preparing test environment...').start();
|
|
22
|
+
try {
|
|
23
|
+
// Check if tests are available
|
|
24
|
+
if (!(await fs_extra_1.default.pathExists(this.testsPath))) {
|
|
25
|
+
spinner.fail('Test suites not found. Please reinstall @wundr/cli');
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
// Load or create config
|
|
29
|
+
const config = await this.loadConfig(options);
|
|
30
|
+
// Setup test environment
|
|
31
|
+
await this.setupTestEnvironment(config);
|
|
32
|
+
spinner.succeed('Test environment ready');
|
|
33
|
+
// Run tests based on type
|
|
34
|
+
switch (options.type) {
|
|
35
|
+
case 'ui':
|
|
36
|
+
await this.runUITests(config, options);
|
|
37
|
+
break;
|
|
38
|
+
case 'api':
|
|
39
|
+
await this.runAPITests(config, options);
|
|
40
|
+
break;
|
|
41
|
+
case 'unit':
|
|
42
|
+
await this.runUnitTests(config, options);
|
|
43
|
+
break;
|
|
44
|
+
default:
|
|
45
|
+
await this.runAllTests(config, options);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
spinner.fail('Test execution failed');
|
|
50
|
+
console.error(chalk_1.default.red('Error:'), error);
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async loadConfig(options) {
|
|
55
|
+
let config = {
|
|
56
|
+
baseUrl: options.baseUrl || process.env.TEST_BASE_URL || 'http://localhost:3000',
|
|
57
|
+
testDir: this.testsPath,
|
|
58
|
+
outputDir: path_1.default.join(process.cwd(), 'test-results'),
|
|
59
|
+
timeout: 30000,
|
|
60
|
+
retries: 2,
|
|
61
|
+
workers: 4,
|
|
62
|
+
use: {
|
|
63
|
+
headless: !options.headed,
|
|
64
|
+
screenshot: 'only-on-failure',
|
|
65
|
+
video: 'retain-on-failure',
|
|
66
|
+
trace: 'on-first-retry',
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
// Check for custom config
|
|
70
|
+
if (options.config) {
|
|
71
|
+
const customConfigPath = path_1.default.resolve(options.config);
|
|
72
|
+
if (await fs_extra_1.default.pathExists(customConfigPath)) {
|
|
73
|
+
const customConfig = require(customConfigPath);
|
|
74
|
+
config = { ...config, ...customConfig };
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else if (await fs_extra_1.default.pathExists(this.testConfigPath)) {
|
|
78
|
+
const projectConfig = require(this.testConfigPath);
|
|
79
|
+
config = { ...config, ...projectConfig };
|
|
80
|
+
}
|
|
81
|
+
return config;
|
|
82
|
+
}
|
|
83
|
+
async setupTestEnvironment(config) {
|
|
84
|
+
// Create output directory
|
|
85
|
+
await fs_extra_1.default.ensureDir(config.outputDir);
|
|
86
|
+
// Copy test files to temp location if needed
|
|
87
|
+
const tempTestDir = path_1.default.join(config.outputDir, '.test-suites');
|
|
88
|
+
await fs_extra_1.default.copy(this.testsPath, tempTestDir, { overwrite: true });
|
|
89
|
+
// Generate Playwright config
|
|
90
|
+
const playwrightConfig = `
|
|
91
|
+
import { defineConfig, devices } from '@playwright/test';
|
|
92
|
+
|
|
93
|
+
export default defineConfig({
|
|
94
|
+
testDir: '${tempTestDir}',
|
|
95
|
+
outputDir: '${config.outputDir}',
|
|
96
|
+
timeout: ${config.timeout},
|
|
97
|
+
retries: ${config.retries},
|
|
98
|
+
workers: ${config.workers},
|
|
99
|
+
reporter: [
|
|
100
|
+
['html', { outputFolder: '${path_1.default.join(config.outputDir, 'html-report')}' }],
|
|
101
|
+
['json', { outputFile: '${path_1.default.join(config.outputDir, 'results.json')}' }],
|
|
102
|
+
['list']
|
|
103
|
+
],
|
|
104
|
+
use: {
|
|
105
|
+
baseURL: '${config.baseUrl}',
|
|
106
|
+
...${JSON.stringify(config.use, null, 2)}
|
|
107
|
+
},
|
|
108
|
+
projects: [
|
|
109
|
+
{ name: 'chromium', use: { ...devices['Desktop Chrome'] } },
|
|
110
|
+
{ name: 'firefox', use: { ...devices['Desktop Firefox'] } },
|
|
111
|
+
{ name: 'webkit', use: { ...devices['Desktop Safari'] } }
|
|
112
|
+
]
|
|
113
|
+
});
|
|
114
|
+
`;
|
|
115
|
+
await fs_extra_1.default.writeFile(path_1.default.join(config.outputDir, 'playwright.config.ts'), playwrightConfig);
|
|
116
|
+
}
|
|
117
|
+
async runUITests(config, options) {
|
|
118
|
+
console.log(chalk_1.default.blue('\n🧪 Running UI Tests...'));
|
|
119
|
+
const args = [
|
|
120
|
+
'playwright',
|
|
121
|
+
'test',
|
|
122
|
+
'--config',
|
|
123
|
+
path_1.default.join(config.outputDir, 'playwright.config.ts'),
|
|
124
|
+
];
|
|
125
|
+
if (options.browser) {
|
|
126
|
+
args.push('--project', options.browser);
|
|
127
|
+
}
|
|
128
|
+
if (options.watch) {
|
|
129
|
+
args.push('--ui');
|
|
130
|
+
}
|
|
131
|
+
await this.runCommand('npx', args);
|
|
132
|
+
if (options.report) {
|
|
133
|
+
console.log(chalk_1.default.green('\n📊 Opening test report...'));
|
|
134
|
+
await this.runCommand('npx', [
|
|
135
|
+
'playwright',
|
|
136
|
+
'show-report',
|
|
137
|
+
path_1.default.join(config.outputDir, 'html-report'),
|
|
138
|
+
]);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
async runAPITests(config, options) {
|
|
142
|
+
console.log(chalk_1.default.blue('\n🔌 Running API Tests...'));
|
|
143
|
+
const testFiles = await fs_extra_1.default.readdir(path_1.default.join(config.testDir, 'api'));
|
|
144
|
+
const apiTests = testFiles.filter(f => f.endsWith('.spec.ts'));
|
|
145
|
+
for (const testFile of apiTests) {
|
|
146
|
+
console.log(chalk_1.default.gray(` Running ${testFile}...`));
|
|
147
|
+
await this.runCommand('npx', [
|
|
148
|
+
'playwright',
|
|
149
|
+
'test',
|
|
150
|
+
path_1.default.join(config.testDir, 'api', testFile),
|
|
151
|
+
'--config',
|
|
152
|
+
path_1.default.join(config.outputDir, 'playwright.config.ts'),
|
|
153
|
+
]);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
async runUnitTests(config, options) {
|
|
157
|
+
console.log(chalk_1.default.blue('\n🔬 Running Unit Tests...'));
|
|
158
|
+
// Check for Jest or Vitest
|
|
159
|
+
const packageJson = await fs_extra_1.default.readJson(path_1.default.join(process.cwd(), 'package.json'));
|
|
160
|
+
if (packageJson.scripts?.test) {
|
|
161
|
+
await this.runCommand('npm', ['run', 'test']);
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
console.log(chalk_1.default.yellow('No unit tests configured in package.json'));
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
async runAllTests(config, options) {
|
|
168
|
+
console.log(chalk_1.default.blue('\n🚀 Running All Tests...'));
|
|
169
|
+
await this.runUnitTests(config, options);
|
|
170
|
+
await this.runAPITests(config, options);
|
|
171
|
+
await this.runUITests(config, options);
|
|
172
|
+
}
|
|
173
|
+
runCommand(command, args) {
|
|
174
|
+
return new Promise((resolve, reject) => {
|
|
175
|
+
const child = (0, child_process_1.spawn)(command, args, {
|
|
176
|
+
stdio: 'inherit',
|
|
177
|
+
shell: true,
|
|
178
|
+
});
|
|
179
|
+
child.on('close', code => {
|
|
180
|
+
if (code === 0) {
|
|
181
|
+
resolve();
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
reject(new Error(`Command failed with exit code ${code}`));
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
child.on('error', reject);
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
exports.TestCommand = TestCommand;
|
|
192
|
+
function createTestCommand() {
|
|
193
|
+
const command = new commander_1.Command('test')
|
|
194
|
+
.description('Run tests against your application')
|
|
195
|
+
.option('-t, --type <type>', 'Type of tests to run (ui, api, unit, all)', 'all')
|
|
196
|
+
.option('-b, --browser <browser>', 'Browser to use (chromium, firefox, webkit)')
|
|
197
|
+
.option('--headed', 'Run tests in headed mode')
|
|
198
|
+
.option('--base-url <url>', 'Base URL for the application')
|
|
199
|
+
.option('-c, --config <path>', 'Path to custom test configuration')
|
|
200
|
+
.option('-r, --report', 'Open HTML report after tests')
|
|
201
|
+
.option('-w, --watch', 'Run tests in watch mode')
|
|
202
|
+
.action(async (options) => {
|
|
203
|
+
const testCommand = new TestCommand();
|
|
204
|
+
await testCommand.run(options);
|
|
205
|
+
});
|
|
206
|
+
// Add init subcommand
|
|
207
|
+
command
|
|
208
|
+
.command('init')
|
|
209
|
+
.description('Initialize test configuration for your project')
|
|
210
|
+
.action(async () => {
|
|
211
|
+
const { TestInitCommand } = await Promise.resolve().then(() => tslib_1.__importStar(require('./test-init')));
|
|
212
|
+
const initCommand = new TestInitCommand();
|
|
213
|
+
await initCommand.run();
|
|
214
|
+
});
|
|
215
|
+
return command;
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { ConfigManager } from '../utils/config-manager';
|
|
3
|
+
import { PluginManager } from '../plugins/plugin-manager';
|
|
4
|
+
/**
|
|
5
|
+
* Watch commands for real-time monitoring
|
|
6
|
+
*/
|
|
7
|
+
export declare class WatchCommands {
|
|
8
|
+
private program;
|
|
9
|
+
private configManager;
|
|
10
|
+
private pluginManager;
|
|
11
|
+
private watchers;
|
|
12
|
+
private activeWatches;
|
|
13
|
+
constructor(program: Command, configManager: ConfigManager, pluginManager: PluginManager);
|
|
14
|
+
private registerCommands;
|
|
15
|
+
/**
|
|
16
|
+
* Start watching files or directories
|
|
17
|
+
*/
|
|
18
|
+
private startWatching;
|
|
19
|
+
/**
|
|
20
|
+
* Stop watching
|
|
21
|
+
*/
|
|
22
|
+
private stopWatching;
|
|
23
|
+
/**
|
|
24
|
+
* List active watches
|
|
25
|
+
*/
|
|
26
|
+
private listWatches;
|
|
27
|
+
/**
|
|
28
|
+
* Show watch status
|
|
29
|
+
*/
|
|
30
|
+
private showWatchStatus;
|
|
31
|
+
/**
|
|
32
|
+
* Create watch configuration
|
|
33
|
+
*/
|
|
34
|
+
private createWatchConfig;
|
|
35
|
+
/**
|
|
36
|
+
* Load watch configuration from file
|
|
37
|
+
*/
|
|
38
|
+
private loadWatchConfig;
|
|
39
|
+
/**
|
|
40
|
+
* Save watch configuration to file
|
|
41
|
+
*/
|
|
42
|
+
private saveWatchConfig;
|
|
43
|
+
/**
|
|
44
|
+
* Watch tests
|
|
45
|
+
*/
|
|
46
|
+
private watchTests;
|
|
47
|
+
/**
|
|
48
|
+
* Watch build
|
|
49
|
+
*/
|
|
50
|
+
private watchBuild;
|
|
51
|
+
/**
|
|
52
|
+
* Watch lint
|
|
53
|
+
*/
|
|
54
|
+
private watchLint;
|
|
55
|
+
/**
|
|
56
|
+
* Watch analysis
|
|
57
|
+
*/
|
|
58
|
+
private watchAnalysis;
|
|
59
|
+
/**
|
|
60
|
+
* Helper methods
|
|
61
|
+
*/
|
|
62
|
+
private setupWatchHandlers;
|
|
63
|
+
private shouldExecuteCommand;
|
|
64
|
+
private executeWatchCommand;
|
|
65
|
+
private createWatchConfigFromOptions;
|
|
66
|
+
private loadWatchConfigFile;
|
|
67
|
+
private startWatchingWithConfig;
|
|
68
|
+
private createInteractiveWatchConfig;
|
|
69
|
+
private parseWatchCommands;
|
|
70
|
+
private getTestPatterns;
|
|
71
|
+
private getTestCommand;
|
|
72
|
+
private getBuildCommand;
|
|
73
|
+
private getLintCommand;
|
|
74
|
+
private getAnalysisCommand;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=watch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAK1D;;GAEG;AACH,qBAAa,aAAa;IAKtB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,aAAa;IANvB,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,aAAa,CAAuC;gBAGlD,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa;IAKtC,OAAO,CAAC,gBAAgB;IAwHxB;;OAEG;YACW,aAAa;IA0C3B;;OAEG;YACW,YAAY;IAgC1B;;OAEG;YACW,WAAW;IA6BzB;;OAEG;YACW,eAAe;IAqC7B;;OAEG;YACW,iBAAiB;IAqC/B;;OAEG;YACW,eAAe;IAiB7B;;OAEG;YACW,eAAe;IAuB7B;;OAEG;YACW,UAAU;IA4BxB;;OAEG;YACW,UAAU;IA4BxB;;OAEG;YACW,SAAS;IA4BvB;;OAEG;YACW,aAAa;IA4B3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyC1B,OAAO,CAAC,oBAAoB;YAkBd,mBAAmB;IAoCjC,OAAO,CAAC,4BAA4B;YAoBtB,mBAAmB;YAiBnB,uBAAuB;YAqBvB,4BAA4B;IA4C1C,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,kBAAkB;CAG3B"}
|