@zhiweiliu/playwright-generator 1.0.27 → 1.0.29
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 +17 -19
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +8 -6
- package/dist/commands/init.js.map +1 -1
- package/dist/config.d.ts +5 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +12 -7
- package/dist/config.js.map +1 -1
- package/dist/llm/azure-openai.d.ts +12 -0
- package/dist/llm/azure-openai.d.ts.map +1 -0
- package/dist/llm/azure-openai.js +65 -0
- package/dist/llm/azure-openai.js.map +1 -0
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +12 -13
- package/dist/llm/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -72,9 +72,9 @@ The installed module will have amazing features to facilitate your day-to-day te
|
|
|
72
72
|
- **Node.js**: Version 16.0 or higher
|
|
73
73
|
- **npm**: Version 7.0 or higher
|
|
74
74
|
- **Git**: For version control integration
|
|
75
|
-
- **LLM API Access
|
|
76
|
-
- Copilot: GitHub Copilot API credentials
|
|
75
|
+
- **LLM API Access**: Depending on your AI model choice:
|
|
77
76
|
- Claude: Anthropic API key with Claude access enabled (visit https://console.anthropic.com/)
|
|
77
|
+
- Azure OpenAI: Azure subscription with an OpenAI resource and deployment
|
|
78
78
|
|
|
79
79
|
## Installation & Quick Start
|
|
80
80
|
|
|
@@ -133,9 +133,12 @@ project-root/
|
|
|
133
133
|
|
|
134
134
|
```env
|
|
135
135
|
# AI Model Configuration
|
|
136
|
-
AI_MODEL=
|
|
137
|
-
COPILOT_API_KEY=your_key_here # Required if using Copilot
|
|
136
|
+
AI_MODEL=claude # Options: claude, azure-openai
|
|
138
137
|
CLAUDE_API_KEY=sk-ant-... # Required if using Claude (starts with sk-ant-)
|
|
138
|
+
AZURE_OPENAI_API_KEY= # Required if using Azure OpenAI
|
|
139
|
+
AZURE_OPENAI_ENDPOINT= # e.g. https://<resource>.openai.azure.com
|
|
140
|
+
AZURE_OPENAI_DEPLOYMENT= # e.g. gpt-4o
|
|
141
|
+
AZURE_OPENAI_API_VERSION=2024-02-01 # Optional, defaults to 2024-02-01
|
|
139
142
|
|
|
140
143
|
# Playwright Configuration
|
|
141
144
|
BROWSER=chromium # Options: chromium, firefox, webkit
|
|
@@ -196,9 +199,9 @@ Playwright test automation code is generated by running a command, with generate
|
|
|
196
199
|
- The test case ID tag must be specified with the generation command, allowing generation of one test case at a time
|
|
197
200
|
- If an output file is specified, the command will either append the generated test case to the file or update it if it already exists
|
|
198
201
|
- If no output file is specified, the command will either append to `generated.test.ts` or update the test case if it exists
|
|
199
|
-
- The following AI models are supported
|
|
200
|
-
- **Copilot**: GitHub Copilot API
|
|
202
|
+
- The following AI models are supported:
|
|
201
203
|
- **Claude**: Anthropic Claude 3 Haiku API (widely available)
|
|
204
|
+
- **Azure OpenAI**: Azure-hosted OpenAI models (e.g. gpt-4o)
|
|
202
205
|
|
|
203
206
|
The generator now strips Markdown and explanation text from model output automatically, keeping only the extracted TypeScript test function before writing to `generated/*.test.ts`.
|
|
204
207
|
|
|
@@ -207,11 +210,11 @@ The generator now strips Markdown and explanation text from model output automat
|
|
|
207
210
|
**Generation Commands**:
|
|
208
211
|
|
|
209
212
|
```bash
|
|
210
|
-
# Generate
|
|
213
|
+
# Generate test code (default: claude)
|
|
211
214
|
npx playwright-generator generate --tc TC-0001
|
|
212
215
|
|
|
213
|
-
# Generate with
|
|
214
|
-
npx playwright-generator generate --tc TC-0001 --model
|
|
216
|
+
# Generate with Azure OpenAI
|
|
217
|
+
npx playwright-generator generate --tc TC-0001 --model azure-openai
|
|
215
218
|
|
|
216
219
|
# Generate to specific output file
|
|
217
220
|
npx playwright-generator generate --tc TC-0001 --output login.test.ts
|
|
@@ -252,15 +255,10 @@ npm run test:debug -- SMOKE
|
|
|
252
255
|
npm run test:headed -- SMOKE
|
|
253
256
|
|
|
254
257
|
# Run tests with specific browser (set BROWSER=chromium|firefox|webkit in .env)
|
|
255
|
-
|
|
258
|
+
# and with specific tag
|
|
259
|
+
npm run test:browser -- SMOKE
|
|
256
260
|
|
|
257
|
-
# Run tests with
|
|
258
|
-
npm run test:browser:tag -- SMOKE
|
|
259
|
-
|
|
260
|
-
# Run tests with video recording enabled for failed cases (set VIDEO=on-failure in .env)
|
|
261
|
-
npm run test:video
|
|
262
|
-
|
|
263
|
-
# Run tests with video recording and a specific tag
|
|
261
|
+
# Run tests with video recording enabled for failed cases (set VIDEO=on-failure in .env) and a specific tag
|
|
264
262
|
npm run test:video -- SMOKE
|
|
265
263
|
|
|
266
264
|
# Generate HTML report
|
|
@@ -321,8 +319,8 @@ Workflow file location: `.github/workflows/playwright-tests.yml`
|
|
|
321
319
|
|
|
322
320
|
| Issue | Solution |
|
|
323
321
|
| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
324
|
-
| `API key not found` | Verify `.env` file exists and `
|
|
325
|
-
| `Claude API connection failed` | Check `CLAUDE_API_KEY` is valid and account has Claude API access; ensure key starts with `sk-ant-`. Visit https://console.anthropic.com/ to enable Claude API. Uses Claude 3 Haiku which is widely available.
|
|
322
|
+
| `API key not found` | Verify `.env` file exists and `CLAUDE_API_KEY` or `AZURE_OPENAI_API_KEY` is set |
|
|
323
|
+
| `Claude API connection failed` | Check `CLAUDE_API_KEY` is valid and account has Claude API access; ensure key starts with `sk-ant-`. Visit https://console.anthropic.com/ to enable Claude API. Uses Claude 3 Haiku which is widely available. |
|
|
326
324
|
| `Tests timing out` | Increase `TIMEOUT` in `.env` or use explicit waits in test cases |
|
|
327
325
|
| `Generated code doesn't compile` | Review the natural language description for clarity; regenerate with a refined prompt |
|
|
328
326
|
| `Tests pass locally but fail in CI` | Check `BASE_URL` environment variable and add debugging with screenshots |
|
package/dist/cli.js
CHANGED
|
@@ -12,7 +12,7 @@ const program = new commander_1.Command();
|
|
|
12
12
|
program
|
|
13
13
|
.name("playwright-generator")
|
|
14
14
|
.description("Generate Playwright test cases from natural language using LLM")
|
|
15
|
-
.version("1.0.
|
|
15
|
+
.version("1.0.29");
|
|
16
16
|
// Init command
|
|
17
17
|
program
|
|
18
18
|
.command("init [projectPath]")
|
|
@@ -31,7 +31,7 @@ program
|
|
|
31
31
|
.command("generate")
|
|
32
32
|
.description("Generate Playwright test code from natural language test cases")
|
|
33
33
|
.option("-tc, --tc <testCaseIds>", "Comma-separated test case IDs (e.g., TC-0001,TC-0002)")
|
|
34
|
-
.option("-m, --model <model>", "LLM model to use (
|
|
34
|
+
.option("-m, --model <model>", "LLM model to use (claude or azure-openai)", "claude")
|
|
35
35
|
.option("-o, --output <outputFile>", "Output file name (relative to generated/ folder)")
|
|
36
36
|
.action(async (options) => {
|
|
37
37
|
try {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,0CAAoD;AACpD,kDAAuD;AACvD,kDAA0B;AAE1B,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,sBAAsB,CAAC;KAC5B,WAAW,CAAC,gEAAgE,CAAC;KAC7E,OAAO,CAAC,QAAQ,CAAC,CAAC;AAErB,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;IAC5B,MAAM,UAAU,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,IAAA,wBAAiB,EAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,mBAAmB;AACnB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CACL,yBAAyB,EACzB,uDAAuD,CACxD;KACA,MAAM,CACL,qBAAqB,EACrB,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,0CAAoD;AACpD,kDAAuD;AACvD,kDAA0B;AAE1B,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,sBAAsB,CAAC;KAC5B,WAAW,CAAC,gEAAgE,CAAC;KAC7E,OAAO,CAAC,QAAQ,CAAC,CAAC;AAErB,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;IAC5B,MAAM,UAAU,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,IAAA,wBAAiB,EAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,mBAAmB;AACnB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CACL,yBAAyB,EACzB,uDAAuD,CACxD;KACA,MAAM,CACL,qBAAqB,EACrB,2CAA2C,EAC3C,QAAQ,CACT;KACA,MAAM,CACL,2BAA2B,EAC3B,kDAAkD,CACnD;KACA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CACT,sEAAsE,CACvE,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAElC,MAAM,IAAA,2BAAgB,EAAC,WAAW,EAAE;YAClC,WAAW;YACX,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE,OAAO,CAAC,MAAM;SAC3B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,eAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAC9B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC/C,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,4BAA4B;AAC5B,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4CZ,CAAC,CACD,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4U1E"}
|
package/dist/commands/init.js
CHANGED
|
@@ -27,9 +27,12 @@ async function initializeProject(projectPath) {
|
|
|
27
27
|
}
|
|
28
28
|
// Copy .env.example to project
|
|
29
29
|
const envExampleContent = `# AI Model Configuration
|
|
30
|
-
AI_MODEL=
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
AI_MODEL=claude # Options: claude, azure-openai
|
|
31
|
+
CLAUDE_API_KEY= # Required if using Claude (starts with sk-ant-)
|
|
32
|
+
AZURE_OPENAI_API_KEY= # Required if using Azure OpenAI
|
|
33
|
+
AZURE_OPENAI_ENDPOINT= # e.g. https://<resource>.openai.azure.com
|
|
34
|
+
AZURE_OPENAI_DEPLOYMENT= # e.g. gpt-4o
|
|
35
|
+
AZURE_OPENAI_API_VERSION=2024-02-01 # Optional, defaults to 2024-02-01
|
|
33
36
|
|
|
34
37
|
# Playwright Configuration
|
|
35
38
|
BROWSER=chromium
|
|
@@ -96,15 +99,14 @@ export default defineConfig({
|
|
|
96
99
|
"test:case": "playwright test --grep",
|
|
97
100
|
"test:debug": "playwright test --debug --project=chromium --grep",
|
|
98
101
|
"test:headed": "playwright test --headed --grep",
|
|
99
|
-
"test:browser": "playwright test",
|
|
100
|
-
"test:browser:tag": "playwright test --grep",
|
|
102
|
+
"test:browser": "playwright test --grep",
|
|
101
103
|
"test:video": "playwright test --grep",
|
|
102
104
|
report: "playwright show-report",
|
|
103
105
|
},
|
|
104
106
|
devDependencies: {
|
|
105
107
|
"@playwright/test": "^1.40.0",
|
|
106
108
|
"@types/node": "^20.11.0",
|
|
107
|
-
|
|
109
|
+
dotenv: "^16.3.1",
|
|
108
110
|
},
|
|
109
111
|
keywords: ["playwright", "testing", "automation"],
|
|
110
112
|
author: "",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;AAIA,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
export interface Config {
|
|
2
|
-
aiModel: "
|
|
3
|
-
copilotApiKey?: string;
|
|
2
|
+
aiModel: "claude" | "azure-openai";
|
|
4
3
|
claudeApiKey?: string;
|
|
4
|
+
azureOpenAIApiKey?: string;
|
|
5
|
+
azureOpenAIEndpoint?: string;
|
|
6
|
+
azureOpenAIDeployment?: string;
|
|
7
|
+
azureOpenAIApiVersion?: string;
|
|
5
8
|
browser: "chromium" | "firefox" | "webkit";
|
|
6
9
|
headless: boolean;
|
|
7
10
|
baseUrl: string;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,QAAQ,GAAG,cAAc,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC3C,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,aAAa;IAOnC,OAAO,CAAC,UAAU;IAkBlB,SAAS,IAAI,MAAM;IAInB,cAAc,IAAI,OAAO;IAczB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAI3C,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;CAG5C;;AAED,wBAA2C"}
|
package/dist/config.js
CHANGED
|
@@ -21,9 +21,12 @@ class ConfigManager {
|
|
|
21
21
|
}
|
|
22
22
|
loadConfig() {
|
|
23
23
|
return {
|
|
24
|
-
aiModel: process.env.AI_MODEL || "
|
|
25
|
-
copilotApiKey: process.env.COPILOT_API_KEY,
|
|
24
|
+
aiModel: process.env.AI_MODEL || "claude",
|
|
26
25
|
claudeApiKey: process.env.CLAUDE_API_KEY,
|
|
26
|
+
azureOpenAIApiKey: process.env.AZURE_OPENAI_API_KEY,
|
|
27
|
+
azureOpenAIEndpoint: process.env.AZURE_OPENAI_ENDPOINT,
|
|
28
|
+
azureOpenAIDeployment: process.env.AZURE_OPENAI_DEPLOYMENT,
|
|
29
|
+
azureOpenAIApiVersion: process.env.AZURE_OPENAI_API_VERSION || "2024-02-01",
|
|
27
30
|
browser: process.env.BROWSER ||
|
|
28
31
|
"chromium",
|
|
29
32
|
headless: process.env.HEADLESS !== "false",
|
|
@@ -36,12 +39,14 @@ class ConfigManager {
|
|
|
36
39
|
return this.config;
|
|
37
40
|
}
|
|
38
41
|
validateConfig() {
|
|
39
|
-
const { aiModel,
|
|
40
|
-
if (aiModel === "
|
|
41
|
-
|
|
42
|
+
const { aiModel, claudeApiKey, azureOpenAIApiKey, azureOpenAIEndpoint, azureOpenAIDeployment } = this.config;
|
|
43
|
+
if (aiModel === "azure-openai") {
|
|
44
|
+
if (!azureOpenAIApiKey || !azureOpenAIEndpoint || !azureOpenAIDeployment) {
|
|
45
|
+
throw new Error("AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT and AZURE_OPENAI_DEPLOYMENT are required when using Azure OpenAI");
|
|
46
|
+
}
|
|
42
47
|
}
|
|
43
|
-
if (
|
|
44
|
-
throw new Error("CLAUDE_API_KEY is required when using Claude
|
|
48
|
+
else if (!claudeApiKey) {
|
|
49
|
+
throw new Error("CLAUDE_API_KEY is required when using Claude");
|
|
45
50
|
}
|
|
46
51
|
return true;
|
|
47
52
|
}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,gDAAwB;AACxB,4CAAoB;AAEpB,6BAA6B;AAC7B,gBAAM,CAAC,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,gDAAwB;AACxB,4CAAoB;AAEpB,6BAA6B;AAC7B,gBAAM,CAAC,MAAM,EAAE,CAAC;AAgBhB,MAAa,aAAa;IAIxB;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC5B,aAAa,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QAC/C,CAAC;QACD,OAAO,aAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;IAEO,UAAU;QAChB,OAAO;YACL,OAAO,EAAG,OAAO,CAAC,GAAG,CAAC,QAAsC,IAAI,QAAQ;YACxE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;YACxC,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;YACnD,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;YACtD,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB;YAC1D,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,YAAY;YAC3E,OAAO,EACJ,OAAO,CAAC,GAAG,CAAC,OAA6C;gBAC1D,UAAU;YACZ,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO;YAC1C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,uBAAuB;YACxD,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,EAAE,EAAE,CAAC;YACrD,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,EAAE,EAAE,CAAC;SAClD,CAAC;IACJ,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,cAAc;QACZ,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAE7G,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;YAC/B,IAAI,CAAC,iBAAiB,IAAI,CAAC,mBAAmB,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACzE,MAAM,IAAI,KAAK,CAAC,8GAA8G,CAAC,CAAC;YAClI,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc,CAAC,WAAmB;QAChC,OAAO,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,aAAa,CAAC,WAAmB;QAC/B,OAAO,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;IACzD,CAAC;CACF;AA1DD,sCA0DC;AAED,kBAAe,aAAa,CAAC,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { LLMProvider, LLMPrompt, GeneratedCode } from "./provider";
|
|
2
|
+
export declare class AzureOpenAIProvider extends LLMProvider {
|
|
3
|
+
private apiKey;
|
|
4
|
+
private endpoint;
|
|
5
|
+
private deploymentName;
|
|
6
|
+
private apiVersion;
|
|
7
|
+
constructor(apiKey: string, endpoint: string, deploymentName: string, apiVersion?: string);
|
|
8
|
+
private get url();
|
|
9
|
+
validateConnection(): Promise<boolean>;
|
|
10
|
+
generateTestCode(prompt: LLMPrompt): Promise<GeneratedCode>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=azure-openai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azure-openai.d.ts","sourceRoot":"","sources":["../../src/llm/azure-openai.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEnE,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,SAAe;IAW/F,OAAO,KAAK,GAAG,GAEd;IAEK,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IActC,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;CA+BlE"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AzureOpenAIProvider = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const provider_1 = require("./provider");
|
|
9
|
+
class AzureOpenAIProvider extends provider_1.LLMProvider {
|
|
10
|
+
constructor(apiKey, endpoint, deploymentName, apiVersion = "2024-02-01") {
|
|
11
|
+
super();
|
|
12
|
+
if (!apiKey)
|
|
13
|
+
throw new Error("Azure OpenAI API key is required");
|
|
14
|
+
if (!endpoint)
|
|
15
|
+
throw new Error("Azure OpenAI endpoint is required");
|
|
16
|
+
if (!deploymentName)
|
|
17
|
+
throw new Error("Azure OpenAI deployment name is required");
|
|
18
|
+
this.apiKey = apiKey;
|
|
19
|
+
this.endpoint = endpoint.replace(/\/$/, "");
|
|
20
|
+
this.deploymentName = deploymentName;
|
|
21
|
+
this.apiVersion = apiVersion;
|
|
22
|
+
}
|
|
23
|
+
get url() {
|
|
24
|
+
return `${this.endpoint}/openai/deployments/${this.deploymentName}/chat/completions?api-version=${this.apiVersion}`;
|
|
25
|
+
}
|
|
26
|
+
async validateConnection() {
|
|
27
|
+
try {
|
|
28
|
+
const response = await axios_1.default.post(this.url, { messages: [{ role: "user", content: "test" }], max_tokens: 10 }, { headers: { "api-key": this.apiKey, "Content-Type": "application/json" }, timeout: 5000 });
|
|
29
|
+
return response.status === 200;
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
console.error("Azure OpenAI connection validation failed:", error.response?.data || error.message);
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async generateTestCode(prompt) {
|
|
37
|
+
try {
|
|
38
|
+
const response = await axios_1.default.post(this.url, {
|
|
39
|
+
messages: [{ role: "user", content: this.buildPrompt(prompt) }],
|
|
40
|
+
max_tokens: 2000,
|
|
41
|
+
temperature: 0.2,
|
|
42
|
+
}, {
|
|
43
|
+
headers: { "api-key": this.apiKey, "Content-Type": "application/json" },
|
|
44
|
+
timeout: 30000,
|
|
45
|
+
});
|
|
46
|
+
const generatedCode = response.data.choices?.[0]?.message?.content || "";
|
|
47
|
+
if (!generatedCode.trim())
|
|
48
|
+
throw new Error("Empty response from Azure OpenAI");
|
|
49
|
+
return {
|
|
50
|
+
code: generatedCode,
|
|
51
|
+
timestamp: new Date(),
|
|
52
|
+
model: "azure-openai",
|
|
53
|
+
testCaseId: prompt.testCaseId,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
const errorMessage = error.response
|
|
58
|
+
? `HTTP ${error.response.status}: ${error.response.data?.error?.message || error.response.data}`
|
|
59
|
+
: error.message;
|
|
60
|
+
throw new Error(`Failed to generate code with Azure OpenAI: ${errorMessage}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.AzureOpenAIProvider = AzureOpenAIProvider;
|
|
65
|
+
//# sourceMappingURL=azure-openai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azure-openai.js","sourceRoot":"","sources":["../../src/llm/azure-openai.ts"],"names":[],"mappings":"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"}
|
package/dist/llm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAKzC,qBAAa,UAAU;IACrB,MAAM,CAAC,cAAc,IAAI,WAAW;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAKzC,qBAAa,UAAU;IACrB,MAAM,CAAC,cAAc,IAAI,WAAW;CAarC;AAED,eAAe,UAAU,CAAC"}
|
package/dist/llm/index.js
CHANGED
|
@@ -4,25 +4,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.LLMFactory = void 0;
|
|
7
|
-
const copilot_1 = require("./copilot");
|
|
8
7
|
const claude_1 = require("./claude");
|
|
8
|
+
const azure_openai_1 = require("./azure-openai");
|
|
9
9
|
const config_1 = __importDefault(require("../config"));
|
|
10
10
|
class LLMFactory {
|
|
11
11
|
static createProvider() {
|
|
12
12
|
const config = config_1.default.getConfig();
|
|
13
|
-
if (config.aiModel === "
|
|
14
|
-
if (!config.
|
|
15
|
-
throw new Error("
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
if (config.aiModel === "azure-openai") {
|
|
14
|
+
if (!config.azureOpenAIApiKey)
|
|
15
|
+
throw new Error("Azure OpenAI API key not configured. Set AZURE_OPENAI_API_KEY in .env");
|
|
16
|
+
if (!config.azureOpenAIEndpoint)
|
|
17
|
+
throw new Error("Azure OpenAI endpoint not configured. Set AZURE_OPENAI_ENDPOINT in .env");
|
|
18
|
+
if (!config.azureOpenAIDeployment)
|
|
19
|
+
throw new Error("Azure OpenAI deployment not configured. Set AZURE_OPENAI_DEPLOYMENT in .env");
|
|
20
|
+
return new azure_openai_1.AzureOpenAIProvider(config.azureOpenAIApiKey, config.azureOpenAIEndpoint, config.azureOpenAIDeployment, config.azureOpenAIApiVersion);
|
|
18
21
|
}
|
|
19
|
-
if (config.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
return new claude_1.ClaudeProvider(config.claudeApiKey);
|
|
24
|
-
}
|
|
25
|
-
throw new Error(`Unknown AI model: ${config.aiModel}`);
|
|
22
|
+
if (!config.claudeApiKey)
|
|
23
|
+
throw new Error("Claude API key not configured. Set CLAUDE_API_KEY in .env");
|
|
24
|
+
return new claude_1.ClaudeProvider(config.claudeApiKey);
|
|
26
25
|
}
|
|
27
26
|
}
|
|
28
27
|
exports.LLMFactory = LLMFactory;
|
package/dist/llm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":";;;;;;AACA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":";;;;;;AACA,qCAA0C;AAC1C,iDAAqD;AACrD,uDAAsC;AAEtC,MAAa,UAAU;IACrB,MAAM,CAAC,cAAc;QACnB,MAAM,MAAM,GAAG,gBAAa,CAAC,SAAS,EAAE,CAAC;QAEzC,IAAI,MAAM,CAAC,OAAO,KAAK,cAAc,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,iBAAiB;gBAAE,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;YACxH,IAAI,CAAC,MAAM,CAAC,mBAAmB;gBAAE,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;YAC5H,IAAI,CAAC,MAAM,CAAC,qBAAqB;gBAAE,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;YAClI,OAAO,IAAI,kCAAmB,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACnJ,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,YAAY;YAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QACvG,OAAO,IAAI,uBAAc,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACjD,CAAC;CACF;AAdD,gCAcC;AAED,kBAAe,UAAU,CAAC"}
|