Глубокое погружение в действенные команды Cypress

Cypress — действительно интересный инструмент для тестирования. Как разработчик программного обеспечения, я хотел бы убедиться, что мой код делает то, для чего он предназначен. Тестирование — это целый набор навыков сам по себе, и требуется много времени, чтобы освоить его. Поскольку наше время не бесконечно, и нам нужно убедиться, что наш код не сломает что-то по ходу работы, нам нужен способ тестировать элементы на нашей странице, даже когда мы строим на основе вещей в будущем. Как мы можем справиться со сборкой, тестированием функций по мере продвижения и регрессионным тестированием? Введите действенные команды Cypress!
Это позволяет нам писать наши тесты для взаимодействия с нашим приложением. Это обеспечивает полную защиту нашего кода даже в будущем. Поскольку мы можем настроить наш проект для запуска этих тестов при фиксации кода в нашем репозитории, мы можем гарантировать, что наш новый код не нарушит существующий код и приложение не будет работать должным образом. Давайте погрузимся в некоторые из этих изящных команд!
Активные команды
В Cypress в нашем распоряжении есть несколько действенных команд. Они варьируются от одного щелчка до двойного щелчка, установки и снятия флажков и ввода, и это лишь некоторые из них.
click() — Щелкнуть по элементу.
Это довольно прямолинейно. Если у нас есть что-то вроде кнопки или ссылки, мы можем имитировать щелчок по этому элементу. Мы хотим сообщить Cypress, какой элемент нас интересует, а затем связать функцию щелчка с этим элементом.
✅ Correct usage
cy.get('.primary-button').click();
❌ Incorrect usage
cy.click('.primary-button');
Аргументы, которые мы могли бы передать, будут position, x or y coordinate или options.
// Position
cy.get('.primary-button').click('topRight');
// X / Y Coordinates
cy.get('.primary-button').click(10, 12);
// Options(See docs below)
cy.get('.primary-button').click({
altKey: true
});
dblclick() — Двойной щелчок по элементу
Подобно одиночному щелчку, мы также можем выполнить двойной щелчок по элементу.
✅ Correct usage
cy.get('.primary-button').dblclick();
❌ Incorrect usage
cy.dblclick('.primary-button');
Аргументы, которые мы могли бы передать, будут position, x or y coordinate или options.
// Position
cy.get('.primary-button').dblclick('topLeft');
// X / Y Coordinates
cy.get('.primary-button').dblclick(5, 72);
// Options(See docs below)
cy.get('.primary-button').dblclick({
shiftKey: true
});
rightclick() — Щелчок правой кнопкой мыши по элементу
Функция правого щелчка позволяет нам писать код вокруг события контекстного меню, а не самого контекстного меню (это устарело (я приложил документы, объясняющие оба ниже)).
✅ Correct usage
cy.get('#primary-menu').rightclick()
❌ Incorrect usage
cy.rightclick('#primary-menu');
Аргументы, которые мы могли бы передать, будут position, x or y coordinate или options.
// Position
cy.get('#primary-menu').rightclick('topLeft')
// X / Y Coordinates
cy.get('.primary-button').rightclick(5, 72);
// Options(See docs below)
cy.get('.primary-button').rightclick({
shiftKey: true
});
contextmenu — веб-API | MDN
Устарело: эта функция больше не рекомендуется. Хотя некоторые браузеры все еще могут его поддерживать, возможно, он уже…developer.mozilla.org\
type() — Введите в элемент
Если у вас есть поля ввода и вы хотите, чтобы пользователь мог печатать внутри них, это ваша команда.
✅ Correct usage
cy.get('.first-name-input').type('Text here');
❌ Incorrect usage
cy.type('Text here');
Доступные аргументы для type(): text и options..
// Text
cy.get('.first-name-input').type('Text here');
// Options(See docs below)
cy.get('.first-name-input').type({
delay: 10
});
Если вы хотите имитировать пользователя, нажимающего клавишу во время набора текста, вы можете передать клавишу, которую хотите имитировать. Например, если бы я хотел имитировать пользователя, нажимающего клавишу Ctrl перед вводом или даже во время ввода, мы могли бы сделать это (в прикрепленных документах есть больше примеров)
cy.get('.test-input').type('{ctrl}test');
// or
cy.get('.test-input').type('test {shift}things');
clear() — Очистить значение из input или text area
Это очистит поля ввода значений
✅ Correct usage
cy.get('[type="text"]').clear();
❌ Incorrect usage
cy.clear();
Доступный аргумент для этого: options.
// Options(See docs below)
cy.get('[type="text"]').clear({
log: true
});
check() — Отметьте флажок или радиоэлемент
Это будет имитировать щелчок внутри флажка, чтобы проверить параметр.
✅ Correct usage
cy.get('[type="checkbox"]').check();
❌ Incorrect usage
cy.check('[type="checkbox"]');
Аргументы, которые мы могли бы передать, будут Value, Values и options..
// Value
cy.get('[type="checkbox"]').check('First Option');
// Values (An Array of options you would want checked)
cy.get('[type="checkbox"]').check([
'First Option',
'Second Option',
'Third Option'
]);
// Options(See docs below)
cy.get('[type="checkbox"]').check({
log: true
});
uncheck() — снять флажок
Это будет имитировать щелчок внутри флажка, чтобы снять флажок с опции.
✅ Correct usage
cy.get('[type="checkbox"]').uncheck();
❌ Incorrect usage
cy.uncheck('[type="checkbox"]');
Аргументы, которые мы могли бы передать, будут Value, Values и options..
// Value (This is a String of the value you want selected)
cy.get('[type="checkbox"]').uncheck('First Option');
// Values (An Array of options you would want unchecked)
cy.get('[type="checkbox"]').uncheck([
'First Option',
'Second Option',
'Third Option'
]);
// Options(See docs below)
cy.get('[type="checkbox"]').uncheck({
log: true
});
select() — Выберите option в пределах select
✅ Correct usage
cy.get('.users-select').select('first-user-option');
❌ Incorrect usage
cy.select('Chewbacca');
Аргументы, которые мы могли бы передать, будут Value, Values и options..
// Value (This is a String of the value you want selected)
cy.get('.users-select').select('Jeremy');
// Values (An Array of options you would want selected)
cy.get('.users-select').select([
'Jeremy',
'Shannon'
]);
// Options(See docs below)
cy.get('.users-select').select({
log: true
});
Я надеюсь, что это было полезное погружение в мир активных событий в Cypress. Хотя это не все встроенные функции, я считаю эти функции наиболее полезными.
Обо мне
Привет! Я Джереми. Я пишу статьи обо всем, что связано с фронтенд-разработкой, чтобы помочь новичкам лучше понять внутреннюю работу веб-разработки. Если у вас есть какие-либо вопросы по статье, оставьте комментарий, и я свяжусь с вами в LinkedIn @JeremyGrice или на моем личном сайте VetThatCodes
Если вы нашли эту статью полезной или интересной, не стесняйтесь нажимать кнопку 👏 или, если у вас есть вопросы, оставьте комментарий ниже.
Кроме того, не забудьте проверить некоторые из моих других статей
Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord . Заинтересованы в хакинге роста? Ознакомьтесь с разделом Схема.