@zhiweiliu/playwright-generator 1.0.13 → 1.0.15
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/dist/cli.js +1 -1
- package/dist/commands/generate.js +63 -16
- package/dist/commands/generate.js.map +1 -1
- package/package.json +1 -1
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.15");
|
|
16
16
|
// Init command
|
|
17
17
|
program
|
|
18
18
|
.command("init [projectPath]")
|
|
@@ -111,34 +111,81 @@ function extractTags(testCaseContent) {
|
|
|
111
111
|
return matches.map((tag) => tag.slice(1, -1)).filter((tag) => tag.length > 0);
|
|
112
112
|
}
|
|
113
113
|
function extractTypeScriptCode(raw) {
|
|
114
|
-
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
114
|
+
// First, try to extract from fenced code blocks
|
|
115
|
+
const fenceRegex = /```(?:ts|typescript|javascript)?\s*\n([\s\S]*?)\n```/gi;
|
|
116
|
+
const fenceMatches = [...raw.matchAll(fenceRegex)];
|
|
117
|
+
if (fenceMatches.length > 0) {
|
|
118
|
+
// Return the last code block (in case there are multiple)
|
|
119
|
+
const lastMatch = fenceMatches[fenceMatches.length - 1];
|
|
120
|
+
if (lastMatch[1]?.trim()) {
|
|
121
|
+
return lastMatch[1].trim();
|
|
122
|
+
}
|
|
118
123
|
}
|
|
124
|
+
// If no fenced blocks, look for test function and extract everything from there
|
|
119
125
|
const testIndex = raw.indexOf("test(");
|
|
120
126
|
if (testIndex !== -1) {
|
|
121
127
|
return raw.slice(testIndex).trim();
|
|
122
128
|
}
|
|
129
|
+
// Last resort: return the entire input trimmed
|
|
123
130
|
return raw.trim();
|
|
124
131
|
}
|
|
125
132
|
async function appendTestCodeToFile(filePath, generatedCode, testCaseId) {
|
|
126
133
|
const code = extractTypeScriptCode(generatedCode);
|
|
127
134
|
let currentContent = await fs_extra_1.default.readFile(filePath, "utf-8");
|
|
128
135
|
// Check if test case already exists
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
136
|
+
const testStartPattern = `test('`;
|
|
137
|
+
const testCaseIdPattern = testCaseId;
|
|
138
|
+
const testStartIndex = currentContent.indexOf(testStartPattern);
|
|
139
|
+
if (testStartIndex !== -1 && currentContent.includes(testCaseId)) {
|
|
140
|
+
// Find the start of the test function
|
|
141
|
+
const testFunctionStart = currentContent.lastIndexOf("test(", testStartIndex + currentContent.indexOf(testCaseId, testStartIndex));
|
|
142
|
+
if (testFunctionStart !== -1) {
|
|
143
|
+
// Find the matching closing brace by counting braces
|
|
144
|
+
let braceCount = 0;
|
|
145
|
+
let inString = false;
|
|
146
|
+
let stringChar = "";
|
|
147
|
+
let testFunctionEnd = -1;
|
|
148
|
+
for (let i = testFunctionStart; i < currentContent.length; i++) {
|
|
149
|
+
const char = currentContent[i];
|
|
150
|
+
// Handle strings
|
|
151
|
+
if (!inString && (char === '"' || char === "'")) {
|
|
152
|
+
inString = true;
|
|
153
|
+
stringChar = char;
|
|
154
|
+
}
|
|
155
|
+
else if (inString &&
|
|
156
|
+
char === stringChar &&
|
|
157
|
+
currentContent[i - 1] !== "\\") {
|
|
158
|
+
inString = false;
|
|
159
|
+
stringChar = "";
|
|
160
|
+
}
|
|
161
|
+
else if (!inString) {
|
|
162
|
+
if (char === "{") {
|
|
163
|
+
braceCount++;
|
|
164
|
+
}
|
|
165
|
+
else if (char === "}") {
|
|
166
|
+
braceCount--;
|
|
167
|
+
if (braceCount === 0) {
|
|
168
|
+
testFunctionEnd = i + 1; // Include the closing brace
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
if (testFunctionEnd !== -1) {
|
|
175
|
+
// Replace the existing test function
|
|
176
|
+
const beforeFunction = currentContent.substring(0, testFunctionStart);
|
|
177
|
+
const afterFunction = currentContent.substring(testFunctionEnd);
|
|
178
|
+
const updatedContent = beforeFunction + code + afterFunction;
|
|
179
|
+
await fs_extra_1.default.writeFile(filePath, updatedContent);
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
139
182
|
}
|
|
140
|
-
currentContent += code + "\n";
|
|
141
|
-
await fs_extra_1.default.writeFile(filePath, currentContent);
|
|
142
183
|
}
|
|
184
|
+
// Append new test case if not found or replacement failed
|
|
185
|
+
if (!currentContent.endsWith("\n\n")) {
|
|
186
|
+
currentContent += "\n\n";
|
|
187
|
+
}
|
|
188
|
+
currentContent += code + "\n";
|
|
189
|
+
await fs_extra_1.default.writeFile(filePath, currentContent);
|
|
143
190
|
}
|
|
144
191
|
//# sourceMappingURL=generate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":";;;;;AAaA,4CAwGC;AArHD,gDAAwB;AACxB,wDAA0B;AAC1B,+BAA4B;AAC5B,kDAA0B;AAC1B,gCAAoC;AAS7B,KAAK,UAAU,gBAAgB,CACpC,WAAmB,EACnB,OAAwB;IAExB,IAAI,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CACb,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,gBAAU,CAAC,cAAc,EAAE,CAAC;QAEhD,0BAA0B;QAC1B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACxD,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,kBAAkB,EAAE,CAAC;QAC3D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CACV,eAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAC7D,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAEzD,oDAAoD;QACpD,MAAM,YAAY,GAAG,MAAM,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,sDAAsD,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,2CAA2C,CACzH,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,MAAM,kBAAE,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAEjC,IAAI,cAAc,GAAG,OAAO,CAAC,UAAU;YACrC,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC;YAC7C,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;QAEjD,qDAAqD;QACrD,IAAI,CAAC,kBAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,sDAAsD,CAAC;YACtE,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,4BAA4B,UAAU,KAAK,CAAC,CAAC,CAAC;YAErE,0BAA0B;YAC1B,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAElE,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CACX,eAAK,CAAC,GAAG,CAAC,mCAAmC,UAAU,EAAE,CAAC,CAC3D,CAAC;gBACF,SAAS;YACX,CAAC;YAED,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC,UAAU,cAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC,CACjE,CAAC;YAEF,yBAAyB;YACzB,MAAM,eAAe,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAEjE,eAAe;YACf,MAAM,IAAI,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC;YAE1C,oBAAoB;YACpB,MAAM,MAAM,GAAc;gBACxB,QAAQ,EAAE,eAAe;gBACzB,UAAU,EAAE,UAAU;gBACtB,IAAI,EAAE,IAAI;aACX,CAAC;YAEF,gBAAgB;YAChB,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAEjE,wBAAwB;YACxB,MAAM,oBAAoB,CACxB,cAAc,EACd,aAAa,CAAC,IAAI,EAClB,UAAU,CACX,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CACR,mBAAmB,cAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,CAChE,CACF,CAAC;QACF,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAChE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,EAAE,KAAK,CAAC,CAAC;QAC/D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,QAAgB,EAChB,UAAkB;IAElB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAA,WAAI,EAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;QAE9D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACjD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,QAAgB;IACtD,MAAM,KAAK,GAAG,MAAM,IAAA,WAAI,EAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,sBAAsB,CAAC;IAEvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAE7C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,WAAW,CAAC,eAAuB;IAC1C,MAAM,QAAQ,GAAG,oBAAoB,CAAC;IACtC,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACtD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAW;IACxC,MAAM,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
|