Update Healer Man server
This commit is contained in:
1 parent
f90ba7d989
commit
189b94d6b7
51 files changed
+3448
-154
No files matched your search
@@ -0,0 +1,92 @@
|
||||
const { chromium } = require('C:/Users/phenom/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/node_modules/playwright');
|
||||
const assert = require('node:assert/strict');
|
||||
const fs = require('node:fs');
|
||||
const os = require('node:os');
|
||||
const path = require('node:path');
|
||||
|
||||
const directory = path.resolve(process.env.ROM_FIVE_PLAYTEST_DIR || 'artifacts/playtest/rom-five');
|
||||
const port = Number(process.env.ROM_FIVE_PLAYTEST_PORT || 4193);
|
||||
const base = `http://127.0.0.1:${port}`;
|
||||
fs.mkdirSync(directory, { recursive: true });
|
||||
const runtimeData = fs.mkdtempSync(path.join(os.tmpdir(), 'healer-man-rom-five-ui-'));
|
||||
|
||||
(async () => {
|
||||
const { createGameServer } = await import('../server/server.mjs');
|
||||
const runtime = createGameServer({ dataDir: runtimeData, enableShelvedModes: false });
|
||||
await new Promise((resolve) => runtime.server.listen(port, '127.0.0.1', resolve));
|
||||
const browser = await chromium.launch({ channel: 'msedge', headless: true });
|
||||
const context = await browser.newContext({ viewport: { width: 1440, height: 900 } });
|
||||
const page = await context.newPage();
|
||||
page.setDefaultTimeout(120_000);
|
||||
const pageErrors = [];
|
||||
page.on('pageerror', (error) => pageErrors.push(error.message));
|
||||
|
||||
try {
|
||||
await page.goto(base, { waitUntil: 'domcontentloaded' });
|
||||
await page.getByLabel('Username').fill('RomFiveQA');
|
||||
await page.getByLabel('Password').fill('rom-five-playtest');
|
||||
await page.getByRole('button', { name: /Create account/ }).click();
|
||||
await page.locator('.character-select-screen').waitFor();
|
||||
await page.getByRole('button', { name: /Create character/ }).click();
|
||||
await page.locator('.creator-category-tabs button').filter({ hasText: 'RoM' }).click();
|
||||
await page.locator('.class-option').filter({ hasText: 'Rogue' }).click();
|
||||
await page.getByText('Skills unlock by level').waitFor();
|
||||
await page.getByRole('button', { name: /Customize & name/ }).click();
|
||||
await page.getByLabel('Character name').fill('RomRogueQA');
|
||||
await page.getByRole('button', { name: /Create character/ }).click();
|
||||
await page.locator('.character-select-screen').waitFor();
|
||||
await page.locator('.character-preview canvas').waitFor({ timeout: 180_000 });
|
||||
await page.waitForTimeout(3_000);
|
||||
await page.screenshot({ path: path.join(directory, 'roster-preview.png') });
|
||||
|
||||
await page.getByRole('button', { name: /Create character/ }).click();
|
||||
await page.locator('.creator-category-tabs button').filter({ hasText: 'RoM' }).click();
|
||||
await page.locator('.race-option').filter({ hasText: 'Dwarf' }).click();
|
||||
await page.getByRole('button', { name: 'Mage Damage' }).click();
|
||||
await page.locator('.creator-preview-stage canvas').waitFor({ timeout: 180_000 });
|
||||
await page.waitForTimeout(3_000);
|
||||
await page.screenshot({ path: path.join(directory, 'dwarf-mage-creator.png') });
|
||||
await page.getByRole('button', { name: /Customize & name/ }).click();
|
||||
await page.getByLabel('Character name').fill('RomDwarfMageQA');
|
||||
await page.getByRole('button', { name: /Create character/ }).click();
|
||||
await page.locator('.character-select-screen').waitFor();
|
||||
await page.locator('.character-preview canvas').waitFor({ timeout: 180_000 });
|
||||
await page.waitForTimeout(3_000);
|
||||
await page.screenshot({ path: path.join(directory, 'dwarf-mage-roster.png') });
|
||||
await page.locator('.roster-character').filter({ hasText: 'RomRogueQA' }).click();
|
||||
|
||||
// The dual-display toggle overlays the narrow roster footer at this viewport.
|
||||
await page.locator('.roster-enter').evaluate((button) => button.click());
|
||||
await page.locator('.main-menu-screen').waitFor();
|
||||
await page.getByRole('button', { name: /Dungeons/ }).click();
|
||||
await page.locator('.dungeon-select-screen').waitFor();
|
||||
await page.locator('.dungeon-category-tab').filter({ hasText: 'WoW' }).click();
|
||||
await page.locator('.dungeon-select-row').filter({ hasText: 'Wailing Caverns' }).click();
|
||||
await page.getByRole('button', { name: /Choose role/ }).click();
|
||||
await page.locator('.dungeon-role-option--damage').click();
|
||||
await page.locator('.party-frames').waitFor({ timeout: 180_000 });
|
||||
await page.locator('.loading-screen').waitFor({ state: 'detached', timeout: 180_000 });
|
||||
assert.equal(await page.locator('.party-frame').count(), 5);
|
||||
await page.screenshot({ path: path.join(directory, 'dungeon-rogue.png') });
|
||||
await page.getByRole('button', { name: /Tactical/ }).click();
|
||||
await page.getByRole('button', { name: 'Skills', exact: true }).click();
|
||||
await page.locator('.rom-skills-panel').waitFor();
|
||||
assert.doesNotMatch(await page.locator('.rom-skills-panel').innerText(), /\bRank\s+\d+\b/);
|
||||
await page.screenshot({ path: path.join(directory, 'skills-no-ranks.png') });
|
||||
await page.locator('.rom-skills-panel').getByRole('button', { name: 'Close' }).click();
|
||||
await page.getByRole('button', { name: /Tactical/ }).click();
|
||||
await page.getByRole('button', { name: 'Spells', exact: true }).click();
|
||||
await page.locator('.spellbook-panel').waitFor();
|
||||
assert.doesNotMatch(await page.locator('.spellbook-panel').innerText(), /\bRank\s+\d+\b/);
|
||||
await page.screenshot({ path: path.join(directory, 'spellbook-no-ranks.png') });
|
||||
assert.deepEqual(pageErrors, []);
|
||||
console.log(`RoM Rogue roster and dungeon screenshots: ${directory}`);
|
||||
} finally {
|
||||
await browser.close();
|
||||
await new Promise((resolve) => runtime.server.close(resolve));
|
||||
fs.rmSync(runtimeData, { recursive: true, force: true });
|
||||
}
|
||||
})().catch((error) => {
|
||||
console.error(error);
|
||||
process.exitCode = 1;
|
||||
});
|
||||
Reference in new issue
Block a user