const { chromium } = require('playwright'); (async () => { const browser = await chromium.launch({ headless: true }); const page = await browser.newPage(); console.log('=== Testing Shinkan Login Page ===\n'); try { await page.goto('http://192.168.2.49:3098', { waitUntil: 'networkidle', timeout: 10000 }); const title = await page.title(); console.log('šŸ“„ Title:', title); const h1 = await page.textContent('h1').catch(() => null); console.log('šŸ„‹ Heading:', h1); const buttons = await page.locator('button').count(); const forms = await page.locator('form').count(); const inputs = await page.locator('input').count(); console.log('\nšŸ” Elements Found:'); console.log(' - Buttons:', buttons); console.log(' - Forms:', forms); console.log(' - Inputs:', inputs); if (buttons > 0) { console.log('\nšŸ”˜ Buttons:'); for (let i = 0; i < buttons; i++) { const text = await page.locator('button').nth(i).textContent(); console.log(` ${i + 1}. "${text}"`); } } if (inputs > 0) { console.log('\nšŸ“ Inputs:'); for (let i = 0; i < inputs; i++) { const placeholder = await page.locator('input').nth(i).getAttribute('placeholder'); const type = await page.locator('input').nth(i).getAttribute('type'); console.log(` ${i + 1}. Type: ${type}, Placeholder: "${placeholder}"`); } } const bodyText = await page.evaluate(() => document.body.innerText); console.log('\nšŸ“ Page Content Preview:'); console.log(bodyText.substring(0, 300)); await page.screenshot({ path: 'shinkan-login-screenshot.png', fullPage: true }); console.log('\nšŸ“ø Screenshot: shinkan-login-screenshot.png'); } catch (error) { console.error('āŒ Error:', error.message); } await browser.close(); })();