Commit dc09d0b4 authored by zarina's avatar zarina 🌊

Написаны тесты на функционал авторизации/аутентификации

parents
output
.idea
node_modules
\ No newline at end of file
Feature('Авторизация/Регистрация');
Scenario('Проверка токена', async ({I}) => {
let response = await I.sendPostRequest('account/reset-password/', {email: "rina.saif221@gmail.com"});
I.amOnPage('/reset-password?token=' + response.data.token)
I.fillField({id: 'password'}, '123456rrr');
I.fillField({id: 'confirm_password'}, '123456rrr');
I.click({name: 'reset_password_btn'})
I.waitForText('Пароль успешно изменен')
});
exports.config = {
output: './output',
helpers: {
Puppeteer: {
url: 'http://localhost:4200/',
show: false,
windowSize: '1200x900'
},
REST: {
endpoint: "http://127.0.0.1:8000/api/v1/",
defaultHeaders: {
'Content-Type': 'application/json',
'Accept': 'application/json',
},
}
},
include: {
I: './steps_file.js'
},
mocha: {},
bootstrap: null,
teardown: null,
hooks: [],
gherkin: {
features: './features/*.feature',
steps: ['./step_definitions/steps.js']
},
plugins: {
screenshotOnFail: {
enabled: true
},
pauseOnFail: {},
retryFailedStep: {
enabled: true
},
tryTo: {
enabled: true
}
},
tests: './*_test.js',
name: 'attractor-crm-tests',
translation: 'ru-RU'
}
\ No newline at end of file
#language: ru
Функция: Авторизация/Аутентификация
Сценарий: Успешный логин и логаут
Допустим я захожу на страницу 'login'
Если я ввожу "admin@mail.ru" в поле "email"
И я ввожу "12345" в поле "password"
И я нажимаю на кнопку "login_btn"
И я жду 3 секунды
Затем я захожу на страницу 'login'
И я не вижу текст 'Вход'
Если я нажимаю на кнопку 'logout'
И я захожу на страницу 'login'
То я вижу текст 'Вход'
Сценарий: Неправильный логин или пароль
Допустим я захожу на страницу 'login'
Если я ввожу "admin@mail.ru" в поле "email"
И я ввожу "1" в поле "password"
Затем я нажимаю на кнопку "login_btn"
Тогда я вижу текст "Ошибка: Неверный email или пароль"
Если я нажимаю на кнопку "login_btn"
И я нажимаю на кнопку "login_btn"
То я вижу текст "Ошибка: Вы трижды ввели неправильный email или пароль. Повторите попытку через 30 минут"
Сценарий: Валдиация фронт
Допустим я захожу на страницу 'login'
Если я ввожу "admin@q" в поле "email"
И я ввожу "1" в поле "password"
То я вижу текст "Ошибка валидации."
Сценарий: Восстановление пароля валидация
Допустим я захожу на страницу '/reset-password'
Если я ввожу "some_user@qre.eee" в поле "email"
И я нажимаю на кнопку "reset_password_btn"
То я вижу текст "Ошибка: Email не найден"
Сценарий: Восстановление пароля, успешная отправка письма
Допустим я захожу на страницу '/reset-password'
И я ввожу "rina.saif221@gmail.com" в поле "email"
И я нажимаю на кнопку "reset_password_btn"
Затем я жду текст "На указанный email отправлено письмо с подтверждением смены пароля"
Сценарий: Проверка токена, токен невалидный
Допустим я захожу на страницу '/reset-password?token=123'
То я жду текст "Ошибка: Данный токен недействителен"
{
"compilerOptions": {
"allowJs": true
}
}
\ No newline at end of file
This diff is collapsed.
{
"name": "attractor-crm-tests",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"codeceptjs": "^3.0.7",
"puppeteer": "^10.1.0"
}
}
const { I } = inject();
// Add in your custom step files
Given('я захожу на страницу {string}', (url) => {
I.amOnPage(url)
});
When('я нажимаю на кнопку {string}', (buttonName) => {
I.click(buttonName);
});
When('я ввожу {string} в поле {string}', (text, fieldName) => {
I.fillField({id: fieldName}, text);
});
When('я очищаю поле {string}', (fieldName) => {
I.clearField({id: fieldName});
});
Then('я вижу текст {string}', (text) => {
I.see(text);
});
Then('я жду {int} секунд(ы)', (secs) => {
I.wait(secs)
});
Then('я жду текст {string}', (text) => {
I.waitForText(text)
});
Then('я не вижу текст {string}', (text) => {
I.dontSee(text);
});
/// <reference types='codeceptjs' />
type steps_file = typeof import('./steps_file.js');
declare namespace CodeceptJS {
interface SupportObject { I: I, current: any }
interface Methods extends Puppeteer {}
interface I extends ReturnType<steps_file> {}
namespace Translation {
interface Actions {
"waitForElement": "ожидаю_элемент",
"waitForVisible": "ожидаю_увидеть",
"waitForText": "ожидаю_текст",
"amOnPage": "на_странице",
"click": "кликаю",
"doubleClick": "дважды_кликаю",
"see": "вижу",
"dontSee": "не_вижу",
"selectOption": "выбираю_опцию",
"fillField": "заполняю_поле",
"pressKey": "нажимаю_кнопку",
"triggerMouseEvent": "триггерное_событие_мыши",
"attachFile": "загружаю_файл",
"seeInField": "вижу_в_поле",
"dontSeeInField": "не_вижу_в_поле",
"appendField": "дописываю_в_поле",
"checkOption": "выбираю_опцию",
"seeCheckboxIsChecked": "вижу_галочку",
"dontSeeCheckboxIsChecked": "не_вижу_галочку",
"grabTextFrom": "беру_текст_из",
"grabValueFrom": "беру_значение_из",
"grabAttributeFrom": "беру_атрибут_из",
"seeInTitle": "вижу_в_заголовке",
"dontSeeInTitle": "не_вижу_в_заголовке",
"grabTitle": "беру_заголовок",
"seeElement": "вижу_элемент",
"dontSeeElement": "не_вижу_элемент",
"seeInSource": "вижу_в_коде",
"dontSeeInSource": "не_вижу_в_коде",
"executeScript": "выполняю_скрипт",
"executeAsyncScript": "выполняю_скрипт_асинхронно",
"seeInCurrentUrl": "вижу_в_адресе",
"dontSeeInCurrentUrl": "не_вижу_в_адресе",
"seeCurrentUrlEquals": "вижу_адрес_равен",
"dontSeeCurrentUrlEquals": "не_вижу_адрес",
"saveScreenshot": "делаю_скриншот",
"setCookie": "устанавливаю_куки",
"clearCookie": "очищаю_куки",
"seeCookie": "вижу_в_куки",
"dontSeeCookie": "не_вижу_в_куки",
"grabCookie": "беру_куки",
"resizeWindow": "растягиваю_окно",
"wait": "жду"
}
}
}
// in this file you can append custom step methods to 'I' object
module.exports = function() {
return actor({
// Define custom steps here, use 'this' to access default methods of I.
// It is recommended to place a general 'login' function here.
});
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment