41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
/**
|
|
* Persistent context example: cookies and localStorage survive across sessions.
|
|
*
|
|
* Usage:
|
|
* CLOAKBROWSER_BINARY_PATH=/path/to/chrome npx tsx examples/persistent-context.ts
|
|
*/
|
|
|
|
import { launchPersistentContext } from "../src/index.js";
|
|
|
|
const PROFILE_DIR = "./my-profile";
|
|
|
|
// Session 1 — set some state
|
|
console.log("=== Session 1: Setting state ===");
|
|
let ctx = await launchPersistentContext({
|
|
userDataDir: PROFILE_DIR,
|
|
headless: false,
|
|
});
|
|
let page = ctx.pages()[0] || (await ctx.newPage());
|
|
await page.goto("https://example.com");
|
|
await page.evaluate(() => {
|
|
document.cookie = "session=abc123; path=/; max-age=3600";
|
|
localStorage.setItem("user", "returning");
|
|
});
|
|
console.log(`Cookie: ${await page.evaluate(() => document.cookie)}`);
|
|
console.log(`localStorage: ${await page.evaluate(() => localStorage.getItem("user"))}`);
|
|
await ctx.close();
|
|
|
|
// Session 2 — state is restored
|
|
console.log("\n=== Session 2: Verifying persistence ===");
|
|
ctx = await launchPersistentContext({
|
|
userDataDir: PROFILE_DIR,
|
|
headless: false,
|
|
});
|
|
page = ctx.pages()[0] || (await ctx.newPage());
|
|
await page.goto("https://example.com");
|
|
console.log(`Cookie: ${await page.evaluate(() => document.cookie)}`);
|
|
console.log(`localStorage: ${await page.evaluate(() => localStorage.getItem("user"))}`);
|
|
await ctx.close();
|
|
|
|
console.log("\nDone!");
|