66c83991d4
- Remove RotatePrompt (the "rotate to landscape" overlay) — the app is portrait now, so it only blocked the UI. - page.tsx: best-effort orientation lock switched landscape → portrait. - Add Playwright-based store-screenshot + icon scripts (scripts/shots.js, game.js, icon.js); generated images are gitignored. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
70 lines
2.1 KiB
JavaScript
70 lines
2.1 KiB
JavaScript
// Capture portrait store screenshots from the running dev server (localhost:3025)
|
|
// using the system Chrome. Output -> scripts/shots/*.png
|
|
const { chromium } = require("playwright");
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
|
|
const OUT = path.join(__dirname, "shots");
|
|
fs.mkdirSync(OUT, { recursive: true });
|
|
const URL = process.env.SHOT_URL || "http://localhost:3025/";
|
|
|
|
const shot = async (page, name) => {
|
|
await page.screenshot({ path: path.join(OUT, name + ".png") });
|
|
console.log("saved", name);
|
|
};
|
|
const tap = async (page, text) => {
|
|
const el = page.getByText(text, { exact: false }).first();
|
|
await el.click({ timeout: 6000 });
|
|
};
|
|
|
|
(async () => {
|
|
const browser = await chromium.launch({ channel: "chrome" });
|
|
const ctx = await browser.newContext({
|
|
viewport: { width: 430, height: 932 },
|
|
deviceScaleFactor: 2,
|
|
locale: "fa-IR",
|
|
isMobile: true,
|
|
hasTouch: true,
|
|
});
|
|
const page = await ctx.newPage();
|
|
await page.goto(URL, { waitUntil: "networkidle" }).catch(() => {});
|
|
await page.waitForTimeout(3000);
|
|
await shot(page, "01-home");
|
|
|
|
// nav-rail screens reachable from home
|
|
for (const [label, name] of [
|
|
["جدول امتیازات", "02-leaderboard"],
|
|
["دستاوردها", "03-achievements"],
|
|
["فروشگاه", "04-shop"],
|
|
["پروفایل", "05-profile"],
|
|
]) {
|
|
try {
|
|
await tap(page, label);
|
|
await page.waitForTimeout(2200);
|
|
await shot(page, name);
|
|
// back to home for the next nav tap
|
|
await page.goto(URL, { waitUntil: "networkidle" }).catch(() => {});
|
|
await page.waitForTimeout(1500);
|
|
} catch (e) {
|
|
console.log("skip", name, String(e).split("\n")[0]);
|
|
await page.goto(URL, { waitUntil: "networkidle" }).catch(() => {});
|
|
await page.waitForTimeout(1500);
|
|
}
|
|
}
|
|
|
|
// vs-computer game (cards on the table)
|
|
try {
|
|
await tap(page, "بازی با کامپیوتر");
|
|
await page.waitForTimeout(5000);
|
|
await shot(page, "06-game");
|
|
} catch (e) {
|
|
console.log("skip game", String(e).split("\n")[0]);
|
|
}
|
|
|
|
await browser.close();
|
|
console.log("DONE");
|
|
})().catch((e) => {
|
|
console.error("FATAL", e);
|
|
process.exit(1);
|
|
});
|