Playwright – це інструмент автоматизації end-to-end тестування, котрий надає високорівневий API для керування браузером, що дозволяє взаємодіяти з веб-елементами та імітувати реальну поведінку користувача. Playwright існує у версіях для JavaScript, Python, Java, C#.

В цьому записі буде розглянуто приклад початку роботи з Playwright для мови програмування Python, а також написання простого автоматичного тесту використовуючи плагін pytest-playwright.

Попередні налаштування

Для свого прикладу я буду використовувати середовище virtualenv та менеджер пакетів pip. Докладніше з цими інструментами можна ознайомитись за посиланням:

Virtualenv – інструмент для створення ізольованих середовищ Python

Попередньо слід встановити пакет pytest-playwright за допомогою наступної команди:

pip install pytest-playwright

pytest-playwright є плагіном, що інтегрує Playwright з фреймворком Python для тестування – Pytest.

Далі потрібно встановити необхідні двійкові файли браузерів, які будуть зберігатись локально і використовуватись Playwright для запуску та взаємодії з браузерами. Їх можна встановити за допомогою наступної команди інструмента командного рядка Playwright:

playwright install

Playwright підтримує роботу з браузерами Chromium, Firefox, WebKit. Для встановлення лише певного браузера, слід вказати його в аргументі команди. Наприклад:

playwright install chromium

Кроки тесту:

  1. відкрити сторінку демо додатку за посиланням: https://demo.playwright.dev/todomvc/#/
  2. додати один todo запис з текстом test
  3. перевірити, що доданий todo містить очікуваний текст

Створення автотесту

Попередньо створюю файл test_todo.py, котрий буде містити тест test_create_todo. Файли та тестові функції в Pytest відповідно до угоди повинні мати префікс test_.

Код тесту у файлі test_todo.py:

from playwright.sync_api import Page


def test_create_todo(page: Page):
    page.goto('https://demo.playwright.dev/todomvc')

    todo = 'test'
    page.get_by_placeholder('What needs to be done?').fill(todo)
    page.keyboard.press('Enter')

    assert page.get_by_test_id('todo-title').inner_text() == todo

Перелік дій тесту котрі виконує Playwright:

  • page.goto – відкриває сторінку в браузері за вказаним посиланням
  • page.get_by_placeholder – шукає поле вводу за текстом, що містить його placeholder

  • fill – вводить вказаний текст у поле
  • page.keyboard.press('Enter') – імітує натискання кнопки Enter клавіатури (це потрібно для підтвердження додавання нового todo)
  • page.get_by_test_id – шукає елемент по атрибуту data-testid, за вказаним значенням

  • inner_text – повертає внутрішній текст елемента

Запуск автотесту

Для запуску тесту, достатньо перебуваючи в директорії з файлом test_todo.py, виконати наступну команду в терміналі:

pytest

За замовчуванням тести Playwright виконуються в безголовому режимі Chromium, тобто інтерфейс браузера не відкривається під час виконання тестів. Результати і логування тестів будуть відображені в терміналі:

Налаштуваннями запуску тестів можна керувати за допомогою параметрів CLI. Наприклад для запуску тестів в режимі headed (тобто з відкриттям інтерфейсу вікна браузера), слід додати до команди прапорець --headed:

pytest --headed

Оновлення Playwright

Для оновлення Playwright до останньої версії, слід виконати наступну команду в терміналі:

pip install pytest-playwright playwright -U

Підсумок

В цьому записі було розглянуто базові кроки, для початку використання Playwright в поєднанні з Pytest. Також було створено і запущено простий автотест.

Посилання з додатковою інформацією: