Probando UI con Pytest y Playwright

Playwright es una librería de automatización de navegadores Web creada y mantenida por Microsoft. Funciona con los navegadores Chromium, Firefox y Webkit. Se puede enlazar con los lenguajes de programación Python, Java, .Net y JavasCript. La extensión de Python tiene un plugin para ser usado con Pytest.
Instalación
pip install playwright
playwright install # También: python -m playwright install
Ejemplo de uso para visitar una página:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("http://playwright.dev")
print(page.title())
browser.close()
Para usar con pytest instalamos el wrapper que nos permite usar fixtures:
pip install pytest-playwright
Las funciones tienen acceso a los fixtures cuando se usan como argumentos de la función:
def test_invalid_input(page):
page.goto("/sampleapp")
assert page.inner_text('h3') == 'Sample App'
page.click("text=Log In")
assert page.inner_text('#loginstatus') == 'Invalid username/password'
def test_bad_button(page):
page.goto("/click")
assert page.inner_text('h3') == 'Click'
button_class = page.get_attribute('#badButton', 'class')
assert button_class == 'btn btn-primary'
page.click("#badButton")
button_class = page.get_attribute('#badButton', 'class')
assert button_class == 'btn btn-success'
El archivo de configuración de pytest se puede usar para señalar la URL base:
[pytest]
# Run firefox with UI
addopts = --base-url http://www.uitestingplayground.com/
Al ejecutar el test se puede crear un reporte en formato HTML. Previamente hay que instalar el paquete:
pip install pytest-reporter-html1
Y con este comando realizamos el test y creamos el reporte:
pytest --template=html1/index.html --report=report.html
Y este es el reporte que se obtiene:
