33 lines
1.6 KiB
JavaScript
33 lines
1.6 KiB
JavaScript
const puppeteer = require('puppeteer');
|
|
(async () => {
|
|
console.log('launching');
|
|
const browser = await puppeteer.launch({ args: ['--no-sandbox','--disable-setuid-sandbox'], ignoreHTTPSErrors: true });
|
|
const page = await browser.newPage();
|
|
const url = 'https://localhost:3001/ketr.ketran/';
|
|
console.log('goto', url);
|
|
try {
|
|
await page.goto(url, { waitUntil: 'networkidle2', timeout: 30000 });
|
|
console.log('loaded');
|
|
} catch (e) {
|
|
console.error('load failed', e.message);
|
|
await browser.close();
|
|
process.exit(2);
|
|
}
|
|
await page.waitForTimeout(3000);
|
|
const btn = await page.$x("//button[contains(., 'House Rules')]");
|
|
if (btn && btn.length) {
|
|
console.log('Found House Rules button, clicking');
|
|
await btn[0].click();
|
|
await page.waitForTimeout(500);
|
|
} else {
|
|
console.log('House Rules button not found by text; trying .Actions button');
|
|
const btn2 = await page.$('.Actions button');
|
|
if (btn2) { await btn2.click(); await page.waitForTimeout(500); }
|
|
}
|
|
try { await page.waitForSelector('.HouseRules', { timeout: 5000 }); console.log('HouseRules appeared'); } catch(e) { console.error('HouseRules did not appear'); }
|
|
const switches = await page.$$eval('.HouseRules .RuleSwitch', els => els.map(e => ({ id: e.id || '', disabled: e.disabled })));
|
|
console.log('switches', JSON.stringify(switches, null, 2));
|
|
try { await page.screenshot({ path: '/tmp/house-rules.png', fullPage: true }); console.log('screenshot saved to /tmp/house-rules.png'); } catch(e) { console.warn('screenshot failed', e.message); }
|
|
await browser.close();
|
|
})();
|