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

如何在Playwright中识别触发setup项目流程的父项目

在Playwright中确定触发setup的父项目

Playwright 原生没有提供直接获取触发 setup 的父项目名称的 API,但可以通过以下方法实现需求:

方法一:通过环境变量传递父项目名称

这是最可靠的方案,每个依赖 setup 的项目可以在配置中自定义环境变量,setup 测试直接读取该变量即可识别触发者。

修改你的 playwright.config.js,为每个父项目添加环境变量:

projects: [
    { name: "setup", testMatch: /.*\.setup\.ts/ },
    {
      name: "foo",
      dependencies: ["setup"],
      use: {
        env: {
          TRIGGERING_PROJECT: "foo"
        }
      }
    },
    {
      name: "bar",
      dependencies: ["setup"],
      use: {
        env: {
          TRIGGERING_PROJECT: "bar"
        }
      }
    },
]

在 setup 测试中读取环境变量:

setup("setup test", async ({ page }, testInfo) => {
  console.log("触发setup的项目:", process.env.TRIGGERING_PROJECT); // 运行foo时输出"foo",运行bar时输出"bar"
});

注意事项

如果同时运行多个依赖 setup 的项目(比如 npx playwright test --project=foo --project=bar),Playwright 会为每个父项目单独执行一次 setup,此时每个 setup 实例对应的环境变量会自动匹配触发它的父项目,无需额外处理。

方法二:解析命令行参数(备选方案)

如果不想修改项目配置,可以通过解析命令行参数获取当前运行的项目名称。但这种方法在同时运行多个项目时,无法直接区分单次 setup 对应的父项目,仅适合单项目运行场景。

setup("setup test", async ({ page }, testInfo) => {
  const args = process.argv.slice(2);
  const projectArgIndex = args.indexOf("--project");
  let triggeringProject = null;
  
  if (projectArgIndex !== -1 && projectArgIndex + 1 < args.length) {
    triggeringProject = args[projectArgIndex + 1];
  }

  console.log("触发setup的项目:", triggeringProject);
});

内容的提问来源于stack exchange,提问作者I.sh.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 22:40:05