Sketch mode more tolerant to syntax errors (#4056)

* add fix

* add test

* typos

* clean up
This commit is contained in:
Kurt Hutten
2024-10-02 13:15:40 +10:00
committed by GitHub
parent cd91774881
commit 47e472e984
7 changed files with 134 additions and 31 deletions

View File

@ -438,34 +438,7 @@ export async function getUtils(page: Page, test_?: typeof test) {
}
return maxDiff
},
getPixelRGBs: async (
coords: { x: number; y: number },
radius: number
): Promise<[number, number, number][]> => {
const buffer = await page.screenshot({
fullPage: true,
})
const screenshot = await PNG.sync.read(buffer)
const pixMultiplier: number = await page.evaluate(
'window.devicePixelRatio'
)
const allCords: [number, number][] = [[coords.x, coords.y]]
for (let i = 1; i < radius; i++) {
allCords.push([coords.x + i, coords.y])
allCords.push([coords.x - i, coords.y])
allCords.push([coords.x, coords.y + i])
allCords.push([coords.x, coords.y - i])
}
return allCords.map(([x, y]) => {
const index =
(screenshot.width * y * pixMultiplier + x * pixMultiplier) * 4 // rbga is 4 channels
return [
screenshot.data[index],
screenshot.data[index + 1],
screenshot.data[index + 2],
]
})
},
getPixelRGBs: getPixelRGBs(page),
doAndWaitForImageDiff: (fn: () => Promise<unknown>, diffCount = 200) =>
doAndWaitForImageDiff(page, fn, diffCount),
emulateNetworkConditions: async (
@ -1070,3 +1043,32 @@ export async function openAndClearDebugPanel(page: Page) {
export function sansWhitespace(str: string) {
return str.replace(/\s+/g, '').trim()
}
export function getPixelRGBs(page: Page) {
return async (
coords: { x: number; y: number },
radius: number
): Promise<[number, number, number][]> => {
const buffer = await page.screenshot({
fullPage: true,
})
const screenshot = await PNG.sync.read(buffer)
const pixMultiplier: number = await page.evaluate('window.devicePixelRatio')
const allCords: [number, number][] = [[coords.x, coords.y]]
for (let i = 1; i < radius; i++) {
allCords.push([coords.x + i, coords.y])
allCords.push([coords.x - i, coords.y])
allCords.push([coords.x, coords.y + i])
allCords.push([coords.x, coords.y - i])
}
return allCords.map(([x, y]) => {
const index =
(screenshot.width * y * pixMultiplier + x * pixMultiplier) * 4 // rbga is 4 channels
return [
screenshot.data[index],
screenshot.data[index + 1],
screenshot.data[index + 2],
]
})
}
}