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

Playwright运行测试时是否有可用于代码分支的全局变量?

在Playwright测试中实现代码分支的全局变量方案

1. Node.js环境下的内置环境变量

Playwright运行测试时会自动设置process.env.PLAYWRIGHT_TEST为true,你可以直接在Node端代码(比如服务端渲染逻辑、客户端构建配置)中用它做分支判断:

if (process.env.PLAYWRIGHT_TEST) {
  // 测试环境专属逻辑:比如禁用urql的cache exchange
} else {
  // 生产/开发环境逻辑
}

2. 浏览器上下文的自定义全局变量

如果需要在前端浏览器代码中区分测试环境,Playwright允许你通过page.addInitScript注入自定义全局变量,确保页面加载前就完成注入:

// 在Playwright测试用例或配置文件中
await page.addInitScript(() => {
  window.isPlaywright = true;
});

之后在前端代码里就可以直接判断:

if (window.isPlaywright) {
  // 禁用urql cache exchange,改用仅fetch exchange
}

针对urql兼容问题的具体示例

结合你的场景,在urql客户端配置中可以这样做:

import { createClient, cacheExchange, fetchExchange } from 'urql';

const exchanges = [];

// 仅非测试环境启用cache exchange
if (!(process.env.PLAYWRIGHT_TEST || window?.isPlaywright)) {
  exchanges.push(cacheExchange);
}
exchanges.push(fetchExchange);

const client = createClient({
  url: '/graphql',
  exchanges,
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 11:01:02