Как заставить Playwright использовать файл конфигурации из моего пайплайна

Задний план

У меня есть тест 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?


Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
0
399
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Playwright нужно запускать из папки, в которой находится файл playwright.config.ts.

Пытаюсь изменить workingDirectory своего шага Bash на './'

Можете ли вы обновить строку npx playwright test, чтобы явно передать путь к файлу конфигурации?

script: |
    npm install
    npx playwright test --config=../playwright.config.ts

Другие вопросы по теме