UNPKG

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
"use strict"; 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); }