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
相关产品推荐
相关产品推荐

