mirror of
https://github.com/anomalyco/opencode.git
synced 2026-07-24 04:01:10 -04:00
9e0d3976e1
Co-authored-by: Frank <frank@anoma.ly> Co-authored-by: Aarav Sareen <96787824+arvsrn@users.noreply.github.com> Co-authored-by: Brendan Allan <git@brendonovich.dev> Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com> Co-authored-by: Jack <jack@anoma.ly> Co-authored-by: Brendan Allan <14191578+Brendonovich@users.noreply.github.com> Co-authored-by: Shoubhit Dash <shoubhit2005@gmail.com> Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com> Co-authored-by: James Long <longster@gmail.com> Co-authored-by: Dustin Deus <deusdustin@gmail.com> Co-authored-by: starptech <starptech@starptechs-MBP.fritz.box> Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com> Co-authored-by: 𝓛𝓲𝓽𝓽𝓵𝓮 𝓕𝓻𝓪𝓷𝓴 <little-frank@opencord.local> Co-authored-by: Dax <mail@thdxr.com> Co-authored-by: usrnk1 <7547651+usrnk1@users.noreply.github.com> Co-authored-by: Jay <53023+jayair@users.noreply.github.com> Co-authored-by: runvip <164729189+runvip@users.noreply.github.com> Co-authored-by: opencode <opencode@sst.dev> Co-authored-by: Julian Coy <julian@ex-machina.co> Co-authored-by: Vladimir Glafirov <vglafirov@gitlab.com> Co-authored-by: Adam <2363879+adamdotdevin@users.noreply.github.com> Co-authored-by: Kit Langton <kit.langton@gmail.com> Co-authored-by: Simon Klee <hello@simonklee.dk> Co-authored-by: Jay <air@live.ca> Co-authored-by: David Hill <1879069+iamdavidhill@users.noreply.github.com>
76 lines
2.7 KiB
TypeScript
76 lines
2.7 KiB
TypeScript
import { expect, test } from "@playwright/test"
|
|
import {
|
|
analyzeVisualObservations,
|
|
defineVisualRegions,
|
|
startVisualProbe,
|
|
stopVisualProbe,
|
|
visualPlan,
|
|
} from "../../utils/visual-stability"
|
|
import { assistantMessage, setupTimeline, textPart, userMessage } from "./fixture"
|
|
|
|
test("detects blanking caused by ancestor opacity", async ({ page }) => {
|
|
const partID = "prt_oracle_ancestor_opacity"
|
|
await setupTimeline(page, { messages: [userMessage(), assistantMessage([textPart(partID, "Visible content")])] })
|
|
const row = page.locator(`[data-timeline-part-id="${partID}"]`).first()
|
|
const regions = defineVisualRegions({
|
|
content: { selector: `[data-timeline-part-id="${partID}"]` },
|
|
})
|
|
await startVisualProbe(page, regions)
|
|
await row.evaluate((element) => {
|
|
element.parentElement!.style.opacity = "0"
|
|
})
|
|
await page.waitForTimeout(50)
|
|
await row.evaluate((element) => {
|
|
element.parentElement!.style.opacity = "1"
|
|
})
|
|
await page.waitForTimeout(50)
|
|
const trace = await stopVisualProbe<keyof typeof regions>(page)
|
|
const issues = analyzeVisualObservations(
|
|
trace.samples,
|
|
visualPlan(regions, [
|
|
{ type: "opacity", regions: "all" },
|
|
{ type: "continuity", regions: "all" },
|
|
{ type: "motion", regions: "all" },
|
|
{ type: "label-stability", regions: "all" },
|
|
]),
|
|
)
|
|
|
|
expect(issues.some((issue) => issue.includes("blanked between visible frames"))).toBe(true)
|
|
})
|
|
|
|
test("detects root opacity when probing descendant opacity", async ({ page }) => {
|
|
const partID = "prt_oracle_descendant_opacity"
|
|
await setupTimeline(page, { messages: [userMessage(), assistantMessage([textPart(partID, "Visible content")])] })
|
|
const row = page.locator(`[data-timeline-part-id="${partID}"]`).first()
|
|
await row.evaluate((element) => {
|
|
element.innerHTML = '<span data-probe-opacity="true">Visible content</span>'
|
|
})
|
|
const regions = defineVisualRegions({
|
|
content: {
|
|
selector: `[data-timeline-part-id="${partID}"]`,
|
|
opacitySelectors: ['[data-probe-opacity="true"]'],
|
|
},
|
|
})
|
|
await startVisualProbe(page, regions)
|
|
await row.evaluate((element) => {
|
|
;(element as HTMLElement).style.opacity = "0"
|
|
})
|
|
await page.waitForTimeout(50)
|
|
await row.evaluate((element) => {
|
|
;(element as HTMLElement).style.opacity = "1"
|
|
})
|
|
await page.waitForTimeout(50)
|
|
const trace = await stopVisualProbe<keyof typeof regions>(page)
|
|
const issues = analyzeVisualObservations(
|
|
trace.samples,
|
|
visualPlan(regions, [
|
|
{ type: "opacity", regions: "all" },
|
|
{ type: "continuity", regions: "all" },
|
|
{ type: "motion", regions: "all" },
|
|
{ type: "label-stability", regions: "all" },
|
|
]),
|
|
)
|
|
|
|
expect(issues.some((issue) => issue.includes("blanked between visible frames"))).toBe(true)
|
|
})
|