← Усі теми

Питання на співбесіді з Cypress з відповідями

End-to-end і компонентне тестування на Cypress: черга команд і повтори, селектори й дії, перевірки, аліаси, cy.intercept і фікстури, cy.session і вхід, власні команди й задачі, ізоляція тестів і дані, CI, паралельний запуск, нестабільні тести й архітектура набору.

228 запитань для співбесіди з теми Cypress з відповідями й поясненнями - рівні Junior, Middle і Senior. Приклади запитань, онлайн-тести й задачі на код.

Запитання за рівнями

Приклади запитань

Кілька запитань із кожного рівня з правильною відповіддю й поясненням.

Cypress · Junior

  1. Де виконуються тести Cypress?
    Показати відповідь

    Правильна відповідь: У браузері, поруч із застосунком, що тестується

    Cypress запускає код тестів у тому самому циклі браузера, що й застосунок, а поруч працює процес Node.js для файлів і проксіювання мережі. Тому він може напряму читати стан застосунку.

  2. Яка команда відкриває інтерактивний застосунок Cypress?
    Показати відповідь

    Правильна відповідь: npx cypress open

    cypress open запускає застосунок, де ви обираєте браузер і spec та дивитеся, як ідуть тести. cypress run запускає тести без інтерфейсу, як у CI.

  3. Яка команда запускає всі тести Cypress без інтерфейсу, наприклад у CI?
    Показати відповідь

    Правильна відповідь: npx cypress run

    cypress run запускає кожен spec у терміналі, робить скриншоти падінь і повертає ненульовий код виходу при падіннях.

  4. Де зазвичай задають основну конфігурацію Cypress?
    Показати відповідь

    Правильна відповідь: У cypress.config.ts чи cypress.config.js

    Конфіг задає baseUrl, шаблони spec-файлів, viewport, таймаути, повтори й обробники подій Node через defineConfig.

Усі 75 запитань з відповідями →

Cypress · Middle

  1. У Cypress 12+ чим відрізняються запити (queries) від команд-дій?
    Показати відповідь

    Правильна відповідь: Запити на кшталт get повторюються; дії на кшталт click - раз

    Запити перезапускаються, доки перевірки не пройдуть. Дії на кшталт .click() чи .type() не повторюються, хоча спершу чекають придатності елемента.

  2. Що повторюється в cy.get('.list').find('li').should('have.length', 3)?
    Показати відповідь

    Правильна відповідь: Увесь ланцюжок запитів перед перевіркою

    З Cypress 12 невдала перевірка перезапускає ланцюжок пов'язаних запитів, тож нові відрендерені елементи знаходяться.

  3. Що робить .its('length')?
    Показати відповідь

    Правильна відповідь: Бере властивість subject, з повторами

    .its() - запит, тож cy.get('li').its('length').should('be.gt', 2) повторюється. .invoke() викликає метод subject.

  4. Як перевірити тіло, яке форма надсилає в API?
    Показати відповідь

    Правильна відповідь: Перехопити запит і перевірити interception.request.body

    Це ловить баги фронтенду на кшталт неправильних назв чи типів полів, які замоканий бекенд тихо прийняв би.

Усі 77 запитань з відповідями →

Cypress · Senior

  1. Який головний архітектурний компроміс того, що Cypress працює всередині браузера?
    Показати відповідь

    Правильна відповідь: Прямий доступ до застосунку, але одна вкладка й правила origin

    Робота в браузері дає подорож у часі, доступ до застосунку й надійні очікування. Ціна - контроль однієї вкладки, обмеження origin і тести лише на JavaScript.

  2. Коли команді обрати Cypress, а не Playwright?
    Показати відповідь

    Правильна відповідь: Коли важливий інтерактивний раннер, а застосунок вкладається в обмеження

    Cypress сильний для JS-команд з одним застосунком, яким потрібен швидкий фідбек у раннері. Потреби в кількох вкладках, origin чи мовах - на користь Playwright.

  3. Чому Cypress потребує cy.origin для SSO, а Playwright - ні?
    Показати відповідь

    Правильна відповідь: Cypress працює в сторінці одного origin і має явно змінювати контекст

    Playwright керує браузером ззовні, тож origin не важливий. Cypress працює в сторінці, тож іншим origin потрібен окремий контекст виконання.

  4. Яка найчастіша першопричина нестабільних тестів Cypress у великих наборах?
    Показати відповідь

    Правильна відповідь: Спільний стан і припущення про час

    Більшість flaky походить із залежності тестів одне від одного, від реального часу чи спільних даних бекенду. Лагодьте причину; повтори її лише ховають.

Усі 76 запитань з відповідями →

Задачі на код

Напишіть рішення просто в браузері - тести перевірять його одразу. Класика співбесід на JavaScript (debounce, deepClone, Promise.all, LRU-кеш), на TypeScript (дженерики, звуження й утилітні типи, перевіряє справжній компілятор), серверна логіка на Node.js (middleware, обмеження частоти, черги задач), SQL-запити в справжньому PostgreSQL і на React: компоненти й хуки на кшталт списку справ, вкладок, useDebounce та useInterval.

Відкрити задачі →