Podstawowe metody asercji
Asercje są nieodzownym narzędziem do weryfikacji wyników testów automatycznych. W Playwright istnieje kilka metod, które pozwalają na sprawdzenie różnych właściwości aplikacji. Poniżej przedstawione są trzy z najczęściej używanych:
- toBeVisible()
Metoda toBeVisible() sprawdza, czy dany element jest widoczny na stronie. Jest to przydatne, gdy chcemy upewnić się, że użytkownik może zobaczyć i wejść w interakcje z elementem.
Przykład użycia:
await expect(page.locator('text=Submit')).toBeVisible();
Powyższy kod sprawdza, czy przycisk „Submit” jest widoczny na stronie.
- toHaveText()
Metoda toHaveText() pozwala na sprawdzenie, czy element zawiera określony tekst. Jest to szczególnie użyteczne przy weryfikacji komunikatów, nagłówków czy etykiet.
Przykład użycia:
await expect(page.locator('h1')).toHaveText('Welcome to Playwright');
Ten kod sprawdza, czy nagłówek h1 zawiera tekst „Welcome to Playwright”.
- toBeEnabled()
Metoda toBeEnabled() służy do weryfikacji, czy element jest aktywny i gotowy do interakcji, co jest istotne przy testowaniu przycisków czy pól formularzy.
Przykład użycia:
await expect(page.locator('button[type=submit]')).toBeEnabled();
Powyższy kod sprawdza, czy przycisk typu submit jest aktywny.
Zaawansowane techniki asercji
W miarę rozwoju testów automatycznych, bardziej zaawansowane metody asercji stają się niezbędne do kompleksowej weryfikacji aplikacji. Poniżej przedstawiamy trzy zaawansowane metody wraz z przykładami ich zastosowania.
- toHaveClass()
Metoda toHaveClass() pozwala na sprawdzenie, czy element posiada określoną klasę CSS, co może być użyteczne przy weryfikacji stylowania dynamicznych komponentów.
Przykład użycia:
await expect(page.locator('.alert')).toHaveClass('alert-success');
Ten kod sprawdza, czy element z klasą alert posiada dodatkową klasę alert-success.
- toHaveAttribute()
Metoda toHaveAttribute() umożliwia weryfikację, czy element posiada określony atrybut z daną wartością, co jest szczególnie ważne przy sprawdzaniu dynamicznych atrybutów jak href w linkach.
Przykład użycia:
await expect(page.locator('a#home-link')).toHaveAttribute('href', '/home');
Ten kod sprawdza, czy link o id home-link posiada atrybut href z wartością /home.
- toHaveValue()
Metoda toHaveValue() służy do sprawdzania wartości pól formularzy, co jest istotne przy testach interakcji użytkownika z formularzami.
Przykład użycia:
await expect(page.locator('input[name=username]')).toHaveValue('testuser');
Powyższy kod sprawdza, czy pole input o nazwie username ma wartość testuser.
Inne przydatne asercje
- toHaveCount()
Metoda toHaveCount() jest używana do sprawdzania liczby elementów spełniających określone kryteria. Może to być przydatne, gdy chcemy upewnić się, że na stronie znajduje się oczekiwana liczba elementów, na przykład wierszy w tabeli lub produktów na liście.
Przykład użycia:
await expect(page.locator('.product')).toHaveCount(10);
Powyższy kod sprawdza, czy na stronie jest dokładnie 10 elementów z klasą product.
- toHaveTitle()
Metoda toHaveTitle() pozwala na weryfikację tytułu strony, co jest istotne przy testach SEO oraz przy sprawdzaniu, czy użytkownik jest na odpowiedniej podstronie.
Przykład użycia:
await expect(page).toHaveTitle('Login - Example Site');
Ten kod sprawdza, czy tytuł strony to „Login – Example Site”.
Wykorzystanie asercji w praktyce
Efektywne wykorzystanie asercji w testach automatycznych może znacząco podnieść jakość aplikacji. Poniżej znajduje się przykład pełnego testu, który demonstruje użycie różnych metod asercji w praktyce.
const { test, expect } = require('@playwright/test');
test('test login functionality', async ({ page }) => {
await page.goto('https://example.com/login');
await page.fill('input[name=username]', 'testuser');
await page.fill('input[name=password]', 'password123');
await page.click('button[type=submit]');
await expect(page.locator('h1')).toHaveText('Dashboard');
await expect(page.locator('.welcome-message')).toBeVisible();
await expect(page.locator('input[name=search]')).toBeEnabled();
});
W tym przykładzie, test logowania sprawdza, czy po zalogowaniu użytkownik widzi odpowiedni nagłówek, komunikat powitalny i aktywne pole wyszukiwania. Dodatkowo, można rozszerzyć test o bardziej zaawansowane asercje, aby sprawdzić dodatkowe aspekty aplikacji.
test('test search functionality', async ({ page }) => {
await page.goto('https://example.com/dashboard');
await page.fill('input[name=search]', 'Playwright');
await page.click('button[type=submit]');
await expect(page.locator('.search-results')).toHaveCount(5);
await expect(page.locator('.search-results')).toBeVisible();
await expect(page.locator('.search-results')).toHaveText('Playwright Guide');
});
Powyższy kod testuje funkcjonalność wyszukiwania, sprawdzając liczbę wyników, ich widoczność oraz zawartość tekstową.
Podsumowanie
Opanowanie metod asercji w Playwright jest kluczowe dla tworzenia solidnych i niezawodnych testów automatycznych. Dzięki nim możemy weryfikować różne aspekty aplikacji, co przyczynia się do wykrywania błędów na wczesnym etapie i zwiększa ogólną jakość oprogramowania. Zachęcamy do eksperymentowania z różnymi metodami asercji i dostosowywania ich do własnych potrzeb, aby w pełni wykorzystać potencjał Playwright w swoich projektach. Wprowadzenie zaawansowanych technik, takich jak toHaveCount) czy toHaveClass(), umożliwia tworzenie bardziej kompleksowych testów, które nie tylko sprawdzają funkcjonalność, ale również wygląd i zachowanie aplikacji w różnych scenariuszach. W efekcie, solidne asercje stanowią fundament niezawodnego procesu testowania automatycznego, co jest nieodzownym elementem współczesnego rozwoju oprogramowania.