desktop: boot check finds unsaved marks on the sub views; neutral next-step lines before a read

This commit is contained in:
CRTkafa 2026-10-24 13:05:40 +08:00
parent 0ef27cf2e4
commit 5b6e0992ca
3 changed files with 7 additions and 7 deletions

View file

@ -2140,7 +2140,7 @@ export const en = {
"next.managed": "{version} waits in Publishing overview (managed publishing)",
"next.upload": "Upload a first build",
"next.live": "Live: {version}",
"next.notRead": "Stores not read yet",
"next.notRead": "Release state shows once the stores are read",
"next.storeLive": "The live store page, read from the stores",
"next.listingProblems": "{count} listing problems",
"next.listingProblems_one": "1 listing problem",
@ -2154,7 +2154,7 @@ export const en = {
"next.products": "{products} products · {subs} subscriptions",
"next.reviews": "{count} reviews without a reply",
"next.reviews_one": "1 review without a reply",
"next.reviewsUnread": "Reviews not read yet",
"next.reviewsUnread": "See what players say",
"next.reviewsOk": "All reviews answered",
"next.gamesApiOff": "Play Games Services API is off",
"next.gamesBlockers": "{count} game services blockers",

View file

@ -2142,7 +2142,7 @@ export const tr: Record<keyof typeof en, string> = {
"next.managed": "{version} Yayınlama özeti'nde bekliyor (yönetilen yayınlama)",
"next.upload": "İlk build'i yükle",
"next.live": "Yayında: {version}",
"next.notRead": "Mağazalar henüz okunmadı",
"next.notRead": "Yayın durumu mağazalar okununca görünür",
"next.storeLive": "Mağazalardan okunan canlı mağaza sayfası",
"next.listingProblems": "{count} mağaza metni sorunu",
"next.listingProblems_one": "1 mağaza metni sorunu",
@ -2156,7 +2156,7 @@ export const tr: Record<keyof typeof en, string> = {
"next.products": "{products} ürün · {subs} abonelik",
"next.reviews": "{count} yorum yanıtsız",
"next.reviews_one": "1 yorum yanıtsız",
"next.reviewsUnread": "Yorumlar henüz okunmadı",
"next.reviewsUnread": "Oyuncuların söylediklerine bak",
"next.reviewsOk": "Tüm yorumlar yanıtlandı",
"next.gamesApiOff": "Play Games Services API kapalı",
"next.gamesBlockers": "{count} oyun servisi engeli",

View file

@ -976,7 +976,7 @@ async function runEditorCase(browser: Browser, sidecar: Sidecar): Promise<CaseRe
if (!over.includes('42 / 30')) problems.push(`no live counter "42 / 30" (${over.slice(0, 200)})`);
if (!over.includes('subtitle is 42 characters; the App Store takes 30')) problems.push('no limit check while typing');
else notes.push('typing: counter 42 / 30 and "the App Store takes 30"');
if (!(await page.locator('#tab-listings .ed-dot').count())) problems.push('the Listings tab has no unsaved mark');
if (!(await page.locator('#sub-listings .ed-dot').count())) problems.push('the Listings tab has no unsaved mark');
// undo goes back to the saved text, redo brings the edit back
await page.locator('[data-edit-bar="listings"] button', { hasText: 'Undo' }).click({ timeout: WAIT_MS });
const undone = await page.locator(field).inputValue();
@ -993,7 +993,7 @@ async function runEditorCase(browser: Browser, sidecar: Sidecar): Promise<CaseRe
}
await page.locator('[data-edit-bar="listings"] button', { hasText: 'Save to the app folder' }).click({ timeout: WAIT_MS })
.catch(async e => problems.push(`no enabled Save button: ${String(e).split('\n')[0]} (${(await text('[data-edit-bar="listings"]')).slice(0, 600)})`));
await page.waitForFunction(() => !document.querySelector('#tab-listings .ed-dot'), null, { timeout: WAIT_MS, polling: 50 }).catch(() => problems.push('the unsaved mark stays after Save'));
await page.waitForFunction(() => !document.querySelector('#sub-listings .ed-dot'), null, { timeout: WAIT_MS, polling: 50 }).catch(() => problems.push('the unsaved mark stays after Save'));
await settle(page);
const md = readFileSync(appstore, 'utf8');
const changed = md.split('\n').filter((l, i) => l !== before.md.split('\n')[i]);
@ -1022,7 +1022,7 @@ async function runEditorCase(browser: Browser, sidecar: Sidecar): Promise<CaseRe
if (!(await shows(page, '[data-edit-bar="appinfo"] [data-edit-plan]', 'apple.info.reviewNotes'))) problems.push(`App info: no review plan (${(await text('[data-edit-bar="appinfo"]')).slice(0, 400)})`);
await page.locator('[data-edit-bar="appinfo"] button', { hasText: 'Save to the app folder' }).click({ timeout: WAIT_MS })
.catch(async e => problems.push(`App info: no enabled Save button: ${String(e).split('\n')[0]} (${(await text('[data-edit-bar="appinfo"]')).slice(0, 600)})`));
await page.waitForFunction(() => !document.querySelector('#tab-appinfo .ed-dot'), null, { timeout: WAIT_MS, polling: 50 }).catch(() => problems.push('App info: the unsaved mark stays after Save'));
await page.waitForFunction(() => !document.querySelector('#sub-appinfo .ed-dot'), null, { timeout: WAIT_MS, polling: 50 }).catch(() => problems.push('App info: the unsaved mark stays after Save'));
const cfg = readFileSync(join(dir, 'storebound.config.ts'), 'utf8');
const cfgChanged = cfg.split('\n').filter((l, i) => l !== before.cfg.split('\n')[i]);
if (!cfg.includes("reviewNotes: 'Sign in with the demo account.'") || cfgChanged.length !== 1 || !cfg.includes('// storebound config of the demo app')) problems.push(`storebound.config.ts: expected one changed line with reviewNotes and the comments kept, got ${JSON.stringify(cfgChanged).slice(0, 300)}`);