Статус сборки:
Аппийский помощник:
Веб -помощник:
Ссылка: помощники API
CodeceptJS-это новая структура тестирования для сквозного тестирования с WebDriver (или другими). Он абстрагирует взаимодействие браузера с простыми шагами, которые написаны с точки зрения пользователя. Простой тест, который проверяет текст «добро пожаловать», присутствует на главной странице сайта, будет выглядеть как:
Feature ( 'CodeceptJS demo' ) ;
Scenario ( 'check Welcome page on site' , ( { I } ) => {
I . amOnPage ( '/' ) ;
I . see ( 'Welcome' ) ;
} ) ;CodeceptJs тесты:
I . Это делает тест легко читать, писать и поддерживать даже для не технологических людей. CodeceptJS использует вспомогательные модули для обеспечения действий для объекта I В настоящее время у Codeceptjs есть эти помощники:
И еще больше ...
Codeceptjs является преемником кодекса, популярной структуры тестирования полного стека для PHP. С CodeceptJs ваши функциональные и приемлемые тесты, управляемые сценарием, будут настолько простыми и чистыми, насколько это возможно. Вам не нужно беспокоиться об асинхронной природе Nodejs или о различных API драматурга, селена, кукловода, TestCafe и т. Д., Как CodeceptJS объединяет их и заставляет их работать, поскольку они синхронны.
npm i codeceptjs --saveПерейдите в каталог, где вы хотите, чтобы ваши тесты (и конфигурация CodeceptJS) были сохранены и выполните:
npx codeceptjs initДля создания и настройки тестовой среды. Рекомендуется выбрать Webdriver из списка помощников, если вам нужно написать тесты селена Webdriver.
После этого создайте свой первый тест, выполнив:
npx codeceptjs generate:testТеперь тест создан и может быть выполнен с помощью
npx codeceptjs runЕсли вы хотите написать свои тесты, используя TypeScript, просто генерируйте определения стандартных типов, выполнив:
npx codeceptjs def .Позже вы можете даже автоматически обновить определения типа, чтобы включить свои собственные методы помощников.
Примечание:
12+ или более поздней версии. Узнайте Codeceptjs по примерам. Давайте предположим, что у нас установлен Codeceptjs и включен Helper Webdriver.
Посмотрим, как мы можем справиться с базовым тестированием формы:
Feature ( 'CodeceptJS Demonstration' ) ;
Scenario ( 'test some forms' , ( { I } ) => {
I . amOnPage ( 'http://simple-form-bootstrap.plataformatec.com.br/documentation' ) ;
I . fillField ( 'Email' , '[email protected]' ) ;
I . fillField ( 'Password' , secret ( '123456' ) ) ;
I . checkOption ( 'Active' ) ;
I . checkOption ( 'Male' ) ;
I . click ( 'Create User' ) ;
I . see ( 'User is valid' ) ;
I . dontSeeInCurrentUrl ( '/documentation' ) ;
} ) ; Все действия выполняются I -объектом; Функции утверждений начинаются с функции see . В этих примерах все методы I взяты из Helper Webdriver, см. Ссылку, чтобы узнать, как их использовать.
Давайте выполним этот тест с помощью команды run . Дополнительный вариант --steps покажет нам процесс работы. Мы рекомендуем использовать --steps или --debug во время разработки.
npx codeceptjs run --stepsЭто даст вывод:
CodeceptJS Demonstration --
test some forms
• I am on page " http://simple-form-bootstrap.plataformatec.com.br/documentation "
• I fill field " Email " , " [email protected] "
• I fill field " Password " , " **** "
• I check option " Active "
• I check option " Male "
• I click " Create User "
• I see " User is valid "
• I dont see in current url " /documentation "
✓ OK in 17752ms CodeceptJS имеет окончательную функцию, которая поможет вам разработать и отлаживать ваш тест. Вы можете приостановить выполнение тестирования в любом месте и использовать интерактивную оболочку, чтобы попробовать разные действия и локаторы. Просто добавьте вызов pause() в любом месте в тесте и запустите его.
Интерактивная оболочка может быть запущена вне контекста испытаний с работы:
npx codeceptjs shell Мы заполнили форму методами fillField , которые расположены элементы формы по их этикетке. Точно так же, как вы можете найти элемент по имени, CSS или Locators XPath в тестах:
// by name
I . fillField ( 'user_basic[email]' , '[email protected]' ) ;
// by CSS
I . fillField ( '#user_basic_email' , '[email protected]' ) ;
// don't make us guess locator type, specify it
I . fillField ( { css : '#user_basic_email' } , '[email protected]' ) ; Другие методы, такие как checkOption , и click на работу аналогичным образом. Они могут принимать метки, или CSS или локаторы XPath, чтобы найти элементы для взаимодействия.
Утверждения начинаются с see или dontSee . В нашем случае мы утверждаем, что строка «пользователь действительна» находится где -то на веб -странице. Однако мы можем сузить поиск до определенного элемента, предоставив второй параметр:
I . see ( 'User is valid' ) ;
// better to specify context:
I . see ( 'User is valid' , '.alert-success' ) ; В этом случае «Пользователь действительный» строка будет искать только внутри элементов, расположенных CSS .alert-success .
Если вам нужно вернуть значение с веб -страницы и использовать его непосредственно в тесте, вы должны использовать методы с префиксом grab . Ожидается, что они будут использоваться в функциях async/await , и их результаты будут доступны в тесте:
Feature ( 'CodeceptJS Demonstration' ) ;
Scenario ( 'test page title' , async ( { I } ) => {
I . amOnPage ( 'http://simple-form-bootstrap.plataformatec.com.br/documentation' ) ;
const title = await I . grabTitle ( ) ;
I . expectEqual ( title , 'Example application with SimpleForm and Twitter Bootstrap' ) ; // Avaiable with Expect helper. -> https://codecept.io/helpers/Expect/
} ) ;Точно так же вы можете взять текст, атрибуты или значения формы и использовать их на следующих этапах тестирования.
Общие шаги подготовки, такие как открытие веб -страницы, вход в пользователь, могут быть помещены Before или Background :
const { I } = inject ( ) ;
Feature ( 'CodeceptJS Demonstration' ) ;
Before ( ( ) => { // or Background
I . amOnPage ( 'http://simple-form-bootstrap.plataformatec.com.br/documentation' ) ;
} ) ;
Scenario ( 'test some forms' , ( ) => {
I . click ( 'Create User' ) ;
I . see ( 'User is valid' ) ;
I . dontSeeInCurrentUrl ( '/documentation' ) ;
} ) ;
Scenario ( 'test title' , ( ) => {
I . seeInTitle ( 'Example application' ) ;
} ) ; CodeceptJS обеспечивает самый простой способ создания и использования объектов страницы в вашем тесте. Вы можете создать один, работая
npx codeceptjs generate pageobject Он создаст для вас файл объекта страницы и добавит его в конфигурацию. Давайте предположим, что мы создали один по имени docsPage :
const { I } = inject ( ) ;
module . exports = {
fields : {
email : '#user_basic_email' ,
password : '#user_basic_password'
} ,
submitButton : { css : '#new_user_basic input[type=submit]' } ,
sendForm ( email , password ) {
I . fillField ( this . fields . email , email ) ;
I . fillField ( this . fields . password , password ) ;
I . click ( this . submitButton ) ;
}
}Вы можете легко ввести его на тестирование, предоставив его название в тестовых аргументах:
Feature ( 'CodeceptJS Demonstration' ) ;
Before ( ( { I } ) => { // or Background
I . amOnPage ( 'http://simple-form-bootstrap.plataformatec.com.br/documentation' ) ;
} ) ;
Scenario ( 'test some forms' , ( { I , docsPage } ) => {
docsPage . sendForm ( '[email protected]' , '123456' ) ;
I . see ( 'User is valid' ) ;
I . dontSeeInCurrentUrl ( '/documentation' ) ;
} ) ; При использовании TypeScript замените module.exports на export для автозаполнения.
Davertmik | Kobenguyent | Воробейко | Рубенмиллер |
Архелл | Апшенкин | Фабиоэль | Паблопаул |
Мирао | Джорджгрифф | КМКУСХИК | Никоканваком |
Элукоянов | Томашон | Гкушанг | Цумура |
Egorbodnar | Викалпп | Элайченков | Боризосипов |
ngraf | Nitschsb | Hubidu | Jploskonka |
Maojunxyz | abhimanyupandian | Мартомо | Chatufacci |
MIT © Команда CodeCeptJS