Питання на співбесіді з тестування (Middle) з відповідями
75 запитань для співбесіди з теми Тестування (Middle) - з правильними відповідями, поясненнями й посиланнями на документацію.
Пройти цей тест- 1.Чим відрізняються
findBy…іwaitFor? - 2.Що не так із цим
waitFor? - 3.Як дочекатися зникнення індикатора завантаження?
- 4.Що зазвичай означає попередження «An update to Component inside a test was not wrapped in act(...)»?
- 5.Що не так із таким очікуванням?
- 6.Як використовувати фейкові таймери разом із user-event v14?
- 7.Як протестувати поле пошуку з debounce?
- 8.Чим
vi.runAllTimers()відрізняється відvi.advanceTimersByTime(1000)? - 9.Як зафіксувати поточну дату в тесті?
- 10.Чому
vi.mock("./api")можна написати нижче імпортів, і він однаково спрацює? - 11.Чому ця фабрика мока падає?
- 12.Як замокати лише один експорт модуля, а решту залишити справжніми?
- 13.Чим відрізняються
mockClear,mockResetіmockRestore? - 14.Що дає змогу
mockImplementationOnce? - 15.Де в Jest лежать ручні моки для node-модуля?
- 16.Чому
vi.spyOn(module, "fn")часто не впливає на виклики всередині того самого ES-модуля? - 17.Чому MSW часто віддають перевагу над прямим моком
fetch/axios? - 18.Як налаштувати MSW для тестів у Node.js?
- 19.Як за допомогою MSW зробити так, щоб один тест отримав від ендпоінта помилку 500?
- 20.Як перевірити, що компонент надіслав в API, якщо використовується MSW?
- 21.Як відрендерити компонент, якому потрібні провайдери (роутер, стор, query client)?
- 22.Як шукати всередині однієї частини сторінки, наприклад у рядку таблиці?
- 23.Що повертає
renderHook? - 24.Як перевірити, що компонент реагує на нові пропси?
- 25.Як знайти заголовок певного рівня?
- 26.Чому
getByRoleможе не знайти елемент, який є в DOM? - 27.Як протестувати компонент, який читає дані з Redux-стору?
- 28.Як протестувати компонент, що використовує TanStack Query?
- 29.Як протестувати компонент, що залежить від поточного маршруту (React Router)?
- 30.Як перевірити, що чекбокс позначено?
- 31.Що перевіряє
toHaveAccessibleName? - 32.Як швидко підібрати найкращий запит для елемента?
- 33.Що не так із ручним викликом
cleanupвafterEach? - 34.Чому
getByRoleповільніший заgetByTextі що з цим робити? - 35.Чим погані великі снапшоти компонентів?
- 36.Що таке
toMatchInlineSnapshot? - 37.Що вимірює покриття гілок (branch coverage), чого не бачить покриття рядків?
- 38.Що робить поріг покриття в конфігу?
- 39.Які провайдери покриття підтримує Vitest?
- 40.Для чого потрібен setup-файл (
setupFilesу Vitest,setupFilesAfterEnvу Jest)? - 41.Що робить
globals: trueу конфігу Vitest? - 42.Навіщо Jest і Vitest за замовчуванням ізолюють тестові файли?
- 43.Що таке локатор у Playwright?
- 44.Що означає строгість (strictness) локаторів Playwright?
- 45.Як звузити локатор елемента списку до того, що містить текст?
- 46.Чим
expect(await locator.isVisible()).toBe(true)гірше, ніжawait expect(locator).toBeVisible()? - 47.Як замокати відповідь API в Playwright?
- 48.Як не входити в систему через UI в кожному тесті Playwright?
- 49.Як Playwright ізолює тести один від одного?
- 50.Чим корисний trace viewer у Playwright?
- 51.Що таке фікстури в Playwright?
- 52.Як автоматично запускати застосунок перед тестами Playwright?
- 53.Що робить
expect.pollу Playwright? - 54.Чому не радять
page.waitForTimeout(3000)? - 55.Що означає
test.describe.configure({ mode: "serial" })і чому його використовують рідко? - 56.Чому в Cypress не можна написати
const text = cy.get("h1").text()? - 57.Що повторюється в ланцюжку Cypress на кшталт
cy.get(".list li").should("have.length", 3)? - 58.Як у Cypress дочекатися конкретного запиту?
- 59.Що робить
cy.session()? - 60.У чому ключова архітектурна відмінність Cypress від Playwright?
- 61.Яка практика в Cypress - антипатерн?
- 62.Чому інтеграційні тести у фронтенді часто найвигідніші?
- 63.Який тип тесту краще підходить для «оформлення замовлення працює зі справжнім бекендом і пісочницею оплати»?
- 64.Що перевіряє контрактний тест?
- 65.Що робити з нестабільним тестом, який не можна виправити одразу?
- 66.Які часті причини нестабільних UI-тестів?
- 67.Чому в тесті відповідає «Given–When–Then»?
- 68.Чим погана глибока вкладеність
describeзі спільними зміннимиlet? - 69.Що НЕ має перевіряти тест компонента?
- 70.Як додати автоматичні перевірки доступності в тести компонентів?
- 71.Що таке компонентне тестування в Playwright або Cypress?
- 72.Що таке Browser Mode у Vitest?
- 73.Що дають асиметричні матчери на кшталт
expect.objectContaining? - 74.Як перевірити, що «Submit» неактивна, доки форма не валідна?
- 75.Як зазвичай налаштовують повтори (retries) у Playwright?