Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Drive a browser from the terminal with Playwright snapshots, refs, and direct page actions.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/storage-state.md
1# Storage Management23Manage cookies, localStorage, sessionStorage, and browser storage state.45## Storage State67Save and restore complete browser state including cookies and storage.89### Save Storage State1011```bash12# Save to auto-generated filename (storage-state-{timestamp}.json)13playwright-cli state-save1415# Save to specific filename16playwright-cli state-save my-auth-state.json17```1819### Restore Storage State2021```bash22# Load storage state from file23playwright-cli state-load my-auth-state.json2425# Reload page to apply cookies26playwright-cli open https://example.com27```2829### Storage State File Format3031The saved file contains:3233```json34{35"cookies": [36{37"name": "session_id",38"value": "abc123",39"domain": "example.com",40"path": "/",41"expires": 1735689600,42"httpOnly": true,43"secure": true,44"sameSite": "Lax"45}46],47"origins": [48{49"origin": "https://example.com",50"localStorage": [51{ "name": "theme", "value": "dark" },52{ "name": "user_id", "value": "12345" }53]54}55]56}57```5859## Cookies6061### List All Cookies6263```bash64playwright-cli cookie-list65```6667### Filter Cookies by Domain6869```bash70playwright-cli cookie-list --domain=example.com71```7273### Filter Cookies by Path7475```bash76playwright-cli cookie-list --path=/api77```7879### Get Specific Cookie8081```bash82playwright-cli cookie-get session_id83```8485### Set a Cookie8687```bash88# Basic cookie89playwright-cli cookie-set session abc1239091# Cookie with options92playwright-cli cookie-set session abc123 --domain=example.com --path=/ --httpOnly --secure --sameSite=Lax9394# Cookie with expiration (Unix timestamp)95playwright-cli cookie-set remember_me token123 --expires=173568960096```9798### Delete a Cookie99100```bash101playwright-cli cookie-delete session_id102```103104### Clear All Cookies105106```bash107playwright-cli cookie-clear108```109110### Advanced: Multiple Cookies or Custom Options111112For complex scenarios like adding multiple cookies at once, use `run-code`:113114```bash115playwright-cli run-code "async page => {116await page.context().addCookies([117{ name: 'session_id', value: 'sess_abc123', domain: 'example.com', path: '/', httpOnly: true },118{ name: 'preferences', value: JSON.stringify({ theme: 'dark' }), domain: 'example.com', path: '/' }119]);120}"121```122123## Local Storage124125### List All localStorage Items126127```bash128playwright-cli localstorage-list129```130131### Get Single Value132133```bash134playwright-cli localstorage-get token135```136137### Set Value138139```bash140playwright-cli localstorage-set theme dark141```142143### Set JSON Value144145```bash146playwright-cli localstorage-set user_settings '{"theme":"dark","language":"en"}'147```148149### Delete Single Item150151```bash152playwright-cli localstorage-delete token153```154155### Clear All localStorage156157```bash158playwright-cli localstorage-clear159```160161### Advanced: Multiple Operations162163For complex scenarios like setting multiple values at once, use `run-code`:164165```bash166playwright-cli run-code "async page => {167await page.evaluate(() => {168localStorage.setItem('token', 'jwt_abc123');169localStorage.setItem('user_id', '12345');170localStorage.setItem('expires_at', Date.now() + 3600000);171});172}"173```174175## Session Storage176177### List All sessionStorage Items178179```bash180playwright-cli sessionstorage-list181```182183### Get Single Value184185```bash186playwright-cli sessionstorage-get form_data187```188189### Set Value190191```bash192playwright-cli sessionstorage-set step 3193```194195### Delete Single Item196197```bash198playwright-cli sessionstorage-delete step199```200201### Clear sessionStorage202203```bash204playwright-cli sessionstorage-clear205```206207## IndexedDB208209### List Databases210211```bash212playwright-cli run-code "async page => {213return await page.evaluate(async () => {214const databases = await indexedDB.databases();215return databases;216});217}"218```219220### Delete Database221222```bash223playwright-cli run-code "async page => {224await page.evaluate(() => {225indexedDB.deleteDatabase('myDatabase');226});227}"228```229230## Common Patterns231232### Authentication State Reuse233234```bash235# Step 1: Login and save state236playwright-cli open https://app.example.com/login237playwright-cli snapshot238playwright-cli fill e1 "[email protected]"239playwright-cli fill e2 "password123"240playwright-cli click e3241242# Save the authenticated state243playwright-cli state-save auth.json244245# Step 2: Later, restore state and skip login246playwright-cli state-load auth.json247playwright-cli open https://app.example.com/dashboard248# Already logged in!249```250251### Save and Restore Roundtrip252253```bash254# Set up authentication state255playwright-cli open https://example.com256playwright-cli eval "() => { document.cookie = 'session=abc123'; localStorage.setItem('user', 'john'); }"257258# Save state to file259playwright-cli state-save my-session.json260261# ... later, in a new session ...262263# Restore state264playwright-cli state-load my-session.json265playwright-cli open https://example.com266# Cookies and localStorage are restored!267```268269## Security Notes270271- Never commit storage state files containing auth tokens272- Add `*.auth-state.json` to `.gitignore`273- Delete state files after automation completes274- Use environment variables for sensitive data275- By default, sessions run in-memory mode which is safer for sensitive operations276