diff options
| author | Adam <[email protected]> | 2026-03-11 16:01:56 -0500 |
|---|---|---|
| committer | Adam <[email protected]> | 2026-03-11 16:02:11 -0500 |
| commit | 387ab78bf69a130b87e8d428e796c1663ba6e745 (patch) | |
| tree | fe0f65a37c45c106d8581cb6aceb934784d1e131 /packages | |
| parent | dbc00aa8e04cd9fbfb0534e24751c38232862244 (diff) | |
| download | opencode-387ab78bf69a130b87e8d428e796c1663ba6e745.tar.gz opencode-387ab78bf69a130b87e8d428e796c1663ba6e745.zip | |
chore: fix test
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/app/e2e/session/session-review.spec.ts | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/packages/app/e2e/session/session-review.spec.ts b/packages/app/e2e/session/session-review.spec.ts index 4198c733c..89d04e67d 100644 --- a/packages/app/e2e/session/session-review.spec.ts +++ b/packages/app/e2e/session/session-review.spec.ts @@ -101,12 +101,31 @@ async function waitMark(page: Parameters<typeof test>[0]["page"], file: string, ) } +async function spot(page: Parameters<typeof test>[0]["page"], file: string) { + return page.evaluate((file) => { + const view = document.querySelector('[data-slot="session-review-scroll"] .scroll-view__viewport') + if (!(view instanceof HTMLElement)) return null + + const row = Array.from(document.querySelectorAll("h3")).find( + (node) => node instanceof HTMLElement && node.textContent?.includes(file), + ) + if (!(row instanceof HTMLElement)) return null + + const a = row.getBoundingClientRect() + const b = view.getBoundingClientRect() + return { + top: a.top - b.top, + y: view.scrollTop, + } + }, file) +} + test("review keeps scroll position after a live diff update", async ({ page, withProject }) => { test.setTimeout(180_000) const tag = `review-${Date.now()}` const list = files(tag) - const hit = list[list.length - 2]! + const hit = list[list.length - 4]! const next = `${tag}-live` await page.setViewportSize({ width: 1600, height: 1000 }) @@ -160,8 +179,9 @@ test("review keeps scroll position after a live diff update", async ({ page, wit await expect(row).toBeVisible() await row.evaluate((el) => el.scrollIntoView({ block: "center" })) - await expect.poll(() => view.evaluate((el) => el.scrollTop)).toBeGreaterThan(200) - const prev = await view.evaluate((el) => el.scrollTop) + await expect.poll(async () => (await spot(page, hit.file))?.y ?? 0).toBeGreaterThan(200) + const prev = await spot(page, hit.file) + if (!prev) throw new Error(`missing review row for ${hit.file}`) await patch(sdk, session.id, edit(hit.file, hit.mark, next)) @@ -179,8 +199,15 @@ test("review keeps scroll position after a live diff update", async ({ page, wit await waitMark(page, hit.file, next) await expect - .poll(async () => Math.abs((await view.evaluate((el) => el.scrollTop)) - prev), { timeout: 60_000 }) - .toBeLessThanOrEqual(16) + .poll( + async () => { + const next = await spot(page, hit.file) + if (!next) return Number.POSITIVE_INFINITY + return Math.max(Math.abs(next.top - prev.top), Math.abs(next.y - prev.y)) + }, + { timeout: 60_000 }, + ) + .toBeLessThanOrEqual(32) }) }) }) |
