bdd added cucumber

This commit is contained in:
Александров Александр Владимирович
2025-07-04 20:58:18 +03:00
parent 97f6075658
commit 4d10c1446f
7 changed files with 180 additions and 127 deletions
@@ -0,0 +1,14 @@
package ru.ibs.framework;
import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
import org.junit.runner.RunWith;
@RunWith(Cucumber.class)
@CucumberOptions(
features = "src/test/resources/features",
glue = "ru.ibs.tests",
plugin = {"pretty", "io.qameta.allure.cucumber7jvm.AllureCucumber7Jvm"},
snippets = CucumberOptions.SnippetType.CAMELCASE
)
public class CucumberRunner {}
@@ -1,63 +0,0 @@
package ru.ibs.tests;
import org.junit.*;
import org.openqa.selenium.By;
import ru.ibs.framework.managers.DriverManager;
import ru.ibs.framework.utils.AllureUtils;
import ru.ibs.framework.utils.MyAllureListener;
public class ApplineBusinessTripTest extends BaseTests {
private LoginPage loginPage;
private DashboardPage dashboardPage;
private BusinessTripPage businessTripPage;
@Rule
public MyAllureListener allureListener = new MyAllureListener();
@Before
public void setUp() {
// Получаем драйвер из DriverManager (инициализирован в BaseTests)
loginPage = new LoginPage(DriverManager.getDriverManager().getDriver());
// Открываем страницу логина
DriverManager.getDriverManager().getDriver().get("http://training.appline.ru/user/login");
}
@Test
public void applineLoginScenario() {
AllureUtils.attachScreenshot();
dashboardPage = loginPage.login("Irina Filippova", "testing");
Assert.assertTrue("Dashboard not loaded", dashboardPage.isDashboardLoaded());
businessTripPage = dashboardPage.goToBusinessTrip();
Assert.assertTrue("Trips page not loaded", businessTripPage.isTripsPageLoaded());
businessTripPage.openCreateTripForm();
businessTripPage.selectDepartment("Отдел внутренней разработки");
businessTripPage.selectOrganization("Edge");
businessTripPage.setTicketsCheckbox(true);
businessTripPage.fillCity("Дмитров");
AllureUtils.attachScreenshot();
businessTripPage.fillDate(
By.xpath("//input[@placeholder='Укажите дату' and contains(@id, 'departureDatePlan')]"),
"01.01.2025"
);
businessTripPage.fillDate(
By.xpath("//input[@placeholder='Укажите дату' and contains(@id, 'returnDatePlan')]"),
"10.01.2025"
);
AllureUtils.attachScreenshot();
businessTripPage.saveAndClose();
Assert.assertTrue("Expected validation error not shown",
businessTripPage.isErrorDisplayed("Список командируемых сотрудников не может быть пустым"));
}
}
@@ -0,0 +1,91 @@
package ru.ibs.tests;
import io.cucumber.java.ru.*;
import static org.junit.Assert.*;
import io.cucumber.java.After;
import org.openqa.selenium.By;
import ru.ibs.framework.managers.DriverManager;
import ru.ibs.tests.*;
public class BusinessTripSteps {
private final LoginPage loginPage = new LoginPage(DriverManager.getDriverManager().getDriver());
private DashboardPage dashboardPage;
private BusinessTripPage businessTripPage;
@Дано("Открываем страницу логина")
public void openLoginPage() {
DriverManager.getDriverManager().getDriver().get("http://training.appline.ru/user/login");
}
("Вводим логин {string} и пароль {string}")
public void login(String username, String password) {
dashboardPage = loginPage.login(username, password);
}
("Проверяем, что панель быстрого запуска загружена")
public void dashboardLoaded() {
assertTrue("Dashboard not loaded", dashboardPage.isDashboardLoaded());
}
("Переходим в раздел {string}")
public void goToBusinessTrip(String name) {
businessTripPage = dashboardPage.goToBusinessTrip();
}
("Проверяем, что страница {string} загружена")
public void tripsPageLoaded(String title) {
assertTrue("Trips page not loaded", businessTripPage.isTripsPageLoaded());
}
("Нажимаем на кнопку создания новой командировки")
public void openCreateTripForm() {
businessTripPage.openCreateTripForm();
}
("Выбираем подразделение {string}")
public void selectDepartment(String department) {
businessTripPage.selectDepartment(department);
}
("Выбираем организацию {string}")
public void selectOrganization(String organization) {
businessTripPage.selectOrganization(organization);
}
("Устанавливаем чекбокс {string} в положение {string}")
public void setCheckbox(String checkboxName, String value) {
boolean checked = Boolean.parseBoolean(value);
businessTripPage.setTicketsCheckbox(checked);
}
("Заполняем поле {string} значением {string}")
public void fillCityOrDate(String field, String value) {
if (field.equalsIgnoreCase("Город")) {
businessTripPage.fillCity(value);
} else if (field.equalsIgnoreCase("Дата отправления")) {
businessTripPage.fillDate(By.xpath("//input[@placeholder='Укажите дату' and contains(@id, 'departureDatePlan')]"), value);
} else if (field.equalsIgnoreCase("Дата возвращения")) {
businessTripPage.fillDate(By.xpath("//input[@placeholder='Укажите дату' and contains(@id, 'returnDatePlan')]"), value);
}
}
("Нажимаем кнопку {string}")
public void clickButton(String buttonName) {
if (buttonName.equals("Сохранить и закрыть")) {
businessTripPage.saveAndClose();
}
}
@Тогда("Проверяем, что отображается ошибка {string}")
public void checkError(String errorText) {
assertTrue("Expected validation error not shown",
businessTripPage.isErrorDisplayed(errorText));
}
@After
public void tearDown() {
DriverManager.getDriverManager().quitDriver();
}
}
@@ -0,0 +1,19 @@
# language: ru
@businessTrip
Функционал: Создание командировки
Сценарий: Проверка ошибки при попытке создать командировку без сотрудников
* Открываем страницу логина
* Вводим логин "Irina Filippova" и пароль "testing"
* Проверяем, что панель быстрого запуска загружена
* Переходим в раздел "Командировки"
* Проверяем, что страница "Командировки" загружена
* Нажимаем на кнопку создания новой командировки
* Выбираем подразделение "Отдел внутренней разработки"
* Выбираем организацию "Edge"
* Устанавливаем чекбокс "Заказ билетов" в положение "true"
* Заполняем поле "Город" значением "Дмитров"
* Заполняем поле "Дата отправления" значением "01.01.2025"
* Заполняем поле "Дата возвращения" значением "10.01.2025"
* Нажимаем кнопку "Сохранить и закрыть"
* Проверяем, что отображается ошибка "Список командируемых сотрудников не может быть пустым"