Loading skill
Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Record browser test videos with Playwright for PR review and bug fix verification
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 31% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -16% | 0% |
| case-18 | ✗→✓ | ▲ Improved | -9% | 0% |
| case-12 | ✓→✓ | = Same ✓ | -6% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 35% | 0% |
Use Playwright's video recording to capture headless browser operations as .webm videos for PR review or bug fix verification.
pythonfrom 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")
pythonpage.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
pythonstate = 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:
python# 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 viewportOther measured skills in the registry, with their headline benchmark lift.