Some checks failed
CI Pipeline / Code Quality & Typecheck (push) Waiting to run
CI Pipeline / Test Suite (macos-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (ubuntu-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (windows-latest) (push) Blocked by required conditions
CI Pipeline / Build Validation (admin) (push) Blocked by required conditions
CI Pipeline / Build Validation (desktop) (push) Blocked by required conditions
Deploy Landing Page / deploy (push) Blocked by required conditions
Deploy Landing Page / build (push) Waiting to run
Release & Packaging Pipeline / Build & Publish Admin Docker Image (push) Failing after 8s
Release & Code Signing CA Pipeline / build-and-sign-windows (push) Failing after 1m51s
Build macOS / Build & Package (macOS) (push) Failing after 4s
Build macOS / Build & Package (macOS)-1 (push) Failing after 5s
Release & Code Signing CA Pipeline / build-and-sign-macos (push) Failing after 3s
Release & Packaging Pipeline / Package macOS Desktop App (push) Failing after 4s
Release & Packaging Pipeline / Package Windows Desktop App (push) Failing after 2m28s
Release & Packaging Pipeline / Publish Official GitHub Release (push) Has been skipped
214 lines
10 KiB
JavaScript
214 lines
10 KiB
JavaScript
// 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);
|
|
});
|