← Wszystkie tematy

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.

Pytania według poziomu

Przykładowe pytania

Kilka pytań z każdego poziomu z poprawną odpowiedzią i wyjaśnieniem.

Cypress · Junior

  1. 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.

  2. Które polecenie otwiera interaktywną aplikację Cypress?
    Pokaż odpowiedź

    Poprawna odpowiedź: npx cypress open

    cypress open uruchamia aplikację, w której wybierasz przeglądarkę i spec i oglądasz testy. cypress run uruchamia testy bez interfejsu, jak w CI.

  3. Które polecenie uruchamia wszystkie testy Cypress bez interfejsu, np. w CI?
    Pokaż odpowiedź

    Poprawna odpowiedź: npx cypress run

    cypress run uruchamia każdy spec w terminalu, robi zrzuty przy awariach i zwraca niezerowy kod wyjścia przy porażkach.

  4. Gdzie zwykle definiuje się główną konfigurację Cypress?
    Pokaż odpowiedź

    Poprawna odpowiedź: W cypress.config.ts lub cypress.config.js

    Konfiguracja ustawia baseUrl, wzorce specyfikacji, viewport, timeouty, powtórki i handlery zdarzeń Node przez defineConfig.

Wszystkie 75 pytań z odpowiedziami →

Cypress · Middle

  1. W Cypress 12+ czym różnią się zapytania (queries) od komend-akcji?
    Pokaż odpowiedź

    Poprawna odpowiedź: Zapytania jak get są ponawiane; akcje jak click raz

    Zapytania uruchamiają się ponownie, aż asercje przejdą. Akcje jak .click() czy .type() nie są ponawiane, choć najpierw czekają na gotowość elementu.

  2. 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.

  3. Co robi .its('length')?
    Pokaż odpowiedź

    Poprawna odpowiedź: Pobiera właściwość subjectu, z ponawianiem

    .its() to zapytanie, więc cy.get('li').its('length').should('be.gt', 2) ponawia. .invoke() wywołuje metodę subjectu.

  4. Jak sprawdzić treść, którą formularz wysyła do API?
    Pokaż odpowiedź

    Poprawna odpowiedź: Przechwycić zapytanie i sprawdzić interception.request.body

    To łapie błędy frontendu jak złe nazwy lub typy pól, które zamockowany backend po cichu by przyjął.

Wszystkie 77 pytań z odpowiedziami →

Cypress · Senior

  1. 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.

  2. 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.

  3. Dlaczego Cypress potrzebuje cy.origin dla 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.

  4. 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ą.

Wszystkie 76 pytań z odpowiedziami →

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 →