nxtgauge-frontend-solid/live-demo-manual.cjs
Ashwin Kumar 6f88aa9627 fix: Chrome rendering and scrolling issues
- Changed overflow-x: clip to overflow-x: hidden for better Chrome support
- Changed auth-layout align-items from center to start to prevent clipping
- Added overflow-y: auto and overflow-x: hidden to body for consistent scrolling

Fixes issues where header and signup form were not visible in Chrome
and users were unable to scroll.
2026-04-10 02:48:46 +02:00

176 lines
6.4 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const { chromium } = require("playwright");
const { randomUUID } = require("crypto");
(async () => {
console.log("🎭 Starting Live UI Testing Demo\n");
const testEmail = `testcompany${randomUUID().slice(0, 8)}@test.com`;
const testPassword = "TestPass123!";
const testCompanyName = `Test Company ${randomUUID().slice(0, 6)}`;
const firstName = "John";
const lastName = "Doe";
console.log("📧 Test Email:", testEmail);
console.log("👤 Name:", firstName, lastName);
console.log("🏢 Company Name:", testCompanyName);
console.log("\n🚀 Launching Chromium browser...\n");
const browser = await chromium.launch({
headless: false,
slowMo: 600,
args: ["--window-size=1400,900"],
});
const context = await browser.newContext({
viewport: { width: 1400, height: 900 },
});
const page = await context.newPage();
try {
// Step 1: Navigate to signup
console.log("📍 Step 1: Opening signup page...");
await page.goto("http://localhost:3001/signup?intent=company");
await page.waitForTimeout(3000);
// Step 2: Fill ALL required fields using correct selectors
console.log("✍️ Step 2: Filling ALL required fields...\n");
// First Name (id="first-name")
console.log(" → First Name...");
await page.fill("#first-name", firstName);
await page.waitForTimeout(300);
// Last Name (id="last-name")
console.log(" → Last Name...");
await page.fill("#last-name", lastName);
await page.waitForTimeout(300);
// Email (id="email")
console.log(" → Email...");
await page.fill("#email", testEmail);
await page.waitForTimeout(300);
// Password (id="password")
console.log(" → Password...");
await page.fill("#password", testPassword);
await page.waitForTimeout(300);
// Confirm Password (id="confirm-password")
console.log(" → Confirm Password...");
await page.fill("#confirm-password", testPassword);
await page.waitForTimeout(300);
// CAPTCHA (id="captcha") - Need to read from canvas
console.log(" → CAPTCHA...");
// For demo purposes, we'll need to manually handle this or skip
// The captcha is drawn on a canvas, we can't easily read it
// Let's fill a placeholder and see what happens
await page.fill("#captcha", "TEST12");
console.log(" ⚠️ Note: CAPTCHA filled with placeholder");
await page.waitForTimeout(300);
// Terms Checkbox
console.log(" → Terms & Conditions...");
await page.check(".auth-checkbox");
console.log(" ✅ Terms checked");
await page.waitForTimeout(300);
console.log("\n✅ All fields filled!");
await page.waitForTimeout(1500);
// Take screenshot before submit
await page.screenshot({ path: "./test-results/02-signup-filled.png", fullPage: true });
// Step 3: Check if button is enabled
console.log("\n📤 Step 3: Checking Sign Up button...");
const submitBtn = await page.locator(".auth-submit-btn");
const isDisabled = await submitBtn.isDisabled();
if (isDisabled) {
console.log("⚠️ Button is still disabled - CAPTCHA may be invalid");
console.log(" 📝 In real usage, user would need to:");
console.log(" 1. Read the CAPTCHA from the canvas image");
console.log(" 2. Enter the correct CAPTCHA code");
console.log(" 3. Then click Sign Up");
// For demo, let's try refreshing the captcha and entering a new one
console.log(" 🔄 Refreshing CAPTCHA...");
await page.click(".auth-captcha-refresh");
await page.waitForTimeout(1000);
// Note: We still can't read the canvas captcha programmatically
// This is where manual intervention is needed in real testing
}
console.log("\n⏸ PAUSED: Manual CAPTCHA entry required");
console.log(" Please manually:");
console.log(" 1. Look at the CAPTCHA image in the browser");
console.log(" 2. Clear the CAPTCHA field");
console.log(" 3. Enter the correct CAPTCHA code");
console.log(" 4. Click the Sign Up button");
console.log(" 5. Complete the email verification");
console.log("\n Browser will stay open for 60 seconds...");
console.log(" (Take your time to complete the flow manually)");
// Keep browser open for manual interaction
await new Promise((resolve) => setTimeout(resolve, 60000));
// After manual completion, check current URL
const currentUrl = page.url();
console.log("\n📍 Current URL after manual flow:", currentUrl);
// If we reached the dashboard or verification page
if (currentUrl.includes("dashboard") || currentUrl.includes("verify")) {
console.log("✅ Signup flow completed!");
await page.screenshot({ path: "./test-results/03-after-signup.png", fullPage: true });
// Now check admin panel
console.log("\n🔐 Opening Admin Panel to check verification...");
const adminPage = await context.newPage();
await adminPage.goto("http://localhost:3000/login");
await adminPage.waitForTimeout(2000);
// Admin login
await adminPage.fill('input[type="email"]', "admin@nxtgauge.com");
await adminPage.fill('input[type="password"]', "admin123");
await adminPage.click('button[type="submit"]');
await adminPage.waitForTimeout(3000);
// Go to verification
await adminPage.goto("http://localhost:3000/admin/verification");
await adminPage.waitForTimeout(3000);
// Search for company
const searchInput = await adminPage.locator('input[type="search"]').first();
if (searchInput) {
await searchInput.fill(testEmail);
await adminPage.waitForTimeout(2000);
}
await adminPage.screenshot({
path: "./test-results/04-admin-verification.png",
fullPage: true,
});
console.log("📸 Admin screenshot saved");
const companyFound = await adminPage
.locator(`text=${testEmail}`)
.isVisible()
.catch(() => false);
if (companyFound) {
console.log("✅ SUCCESS! Company found in verification queue!");
} else {
console.log("⚠️ Company not found - may still be processing");
}
}
} catch (error) {
console.error("\n❌ Error:", error.message);
await page.screenshot({ path: "./test-results/error.png", fullPage: true });
} finally {
await context.close();
await browser.close();
console.log("\n✅ Test completed");
console.log("📸 Screenshots in ./test-results/");
}
})();