💬 Portfolio
Pytania rekrutacyjne Playwright
Uwaga! Jest to post, który znajduje się w aktywnym rozwoju
Wprowadzenie
Oto zbiór pytań, które mogą paść dla różnych pozycji zarówno junior w bardzo ogólnym aspekcie, jak i senior w dość dokładnym. Ważne jest zrozumienie zarówno teoretycznych podstaw, jak i praktycznych zastosowań frameworka Playwright.
1. Podstawy Playwright
- Async/Await i paradygmaty programowania
- Krótka definicja async/await, promises - jakie jest zastosowanie w Playwright
- ❤️ Zasób wiedzy: mega wpis o tym jak działa JS i sync/await (ang, dwie wersje tego wpisu)
- (gify odpalają się automatycznie ale może być paywall) https://medium.com/@lydiahallie/javascript-visualized-promises-async-await-a3f1aad8a943
- (gify trzeba odtworzyć ale jest full darmo) https://dev.to/lydiahallie/javascript-visualized-promises-async-await-5gke
- Wskazanie, jak te funkcje wpływają na czytelność i wydajność kodu testów w Playwright
- Różnice między Playwright Test a biblioteką Playwright
- Wymienienie głównych różnic i zastosowań obu narzędzi.
- Kiedy warto stosować dane rozwiązanie
- ❤️ Zasób wiedzy: https://jaktestowac.pl/bughuntfest/
2. Organizacja Testów
- Zarządzanie zależnościami między testami
- Opis opcji konfiguracyjnych, takich jak Global Settings, Projekty, Serial Mode, Test Steps.
- ❤️ Zasób wiedzy: https://github.com/jaktestowac/testy-zalezne
- Standardy projektowe
- Omówienie, jak przygotować standardy projektu, w tym wtyczki, linty, git hooki (Husky), formatowanie, aliasy.
- Jak przygotować dane:
- Narzędzia (faker)
- Czym jest seeding danych
- Jakie wyzwania niesie przygotowanie danych przed każdym testem
- Jak sprzątać dane - i czy powinniśmy
3. Zaawansowane Techniki Testowania
- Hooki vs Fixtures
- Wyjaśnienie zalet używania hooków w Playwright i co powinno znaleźć się w danej abstrakcji.
- Jak fixtures mają się do hooków, jakie są wbudowane fixtures i z czego się składają, gdzie można to sprawdzić
- Zarządzanie zmiennymi środowiskowymi
- Porady, jak przygotować projekt pod różne środowiska.
- ❤️ Zasób wiedzy: https://playwright.info/playwright-testy-na-roznych-srodowiskach
- Zarządzanie danymi wrażliwymi w repozytorium z testami
4. CI/CD i Optymalizacja
- Integracja z CI/CD
- Wskazówki dotyczące optymalizacji testów i kiedy warto używać sharding.
- Jak zorganizować artefakty, co powinno się w nich znaleźć
- Cachowanie w kontekście frameworka i testów (biblioteki i przeglądarki)
- Własności Playwright w kontekście CI/CD
- Omówienie kluczowych funkcji, takich jak fully parallel, retry, annotations
5. Debugowanie
- Przedstawienie narzędzi oferowanych przez Playwright Test dla efektywnego debugowania.
- Jak stosować debug z projektami w VSCode, UIMode, TraceViewer
- ❤️ Przykład wiedzy: https://playwright.info/debug-playwright-trace
6. Testy wspomagane przez API
- Wskazówki, jak wykorzystać komunikację z API do wspomagania testów GUI
- Pisanie testów API i związane z tym wyzwania w Playwright
- Mockowanie testów GUI w izolacji od bakcendu:
- ❤️ Zasób wiedzy: https://playwright.info/mockowanie-w-playwright
7. Architektura Frameworka
- Wzorce projektowe
- Kiedy stosować PageObject, fabryki, buildery, modele
- Podział abstrakcji, po co stosować BasePage, komponenty etc
- Dobre praktyki frameworka
- Omówienie praktyk takich jak decision log, ADR, zarządzanie długiem technologicznym.
8. Zasady Projektowania i Konfiguracje
- Principles KISS, DRY, SRP, DI
- Wyjaśnienie, jak te zasady wpływają na projekt i rozwój testów.
- Ustawienia przeglądarki
- Przegląd dostępnych opcji, takich jak emulacja, geolokalizacja, permissions (np. dostęp do schowka).
- Zarządzanie sesją, różnice między logowaniem GUI a API, co zwierają pliki sesji, czy się różni token od sesji
9. Funkcje Playwright
- Lokatory
- Różne typy lokatorów, lokatory z TestingLibrary, ich zalety i ryzyka
- Jak wykorzystać tradycyjne lokatory CSS czy XPath
- Zalety i wady stosowania np. dataTestID, filtrowania i zagnieżdżenia lokatorów
- Na czym polega dynamiczne czekanie, jak to wiąże się z webFirstAssertions
- Nowe okna, taby, frame, popup.
- Czy Playwright je obsługuje, jak nimi zarządzać, największe problemy (np. debugowanie: brak rozróżnienia kodu dla danych okien w TraceViewer)
- Timeouts
- Wyjaśnienie, jak zarządzać timeoutami i jakie mogą być konsekwencje niewłaściwych ustawień.
- Na jakich poziomach możemy używać timeouts
- Visual testing i związane z nim wyzwania (weryfikacja tylko danych komponentów, ignorowanie obszarów)
- Generowanie testów, praktyczne wady i zalety
- Typy testów i czym się różnią, kiedy mogą się pojawić: flaky, skipped
- Jak wykonać dwie akcje równocześnie za pomocą Playwright (Promise.All etc)
- Zagadnienia szczegółowe, przykłady:
- czym jest viewport, boundingBox
- jak odnosić się do elementów standardowo nie obsługiwanych w Playwright
❤️ Przykład: https://playwright.info/playwright-viewport-elements
❤️ Przykłady:
10. O Playwright
- Jak działa Playwright (czym jest komunikacja po CDP, czym jest nowe okno przeglądarki)
- Czym się różni od bibliotek takich jak Cypress czy Selenium (wbudowana komunikacja, webdriver, CDP, webdriver BIDI)
- Do jakich testów, projektów nie nadaje się Playwright (mobile, wbudowane, zaawansowane wydajnościowe)
- Jakie są znane integracje Playwright do testów niefuncjonalnych (dostępność, wydajność backend, frontend, bezpieczeństwo)
Większość z tych konceptów realizujemy w Programie Playwright, gdzie budując profesjonalny framework poznajemy nie tylko Playwright ale także cały ekosystem tworzenia wydajnych testów automatycznych:
🔗https://jaktestowac.pl/playwright/
Podsumowanie
Powyższe przykłady są bardzo ogólnymi pytaniami, które mogą być zgłębiane (uszczegóławiane) w zależności oczekiwań od kandydata.
Oczywiście na rozmowie jako tester automatyzujący w Playwright możesz się spotkać z zupełnie innym zestawem pytań.
Czasem może się zdarzyć, że sam rekrutujący jeszcze nie ma doświadczenia z Playwright, bo dopiero zespół zastanawia się nad jego wprowadzeniem. Dlatego pytania mogą być całkowicie inne.
Mogą być rozwijane koncepty takie jak:
- Twoje doświadczenie w automatyzacji
- Narzędzia jakie stosowałeś
- Znajomość języka programowania (live coding, np w JS, TS)
- Ogólnie o dobrych praktykach testowania
- Cykl życia i tworzenia oprogramowania
- Metodyki pracy w zespole
Jeśli chcesz się naprawdę dobrze przygotować do rekrutacji to zapisz się z linka poniżej i zgarnij mega checklistę:
https://jaktestowac.pl/rekrutacja/
Bonus
- Skorzystaj z ChatGPT, aby zasymulować taką rozmowę (wkrótce udostępnimy prompt)
- Zweryfikuj dokumentację Playwright, gdyż to narzędzie cały czas się rozwija i niektóre koncepty zmieniają się z dnia na dzień (np. w wersji 1.42 wchodzi nowe podejście do tagów). Warto skupić się na Release Notes: https://playwright.dev/docs/release-notes
- Ciekawa lista pytań z Selenium, którą także pasuje do Playwright (z wyjątkiem odpowiedzi): https://blog.testleaf.com/top-automation-interview-questions/