如何在剧作家中设置expect的baseURL?

Pat*_*nny 7 playwright playwright-test

在我的 Playwright 测试中,我根据文档设置了base-url :

const config: PlaywrightTestConfig = {
  projects: [
    {
      name: 'Safari MacBook Air',
      use: {
        browserName: 'webkit',
        viewport: {
          width: 2560,
          height: 1620,
        },
        contextOptions: {
          ignoreHTTPSErrors: true,
        },
      },
    },
  ],
  use: {
    baseURL: process.env.PLATFORMSH_URL,
    headless: false,
    locale: 'ja-JP',

    // Debugging artifacts.
    screenshot: 'on',
    trace: 'on',
    video: 'on',
  },
};
export default config;
Run Code Online (Sandbox Code Playgroud)

这适用于goto

await this.page.goto('/myDirectory');
Run Code Online (Sandbox Code Playgroud)

但是,它失败了expect

  expect(page.url()).toBe('/myPage');
Run Code Online (Sandbox Code Playgroud)

错误是:

Expected: "/myPage"
Received: "https://www.example.com/myPage"
Run Code Online (Sandbox Code Playgroud)

我该如何使用expectwith baseURL

小智 17

尝试使用此断言:例如,将 Playwright 主页配置为我们的 baseUrl

   {
     name: 'webkit',
     use: {
       ...devices['Desktop Safari'],
       baseURL: 'https://playwright.dev/'
     },
   },
Run Code Online (Sandbox Code Playgroud)

然后:

test('baseUrl', async ({ page }) => {
  await page.goto('/docs/intro');
  await expect(page).toHaveURL('/docs/intro');
});
Run Code Online (Sandbox Code Playgroud)

如果您想继续使用此格式:

  expect(page.url()).toBe('/myPage');
Run Code Online (Sandbox Code Playgroud)

然后您需要更改断言,因为您所在的网址不等于您的目录。您可以断言您所在的 url 包含上述目录,而不是:

  expect(page.url()).toContain('/myPage');
Run Code Online (Sandbox Code Playgroud)