feat: extract CSS contain from browser in Playwright adapter

- Add contain: cs.contain to browser-side style extraction
- Parse contain string into bitfield matching CDP extractor schema
- Add inline-size to CDP styles.ts contain parser for consistency
This commit is contained in:
John Dvorak
2026-05-21 14:05:55 -07:00
parent afb985cdf3
commit d23d2a431e
2 changed files with 18 additions and 1 deletions
+17 -1
View File
@@ -465,6 +465,7 @@ export async function extractWorldFastGeometry(
overflowY: cs.overflowY,
visibility: cs.visibility,
pointerEvents: cs.pointerEvents,
contain: cs.contain,
opacity: Number.parseFloat(cs.opacity) || 1,
zIndex: cs.zIndex,
lineHeight: Number.parseFloat(cs.lineHeight) || 0,
@@ -626,7 +627,22 @@ export async function extractWorldFastGeometry(
zIndexKind.push(s.zIndex === 'auto' ? 0 : 1)
zIndexValue.push(s.zIndex === 'auto' ? 0 : Number.parseInt(s.zIndex, 10) || 0)
opacity.push(s.opacity)
containFlags.push(0)
const csContain = (s as any).contain
let flags = 0
if (typeof csContain === 'string') {
for (const part of csContain.split(/\s+/)) {
switch (part) {
case 'layout': flags |= 1; break
case 'paint': flags |= 2; break
case 'size': flags |= 4; break
case 'style': flags |= 8; break
case 'strict': flags |= 15; break
case 'content': flags |= 7; break
case 'inline-size': flags |= 16; break
}
}
}
containFlags.push(flags)
lineHeight.push(s.lineHeight)
fontFamilyStringId.push(intern(s.fontFamily))
fontSize.push(s.fontSize)