56 lines
2.0 KiB
JavaScript
56 lines
2.0 KiB
JavaScript
const puppeteer = require('puppeteer-core');
|
|
const path = require('path');
|
|
|
|
const GAME_DIR = '/home/andrey/work/fishing-game';
|
|
const GAME = 'file://' + path.join(GAME_DIR, 'index.html');
|
|
const CHROMIUM = process.env.CHROMIUM || '/usr/bin/chromium-browser';
|
|
const sleep = ms => new Promise(r => setTimeout(r, ms));
|
|
|
|
(async () => {
|
|
const browser = await puppeteer.launch({
|
|
executablePath: CHROMIUM, headless: true,
|
|
args: ['--no-sandbox', '--disable-dev-shm-usage', '--mute-audio'],
|
|
});
|
|
const page = await browser.newPage();
|
|
await page.setViewport({ width: 1280, height: 720, deviceScaleFactor: 1 });
|
|
await page.goto(GAME, { waitUntil: 'load' });
|
|
await page.evaluate(() => localStorage.clear());
|
|
await page.reload({ waitUntil: 'load' });
|
|
await page.waitForFunction(() => !document.getElementById('menu').classList.contains('hidden'), { timeout: 8000, polling: 50 });
|
|
|
|
await page.click('#btnPlay');
|
|
await page.waitForFunction(() => state === 'IDLE', { timeout: 3000, polling: 50 });
|
|
|
|
// Move to canvas center and press mouse
|
|
await page.evaluate(() => {
|
|
const canvas = document.querySelector('canvas');
|
|
const rect = canvas.getBoundingClientRect();
|
|
const event = new PointerEvent('pointerdown', {
|
|
bubbles: true, cancelable: true,
|
|
clientX: rect.left + rect.width / 2,
|
|
clientY: rect.top + rect.height / 2,
|
|
button: 0,
|
|
});
|
|
canvas.dispatchEvent(event);
|
|
});
|
|
await sleep(100);
|
|
console.log('After pointerdown:', await page.evaluate(() => state));
|
|
|
|
// Release
|
|
await page.evaluate(() => {
|
|
const canvas = document.querySelector('canvas');
|
|
const rect = canvas.getBoundingClientRect();
|
|
const event = new PointerEvent('pointerup', {
|
|
bubbles: true, cancelable: true,
|
|
clientX: rect.left + rect.width / 2,
|
|
clientY: rect.top + rect.height / 2,
|
|
button: 0,
|
|
});
|
|
canvas.dispatchEvent(event);
|
|
});
|
|
await sleep(100);
|
|
console.log('After pointerup:', await page.evaluate(() => state));
|
|
|
|
await browser.close();
|
|
})();
|