276 lines
5.1 KiB
Markdown
276 lines
5.1 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```bash
|
|
playwright-cli cookie-list
|
|
```
|
|
|
|
### Filter Cookies by Domain
|
|
|
|
```bash
|
|
playwright-cli cookie-list --domain=example.com
|
|
```
|
|
|
|
### Filter Cookies by Path
|
|
|
|
```bash
|
|
playwright-cli cookie-list --path=/api
|
|
```
|
|
|
|
### Get Specific Cookie
|
|
|
|
```bash
|
|
playwright-cli cookie-get session_id
|
|
```
|
|
|
|
### Set a Cookie
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
playwright-cli cookie-delete session_id
|
|
```
|
|
|
|
### Clear All Cookies
|
|
|
|
```bash
|
|
playwright-cli cookie-clear
|
|
```
|
|
|
|
### Advanced: Multiple Cookies or Custom Options
|
|
|
|
For complex scenarios like adding multiple cookies at once, use `run-code`:
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
playwright-cli localstorage-list
|
|
```
|
|
|
|
### Get Single Value
|
|
|
|
```bash
|
|
playwright-cli localstorage-get token
|
|
```
|
|
|
|
### Set Value
|
|
|
|
```bash
|
|
playwright-cli localstorage-set theme dark
|
|
```
|
|
|
|
### Set JSON Value
|
|
|
|
```bash
|
|
playwright-cli localstorage-set user_settings '{"theme":"dark","language":"en"}'
|
|
```
|
|
|
|
### Delete Single Item
|
|
|
|
```bash
|
|
playwright-cli localstorage-delete token
|
|
```
|
|
|
|
### Clear All localStorage
|
|
|
|
```bash
|
|
playwright-cli localstorage-clear
|
|
```
|
|
|
|
### Advanced: Multiple Operations
|
|
|
|
For complex scenarios like setting multiple values at once, use `run-code`:
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
playwright-cli sessionstorage-list
|
|
```
|
|
|
|
### Get Single Value
|
|
|
|
```bash
|
|
playwright-cli sessionstorage-get form_data
|
|
```
|
|
|
|
### Set Value
|
|
|
|
```bash
|
|
playwright-cli sessionstorage-set step 3
|
|
```
|
|
|
|
### Delete Single Item
|
|
|
|
```bash
|
|
playwright-cli sessionstorage-delete step
|
|
```
|
|
|
|
### Clear sessionStorage
|
|
|
|
```bash
|
|
playwright-cli sessionstorage-clear
|
|
```
|
|
|
|
## IndexedDB
|
|
|
|
### List Databases
|
|
|
|
```bash
|
|
playwright-cli run-code "async page => {
|
|
return await page.evaluate(async () => {
|
|
const databases = await indexedDB.databases();
|
|
return databases;
|
|
});
|
|
}"
|
|
```
|
|
|
|
### Delete Database
|
|
|
|
```bash
|
|
playwright-cli run-code "async page => {
|
|
await page.evaluate(() => {
|
|
indexedDB.deleteDatabase('myDatabase');
|
|
});
|
|
}"
|
|
```
|
|
|
|
## Common Patterns
|
|
|
|
### Authentication State Reuse
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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.json` to `.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
|