forked from phenom/healer-man
Update Healer Man server
This commit is contained in:
1 parent
9d7e0e2f9e
commit
35dfdaed61
94 files changed
+17034
-418
No files matched your search
@@ -28,6 +28,42 @@ async function ready(page) {
|
||||
await page.waitForTimeout(1200);
|
||||
console.log(`Ready: ${(await state(page)).mode || 'run'}`);
|
||||
}
|
||||
async function verifyEditorMovement(page, panel) {
|
||||
await panel.getByRole('button', { name: 'Walk in scene', exact: true }).click();
|
||||
for (const key of ['w', 's', 'a', 'd']) {
|
||||
const before = await state(page);
|
||||
await page.keyboard.down(key); await page.waitForTimeout(600); await page.keyboard.up(key);
|
||||
await page.waitForTimeout(150);
|
||||
const after = await state(page);
|
||||
assert.ok(Math.hypot(after.position[0] - before.position[0], after.position[2] - before.position[2]) > .15, `${key.toUpperCase()} must move the player in edit mode`);
|
||||
}
|
||||
await panel.getByLabel('Spawn X', { exact: true }).focus();
|
||||
const before = await state(page);
|
||||
assert.equal(before.focused, true);
|
||||
await page.keyboard.down('w'); await page.waitForTimeout(350); await page.keyboard.up('w');
|
||||
const paused = await state(page);
|
||||
assert.ok(Math.hypot(paused.position[0] - before.position[0], paused.position[2] - before.position[2]) < .1, 'Panel focus must pause movement');
|
||||
await page.mouse.click(550, 380);
|
||||
assert.equal((await state(page)).focused, false, 'Clicking the world must return keyboard control');
|
||||
await page.keyboard.down('w'); await page.waitForTimeout(500); await page.keyboard.up('w');
|
||||
const walking = await state(page);
|
||||
assert.ok(Math.hypot(walking.position[0] - paused.position[0], walking.position[2] - paused.position[2]) > .15, 'W must work again after clicking the world');
|
||||
await page.keyboard.press('Digit1');
|
||||
assert.equal(await page.evaluate(async () => {
|
||||
const { useCombatStore } = await window.playtestImport('/src/game/combatStore.ts');
|
||||
return useCombatStore.getState().activeCast;
|
||||
}), null, 'Editing must still block combat actions');
|
||||
await page.mouse.move(550, 380); await page.mouse.down({ button: 'right' });
|
||||
const yaw = (await state(page)).yaw;
|
||||
await page.mouse.move(650, 395, { steps: 8 }); await page.waitForTimeout(300);
|
||||
assert.notEqual((await state(page)).yaw, yaw); assert.equal((await state(page)).pointerLock, false);
|
||||
await page.mouse.up({ button: 'right' }); await page.waitForTimeout(100);
|
||||
const released = (await state(page)).yaw;
|
||||
await page.mouse.move(700, 420, { steps: 4 }); await page.waitForTimeout(300);
|
||||
assert.equal((await state(page)).yaw, released, 'Camera motion must stop after right-button release');
|
||||
observations.push({ name: 'editor WASD, panel focus return, combat gating, and right drag without pointer lock', state: await state(page) });
|
||||
await page.screenshot({ path: path.join(out, 'editor-movement.png') });
|
||||
}
|
||||
(async () => {
|
||||
const { createGameServer } = await import('../server/server.mjs');
|
||||
const dataDir = fs.mkdtempSync(path.join(os.tmpdir(), 'healer-man-editor-playtest-'));
|
||||
@@ -74,6 +110,13 @@ async function ready(page) {
|
||||
assert.equal((await state(page)).mode, 'edit');
|
||||
assert.equal((await state(page)).grounded, true);
|
||||
await page.screenshot({ path: path.join(out, 'wow-editor.png') });
|
||||
await verifyEditorMovement(page, panel);
|
||||
if (process.env.BITE_SIZED_EDITOR_INPUT_ONLY === '1') {
|
||||
assert.deepEqual(errors, []);
|
||||
fs.writeFileSync(path.join(out, 'movement-observations.json'), `${JSON.stringify({ observations, errors }, null, 2)}\n`);
|
||||
console.log(`Passed editor movement and camera checks. Screenshots: ${out}`);
|
||||
return;
|
||||
}
|
||||
await panel.getByRole('button', { name: 'New spot', exact: true }).click();
|
||||
await ready(page);
|
||||
await panel.getByLabel('Spot name', { exact: true }).fill('Playtest new spot');
|
||||
|
||||
Reference in new issue
Block a user