Estoy tratando de acceder a Browser localStorage desde el lado del servidor. Lo probé usando las bibliotecas de nodos node-localStorage, store y store2, pero nada funcionó. Cuando revisé el almacenamiento local del navegador, estaba vacío.
Esta es mi prueba.js
import playwright from 'playwright-core'; import response from '../token.json' assert {type: "json"}; import { LocalStorage } from "node-localstorage"; global.localStorage = new LocalStorage('./scratch'); (async () => { const browser = await playwright["chromium"].launch({ headless: false, slowMo: 2000 }); const context = await browser.newContext(); const page = await context.newPage(); await page.goto("http://localhost:3000/trader-desktop/login"); localStorage.setItem('token', response.token); localStorage.setItem('tokenType', response.tokenType); localStorage.setItem('tokenExpirationTime', response.tokenExpirationTime); localStorage.setItem('userId', response.userId); localStorage.setItem('realms', JSON.stringify(response.realms)); localStorage.setItem('phone', response.phone); await page.goto("http://localhost:3000/trader-desktop/account-selection") await page.pause(); await browser.close(); })();Este es mi archivo package.json
{ "type" : "module", "devDependencies": { "playwright": "1.21.1" }, "dependencies": { "node-fetch": "^3.2.4", "node-localstorage": "^2.2.1", "store2": "^2.13.2", "type": "module" } }¿Hay alguna manera de que pueda resolver esto? No puedo usar window.localStorage porque la ventana no está definida en node.
Gracias por adelantado :)
Usé esto y funcionó a las mil maravillas. Gracias a todos sus aportes.
const fs = require('fs'); const localStorage = fs.readFileSync('../localStorage.json', 'utf8') const deserializedStorage = JSON.parse(localStorage) await page.evaluate(deserializedStorage => { for (const key in deserializedStorage) { if (key === "realms") { localStorage.setItem(key, JSON.stringify(deserializedStorage[key])); } else { localStorage.setItem(key, deserializedStorage[key]); } } }, deserializedStorage);Puede establecer elementos de almacenamiento local evaluando esta expresión:
await page.evaluate( `window.localStorage.setItem('X', 'Y')` );