// scripts/playwright-live-ad-portals-signup.js // Playwright Automation: Navigates to live ad portals, fills publisher registration forms with user credentials, and captures progress. const { chromium } = require('@playwright/test'); const path = require('path'); const fs = require('fs'); const OUTPUT_DIR = 'C:/Users/encep/.gemini/antigravity-cli/brain/3ab7ae82-5634-41d5-93a7-3c12c22503e2/screenshots/live_portal_signups'; const USER_CREDENTIALS = { email: 'yunchanpaca@gmail.com', password: 'ONVI2v4J#y', firstName: 'Yunchan', lastName: 'Park', fullName: 'Yunchan Park', company: 'D3RO Voice AI', appName: 'D3RO Voice AI (Desktop & Web AI Assistant)', appUrl: 'https://d3ro.app', monthlyImpressions: '100,000+', country: 'South Korea', }; async function runLiveAdPortalsSignup() { if (!fs.existsSync(OUTPUT_DIR)) { fs.mkdirSync(OUTPUT_DIR, { recursive: true }); } console.log('--- Launching Playwright Browser Automation for Live Ad Portals Signup ---'); const browser = await chromium.launch({ channel: 'msedge', headless: true, // headless mode for reliable capture in CLI environment }); const context = await browser.newContext({ viewport: { width: 1440, height: 960 }, userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0', }); const results = []; // ========================================== // 1. EthicalAds Publisher Application // ========================================== try { console.log('[1/5] Navigating to EthicalAds Publisher Application...'); const page = await context.newPage(); await page.goto('https://www.ethicalads.io/publishers/apply/', { waitUntil: 'domcontentloaded', timeout: 30000 }); await page.waitForTimeout(2000); // Fill form fields const nameInput = page.locator('input[name="name"], input[id*="name"]').first(); const emailInput = page.locator('input[name="email"], input[type="email"], input[id*="email"]').first(); const siteInput = page.locator('input[name*="site"], input[name*="url"], input[id*="url"]').first(); const trafficInput = page.locator('input[name*="views"], input[name*="traffic"], select[name*="traffic"]').first(); if (await nameInput.isVisible()) await nameInput.fill(USER_CREDENTIALS.fullName); if (await emailInput.isVisible()) await emailInput.fill(USER_CREDENTIALS.email); if (await siteInput.isVisible()) await siteInput.fill(USER_CREDENTIALS.appUrl); await page.waitForTimeout(1000); const shotPath = path.join(OUTPUT_DIR, '01_ethicalads_signup_filled.png'); await page.screenshot({ path: shotPath, fullPage: true }); results.push({ portal: 'EthicalAds', status: 'Form Filled & Captured', screenshot: shotPath }); await page.close(); } catch (err) { console.error('EthicalAds signup error:', err.message); } // ========================================== // 2. AppLovin MAX Developer Signup // ========================================== try { console.log('[2/5] Navigating to AppLovin MAX Developer Signup...'); const page = await context.newPage(); await page.goto('https://dash.applovin.com/signup', { waitUntil: 'domcontentloaded', timeout: 30000 }); await page.waitForTimeout(3000); const emailInput = page.locator('input[name="email"], input[type="email"]').first(); const nameInput = page.locator('input[name="name"], input[name="fullName"]').first(); const companyInput = page.locator('input[name="company"], input[name="companyName"]').first(); const websiteInput = page.locator('input[name="website"], input[name="url"]').first(); if (await emailInput.isVisible()) await emailInput.fill(USER_CREDENTIALS.email); if (await nameInput.isVisible()) await nameInput.fill(USER_CREDENTIALS.fullName); if (await companyInput.isVisible()) await companyInput.fill(USER_CREDENTIALS.company); if (await websiteInput.isVisible()) await websiteInput.fill(USER_CREDENTIALS.appUrl); await page.waitForTimeout(1000); const shotPath = path.join(OUTPUT_DIR, '02_applovin_max_signup_filled.png'); await page.screenshot({ path: shotPath, fullPage: false }); results.push({ portal: 'AppLovin MAX', status: 'Form Filled & Captured', screenshot: shotPath }); await page.close(); } catch (err) { console.error('AppLovin signup error:', err.message); } // ========================================== // 3. Mintegral Publisher / Developer Signup // ========================================== try { console.log('[3/5] Navigating to Mintegral Publisher Signup...'); const page = await context.newPage(); await page.goto('https://www.mintegral.com/en/signup', { waitUntil: 'domcontentloaded', timeout: 30000 }); await page.waitForTimeout(3000); const emailInput = page.locator('input[type="email"], input[placeholder*="email" i]').first(); const passwordInput = page.locator('input[type="password"]').first(); if (await emailInput.isVisible()) await emailInput.fill(USER_CREDENTIALS.email); if (await passwordInput.isVisible()) await passwordInput.fill(USER_CREDENTIALS.password); await page.waitForTimeout(1000); const shotPath = path.join(OUTPUT_DIR, '03_mintegral_signup_filled.png'); await page.screenshot({ path: shotPath, fullPage: false }); results.push({ portal: 'Mintegral', status: 'Form Filled & Captured', screenshot: shotPath }); await page.close(); } catch (err) { console.error('Mintegral signup error:', err.message); } // ========================================== // 4. Playwire Publisher Application Form // ========================================== try { console.log('[4/5] Navigating to Playwire Publisher Application...'); const page = await context.newPage(); await page.goto('https://www.playwire.com/contact-direct', { waitUntil: 'domcontentloaded', timeout: 30000 }); await page.waitForTimeout(3000); const firstNameInput = page.locator('input[name*="firstname" i]').first(); const lastNameInput = page.locator('input[name*="lastname" i]').first(); const emailInput = page.locator('input[name*="email" i], input[type="email"]').first(); const websiteInput = page.locator('input[name*="website" i], input[name*="url" i]').first(); if (await firstNameInput.isVisible()) await firstNameInput.fill(USER_CREDENTIALS.firstName); if (await lastNameInput.isVisible()) await lastNameInput.fill(USER_CREDENTIALS.lastName); if (await emailInput.isVisible()) await emailInput.fill(USER_CREDENTIALS.email); if (await websiteInput.isVisible()) await websiteInput.fill(USER_CREDENTIALS.appUrl); await page.waitForTimeout(1000); const shotPath = path.join(OUTPUT_DIR, '04_playwire_application_filled.png'); await page.screenshot({ path: shotPath, fullPage: true }); results.push({ portal: 'Playwire', status: 'Form Filled & Captured', screenshot: shotPath }); await page.close(); } catch (err) { console.error('Playwire signup error:', err.message); } // ========================================== // 5. BuySellAds (Carbon Ads) Publisher Portal // ========================================== try { console.log('[5/5] Navigating to BuySellAds (Carbon) Publisher Portal...'); const page = await context.newPage(); await page.goto('https://www.buysellads.com/publishers', { waitUntil: 'domcontentloaded', timeout: 30000 }); await page.waitForTimeout(3000); const applyButton = page.locator('a:has-text("Apply"), button:has-text("Apply"), a:has-text("Get Started")').first(); if (await applyButton.isVisible()) { await applyButton.click(); await page.waitForTimeout(2000); } const shotPath = path.join(OUTPUT_DIR, '05_buysellads_carbon_publisher_apply.png'); await page.screenshot({ path: shotPath, fullPage: true }); results.push({ portal: 'BuySellAds (Carbon)', status: 'Form Navigated & Captured', screenshot: shotPath }); await page.close(); } catch (err) { console.error('BuySellAds signup error:', err.message); } // ========================================== // 6. Unity ID / Unity Gaming Services // ========================================== try { console.log('[6/6] Navigating to Unity ID Registration...'); const page = await context.newPage(); await page.goto('https://id.unity.com/en/conversations/new', { waitUntil: 'domcontentloaded', timeout: 30000 }); await page.waitForTimeout(3000); const emailInput = page.locator('input[name="conversations_create_user_form[email]"], input[type="email"]').first(); const passwordInput = page.locator('input[name="conversations_create_user_form[password]"], input[type="password"]').first(); const usernameInput = page.locator('input[name="conversations_create_user_form[username]"], input[name*="username"]').first(); const fullnameInput = page.locator('input[name="conversations_create_user_form[full_name]"], input[name*="name"]').first(); if (await emailInput.isVisible()) await emailInput.fill(USER_CREDENTIALS.email); if (await passwordInput.isVisible()) await passwordInput.fill(USER_CREDENTIALS.password); if (await usernameInput.isVisible()) await usernameInput.fill('yunchanpaca'); if (await fullnameInput.isVisible()) await fullnameInput.fill(USER_CREDENTIALS.fullName); await page.waitForTimeout(1000); const shotPath = path.join(OUTPUT_DIR, '06_unity_cloud_signup_filled.png'); await page.screenshot({ path: shotPath, fullPage: false }); results.push({ portal: 'Unity Ads (LevelPlay)', status: 'Form Filled & Captured', screenshot: shotPath }); await page.close(); } catch (err) { console.error('Unity signup error:', err.message); } await browser.close(); fs.writeFileSync( path.join(OUTPUT_DIR, 'signup_automation_summary.json'), JSON.stringify(results, null, 2), 'utf8' ); console.log('--- Playwright Live Ad Portals Signup Automation Finished Successfully! ---'); } runLiveAdPortalsSignup().catch((err) => { console.error('Live Ad Portals Signup Automation Error:', err); process.exit(1); });