Adnotacje i oznaczenia testów w Playwright

TIP: Ta lekcja jest częścią rozwijanego Programu Testy Automatyczne z Playwright 🎭

Prezentacja

Adnotacje w testach automatycznych

Adnotacje w testach automatycznych

Dodatkowe materiały

TIP: W tej lekcji bazujemy na kodzie jaki otrzymaliśmy w lekcji Nowe podejście do tagów w Playwright.

Cały kod potrzeby do realizacji tematów z tej lekcji znajdziesz też w naszym repozytorium: playwright_automatyzacja_wprowadzenie.

A dokładniej bazujemy na projekcie, który znajdziesz w katalogu S04 / L03_nowe_tagi.

Adnotacje to specjalne oznaczenia, które dodajemy do testów. Możesz sobie wyobrazić adnotacje jako rodzaj notatek lub instrukcji przyczepionych do kodu. Notatki te nie wpływają bezpośrednio na to, jak działa nasz kod. Jednak są bardzo przydatne w organizacji i poprawie czytelności naszego kodu i testów.

Adnotacje w Playwright to specjalne oznaczenia, które dodajesz do testów. Możesz użyć adnotacji, aby oznaczyć testy jako pomijane, nieudane, zbyt wolne, lub skupić się na konkretnym teście. Adnotacje mogą również zawierać dodatkowe informacje, takie jak powiązania z konkretnymi problemami (poprzez URL) czy kategorie.

TIP: Adnotacje zostały wprowadzone w wersji 1.42 Playwright.

Adnotacje w testach

Test bez adnotacji:

test('successful login with correct credentials', async ({ page }) => {
      // Arrange
      const userId = loginData.userId;
      const userPassword = loginData.userPassword;
      const expectedUserName = 'Jan Demobankowy';


      // Act
      await loginPage.login(userId, userPassword);


      // Assert
      const pulpitPage = new PulpitPage(page);
      await expect(pulpitPage.userNameText).toHaveText(expectedUserName);
    }
  );






Test z adnotacją:

test('successful login with correct credentials',
    {
      tag: ['@smoke', '@login'],
      annotation: { type: 'happy path', description: 'Basic happy path test' },
    },
    async ({ page }) => {
      // Arrange
      const userId = loginData.userId;
      const userPassword = loginData.userPassword;
      const expectedUserName = 'Jan Demobankowy';


      // Act
      await loginPage.login(userId, userPassword);


      // Assert
      const pulpitPage = new PulpitPage(page);
      await expect(pulpitPage.userNameText).toHaveText(expectedUserName);
    }
  );


Obiekt konfiguracji składa się z 2 pól – type oraz description:

{ type: 'happy path', description: 'Basic happy path test' },


Test z wieloma adnotacjami:

test('successful login with correct credentials',
    {
      tag: ['@smoke', '@login'],
      annotation: [
        { type: 'happy path', description: 'Basic happy path test' },
        { type: 'documentation', description: 'https://playwright.info/' }
      ],
    },
    async ({ page }) => {
      // Arrange
      const userId = loginData.userId;
      const userPassword = loginData.userPassword;
      const expectedUserName = 'Jan Demobankowy';


      // Act
      await loginPage.login(userId, userPassword);


      // Assert
      const pulpitPage = new PulpitPage(page);
      await expect(pulpitPage.userNameText).toHaveText(expectedUserName);
    }
  );


Linki

6 komentarzy

    1. Właśnie do tej pory jeszcze nie odkryłem przyczyny problemu oraz rozwiązania – wydaje mi się ze testowałem też to z waitForLoadState 🤔

      Możesz sprawdzić swoje rozwiązanie w tym teście dodając only i uruchamiając go kilka razy np.

      npx playwright test --repeat-each 20
      

      Jestem ciekaw wyniku i czy to pomoże w stabilizacji tego testu😀

      Krzysiek Kijas Krzysiek Kijas
        1. Nice! 😀
          Potestuje to rozwiązanie na swojej innej maszynie, bo na aktualnej ten test ani razu mi się nie wysypał tez przy kilkudziesięciu odpalaeniach (bez waitForLoadState) 😅

          To jest piękno flaky testów 😀

          Krzysiek Kijas Krzysiek Kijas
  1. Cześć,
    Pewnie już wiecie, ale w Playwright link nawet z tekstem przed jest klikalny. Przynajmniej w wersji 1.47.2

            {
                tag: ['@payment', '@integration'],
                annotation: {
                    type: 'documentation',
                    description: 'More to find at: http://google.com/',
                },
            },
    
    Avatar Adam Kupper

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *