playwright-ai-codegen-lib
Version:
A utility to auto-generate Playwright PageObjects and test scripts using OpenAI and DOM extraction.
44 lines (43 loc) • 1.69 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generatePageObject = generatePageObject;
const playwright_1 = require("playwright");
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const openAiHelper_1 = require("./openAiHelper");
async function generatePageObject(url) {
if (!url) {
throw new Error('❌ URL is required for generatePageObject(url)');
}
console.log(`🔍 Navigating to: ${url}`);
const browser = await playwright_1.chromium.launch({ headless: true });
const page = await browser.newPage();
try {
await page.goto(url, { waitUntil: 'domcontentloaded' });
console.log(`✅ Page loaded: ${url}`);
const dom = await page.content();
const selectors = await (0, openAiHelper_1.generateSelectors)(dom);
// Save selectors to a file
const selectorFilePath = path_1.default.resolve(process.cwd(), 'selectors.json');
fs_1.default.writeFileSync(selectorFilePath, JSON.stringify(selectors, null, 2), 'utf-8');
console.log(`✅ Selectors saved to: ${selectorFilePath}`);
}
catch (err) {
console.error('❌ Error during process:', err.message || err);
}
finally {
await browser.close();
}
}
// Optional: CLI support
if (require.main === module) {
const url = process.argv[2];
if (!url) {
console.error('❌ Usage: ts-node generatePageObject.ts <url>');
process.exit(1);
}
generatePageObject(url);
}