Files
photo-live/apps/viewer/e2e/verify-share.mjs
T
浅念 c2143e1f94 feat(app): album banner picker in edit form — show current banner, pick & upload on save
- api_client:uploadAlbumAssetFromFile 泛化(cover 为薄壳)+ fetchAlbumAssetUrl
  (GET /albums/{id}/assets → 指定 kind 全局行 URL)
- 编辑页 Details:封面下方新增「宣传图」3:1 选择器——编辑模式异步加载现有
  banner 预览(失败静默);保存成功后上传(同封面:失败不阻塞表单结果)
- 未保存变更判断纳入 banner;l10n zh/en
- 测试适配:编辑用例 pumpForm 后清空 banner 现状预检请求(397/397 全绿)

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-23 11:07:54 +08:00

31 lines
1.6 KiB
JavaScript

import { chromium } from '@playwright/test';
const browser = await chromium.launch();
const page = await browser.newPage({ viewport: { width: 390, height: 844 } });
await page.goto('http://219.157.255.213:32006/a/nzmk2kr4trzemiwmv65uwxva');
await page.locator('.share-btn').waitFor({ timeout: 15000 });
// ① 相册页分享按钮 → 弹层
await page.locator('.share-btn').click();
const sheet = page.locator('.share-sheet');
await sheet.waitFor({ timeout: 5000 });
const urlText = await page.locator('[data-test="share-sheet-url"]').textContent();
const qr = await page.locator('.share-sheet-qr canvas').evaluate((el) => el.width);
const copyBtn = page.locator('[data-test="share-sheet-copy"]');
await copyBtn.click();
await page.waitForTimeout(400);
const feedback = await copyBtn.textContent();
console.log('[album] url =', urlText?.slice(0, 60));
console.log('[album] qr canvas width =', qr, '; copy feedback =', feedback?.trim());
await page.screenshot({ path: '../../docs/designs/ui04-implementation/actual/server/share-sheet-album.png' });
// 关闭弹层(Esc),打开大图再验证照片分享
await page.keyboard.press('Escape');
await page.locator('img').first().click();
await page.waitForTimeout(1200);
await page.locator('button[aria-label="分享照片"]').click();
await sheet.waitFor({ timeout: 5000 });
const photoUrl = await page.locator('[data-test="share-sheet-url"]').textContent();
console.log('[photo] url =', photoUrl?.slice(0, 70));
await page.screenshot({ path: '../../docs/designs/ui04-implementation/actual/server/share-sheet-photo.png' });
await browser.close();