完成50%

This commit is contained in:
2026-07-23 08:23:59 +08:00
parent 9b0ad62df4
commit f1edc6b533
218 changed files with 24318 additions and 5514 deletions
+24 -2
View File
@@ -75,6 +75,14 @@ const run = async () => {
await openG06(send)
assert.strictEqual(await valueOf(send, "Boolean(document.querySelector('.genealogy-card'))"), false, 'G06 initial state revealed results')
await setInput(send, '.search-input input', '汤')
await valueOf(send, "document.querySelector('.search-action').click()")
await valueOf(send, "document.querySelectorAll('.mode-tab')[1].click()")
await sleep(350)
await valueOf(send, "document.querySelectorAll('.mode-tab')[0].click()")
assert.strictEqual(await valueOf(send, "Boolean(document.querySelector('.search-initial'))"), true, 'G06 stale search timer repopulated a reset mode')
assert.strictEqual(await valueOf(send, "document.querySelectorAll('.search-results .result-card').length"), 0, 'G06 stale search results survived a mode round trip')
await setInput(send, '.search-input input', '汤')
await valueOf(send, "document.querySelector('.search-action').click()")
await waitFor(send, "document.querySelectorAll('.search-results .result-card').length === 6", 'G06 did not render all six relation states')
@@ -83,7 +91,14 @@ const run = async () => {
assert(firstCardText.includes(detail), `G06 result card is missing ${detail}`)
}
await valueOf(send, "document.querySelector('.result-card').click()")
await waitFor(send, "location.href.includes('/pages/genealogy/g05-genealogy-overview?mode=public&genealogyId=')", 'G06 available card did not open G05 public preview')
await waitFor(send, "location.href.includes('/pages/genealogy/g05-genealogy-overview?genealogyId=2001&sourceKey=G06')", 'G06 available card did not open G05 public preview')
await openG06(send)
await setInput(send, '.search-input input', '汤')
await valueOf(send, "document.querySelector('.search-action').click()")
await waitFor(send, "document.querySelectorAll('.search-results .result-card').length === 6", 'G06 relation results did not reload')
await valueOf(send, "document.querySelectorAll('.search-results .result-card__action')[1].click()")
await waitFor(send, "location.href.includes('/pages/genealogy/g01-my-genealogies?genealogyId=1002')", 'G06 joined result did not resolve to the canonical member genealogy')
await openG06(send)
await setInput(send, '.search-input input', '不存在的家谱')
@@ -106,8 +121,15 @@ const run = async () => {
await setInput(send, '.invite-input input', 'JP2026')
await valueOf(send, "document.querySelector('.search-action').click()")
await waitFor(send, "Boolean(document.querySelector('.invite-result .result-card'))", 'G06 valid invite target did not render')
assert((await valueOf(send, "document.querySelector('.invite-result')?.textContent"))?.includes('不会变更成员身份'), 'G06 local invite preview claimed a durable membership change')
await setInput(send, '.invite-input input', 'BAD-CODE')
assert.strictEqual(await valueOf(send, "Boolean(document.querySelector('.invite-initial'))"), true, 'G06 edited invite code retained a stale validated target')
assert.strictEqual(await valueOf(send, "Boolean(document.querySelector('.invite-result'))"), false, 'G06 stale invite target remained actionable after editing')
await setInput(send, '.invite-input input', 'JP2026')
await valueOf(send, "document.querySelector('.search-action').click()")
await waitFor(send, "Boolean(document.querySelector('.invite-result .result-card'))", 'G06 valid invite target did not revalidate after editing')
await valueOf(send, "document.querySelector('.invite-result .result-card__action').click()")
await waitFor(send, "location.href.includes('/pages/genealogy/g08-join-application?source=invite&genealogyId=')", 'G06 invite action did not open G08 invite source')
await waitFor(send, "location.href.includes('/pages/genealogy/g08-join-application?genealogyId=2001&source=invite&sourceKey=G06')", 'G06 invite action did not open G08 invite source')
for (const size of [{ width: 320, height: 568 }, { width: 360, height: 800 }, { width: 412, height: 915 }]) {
await send('Emulation.setDeviceMetricsOverride', { ...size, deviceScaleFactor: 1, mobile: true })