44 lines
1.8 KiB
TypeScript
44 lines
1.8 KiB
TypeScript
import { expect, test } from "@playwright/test";
|
|
import type { PlayerState } from "@deadhead/schema";
|
|
import { addCredits, advance, logbook, playToDeal, run, state } from "./support";
|
|
|
|
const HOUR = 3_600_000;
|
|
const PILOTS = 7;
|
|
|
|
test.describe("the highlights pop-up (CR-025 Step 25.3)", () => {
|
|
test("fits one phone screen with more pilots than it lists", async ({ page }) => {
|
|
test.setTimeout(180_000);
|
|
await page.setViewportSize({ width: 375, height: 667 });
|
|
const owner = await playToDeal(page);
|
|
await addCredits(page, 2_000_000);
|
|
await run(page, "buyDispatchOffice");
|
|
const bayId = owner.bays[0]!.id;
|
|
for (let i = 0; i < PILOTS; i++) {
|
|
const { ship } = await run<{ ship: { id: string } }>(page, "buyShip", {
|
|
modelId: "courier",
|
|
bayId,
|
|
});
|
|
const { pilot } = await run<{ pilot: { id: string } }>(page, "hirePilot", {
|
|
locationId: "earth",
|
|
});
|
|
await run(page, "assignPilot", { pilotId: pilot.id, shipId: ship.id });
|
|
await run(page, "setPilotMode", { pilotId: pilot.id, mode: "independent" });
|
|
}
|
|
const rosa = (await state(page)).pilots.find(
|
|
(p: PlayerState["pilots"][number]) => p.isVeteran,
|
|
)!;
|
|
await run(page, "setPilotMode", { pilotId: rosa.id, mode: "independent" });
|
|
for (let h = 0; h < 4; h++) await advance(page, HOUR);
|
|
|
|
await page.goto("/");
|
|
const sheet = logbook(page);
|
|
const pilots = sheet.getByRole("list", { name: "Pilots" });
|
|
await expect(pilots).toBeVisible();
|
|
await expect(pilots.getByText(/more pilots:/)).toBeVisible();
|
|
// Everything fits: the sheet doesn't scroll, and the buttons are on screen.
|
|
const fits = await sheet.evaluate((el) => el.scrollHeight <= el.clientHeight);
|
|
expect(fits).toBe(true);
|
|
await expect(sheet.getByRole("button", { name: "Done" })).toBeInViewport();
|
|
});
|
|
});
|