Skip to content

A modular and scalable testing framework built using Java, Maven, and Spring Boot for unit and integration testing. Developed as part of an Infosys internship project to ensure maintainable automated tests for Spring Boot applications.

License

Notifications You must be signed in to change notification settings

cbeAbishek/Springboard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

85 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Infosys Springboard Internship (Batch 1) – Automated Testing Framework

A flagship Infosys Springboard internship project delivering end-to-end quality intelligence for modern software teams.


🎯 Overview

Automate UI and API suites, orchestrate schedules, and surface actionable analytics from a single Spring Boot portal. Designed and implemented by Batch 1 interns as a production-ready reference implementation that blends engineering rigor with polished product experience.

Key Highlights

  • ⚑ Accelerate regression cycles by centralizing test authoring, scheduling, execution, and reporting
  • πŸ‘₯ Target users: QA engineers, SDETs, release managers, and delivery leads
  • πŸ› οΈ Tech stack: Java 25, Spring Boot 3.4, Thymeleaf, Selenium WebDriver, MySQL 8.x, Quartz, Spring Async, Docker

πŸ“‘ Table of Contents


πŸ“ Project Structure

Springboard/
β”‚
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ main/
β”‚   β”‚   β”œβ”€β”€ java/
β”‚   β”‚   β”‚   └── com/example/automatedtestingframework/
β”‚   β”‚   β”‚       β”œβ”€β”€ AutomatedTestingFrameworkApplication.java  # Spring Boot main class
β”‚   β”‚   β”‚       β”‚
β”‚   β”‚   β”‚       β”œβ”€β”€ controller/                    # REST & MVC Controllers
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ DashboardController.java   # Dashboard analytics & metrics
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ DemoController.java        # Interactive sandbox endpoints
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ ProfileController.java     # User profile management
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ ProjectSetupController.java # Project configuration
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ ReportController.java      # Test reports & exports
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ SchedulerController.java   # Test scheduling & triggers
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ TestManagementController.java # Test case CRUD operations
β”‚   β”‚   β”‚       β”‚   └── UserController.java        # User authentication & management
β”‚   β”‚   β”‚       β”‚
β”‚   β”‚   β”‚       β”œβ”€β”€ service/                       # Business Logic Layer
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ ActionTemplateService.java # Test action templates
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ ApiTestExecutor.java       # REST API test execution engine
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ UiTestExecutor.java        # Selenium WebDriver executor
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ EndpointAnalysisService.java # API endpoint discovery
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ MailService.java           # Brevo email integration
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ NotificationService.java   # Multi-channel notifications
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ ReportingService.java      # Test result aggregation
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ ReportExportService.java   # CSV/Excel/PDF exports
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ ReportStorageService.java  # Report persistence
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ SchedulingService.java     # Quartz job orchestration
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ ScreenshotService.java     # ImageKit screenshot storage
β”‚   β”‚   β”‚       β”‚   └── dto/                       # Service DTOs
β”‚   β”‚   β”‚       β”‚       └── ReportAnalytics.java   # Analytics data model
β”‚   β”‚   β”‚       β”‚
β”‚   β”‚   β”‚       β”œβ”€β”€ model/                         # Domain Entities (JPA)
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ EndpointAnalysisResult.java # API analysis results
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ EndpointAnalysisStatus.java # Analysis status enum
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ GeneratedActionFile.java   # Auto-generated test files
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ GeneratedReport.java       # Report metadata
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ Project.java               # Test project entity
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ Report.java                # Test execution report
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ SchedulerFrequency.java    # Cron frequency enum
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ SchedulerJob.java          # Scheduled job entity
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ TestCase.java              # Test case definition
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ TestCaseType.java          # API/UI type enum
β”‚   β”‚   β”‚       β”‚   └── User.java                  # User account entity
β”‚   β”‚   β”‚       β”‚
β”‚   β”‚   β”‚       β”œβ”€β”€ repository/                    # Data Access Layer (Spring Data JPA)
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ EndpointAnalysisResultRepository.java
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ GeneratedActionFileRepository.java
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ GeneratedReportRepository.java
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ ProjectRepository.java
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ ReportRepository.java
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ SchedulerJobRepository.java
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ TestCaseRepository.java
β”‚   β”‚   β”‚       β”‚   └── UserRepository.java
β”‚   β”‚   β”‚       β”‚
β”‚   β”‚   β”‚       β”œβ”€β”€ security/                      # Authentication & Authorization
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ AuthenticatedUser.java     # Security context user
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ ClerkAuthenticationFilter.java # Clerk.dev JWT filter
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ ClerkTokenVerifier.java    # Token validation
β”‚   β”‚   β”‚       β”‚   └── ClerkUserSynchronizer.java # User sync with Clerk
β”‚   β”‚   β”‚       β”‚
β”‚   β”‚   β”‚       β”œβ”€β”€ config/                        # Spring Configuration
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ AsyncConfig.java           # Async thread pool setup
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ ClerkProperties.java       # Clerk configuration properties
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ DevToolsConfig.java        # Selenium DevTools config
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ ImageKitConfig.java        # ImageKit CDN properties
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ ImageKitConfiguration.java # ImageKit bean setup
β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ SecurityConfig.java        # Spring Security configuration
β”‚   β”‚   β”‚       β”‚   └── WebConfig.java             # MVC & CORS configuration
β”‚   β”‚   β”‚       β”‚
β”‚   β”‚   β”‚       β”œβ”€β”€ analysis/                      # Endpoint Analysis Module
β”‚   β”‚   β”‚       β”‚   └── EndpointAnalysisPayload.java # Analysis request payload
β”‚   β”‚   β”‚       β”‚
β”‚   β”‚   β”‚       └── util/                          # Utilities
β”‚   β”‚   β”‚           └── JsonParserUtil.java        # JSON parsing helpers
β”‚   β”‚   β”‚
β”‚   β”‚   └── resources/
β”‚   β”‚       β”œβ”€β”€ application.properties             # Main configuration file
β”‚   β”‚       β”œβ”€β”€ config.properties                  # Additional config
β”‚   β”‚       β”œβ”€β”€ schema.sql                         # Database schema DDL
β”‚   β”‚       β”‚
β”‚   β”‚       β”œβ”€β”€ static/                            # Static Web Assets
β”‚   β”‚       β”‚   β”œβ”€β”€ css/                           # Stylesheets
β”‚   β”‚       β”‚   β”œβ”€β”€ js/                            # JavaScript files
β”‚   β”‚       β”‚   └── images/                        # Images & icons
β”‚   β”‚       β”‚
β”‚   β”‚       β”œβ”€β”€ templates/                         # Thymeleaf HTML Templates
β”‚   β”‚       β”‚   β”œβ”€β”€ dashboard.html                 # Main dashboard view
β”‚   β”‚       β”‚   β”œβ”€β”€ demo/                          # Demo sandbox pages
β”‚   β”‚       β”‚   β”œβ”€β”€ documentation.html             # API documentation
β”‚   β”‚       β”‚   β”œβ”€β”€ fragments/                     # Reusable UI fragments
β”‚   β”‚       β”‚   β”œβ”€β”€ landing.html                   # Landing page
β”‚   β”‚       β”‚   β”œβ”€β”€ login.html                     # Login page
β”‚   β”‚       β”‚   β”œβ”€β”€ profile.html                   # User profile
β”‚   β”‚       β”‚   β”œβ”€β”€ project-setup.html             # Project setup wizard
β”‚   β”‚       β”‚   β”œβ”€β”€ register.html                  # Registration page
β”‚   β”‚       β”‚   β”œβ”€β”€ regression-monitoring.html     # Regression trends
β”‚   β”‚       β”‚   β”œβ”€β”€ reports.html                   # Test reports viewer
β”‚   β”‚       β”‚   β”œβ”€β”€ scheduler.html                 # Test scheduler UI
β”‚   β”‚       β”‚   β”œβ”€β”€ signin.html                    # Sign-in page
β”‚   β”‚       β”‚   └── test-management.html           # Test case management
β”‚   β”‚       β”‚
β”‚   β”‚       β”œβ”€β”€ github-actions/                    # CI/CD workflows stored as resources
β”‚   β”‚       └── META-INF/                          # Maven metadata
β”‚   β”‚
β”‚   └── test/
β”‚       β”œβ”€β”€ java/
β”‚       β”‚   └── com/example/automatedtestingframework/
β”‚       β”‚       └── service/                       # Service Layer Tests
β”‚       β”‚           β”œβ”€β”€ ReportingServiceTest.java  # Reporting service unit tests
β”‚       β”‚           └── ReportExportServiceTest.java # Export service unit tests
β”‚       β”‚
β”‚       └── resources/                             # Test resources & fixtures
β”‚
β”œβ”€β”€ artifacts/                                     # Test Execution Artifacts (Generated)
β”‚   β”œβ”€β”€ api/                                       # API test results (JSON)
β”‚   β”‚   β”œβ”€β”€ testCreateComment_*.json               # Comment creation results
β”‚   β”‚   β”œβ”€β”€ testCreatePost_*.json                  # Post creation results
β”‚   β”‚   β”œβ”€β”€ testDeletePost_*.json                  # Delete operation results
β”‚   β”‚   β”œβ”€β”€ testGetAllPosts_*.json                 # GET all posts results
β”‚   β”‚   β”œβ”€β”€ testGetAllUsers_*.json                 # GET all users results
β”‚   β”‚   β”œβ”€β”€ testGetCommentsForPost_*.json          # Comment retrieval results
β”‚   β”‚   β”œβ”€β”€ testGetSinglePost_*.json               # Single post results
β”‚   β”‚   β”œβ”€β”€ testGetSingleUser_*.json               # Single user results
β”‚   β”‚   β”œβ”€β”€ testPatchPost_*.json                   # PATCH operation results
β”‚   β”‚   └── testUpdatePost_*.json                  # PUT operation results
β”‚   β”‚
β”‚   β”œβ”€β”€ reports/                                   # Generated Test Reports
β”‚   β”‚   β”œβ”€β”€ CSV_Report_*.csv                       # CSV format reports
β”‚   β”‚   β”œβ”€β”€ Excel_Report_*.xlsx                    # Excel format reports
β”‚   β”‚   └── TestReport_*.html                      # HTML format reports
β”‚   β”‚
β”‚   └── screenshots/                               # UI Test Screenshots
β”‚       └── test*_FAILED_*.png                     # Failure evidence screenshots
β”‚
β”œβ”€β”€ database/                                      # Database Scripts (Currently empty)
β”‚
β”œβ”€β”€ integration/
β”‚   └── github-actions/                            # GitHub Actions CI/CD
β”‚       β”œβ”€β”€ README.md                              # CI/CD documentation
β”‚       └── automation-trigger.yml                 # Workflow definition
β”‚
β”œβ”€β”€ target/                                        # Maven Build Output (Generated)
β”‚   β”œβ”€β”€ automated-testing-framework-1.0.0.jar      # Executable JAR
β”‚   β”œβ”€β”€ classes/                                   # Compiled main classes
β”‚   β”œβ”€β”€ test-classes/                              # Compiled test classes
β”‚   β”œβ”€β”€ generated-sources/                         # Auto-generated sources
β”‚   β”œβ”€β”€ generated-test-sources/                    # Auto-generated test sources
β”‚   β”œβ”€β”€ maven-archiver/                            # Maven packaging metadata
β”‚   └── maven-status/                              # Maven build status
β”‚
β”œβ”€β”€ pom.xml                                        # Maven project configuration
β”œβ”€β”€ Dockerfile                                     # Docker container definition
β”œβ”€β”€ README.md                                      # Project documentation (this file)
β”œβ”€β”€ LICENSE                                        # MIT License
└── app.log                                        # Application runtime logs

πŸ“‚ Directory Breakdown

Core Application (src/main/java)

  • controller/: MVC controllers handling HTTP requests, serving Thymeleaf templates, and exposing REST APIs
  • service/: Business logic including test execution engines (API/UI), scheduling, reporting, and notifications
  • model/: JPA entities representing database tables (projects, test cases, reports, users, scheduler jobs)
  • repository/: Spring Data JPA repositories for database operations
  • security/: Clerk.dev authentication integration with JWT token verification
  • config/: Spring Boot configuration classes for async execution, security, WebDriver, and third-party integrations
  • analysis/: API endpoint analysis and auto-generation modules
  • util/: Helper utilities for JSON parsing and common operations

Frontend (src/main/resources)

  • templates/: Thymeleaf HTML templates with server-side rendering
  • static/: CSS, JavaScript, and image assets for the web UI
  • application.properties: Database connections, API keys, and runtime configuration

Test Suite (src/test/java)

  • Unit tests for service layer components
  • Integration tests for end-to-end workflows
  • Test fixtures and mock data

Generated Artifacts (artifacts/)

  • api/: JSON payloads from API test executions (timestamped)
  • reports/: Multi-format test reports (CSV, Excel, HTML)
  • screenshots/: Captured screenshots from failed UI tests for debugging

CI/CD (integration/github-actions)

  • GitHub Actions workflow for automated testing and deployment
  • Trigger configurations for scheduled and event-based executions

πŸ—οΈ Technology Stack by Layer

Layer Technologies
Frontend Thymeleaf, HTML5, CSS3, JavaScript, Bootstrap
Backend Spring Boot 3.4, Spring MVC, Spring Security, Spring Data JPA
Testing Selenium WebDriver 4.25, REST Assured, JUnit 5
Scheduling Quartz Scheduler, Spring Async
Database MySQL 8.x, HikariCP connection pool
Authentication Clerk.dev (JWT-based)
Storage ImageKit CDN (screenshots), Local filesystem fallback
Notifications Brevo (formerly Sendinblue) email API
Build Maven 3.9+, Java 23
Deployment Docker, Render.com (live demo)

πŸ“– Project Narrative

Infosys Springboard's inaugural internship batch was challenged to create a platform that could:

  • βœ… Unify fragmented automation efforts across API and UI suites
  • πŸ“Š Offer management-level visibility with dashboards that highlight reliability, trendline regressions, and execution SLAs
  • πŸš€ Scale with enterprise constraints, including nightly schedules, multi-project ownership, and rigorous access control

The result is a modular framework that turns JSON definitions into executable suites, streams results to analytics, and closes the loop with notifications and exports.


🎨 Product Capabilities

πŸ”§ Module ✨ Highlights πŸ’Ž Value Delivered
Test Authoring JSON-based DSL, bulk import, version snapshots Rapid test onboarding without IDE dependency
Execution Engine Parallel runners, Selenium WebDriver integration, API clients Reduced runtime and consistent environment setup
Scheduler Cron-like planner, manual triggers, run history Predictable daily/weekly/monthly cadences
Reporting & Analytics Trend charts, failure clustering, export to CSV/PDF Insightful retrospectives for QA and leadership
Notifications Brevo email integration, custom webhooks Immediate stakeholder updates on regressions
Asset Management ImageKit-backed screenshot storage, local fallback Rich evidence for debugging UI failures

πŸ”„ Signature Functional Flows

  1. Regression Planning: Upload suites β†’ configure cadence β†’ receive deep-dive analytics each morning
  2. Release Readiness: Execute gating suite on demand β†’ instantly export annotated report for sign-off
  3. Incident Triage: Use dashboard filters β†’ inspect failure artifacts β†’ re-run impacted suites directly from UI

πŸ—οΈ Architecture Overview

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Web UI (Thymeleaf)  │◀──────▢│  REST Controllers    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β–²β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β–²β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚                              β”‚
          β”‚                      β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
          β”‚                      β”‚  Service Layer  β”‚
          β”‚                      β”‚  (Spring Boot)  β”‚
          β”‚                      β””β”€β”€β”€β”€β”€β”€β”€β–²β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚                              β”‚
          β”‚                      β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
          β”‚                      β”‚  Scheduler &    β”‚
          β”‚                      β”‚  Async Workers  β”‚
          β”‚                      β””β”€β”€β”€β”€β”€β”€β”€β–²β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚                              β”‚
          β–Ό                      β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚ Selenium Runner β”‚
β”‚  MySQL 8 Persistence β”‚         β”‚ + API Client    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β–²β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                          β”‚
                                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                                  β”‚  Reporting &    β”‚
                                  β”‚  Export Engine  β”‚
                                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ” Core Principles

  • Security: Spring Security-driven authentication, encrypted secrets for third-party APIs
  • Scalability: Quartz job store, asynchronous execution pools, Docker packaging for containerized deployments
  • Extensibility: Modular service abstractions allow plugging in new notification channels or storage providers

🌟 Experience the Platform

πŸš€ Try It Now

Launch Demo Interactive Sandbox

πŸ“Œ UI Design Cues: Inspired by enterprise observability dashboardsβ€”high-contrast dark mode, strong typographic hierarchy, and call-to-action emphasis for quick navigation between operations, analytics, and scheduling.


πŸš€ Getting Started for Developers

Prerequisites

  • β˜• JDK 23+
  • πŸ“¦ Maven 3.9+
  • πŸ—„οΈ MySQL 8.x or compatible service
  • 🐳 Optional: Docker (for container build)

Quick Start

# 1. Copy configuration template
cp src/main/resources/application.properties.example src/main/resources/application.properties

# 2. Configure your environment
# Edit application.properties with database credentials, Brevo keys, and ImageKit configuration

# 3. Run the application
mvn spring-boot:run

Visit http://localhost:8080 and bootstrap your account. A starter project with sample suites is provisioned automatically.

πŸ’‘ Chromium Compatibility Tip

If Chrome/Chromium introduces a DevTools mismatch, align Selenium's DevTools artifact:

mvn -Dselenium.devtools.artifact=selenium-devtools-v140 spring-boot:run

Replace selenium-devtools-v140 with the artifact that matches your browser build.


πŸ“ Test Authoring Handbook

API Example

{
  "requests": [
    {
      "name": "Health check",
      "method": "GET",
      "url": "https://api.example.com/health",
      "expectedStatus": 200,
      "expectContains": ["ok"]
    }
  ]
}

UI Example

{
  "steps": [
    {"action": "navigate", "url": "http://localhost:8080/demo/login"},
    {"action": "type", "by": "css", "selector": "#email", "text": "user@example.com"},
    {"action": "type", "by": "css", "selector": "#password", "text": "SuperSecret123"},
    {"action": "click", "by": "css", "selector": "button[type=submit]"},
    {"action": "assertTitle", "value": "Automation Demo Login"}
  ]
}

Bulk Import Format

{
  "tests": [
    {
      "name": "Smoke API",
      "type": "API",
      "definition": {
        "requests": [ { "name": "Ping", "method": "GET", "url": "https://httpbin.org/get" } ]
      }
    },
    {
      "name": "Smoke UI",
      "type": "UI",
      "definition": {
        "steps": [
          { "action": "navigate", "url": "http://localhost:8080/demo/login" },
          { "action": "assertTitle", "value": "Automation Demo Login" }
        ]
      }
    }
  ]
}

πŸ“₯ Download Ready-Made Import Bundles

πŸ“¦ Suite πŸ“‹ Description ⬇️ Download
UI Sample Pack Complete end-to-end BlazeDemo booking scenarios showcasing waits, assertions, and form fills. Download UI JSON
API Sample Pack HTTPBin-powered CRUD collection covering auth headers, redirects, and status assertions. Download API JSON

πŸ”„ Continuous Delivery Automation

.github/workflows/ci-tests.yml keeps the project healthy by running on every push, daily at 06:00 UTC, and on manual dispatch:

name: Java Test Suite

on:
  push:
    branches:
      - '**'
  schedule:
    - cron: '0 6 * * *'
  workflow_dispatch:

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-java@v4
        with:
          distribution: temurin
          java-version: '23'
          cache: maven
      - run: mvn -B test
      - name: Publish README summary
        run: |
          {
            echo "## Project README"
            echo ""
            cat README.md
          } >> "$GITHUB_STEP_SUMMARY"

Every run publishes the README into the workflow summary, giving stakeholders instant access to the latest documentation alongside build results.


πŸ—ΊοΈ Public Endpoints & Navigation Map

πŸ”— Route πŸ“‘ Method(s) πŸ“„ Description
/ GET Landing page with single-click access to sign in or explore the product narrative.
/demo/login GET Lightweight sandbox UI demonstrating the built-in test selectors.
/dashboard GET Authenticated workspace summarizing active projects and quality trends.
/test-management GET/POST Manage, import, and execute JSON-defined suites.
/scheduler GET/POST Configure cron-like jobs and trigger runs on demand.
/reports GET/POST Analyze regression history, export filtered datasets.
/api/run/project/{projectId} POST Fire-and-forget endpoint for CI/CD tools to trigger full project executions (expects optional X-AUTOMATION-TOKEN header).

🐳 Operations & Deployment

Docker Workflow

# Build the Docker image
docker build -t automation-platform .

# Run the container
docker run -p 8080:8080 automation-platform

Testing Locally

mvn -B test

Unit tests currently cover the reporting and export services. Expanding coverage to the scheduling engine and notification adapters is planned.


πŸ—“οΈ Roadmap & Internship Reflections

Near-Term Enhancements

  • πŸ” OAuth2 SSO for enterprise rollout
  • πŸ“Š Advanced analytics (flaky test detection, failure clustering)
  • πŸ”— Jira/ServiceNow connectors for automated defect logging

Lessons from Batch 1

  • βœ… Early alignment on data contracts simplified UI/Backend collaboration
  • ⚑ Scheduled load tests were key to sizing thread pools and database connections
  • πŸ“š Automating documentation (README summaries in CI) keeps stakeholders informed without manual effort

πŸ’‘ Interested in extending the framework? Submit a pull request or open a discussionβ€”Batch 1 will happily guide the next wave of interns!


πŸ‘₯ Contributors

Made with ❀️ by Infosys Springboard Batch 1 Interns

⭐ Star this repo β€’ πŸ› Report Issues β€’ 🀝 Contribute


Β© 2024 Infosys Springboard | Built with passion and precision

About

A modular and scalable testing framework built using Java, Maven, and Spring Boot for unit and integration testing. Developed as part of an Infosys internship project to ensure maintainable automated tests for Spring Boot applications.

Topics

Resources

License

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •