Files
fishing-game/tests/debug3.js
T

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();
})();