协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
playwright-screen-recording【开发与工程】Record browser test videos with Playwright for PR review and bug fix verification
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Use Playwright's video recording to capture headless browser operations as .webm videos for PR review or bug fix verification.
from playwright.sync_api import sync_playwright
import tempfile
from pathlib import Path
video_dir = Path(tempfile.mkdtemp())
with sync_playwright() as pw:
browser = pw.chromium.launch(headless=True)
context = browser.new_context(
viewport={"width": 1400, "height": 900},
record_video_dir=str(video_dir),
record_video_size={"width": 1400, "height": 900},
)
page = context.new_page()
page.goto(f"file:///path/to/test.html")
# ... perform test actions, add pauses for readability ...
page.wait_for_timeout(800) # pause so viewers can see the current state
page.close()
context.close() # video is finalized after context.close()
browser.close()
# Retrieve the recorded video
videos = list(video_dir.glob("*.webm"))
if videos:
videos[0].rename("demo.webm")
page.click(".some-button")
page.wait_for_timeout(800) # let viewers see the click effect
page.keyboard.press("ArrowRight")
page.wait_for_timeout(600) # let viewers see the navigation result
state = get_nav_state(page)
print(f"[1] Title: {state['title']}")
print(f" prev disabled: {state['prevDisabled']} (expected: True)")
assert state["prevDisabled"] is True
print(" PASS")
Terminal output paired with the recorded video provides dual verification.
Use existing real trace data from the project rather than synthetic data for more convincing demos:
# Build test HTML from a real trace file
records = []
with open(".traces/trace_xxx.jsonl") as f:
for line in f:
# Escape </script> to prevent breaking the HTML script block
records.append(line.strip().replace("</script>", '</scr" + "ipt>'))
.webm (VP8 codec), supported by most players and browserspage produces a separate video filerecord_video_size controls video resolution — keep it consistent with viewport