You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Playwright中Setup项目设置的process.env变量无法在测试项目访问

问题解答

1. 为什么环境变量无法传递?

Node.js的process.env是进程级别的环境变量,每个Playwright项目(包括Setup项目和你的chromium测试项目)都运行在独立的Node.js进程中。进程之间的环境变量完全隔离,你在Setup进程里设置的process.env["ADMIN_ID_TOKEN"]只会存在于Setup进程的生命周期内,进程结束后就会销毁,不会自动传递到后续启动的测试进程中。

另外,Playwright的项目依赖机制仅负责复用浏览器上下文相关状态(比如sessionStorage、cookies),并不会同步Node.js进程的环境变量,这就是你能拿到sessionStorage但拿不到环境变量的核心原因。

2. 解决方法

推荐两种实用方案:

方案一:将token写入临时文件,测试项目读取文件

在Setup项目中,把token写入JSON文件保存:

// Setup项目代码
import fs from 'fs/promises';
import path from 'path';

// 登录后获取idToken
const responseJson = await yourLoginApiCall();
const tokenFilePath = path.resolve(__dirname, './temp-admin-token.json');
await fs.writeFile(tokenFilePath, JSON.stringify({ idToken: responseJson.idToken }));

// 保留原有的sessionStorage存储逻辑
await context.storageState({ path: './admin-storage.json' });

测试项目中读取文件拿到token:

// 测试项目代码
import fs from 'fs/promises';
import path from 'path';

const tokenFilePath = path.resolve(__dirname, './temp-admin-token.json');
const tokenContent = await fs.readFile(tokenFilePath, 'utf-8');
const { idToken } = JSON.parse(tokenContent);

// 后续即可使用idToken做接口鉴权等操作

方案二:把token附加到storageState文件中

Playwright的storageState是JSON格式文件,可直接在Setup项目中修改该文件,将token追加进去:

// Setup项目代码
import fs from 'fs/promises';

const storagePath = './admin-storage.json';
// 先保存默认的浏览器上下文状态
await context.storageState({ path: storagePath });

// 读取文件并添加token
const storageData = JSON.parse(await fs.readFile(storagePath, 'utf-8'));
storageData.adminIdToken = responseJson.idToken;
await fs.writeFile(storagePath, JSON.stringify(storageData));

测试项目中读取storageState文件时同时获取token:

// 测试项目代码
import fs from 'fs/promises';

const storagePath = './admin-storage.json';
const storageData = JSON.parse(await fs.readFile(storagePath, 'utf-8'));
const idToken = storageData.adminIdToken;

// 保留原有的加载storageState逻辑
test.use({ storageState: storagePath });

注:测试完成后可添加清理逻辑,删除临时文件避免残留。

内容的提问来源于stack exchange,提问作者Pramod Yadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 20:42:36