Skip to content

RoyalSpirit/SjcTestFramework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SJC Test Framework

Java Gradle Selenide Cucumber Allure

SJC Test Framework (Simple Java Cucumber-based Test Framework) is a Java-based test automation framework built around Cucumber, Selenide, JUnit Platform, and Allure.

The current implementation focuses on readable browser-based UI scenarios, while the framework name and structure leave room for extending the same BDD approach to other test layers.


English Version | Русская версия


English Version

Purpose

This repository is an evolving test automation framework for writing readable BDD scenarios.

SauceDemo is used as the example UI target because it is a public practice resource commonly used for UI test automation scenarios.

Architecture Idea

The framework is built around a simple idea: feature files should describe user behavior in readable language, while page objects and annotations hide technical UI implementation details.

For the current UI layer, the main flow is:

Feature step -> Step definition -> Action executor -> Page object -> Selenide element

DSL Example

Scenario: Successful login
  * user is on page "Page Swag Labs"
  * user (fills field) "Username" with value "standard_user"
  * user (fills field) "Password" with value "secret_sauce"
  * user (press button) "Login"
  * user is on page "Products"

Features

  • Cucumber feature files with readable test steps.
  • Page Object structure for UI pages.
  • Annotation-based page, action, and element registration.
  • Shared actions for common UI operations: filling fields, clicking elements, checking lists, checking text values.
  • Selenide-based browser interaction and waits.
  • Allure integration with screenshots attached on failed scenarios.
  • Configurable browser settings via config.properties and -D system properties.
  • No local WebDriver binary is required by default.

Technologies

  • Language: Java 21
  • Build System: Gradle 8
  • Test Runner: JUnit Platform
  • BDD: Cucumber JVM
  • UI Automation: Selenide / Selenium WebDriver
  • Reporting: Allure
  • Logging: Logback

Project Structure

src/test/java/io/github/royalspirit/sjctestframework/
├── RunCucumberTest.java                # Cucumber suite entry point
├── core/
│   ├── annotations/                    # Framework annotations
│   ├── stepdefs/                       # Cucumber step definitions
│   ├── Setup.java                      # Browser and scenario hooks
│   ├── FrameworkPage.java              # Base page action executor
│   ├── PageContextRegistry.java        # Current page and page object registry
│   ├── ElementsObjectRegistry.java     # Element title registry
│   └── FrameworkRegistryValidator.java # Startup validation for framework annotations
└── pages/                              # Page objects and common page actions

src/test/resources/
├── features/                           # Cucumber feature files
├── configuration/config.properties     # Test execution configuration
├── junit-platform.properties           # Cucumber/JUnit configuration
├── allure.properties                   # Allure results configuration
└── logback.xml                         # Logging configuration

Build and Run

Requirements

  • JDK 21+
  • Gradle wrapper from this repository
  • Chrome or Firefox installed locally

Run all tests

./gradlew test

Run in headless mode

./gradlew test -Dbrowser.headless=true

Run a specific tagged scenario

./gradlew test -Dcucumber.filter.tags=@TEST-003

Run with a different browser

./gradlew test -Dbrowser.name=firefox

Configuration

Default configuration is stored in:

src/test/resources/configuration/config.properties

Supported properties:

starting.url=https://www.saucedemo.com
browser.name=chrome
browser.size=1920x1200
browser.version=null
browser.headless=false
path.to.webdriver=null
logs.color.enabled=true

System properties passed with -D have priority over values from config.properties.

Disable colored console log values:

./gradlew test -Dlogs.color.enabled=false

Allure Report

Test execution writes Allure results to:

build/allure-results

Generate and open the report:

./gradlew allureServe

Русская версия

SJC Test Framework (Simple Java Cucumber-based Test Framework) — фреймворк автоматизации тестирования на Java, построенный на Cucumber, Selenide, JUnit Platform и Allure.

Текущая реализация сфокусирована на читаемых браузерных UI-сценариях, но название и структура фреймворка оставляют пространство для расширения того же BDD-подхода на другие уровни тестирования.

Назначение

Это развивающийся фреймворк автоматизации тестирования для написания читаемых BDD-сценариев.

В качестве UI-ресурса для примеров выбран SauceDemo — публичный тренировочный сайт, который часто используют для отработки сценариев UI-автоматизации.

Архитектурная идея

Фреймворк построен вокруг простой идеи: feature-файлы должны описывать поведение пользователя читаемым языком, а Page Objects и аннотации скрывают технические детали взаимодействия с UI.

Сейчас для UI-тестов цепочка выглядит так:

Feature step -> Step definition -> Action executor -> Page object -> Selenide element

Пример DSL

Сценарий: Успешная авторизация пользователя
  * открывается страница "Page Swag Labs"
  * пользователь (заполняет поле) "Username" значением "standard_user"
  * пользователь (заполняет поле) "Password" значением "secret_sauce"
  * пользователь (нажимает кнопку) "Login"
  * открывается страница "Products"

Возможности

  • Cucumber feature-файлы с читаемыми шагами.
  • Page Object структура для UI-страниц.
  • Регистрация страниц, действий и элементов через аннотации.
  • Общие действия: заполнение полей, клики, проверки списков, проверки текстовых значений.
  • Работа с браузером через Selenide.
  • Интеграция с Allure и прикрепление скриншота при падении сценария.
  • Настройка браузера через config.properties и -D параметры.
  • Локальный WebDriver binary по умолчанию не требуется.

Технологии

  • Java 21
  • Gradle 8
  • JUnit Platform
  • Cucumber JVM
  • Selenide / Selenium WebDriver
  • Allure
  • Logback

Запуск

Требования

  • JDK 21+
  • Gradle wrapper из репозитория
  • Установленный Chrome или Firefox

Запуск всех тестов

./gradlew test

Запуск в headless-режиме

./gradlew test -Dbrowser.headless=true

Запуск конкретного сценария по тегу

./gradlew test -Dcucumber.filter.tags=@TEST-003

Запуск в другом браузере

./gradlew test -Dbrowser.name=firefox

Конфигурация

Основной конфиг находится здесь:

src/test/resources/configuration/config.properties

Значения, переданные через -D, имеют приоритет над значениями из файла.

Отключить цветные значения в консольных логах:

./gradlew test -Dlogs.color.enabled=false

Allure Report

Результаты Allure сохраняются в:

build/allure-results

Сгенерировать и открыть отчет:

./gradlew allureServe

Feedback

If you found a bug or want to suggest an improvement, feel free to create an Issue or Pull Request.

About

A Java-based UI test automation framework built with Cucumber, Selenide, JUnit Platform, and Allure for readable browser-based test scenarios.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors