Skip to content

RoyalSpirit/SjcTestFramework

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