50 вопросов и ответов на собеседовании по Cypress

На современном IT-рынке инструмент автоматизации Cypress довольно популярен. Большинство компаний используют Cypress для автоматизации, и они ищут кандидатов, которые имеют практический опыт работы с Cypress.

Именно поэтому в этой статье мы собрали актуальные вопросы на собеседовании по Cypress, которые помогут вам получить работу.

Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.

1. Напишите тест на Cypress для проверки заголовка веб-сайта.

it('should have the correct title', () => {
  cy.visit('https://example.com');
  cy.title().should('eq', 'Example Domain');
});

2. Как выполнить проверку входа в систему с помощью Cypress?

it('should log in with valid credentials', () => {
cy.visit('https://example.com/login');
cy.get('input[name="username"]').type('myusername');
cy.get('input[name="password"]').type('mypassword');
cy.get('button[type="submit"]').click();
cy.url().should('include', '/dashboard');
});

3. Напишите тест на Cypress для взаимодействия с выпадающим меню.

it('should select an option from a dropdown', () => {
  cy.visit('https://example.com');
  cy.get('select').select('Option 2');
});

4. Как вы проводите тестирование API с помощью Cypress?

it('should make an API request', () => {
  cy.request('GET', 'https://jsonplaceholder.typicode.com/users/1')
    .its('body')
    .should('have.property', 'name');
});

5. Напишите тест на Cypress для загрузки файла.

it('should upload a file', () => {
  cy.visit('https://example.com/upload');
  const fileName = 'example.txt';
  cy.fixture(fileName).then(fileContent => {
    cy.get('input[type="file"]').attachFile({
      fileContent,
      fileName,
      mimeType: 'text/plain'
    });
  });
  cy.get('button[type="submit"]').click();
});

6. Как работать с assertions в Cypress?

it('should assert element visibility', () => {
  cy.visit('https://example.com');
  cy.get('h1').should('be.visible');
});

7. Напишите тест на Cypress для обработки всплывающего окна с подтверждением.

it('should handle a confirmation dialog', () => {
  cy.visit('https://example.com');
  cy.on('window:confirm', () => true); // Always confirm
  cy.get('button').click();
});

8. Как проверить, содержит ли элемент определенный текст?

it('should check if an element contains text', () => {
  cy.visit('https://example.com');
  cy.contains('h1', 'Welcome');
});

9. Напишите тест на Cypress для выполнения поиска в Google.

it('should perform a Google search', () => {
  cy.visit('https://www.google.com');
  cy.get('input[name="q"]').type('Cypress testing{enter}');
  cy.contains('h3', 'Cypress - JavaScript End to End Testing Framework');
});

10. Как создать кастомную команду в Cypress?

Cypress.Commands.add('login', (username, password) => {
  cy.visit('https://example.com/login');
  cy.get('input[name="username"]').type(username);
  cy.get('input[name="password"]').type(password);
  cy.get('button[type="submit"]').click();
});

11. Напишите тест на Cypress для взаимодействия с чекбоксами.

it('should check checkboxes', () => {
  cy.visit('https://example.com');
  cy.get('input[type="checkbox"]').check();
});

12. Как настроить хук beforeEach в Cypress?

beforeEach(() => {
  cy.visit('https://example.com');
});

13. Напишите тест на Cypress для выбора даты.

it('should select a date from a date picker', () => {
  cy.visit('https://example.com/datepicker');
  cy.get('input[name="date"]').type('2023-10-05');
});

14. Как работать с iframe в Cypress?

it('should interact with elements inside an iframe', () => {
  cy.visit('https://example.com/iframe');
  cy.get('iframe').then($iframe => {
    const body = $iframe.contents().find('body');
    cy.wrap(body).find('button').click();
  });
});

15. Напишите тест на Cypress для работы с вкладками/окнами.

it('should handle opening a new tab', () => {
  cy.visit('https://example.com');
  cy.get('a[target="_blank"]').invoke('removeAttr', 'target').click();
  cy.url().should('include', '/new-page');
});

16. Как выполнить визуальное регрессионное тестирование с помощью Cypress?

it('should perform visual regression testing', () => {
  cy.visit('https://example.com');
  cy.matchImageSnapshot();
});

17. Напишите тест на Cypress для обработки функции drag and drop .

it('should perform a drag-and-drop', () => {
  cy.visit('https://example.com/drag-drop');
  cy.get('.draggable').trigger('dragstart');
  cy.get('.droppable').trigger('drop');
});

18. Каким образом можно моделировать сетевые условия в Cypress?

it('should simulate a slow network', () => {
  cy.visit('https://example.com');
  cy.intercept('https://example.com/api/**', { delayMs: 2000 }).as('apiCall');
  cy.get('button').click();
  cy.wait('@apiCall');
});

19. Напишите тест на Cypress для тестирования пагинации.

it('should navigate through pagination', () => {
  cy.visit('https://example.com/pagination');
  cy.get('.next-page').click();
  cy.get('.current-page').should('contain.text', '2');
});

20. Как запустить тесты Cypress в headless mode?

npx cypress run --headless

21. Напишите тест на Cypress для входа в систему с невалидными учетными данными и проверьте сообщение об ошибке.

it('should display an error message for invalid login', () => {
  cy.visit('https://example.com/login');
  cy.get('input[name="username"]').type('invalidusername');
  cy.get('input[name="password"]').type('invalidpassword');
  cy.get('button[type="submit"]').click();
  cy.contains('.error-message', 'Invalid credentials');
});

22. Как обрабатывать динамический контент с помощью Cypress?

it('should handle dynamic content', () => {
  cy.visit('https://example.com/dynamic-content');
  cy.get('.dynamic-element').should('exist');
});

23. Напишите тест на Cypress для выполнения поиска и проверки результатов.

it('should perform a search and verify results', () => {
  cy.visit('https://example.com/search');
  cy.get('input[name="search"]').type('Cypress testing{enter}');
  cy.get('.search-results').should('have.length.greaterThan', 0);
});

24. Как создать кастомную команду для выполнения входа в систему?

Cypress.Commands.add('login', (username, password) => {
  cy.visit('https://example.com/login');
  cy.get('input[name="username"]').type(username);
  cy.get('input[name="password"]').type(password);
  cy.get('button[type="submit"]').click();
});

25. Напишите тест на Cypress для проверки наличия определенных элементов на странице.

it('should validate the presence of elements', () => {
  cy.visit('https://example.com');
  cy.get('h1').should('exist');
  cy.get('button').should('have.length.greaterThan', 0);
});

26. Как работать с переменными окружения в Cypress?

Вы можете задать переменные окружения, используя CYPRESS_ префикс, например CYPRESS_BASE_URL.

27. Напишите тест на Cypress для проверки статус-кода ответа на запрос API.

it('should validate the status code of an API request', () => {
  cy.request('GET', 'https://jsonplaceholder.typicode.com/users/1')
    .its('status')
    .should('eq', 200);
});

28. Как изменить размер видимой области экрана в Cypress?

it('should simulate different viewport sizes', () => {
  cy.viewport(320, 480); // Set viewport size to mobile
  cy.visit('https://example.com');
});

29. Напишите тест на Cypress для взаимодействия с динамической таблицей.

it('should interact with a dynamic table', () => {
  cy.visit('https://example.com/table');
  cy.get('table').contains('tr', 'Row 2').contains('td', 'Edit').click();
});

30. Как обрабатывать несколько assertions в одном тесте?

it('should perform multiple assertions', () => {
  cy.visit('https://example.com');
  cy.get('h1').should('exist');
  cy.get('button').should('have.length.greaterThan', 0);
});

31. Напишите тест на Cypress для обработки отправки формы с валидацией.

it('should handle form submission with validation', () => {
  cy.visit('https://example.com/form');
  cy.get('input[name="username"]').type('myusername');
  cy.get('input[name="email"]').type('invalidemail');
  cy.get('button[type="submit"]').click();
  cy.contains('.error-message', 'Invalid email address');
});

32. Как использовать aliases в Cypress?

Aliases в Cypress позволяют сохранять и повторно использовать элементы или значения DOM на протяжении всего теста.

Например:

it('should use aliases', () => {
  cy.visit('https://example.com');
  cy.get('h1').as('pageTitle');
  cy.get('@pageTitle').should('have.text', 'Welcome');
});

33. Напишите тест на Cypress для работы с выбором времени.

it('should select a time from a time picker', () => {
  cy.visit('https://example.com/timepicker');
  cy.get('input[name="time"]').type('14:30');
});

34. Как выполнить кроссбраузерное тестирование с помощью Cypress?

Cypress поддерживает запуск тестов в нескольких браузерах с помощью --browser.

Например:

npx cypress run --browser chrome

35. Напишите тест на Cypress для выполнения выхода из системы.

it('should log out', () => {
  cy.visit('https://example.com/dashboard');
  cy.get('button#logout').click();
  cy.url().should('include', '/login');
});

36. Как работать с динамическими URL в Cypress?

Вы можете использовать регулярные выражения или подстановочные символы в cy.visit() для работы с динамическими частями URL.

it('should handle dynamic URLs', () => {
  cy.visit('https://example.com/users/*/profile');
});

37. Напишите тест на Cypress для обработки выпадающего списка с несколькими вариантами выбора.

it('should handle a multi-select dropdown', () => {
  cy.visit('https://example.com/multiselect');
  cy.get('select').select(['Option 1', 'Option 2']);
});

38. Как создать проект Cypress с нуля?

Вы можете создать новый проект Cypress с помощью следующих команд:

mkdir my-cypress-project
cd my-cypress-project
npm init -y
npx cypress open

39. Напишите тест на Cypress для работы с всплывающей подсказкой (tooltip).

it('should interact with a tooltip', () => {
  cy.visit('https://example.com/tooltip');
  cy.get('.tooltip-trigger').trigger('mouseover');
  cy.get('.tooltip').should('be.visible');
});

40. Как управлять навигацией в Cypress?

it('should navigate to a different page', () => {
  cy.visit('https://example.com');
  cy.contains('a', 'Contact').click();
  cy.url().should('include', '/contact');
});

41. Напишите тест на Cypress для работы с динамически создаваемым списком.

it('should handle a dynamically generated list', () => {
  cy.visit('https://example.com/dynamic-list');
  cy.get('.add-item').click();
  cy.get('.list-item').should('have.length', 1);
});

42. Как выполнить тестирование API в Cypress с помощью фикстур?

Вы можете использовать фикстуры для предоставления образцов данных для ваших API-тестов.

Вот пример:

it('should test an API with fixture data', () => {
  cy.fixture('sample-data.json').then(data => {
    cy.request('POST', 'https://example.com/api/endpoint', data)
      .its('body')
      .should('have.property', 'status', 'success');
  });
});

43. Напишите тест на Cypress для работы с вкладками.

it('should interact with a tabbed interface', () => {
  cy.visit('https://example.com/tabs');
  cy.contains('.tab-button', 'Tab 2').click();
  cy.get('.tab-content.active').should('contain.text', 'Tab 2 Content');
});

44. Как вы обрабатываете cookie в Cypress?

Вы можете использовать cy.setCookie(), чтобы установить cookie, и cy.getCookie(), чтобы получить cookie.

it('should handle cookies', () => {
  cy.visit('https://example.com');
  cy.setCookie('token', 'abc123');
  cy.getCookie('token').should('have.property', 'value', 'abc123');
});

45. Напишите тест на Cypress для выполнения поиска с подсказками автозаполнения.

it('should perform a search with autocomplete', () => {
  cy.visit('https://example.com/search');
  cy.get('input[name="search"]').type('Cypress');
  cy.get('.autocomplete-suggestion').first().click();
  cy.get('.search-results').should('have.length.greaterThan', 0);
});

46. Как обрабатывать случайные данные в тестах Cypress?

const randomUsername = `user_${Math.floor(Math.random() * 1000)}`;
cy.get('input[name="username"]').type(randomUsername);

47. Напишите тест на Cypress для работы с прогресс-бар.

it('should interact with a progress bar', () => {
  cy.visit('https://example.com/progressbar');
  cy.get('button').click();
  cy.get('.progress-bar').should('have.css', 'width', '100%');
});

48. Как вы обрабатываете прокрутку окон в Cypress?

Вы можете использовать cy.scrollTo() для прокрутки к определенному элементу или позиции на странице.

it('should scroll to a specific element', () => {
  cy.visit('https://example.com');
  cy.get('.scroll-target').scrollIntoView();
});

49. Напишите тест на Cypress для обработки всплывающего модального окна.

it('should interact with a pop-up modal', () => {
  cy.visit('https://example.com/modal');
  cy.get('button#open-modal').click();
  cy.get('.modal-content').should('be.visible');
  cy.get('.modal-close-button').click();
});

50. Как в Cypress проверить медленную работу сети?

Вы можете использовать cy.intercept() для имитации медленного отклика сети.

it('should simulate a slow network', () => {
  cy.visit('https://example.com');
  cy.intercept('https://example.com/api/**', { delayMs: 2000 }).as('apiCall');
  cy.get('button').click();
  cy.wait('@apiCall');
});

Перевод статьи «Top 50 Cypress Interview Questions And Answers in 2024».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *