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

Playwright自定义测试Fixture时baseURL失效问题解决

解决Playwright自定义Fixture继承baseURL的问题

问题出在自定义fixture时没有正确继承Playwright原test实例的配置,导致baseURL未生效。只需按以下方式编写fixtures.ts,就能让自定义fixture继承配置中的baseURL:

1. 正确扩展Playwright的test实例

在fixtures.ts中,基于官方的base test进行扩展,而非重新创建独立的test实例:

// fixtures.ts
import { test as base } from '@playwright/test';

// 扩展base test,添加自定义fixture逻辑(比如自动登录)
const test = base.extend({
  authenticatedPage: async ({ page }, use) => {
    // 这里可以直接用相对路径,因为继承了baseURL
    await page.goto('/login');
    await page.fill('#username', 'your-username');
    await page.fill('#password', 'your-password');
    await page.click('#login-btn');
    // 将已登录的page实例传递给测试用例
    await use(page);
  },
});

// 导出扩展后的test和expect,供测试用例导入使用
export { test, expect };

2. 确保配置文件的baseURL正确

确认playwright.config.ts中的baseURL配置无误:

// playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
  use: {
    baseURL: 'http://localhost:3000/',
  },
});

3. 在测试用例中使用自定义fixture

导入自定义的test后,即可像官方test一样使用相对路径调用page.goto():

// sample.spec.ts
import { test } from './fixtures';

test('验证已登录状态下的仪表盘', async ({ authenticatedPage }) => {
  await authenticatedPage.goto('/dashboard');
  // 执行断言逻辑
  await authenticatedPage.waitForSelector('#welcome-message');
});

核心逻辑是:基于官方base test扩展出的自定义test实例,会自动继承playwright.config.ts中的所有配置项,包括baseURL,因此可以正常使用相对路径跳转。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:12:40