Desktop boot check: v2 markup (scan finding guideline pill, catalog screen root, lazy live thumbnails scrolled into view)

This commit is contained in:
CRTkafa 2026-10-22 23:47:29 +08:00
parent 5b6df321b9
commit 8cd4ecd63b

View file

@ -817,7 +817,7 @@ async function runErrorCase(browser: Browser, sidecar: Sidecar, variant: 'api-di
await settle(page);
const c = await text();
if (variant === 'scan-findings') {
if (!c.includes('5.1.1(v) · Sign-up without in-app account deletion')) problems.push('Checks: the scan findings (exit 1) are not listed');
if (!c.includes('5.1.1(v)') || !c.includes('Sign-up without in-app account deletion')) problems.push('Checks: the scan findings (exit 1) are not listed');
if (!c.includes('lib/auth/sign_up.dart:12')) problems.push('Checks: the finding\'s evidence is not shown');
} else if (!c.includes(SCAN_FAILED_LINE)) problems.push(`Checks: the failure does not show the command's error line "${SCAN_FAILED_LINE}"`);
noRaw('Checks', c);
@ -946,7 +946,7 @@ async function runEditorCase(browser: Browser, sidecar: Sidecar): Promise<CaseRe
await settle(page);
if (!writes.includes('apple.listing')) problems.push('Apply did not go through the confirm dialog (write_with_confirm)');
// the other editors draw, and a config edit (App info) saves only that value, comments kept
for (const [tab, root] of [['appinfo', '#appinfo-editor'], ['testflight', '#testflight-editor'], ['art', '#art-editor'], ['catalog', '#catalog-editor, [data-edit-bar], .card']] as const) {
for (const [tab, root] of [['appinfo', '#appinfo-editor'], ['testflight', '#testflight-editor'], ['art', '#art-editor'], ['catalog', '#catalog-editor, [data-edit-bar], .scr-catalog']] as const) {
await page.locator(`[role="tab"]#tab-${tab}`).click({ timeout: WAIT_MS }).catch(e => problems.push(`no ${tab} tab: ${String(e).split('\n')[0]}`));
if (!(await page.waitForSelector(root, { timeout: WAIT_MS }).then(() => true, () => false))) problems.push(`${tab}: the editor did not draw (${root})`);
await settle(page);
@ -1069,6 +1069,8 @@ async function runLiveArtCase(browser: Browser, sidecar: Sidecar): Promise<CaseR
await page.waitForSelector('#live-art', { timeout: WAIT_MS }).catch(() => problems.push('no live store art card'));
// nothing is read from the stores until asked (auto-read is off in the saved state)
await page.locator('#live-art button', { hasText: 'Read the stores' }).click({ timeout: WAIT_MS }).catch(e => problems.push(`no "Read the stores" button: ${String(e).split('\n')[0]}`));
// thumbnails load lazily when a tile comes into view, so scroll each one in like a person would
await page.evaluate(() => document.querySelectorAll('#live-art [data-live-tile]').forEach(e => e.scrollIntoView({ block: 'center' })));
const drawn = await page.waitForFunction(() => document.querySelectorAll('#live-art [data-live-tile] img[src^="data:image/"]').length >= 2, null, { timeout: WAIT_MS, polling: 50 }).then(() => true, () => false);
if (!drawn) problems.push(`live thumbnails not drawn (${(await text('#live-art')).slice(0, 300)})`);
const live = await text('#live-art');