У меня есть тест Playwright, который я могу запускать локально с помощью VS Code во всех трех браузерных движках: Chromium, Firefox и WebKit. Тесты успешно выполняются как для локально работающего приложения, так и для приложения, развернутого в тестовых средах.
Тест:
test('that clicking link navigates to the next page', async ({ page }) => {
await page.goto('/relative/url');
await page.locator('hyperlink:has-text("relative url")').getByRole('link').click();
await page.waitForNavigation();
await expect(page).toHaveURL('https://www.example.com/relative/url');
});
Частичный Playwright.config.ts файл:
use: {
...
baseURL: 'https://www.example.com',
...
},
Структура приложения:
- My app
- Deployment
- azure-pipelines.yml
- src
- tests
- playwright.config.ts
Этап конвейера Azure DevOps, большая часть которого была скопирована из документации по конвейерам Azure Playwright
- stage: PlaywrightTests
dependsOn:
- PreprodDeployment
jobs:
- deployment: PlaywrightTests
pool:
vmImage: ubuntu-20.04
container: mcr.microsoft.com/playwright:v1.27.0-focal
environment: testing
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: NodeTool@0
inputs:
versionSpec: '16.13.0'
- task: Bash@3
displayName: 'Run Playwright tests'
inputs:
workingDirectory: 'tests'
targetType: 'inline'
failOnStderr: true
# env: # Unexpected property. Fails pipeline.
# CI: true
script: |
npm install
npx playwright test
Однако когда Playwright запускает мои тесты из конвейера Azure DevOps, тест завершается ошибкой.
Сбой трубопровода:
1) links.spec.ts:3:1 › that clicking link navigates to the next page ===============
page.goto: Protocol error (Page.navigate): Cannot navigate to invalid URL
=========================== logs ===========================
navigating to "/relative/url", waiting until "load"
============================================================
3 | test('that clicking link navigates to the next page', async ({ page }) => {
4 |
> 5 | await page.goto('/relative/url');
| ^
6 | await page.locator('hyperlink:has-text("relative url")').getByRole('link').click();
7 | await page.waitForNavigation();
8 |
at /__w/1/s/tests/links.spec.ts:5:14
1 failed
links.spec.ts:3:1 › that clicking link navigates to the next page ================
##[error]Bash exited with code '1'.
Я вижу, что конвейер не использует значение baseURL из файла playwright.config.ts.
Как исправить azure-pipeline.yml, чтобы он использовал значение playwright.config.tsbaseURL?


Playwright нужно запускать из папки, в которой находится файл playwright.config.ts.
Пытаюсь изменить workingDirectory своего шага Bash на './'
Можете ли вы обновить строку npx playwright test, чтобы явно передать путь к файлу конфигурации?
script: |
npm install
npx playwright test --config=../playwright.config.ts