File: //proc/self/root/tmp/ezdns_smoke.js
const puppeteer = require('puppeteer-core');
(async()=>{
const browser = await puppeteer.launch({executablePath:'/usr/bin/google-chrome',args:['--no-sandbox','--disable-setuid-sandbox']});
const page = await browser.newPage();
await page.setViewport({width:1366,height:900,deviceScaleFactor:1});
await page.goto('https://ezdns.support/dmarc-record-generator',{waitUntil:'networkidle2',timeout:30000});
const gen = await page.evaluate(async()=>{
const captured=[];
const originalSubmit = HTMLFormElement.prototype.submit;
HTMLFormElement.prototype.submit = function(){ captured.push(Array.from(new FormData(this).entries())); };
document.querySelector('[name="domain"]').value='kunden-domain.de';
document.querySelector('[name="policy"]').value='reject';
document.querySelector('[name="rua"]').value='dmarc@kunden-domain.de';
document.querySelector('[name="contactEmail"]').value='admin@kunden-domain.de';
document.querySelector('#dmarcGeneratorForm').dispatchEvent(new Event('submit',{bubbles:true,cancelable:true}));
await new Promise(r=>setTimeout(r,100));
document.querySelector('#auditCta').click();
await new Promise(r=>setTimeout(r,300));
HTMLFormElement.prototype.submit = originalSubmit;
const entries = captured[0] || [];
const names = entries.map(([name])=>name);
const values = Object.fromEntries(entries);
const requiredNames = ['ezdns_domain','ezdns_problem_area','ezdns_contact_email','ezdns_generated_record','custom[ezdns_domain]','customfield[ezdns_domain]','config[ezdns_domain]','fields[ezdns_domain]','custom[ezdns_generated_record]','customfield[ezdns_generated_record]','config[ezdns_generated_record]','fields[ezdns_generated_record]'];
return {
recordHost: document.querySelector('#recordHost').textContent,
recordValue: document.querySelector('#recordValue').textContent,
risk: document.querySelector('#riskBox').textContent,
capturedForms: captured.length,
requiredPresent: Object.fromEntries(requiredNames.map(n=>[n,names.includes(n)])),
values: {id: values.id, cycle: values.cycle, ezdns_domain: values.ezdns_domain, ezdns_problem_area: values.ezdns_problem_area, ezdns_contact_email: values.ezdns_contact_email, ezdns_generated_record: values.ezdns_generated_record}
};
});
const cartChecks=[];
for (const vp of [{name:'desktop',width:1366,height:900},{name:'mobile',width:390,height:844}]) {
const p = await browser.newPage();
await p.setViewport({width:vp.width,height:vp.height,deviceScaleFactor:1,isMobile:vp.name==='mobile'});
await p.goto('https://support.panomity.com/cart/priority-support/DNS-Priority-Audit/&step=0',{waitUntil:'networkidle2',timeout:30000});
cartChecks.push(await p.evaluate((name)=>{
const img = document.querySelector('img[src*="ezdns-priority-audit-cart-banner.jpg"]');
const bodyText = document.body.innerText;
return {
viewport:name,
statusMarkers:{upsell:!!document.querySelector('[data-ezdns-upsell="priority-audit"]'), cta:bodyText.includes('Audit für 49 € starten'), product879:bodyText.includes('DNS Priority Audit') && bodyText.includes('49'), noDataImage:!document.documentElement.innerHTML.includes('data:image'), noSmartyFatal:!/(Smarty|Fatal error|Parse error)/i.test(bodyText)},
banner:{present:!!img,naturalWidth:img?img.naturalWidth:0,naturalHeight:img?img.naturalHeight:0},
overflow:{scrollWidth:document.documentElement.scrollWidth,clientWidth:document.documentElement.clientWidth,hasHorizontalOverflow:document.documentElement.scrollWidth>document.documentElement.clientWidth+1}
};
}, vp.name));
await p.close();
}
console.log(JSON.stringify({generator:gen,cartChecks},null,2));
await browser.close();
})().catch(err=>{console.error(err);process.exit(1);});