{"id":29414114,"url":"https://github.com/pragmatech-gmbh/spring-test-profiler","last_synced_at":"2026-02-02T13:16:05.477Z","repository":{"id":288246637,"uuid":"949822344","full_name":"PragmaTech-GmbH/spring-test-profiler","owner":"PragmaTech-GmbH","description":"Profile \u0026 Improve Your Spring Tests ⏱️","archived":false,"fork":false,"pushed_at":"2026-01-23T10:22:37.000Z","size":12550,"stargazers_count":101,"open_issues_count":9,"forks_count":17,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-01-24T02:21:39.323Z","etag":null,"topics":["context-caching","devops","integration-testing","spring-boot","spring-test","spring-test-context","unit-testing"],"latest_commit_sha":null,"homepage":"https://pragmatech.digital/products/spring-test-profiler/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PragmaTech-GmbH.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-17T07:39:24.000Z","updated_at":"2026-01-12T21:58:59.000Z","dependencies_parsed_at":"2025-04-16T13:04:03.791Z","dependency_job_id":"2276a892-bd38-4671-b127-eb4bf3d50cec","html_url":"https://github.com/PragmaTech-GmbH/spring-test-profiler","commit_stats":null,"previous_names":["pragmatech-gmbh/spring-test-insight","pragmatech-gmbh/spring-test-profiler"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/PragmaTech-GmbH/spring-test-profiler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PragmaTech-GmbH%2Fspring-test-profiler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PragmaTech-GmbH%2Fspring-test-profiler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PragmaTech-GmbH%2Fspring-test-profiler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PragmaTech-GmbH%2Fspring-test-profiler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PragmaTech-GmbH","download_url":"https://codeload.github.com/PragmaTech-GmbH/spring-test-profiler/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PragmaTech-GmbH%2Fspring-test-profiler/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28730311,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T10:24:43.181Z","status":"ssl_error","status_checked_at":"2026-01-24T10:24:36.112Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["context-caching","devops","integration-testing","spring-boot","spring-test","spring-test-context","unit-testing"],"created_at":"2025-07-11T12:46:12.713Z","updated_at":"2026-01-24T15:08:34.060Z","avatar_url":"https://github.com/PragmaTech-GmbH.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Profile Your Tests. Speed Up Your Build. Ship Faster 🚤\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/resources/spring-test-profiler-logo-three-256x256.png\" alt=\"Spring Test Profiler Logo\" /\u003e\n\u003c/p\u003e\n\nThe Spring Test Profiler is a Spring Test utility that provides visualization and insights for Spring Test execution, with a focus on Spring context caching.\n\nIt helps you identify optimization opportunities in your Spring Test suite to speed up your builds and ship to production faster and with more confidence.\n\nFind [more information](https://pragmatech.digital/products/spring-test-profiler/) about the profiler on our website.\n\n## Features\n\n**Overall goal**: Identify optimization opportunities in your Spring Test suite to speed up your builds and ship to production faster and with more confidence 🚤\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/spring-test-profiler-report-sample.png\" alt=\"Spring Test Profiler Report\" /\u003e\n\u003c/p\u003e\n\u003cbr/\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/context-comparison.png\" alt=\"Spring Test Profiler Report Context Comparison\" /\u003e\n\u003c/p\u003e\n\nThis profiler helps you:\n\n- Track Spring Test context caching statistics for your test suite\n- Show context reuse metrics and cache hit/miss ratios\n- Identify tests that couldn't reuse contexts and explain why\n- Easy integration with a `spring.factories` file or `@TestExecutionListeners` annotation\n- Works with both Maven Surefire/Failsafe and Gradle test tasks\n\n## Requirements\n\n[![Build \u0026 Test Maven Project (main)](https://github.com/PragmaTech-GmbH/spring-test-profiler/workflows/CI/badge.svg)](https://github.com/PragmaTech-GmbH/spring-test-profiler/actions/workflows/ci.yml?query=branch%3Amain)\n\nThis profiler works with Java 17+ and is compatible with Spring Framework 6 and 7 (aka. Spring Boot 3 and 4).\n\n## Prototype Phase\n\n\u003e [!WARNING]\n\u003e This project is highly work-in-progress and should be considered a prototype to gather feedback and ideas for future development.\n\nWhat's currently not working or missing:\n\n- Support for parallel test execution\n- Fully-fledged visualization of the contexts on a timeline\n- For each Gradle test task, a separate HTML report is generated\n- For Surefire and Failsafe, a separate HTML report is generated\n\n## Usage\n\n[![](https://img.shields.io/badge/Latest%20Version-0.0.15-orange)](/spring-test-profiler-extension/pom.xml)\n\n### 1. Add the Dependency\n\n#### Quick Start Maven\n\nAdd the dependency to your project:\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003edigital.pragmatech.testing\u003c/groupId\u003e\n  \u003cartifactId\u003espring-test-profiler\u003c/artifactId\u003e\n  \u003cversion\u003e0.0.15\u003c/version\u003e\n  \u003cscope\u003etest\u003c/scope\u003e\n\u003c/dependency\u003e\n```\n\n#### Quick Start Gradle\n\nAdd the dependency to your project:\n\n```groovy\ntestImplementation('digital.pragmatech.testing:spring-test-profiler:0.0.15')\n```\n\n\n### 2. Activate the Profiler\n\nPick **either one** of the following methods to activate the profiler in your tests.\n\n#### Automatically for all Your Tests (Recommended)\n\nAdd a file named `META-INF/spring.factories` to your resources directory with the following content:\n\n```text\norg.springframework.test.context.TestExecutionListener=\\\ndigital.pragmatech.testing.SpringTestProfilerListener\norg.springframework.context.ApplicationContextInitializer=\\\ndigital.pragmatech.testing.diagnostic.ContextDiagnosticApplicationInitializer\n```\n\n#### Manually for Specific Tests\n\nAdd the `@TestExecutionListeners` and `@ContextConfiguration` annotations to your test classes:\n\n```java\n@TestExecutionListeners(\n  value = {SpringTestProfilerListener.class},\n  mergeMode = TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS\n)\n@ContextConfiguration(initializers = ContextDiagnosticApplicationInitializer.class)\n```\n\nThis needs to be done for each test class where you want to use the profiler. Preferably, use this on a central abstract integration test class or use the automatic activation method above.\n\n### 3. Run Your Tests\n\nExecute your tests:\n\n```bash\n# Maven\n./mvnw verify\n\n# Gradle\n./gradlew build\n```\n\n### 4. Analyze the Generated Report\n\nAfter test execution, find the HTML report at:\n\n- Maven: `target/spring-test-profiler/latest.html`\n- Gradle: `build/spring-test-profiler/latest.html`\n\n## Demo Report\n\nAccess a demo Spring Test Profiler report [here](https://pragmatech.digital/products/spring-test-profiler/).\n\n## Bug Reports\n\nFound a bug? Please help us improve by reporting it:\n\n1. **Search existing issues** at https://github.com/PragmaTech-GmbH/spring-test-profiler/issues\n2. **Create a new issue** with:\n   - Clear description of the problem\n   - Steps to reproduce\n   - Expected vs actual behavior\n   - Java/Spring/JUnit versions\n   - Relevant log output or screenshots\n\n## Contributing\n\nWe welcome contributions! Here's how to get started:\n\n### Development Setup\n\n1. **Fork and clone** the repository\n2. **Activate pre-commit hooks** (this ensures compliant code formatting): `pre-commit install` ([pre-commit download](https://pre-commit.com/))\n3. **Build the project**:\n\n```bash\n./mvnw install\n```\n\n3. **Run tests**:\n\n```bash\n./mvnw test\n```\n\n4. Use conventional commit messages for your changes (e.g., `feat: add new feature`, `fix: resolve issue #123`)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpragmatech-gmbh%2Fspring-test-profiler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpragmatech-gmbh%2Fspring-test-profiler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpragmatech-gmbh%2Fspring-test-profiler/lists"}