mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
* chore(ai-workflow): track repo-managed review tooling * fix(ai-workflow): remove repo-specific path assumptions Make shared workflow hooks and APK testing guidance resolve paths from the repo and contributor environment so the tooling works for all contributors, not just one machine.
5.1 KiB
5.1 KiB
Storage Management
Manage cookies, localStorage, sessionStorage, and browser storage state.
Storage State
Save and restore complete browser state including cookies and storage.
Save Storage State
# Save to auto-generated filename (storage-state-{timestamp}.json)
playwright-cli state-save
# Save to specific filename
playwright-cli state-save my-auth-state.json
Restore Storage State
# Load storage state from file
playwright-cli state-load my-auth-state.json
# Reload page to apply cookies
playwright-cli open https://example.com
Storage State File Format
The saved file contains:
{
"cookies": [
{
"name": "session_id",
"value": "abc123",
"domain": "example.com",
"path": "/",
"expires": 1735689600,
"httpOnly": true,
"secure": true,
"sameSite": "Lax"
}
],
"origins": [
{
"origin": "https://example.com",
"localStorage": [
{ "name": "theme", "value": "dark" },
{ "name": "user_id", "value": "12345" }
]
}
]
}
Cookies
List All Cookies
playwright-cli cookie-list
Filter Cookies by Domain
playwright-cli cookie-list --domain=example.com
Filter Cookies by Path
playwright-cli cookie-list --path=/api
Get Specific Cookie
playwright-cli cookie-get session_id
Set a Cookie
# Basic cookie
playwright-cli cookie-set session abc123
# Cookie with options
playwright-cli cookie-set session abc123 --domain=example.com --path=/ --httpOnly --secure --sameSite=Lax
# Cookie with expiration (Unix timestamp)
playwright-cli cookie-set remember_me token123 --expires=1735689600
Delete a Cookie
playwright-cli cookie-delete session_id
Clear All Cookies
playwright-cli cookie-clear
Advanced: Multiple Cookies or Custom Options
For complex scenarios like adding multiple cookies at once, use run-code:
playwright-cli run-code "async page => {
await page.context().addCookies([
{ name: 'session_id', value: 'sess_abc123', domain: 'example.com', path: '/', httpOnly: true },
{ name: 'preferences', value: JSON.stringify({ theme: 'dark' }), domain: 'example.com', path: '/' }
]);
}"
Local Storage
List All localStorage Items
playwright-cli localstorage-list
Get Single Value
playwright-cli localstorage-get token
Set Value
playwright-cli localstorage-set theme dark
Set JSON Value
playwright-cli localstorage-set user_settings '{"theme":"dark","language":"en"}'
Delete Single Item
playwright-cli localstorage-delete token
Clear All localStorage
playwright-cli localstorage-clear
Advanced: Multiple Operations
For complex scenarios like setting multiple values at once, use run-code:
playwright-cli run-code "async page => {
await page.evaluate(() => {
localStorage.setItem('token', 'jwt_abc123');
localStorage.setItem('user_id', '12345');
localStorage.setItem('expires_at', Date.now() + 3600000);
});
}"
Session Storage
List All sessionStorage Items
playwright-cli sessionstorage-list
Get Single Value
playwright-cli sessionstorage-get form_data
Set Value
playwright-cli sessionstorage-set step 3
Delete Single Item
playwright-cli sessionstorage-delete step
Clear sessionStorage
playwright-cli sessionstorage-clear
IndexedDB
List Databases
playwright-cli run-code "async page => {
return await page.evaluate(async () => {
const databases = await indexedDB.databases();
return databases;
});
}"
Delete Database
playwright-cli run-code "async page => {
await page.evaluate(() => {
indexedDB.deleteDatabase('myDatabase');
});
}"
Common Patterns
Authentication State Reuse
# Step 1: Login and save state
playwright-cli open https://app.example.com/login
playwright-cli snapshot
playwright-cli fill e1 "user@example.com"
playwright-cli fill e2 "password123"
playwright-cli click e3
# Save the authenticated state
playwright-cli state-save auth.json
# Step 2: Later, restore state and skip login
playwright-cli state-load auth.json
playwright-cli open https://app.example.com/dashboard
# Already logged in!
Save and Restore Roundtrip
# Set up authentication state
playwright-cli open https://example.com
playwright-cli eval "() => { document.cookie = 'session=abc123'; localStorage.setItem('user', 'john'); }"
# Save state to file
playwright-cli state-save my-session.json
# ... later, in a new session ...
# Restore state
playwright-cli state-load my-session.json
playwright-cli open https://example.com
# Cookies and localStorage are restored!
Security Notes
- Never commit storage state files containing auth tokens
- Add
*.auth-state.jsonto.gitignore - Delete state files after automation completes
- Use environment variables for sensitive data
- By default, sessions run in-memory mode which is safer for sensitive operations