Pytania rekrutacyjne Cypress z odpowiedziami
Testy end-to-end i komponentów w Cypress: kolejka komend i ponawianie, selektory i akcje, asercje, aliasy, cy.intercept i fixtures, cy.session i logowanie, własne komendy i taski, izolacja testów i dane, CI, uruchamianie równoległe, niestabilne testy i architektura zestawu.
228 pytań na rozmowę rekrutacyjną z tematu Cypress z odpowiedziami i wyjaśnieniami - poziomy Junior, Middle i Senior. Przykładowe pytania, testy online i zadania z kodu.
- Ponawianie
- cy.intercept
- cy.session
- Własne komendy
- CI
Pytania według poziomu
Junior
Podstawowe pojęcia i składnia · 50 pytań
Middle
Praktyka, niuanse i optymalizacja · 50 pytań
Senior
Architektura, mechanizmy wewnętrzne, przypadki brzegowe · 50 pytań
Przykładowe pytania
Kilka pytań z każdego poziomu z poprawną odpowiedzią i wyjaśnieniem.
Cypress · Junior
- Gdzie działają testy Cypress?
Pokaż odpowiedź
Poprawna odpowiedź: W przeglądarce, obok testowanej aplikacji
Cypress uruchamia kod testów w tej samej pętli przeglądarki co aplikacja, a obok działa proces Node.js do plików i proxy sieci. Dlatego może bezpośrednio czytać stan aplikacji.
- Które polecenie otwiera interaktywną aplikację Cypress?
Pokaż odpowiedź
Poprawna odpowiedź:
npx cypress opencypress openuruchamia aplikację, w której wybierasz przeglądarkę i spec i oglądasz testy.cypress runuruchamia testy bez interfejsu, jak w CI. - Które polecenie uruchamia wszystkie testy Cypress bez interfejsu, np. w CI?
Pokaż odpowiedź
Poprawna odpowiedź:
npx cypress runcypress runuruchamia każdy spec w terminalu, robi zrzuty przy awariach i zwraca niezerowy kod wyjścia przy porażkach. - Gdzie zwykle definiuje się główną konfigurację Cypress?
Pokaż odpowiedź
Poprawna odpowiedź: W
cypress.config.tslubcypress.config.jsKonfiguracja ustawia
baseUrl, wzorce specyfikacji, viewport, timeouty, powtórki i handlery zdarzeń Node przezdefineConfig.
Cypress · Middle
- W Cypress 12+ czym różnią się zapytania (queries) od komend-akcji?
Pokaż odpowiedź
Poprawna odpowiedź: Zapytania jak
getsą ponawiane; akcje jakclickrazZapytania uruchamiają się ponownie, aż asercje przejdą. Akcje jak
.click()czy.type()nie są ponawiane, choć najpierw czekają na gotowość elementu. - Co jest ponawiane w
cy.get('.list').find('li').should('have.length', 3)?Pokaż odpowiedź
Poprawna odpowiedź: Cały łańcuch zapytań przed asercją
Od Cypress 12 nieudana asercja uruchamia ponownie łańcuch powiązanych zapytań, więc nowo wyrenderowane elementy są znajdowane.
- Co robi
.its('length')?Pokaż odpowiedź
Poprawna odpowiedź: Pobiera właściwość subjectu, z ponawianiem
.its()to zapytanie, więccy.get('li').its('length').should('be.gt', 2)ponawia..invoke()wywołuje metodę subjectu. - Jak sprawdzić treść, którą formularz wysyła do API?
Pokaż odpowiedź
Poprawna odpowiedź: Przechwycić zapytanie i sprawdzić
interception.request.bodyTo łapie błędy frontendu jak złe nazwy lub typy pól, które zamockowany backend po cichu by przyjął.
Cypress · Senior
- Jaki jest główny kompromis architektury Cypress działającego w przeglądarce?
Pokaż odpowiedź
Poprawna odpowiedź: Bezpośredni dostęp do aplikacji, ale jedna karta i reguły originu
Działanie w przeglądarce daje podróż w czasie, dostęp do aplikacji i pewne czekanie. Ceną jest jedna karta, ograniczenia originu i testy tylko w JavaScript.
- Kiedy zespół powinien wybrać Cypress zamiast Playwright?
Pokaż odpowiedź
Poprawna odpowiedź: Gdy ceni interaktywny runner, a aplikacja mieści się w ograniczeniach
Cypress błyszczy w zespołach JS z jedną aplikacją, chcących szybkiej informacji w runnerze. Potrzeba wielu kart, originów lub języków przemawia za Playwright.
- Dlaczego Cypress potrzebuje
cy.origindla SSO, a Playwright nie?Pokaż odpowiedź
Poprawna odpowiedź: Cypress działa w stronie jednego originu i musi jawnie zmieniać kontekst
Playwright steruje przeglądarką z zewnątrz, więc origin nie ma znaczenia. Cypress działa w stronie, więc inne originy potrzebują osobnego kontekstu wykonania.
- Jaka jest najczęstsza przyczyna niestabilnych testów Cypress w dużych zestawach?
Pokaż odpowiedź
Poprawna odpowiedź: Wspólny stan i założenia o czasie
Większość flaky wynika z zależności testów od siebie, od prawdziwego czasu lub od wspólnych danych backendu. Naprawiaj przyczynę; powtórki tylko ją ukrywają.
Zadania z kodu
Napisz rozwiązanie prosto w przeglądarce, a testy od razu je sprawdzą. Klasyka rozmów rekrutacyjnych z JavaScriptu (debounce, deepClone, Promise.all, cache LRU), z TypeScriptu (generyki, zawężanie i typy narzędziowe, sprawdza prawdziwy kompilator), logika backendu w Node.js (middleware, limity żądań, kolejki zadań), zapytania SQL w prawdziwym PostgreSQL i z Reacta: komponenty i hooki, takie jak lista zadań, zakładki, useDebounce i useInterval.
Otwórz zadania →