在 Playwright 中测试暂存和生产环境
在测试网站时,您可能需要在不同的环境中进行测试,例如开发、预发布和生产环境。在本文中,我们将了解如何baseURL
在 Playwright 中设置和运行跨不同环境的测试。
设置基本 URL
您可能需要测试导航到网站上的不同页面。通过设置 ,baseURL
您可以轻松地使用相对路径导航到不同的页面,而不必page.goto()
在测试中每次使用 时都重复输入 URL。
await page.goto("https://example.com/products")
await page.goto("https://example.com/offers")
await page.goto("https://example.com/about")
在Playwright 配置部分baseURL
中进行设置。use
use: {
baseURL: 'https://example.com',
}
使用相对路径导航到您网站上的不同页面。
await page.goto("/")
await page.goto("/products")
await page.goto("/offers")
await page.goto("/about")
设置子路径
如果您想测试网站的子路径,您可以将该路径添加到基本 URL。
use: {
baseURL: 'https://playwright.dev/docs/',
}
要转到子路径的相对路径,请.
在斜杠前添加,否则 Playwright 将导航到网站的根目录而不是子路径。
await page.goto('./intro');
// https://playwright.dev/docs/intro
await page.goto('/intro');
// https://playwright.dev/intro
设置不同的生产环境
要为不同的环境设置 URL,process.env
请在 中设置变量baseURL
。在下面的示例中,如果“STAGING”设置为“1”,则 URL 将为https://playwright.dev/docs/next/
,否则将默认为https://playwright.dev/docs/
。
use: {
baseURL: process.env.STAGING === '1' ? 'https://playwright.dev/docs/next/'
: 'https://playwright.dev/docs/',
},
使用不同的环境运行测试
让我们编写一个快速测试来看看它是如何工作的。
test('has title', async ({ page }) => {
await page.goto('./intro');
await expect(page.getByRole("heading", { name: "Installation"})).toBeVisible();
});
如果您在未设置环境变量的情况下运行测试,它将默认在生产网站上运行。
npx playwright test
要在 STAGING 环境上运行测试,请将其添加STAGING=1
到 CLI 命令的开头。此外,还要包含--trace on
启用跟踪查看器并验证 URL 的功能。
STAGING=1 npx playwright test --trace on
使用以下命令打开 HTML 报告。
npx playwright show-report
该报告显示了 3 个测试,每个项目一个。要查看 Chromium 项目的详细信息,请点击跟踪图像。在 DOM 快照中,您可以找到测试导航到的 URL,该 URL 对应于暂存 URL。在不使用环境变量的情况下运行此测试将导航到生产 URL。
在 CI 上设置基本 URL
在 CI 上运行测试时,最好将其提取baseURL
到环境变量中。首先安装dotenv
包。
npm install dotenv
然后在 Playwright 配置文件中需要dotenv
配置:
require('dotenv').config();
.env
接下来,在项目根目录中创建一个文件并添加BASE_URL
变量。您可以将其设置为生产环境 URL、暂存环境 URL 或任何您想要在本地测试的 URL,因为该文件不应提交到您的代码库。
BASE_URL=https://playwright.dev/docs/
然后在剧作家配置中将baseURL
变量设置BASE_URL
为回退到生产 URL,以防未设置此变量。
use: {
baseURL: process.env.BASE_URL ?? 'https://playwright.dev/docs/'
},
您可以根据测试的环境在本地修改此 URL。
BASE_URL=https://playwright.dev/docs/next/
BASE_URL
然后可以在 CI 或 CI 工作流文件中设置环境变量。
- name: Run Playwright tests
run: npx playwright test
env:
BASE_URL: ${{ github.event.deployment_status.target_url }}
设置不同的项目
如果您定期针对不同的环境进行测试,您可以为暂存和生产设置不同的项目,并为每个项目设置基本 URL。
projects: [
{
name: 'staging',
use: {
...devices['Desktop Chrome'],
baseURL: 'https://playwright.dev/docs/next/'
},
},
{
name: 'production',
use: {
...devices['Desktop Chrome'],
baseURL: 'https://playwright.dev/docs/'
},
},
...
]
要在 CLI 中运行这些项目,请将其添加--project=
到测试命令的末尾。
npx playwright test --project=staging
npx playwright test --project=production
使用项目让我们能够更自由地添加不同的配置,并进行更多修改,而不仅仅是baseURL
使用不同的配置来运行测试,例如colorScheme
等等locale
。查看测试选项指南了解更多详情。
另外,使用项目意味着您可以在使用VS Code 扩展或在UI 模式下运行测试时轻松地在它们之间切换。
您可以为每个环境创建一个新的配置文件,但我们不建议在跨不同环境进行测试时这样做。如果您在同一应用程序中运行不同的测试(例如针对移动设备仿真和桌面环境的测试),我们建议您使用不同的配置文件。
结论
在 Playwright 配置中设置 URLbaseURL
非常有用,这样可以避免整个网站的 URL 重复。当您需要在不同的 URL 上测试您的网站时,请使用环境变量为每个环境指定一个 URL。如果您经常在不同环境中进行测试,请为该环境创建一个新项目,并添加基本 URL 以及您需要的任何其他配置。
测试愉快!🎭