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.
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
|