{"id":15069792,"url":"https://github.com/nagyesta/abort-mission","last_synced_at":"2026-03-05T21:15:23.685Z","repository":{"id":37848231,"uuid":"307193825","full_name":"nagyesta/abort-mission","owner":"nagyesta","description":"A lightweight Java library providing flexible test abortion support for test groups to allow fast failures.","archived":false,"fork":false,"pushed_at":"2025-08-05T04:53:28.000Z","size":11635,"stargazers_count":8,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-05T06:24:37.374Z","etag":null,"topics":["java","junit","junit-jupiter","junit4","junit5","lightweight-java-library","testing-tools","testng"],"latest_commit_sha":null,"homepage":"","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/nagyesta.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-10-25T21:13:58.000Z","updated_at":"2025-08-05T04:53:31.000Z","dependencies_parsed_at":"2023-10-14T03:16:35.646Z","dependency_job_id":"25d14d9e-d693-4759-bc7c-deb9945a4b4c","html_url":"https://github.com/nagyesta/abort-mission","commit_stats":null,"previous_names":[],"tags_count":108,"template":false,"template_full_name":null,"purl":"pkg:github/nagyesta/abort-mission","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nagyesta%2Fabort-mission","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nagyesta%2Fabort-mission/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nagyesta%2Fabort-mission/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nagyesta%2Fabort-mission/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nagyesta","download_url":"https://codeload.github.com/nagyesta/abort-mission/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nagyesta%2Fabort-mission/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268851101,"owners_count":24317319,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-05T02:00:12.334Z","response_time":2576,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["java","junit","junit-jupiter","junit4","junit5","lightweight-java-library","testing-tools","testng"],"created_at":"2024-09-25T01:44:43.754Z","updated_at":"2026-02-08T23:18:51.136Z","avatar_url":"https://github.com/nagyesta.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Abort-Mission](.github/assets/Abort-Mission-logo_export_transparent_640.png)\n\n[![GitHub license](https://img.shields.io/github/license/nagyesta/abort-mission?color=informational)](https://raw.githubusercontent.com/nagyesta/abort-mission/main/LICENSE)\n[![Java version](https://img.shields.io/badge/Java%20version-17-yellow?logo=java)](https://img.shields.io/badge/Java%20version-17-yellow?logo=java)\n[![latest-release](https://img.shields.io/github/v/tag/nagyesta/abort-mission?color=blue\u0026logo=git\u0026label=releases\u0026sort=semver)](https://github.com/nagyesta/abort-mission/releases)\n[![Maven Central](https://img.shields.io/maven-central/v/com.github.nagyesta.abort-mission/abort.mission-control?logo=apache-maven)](https://search.maven.org/search?q=com.github.nagyesta.abort-mission)\n[![JavaCI](https://img.shields.io/github/actions/workflow/status/nagyesta/abort-mission/gradle.yml?logo=github\u0026branch=main)](https://github.com/nagyesta/abort-mission/actions/workflows/gradle.yml)\n\n[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6017/badge)](https://bestpractices.coreinfrastructure.org/projects/6017)\n[![Sonar Coverage](https://img.shields.io/sonar/coverage/nagyesta_abort-mission?server=https%3A%2F%2Fsonarcloud.io\u0026logo=sonarcloud\u0026logoColor=white)](https://sonarcloud.io/summary/new_code?id=nagyesta_abort-mission)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=nagyesta_abort-mission\u0026metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=nagyesta_abort-mission)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=nagyesta_abort-mission\u0026metric=security_rating)](https://sonarcloud.io/summary/new_code?id=nagyesta_abort-mission)\n[![last_commit](https://img.shields.io/github/last-commit/nagyesta/abort-mission?logo=git)](https://img.shields.io/github/last-commit/nagyesta/abort-mission?logo=git)\n[![wiki](https://img.shields.io/badge/See-Wiki-informational)](https://github.com/nagyesta/abort-mission/wiki)\n\nAbort-Mission is a lightweight Java library providing flexible test abortion support for test groups to allow fast failures.\n\n## What does this mean?\n\n- Provides a way to group your tests\n- Lets you define certain pre-requisites for your tests\n- Tracks how each group succeeds or fails\n- Uses the collected data to prevent test runs which are predicted to fail already\n\n## Why is this good for you?\n\nIf you are using Abort-Mission well, you don't need to wait for long CI runs when you know which tests will fail already\nbecause the DB became inaccessible or someone (not you) messed up...\nSaving time on CI and local test runs adds up in small increments not only saving money but reducing the time and resources\nused for build. This results in using less cloud runners, reducing electricity needs etc. by the end of the day we can help\nsave the Planet too! Cool, right?\n\nIf you are still not convinced, you can trust the ancient proverb saying:\n\n\u003e [!TIP]\n\u003e \"Shoot for the Moon, and even if you miss, you can at least stop running your failing tests early.\"\n\n## Installation\n\nAbort-Mission can be downloaded from a few Maven repositories. Please head to\n[this page](https://github.com/nagyesta/abort-mission/wiki/Configuring-our-repository-for-your-build-system)\nto find out more.\n\nTo find out which Abort-Mission dependency will you need, it is recommended to start with the booster created for the\ntest framework you are using. Is your favorite framework missing? Let me know by creating an issue! No promises, but I\nwill at least take a look.\n\n### Currently supported packages\n\n- [Mission Control](mission-control)\n- Boosters\n    - [Cucumber JVM](boosters/booster-cucumber-jvm)\n    - [JUnit 4](boosters/booster-junit4)\n    - [JUnit Jupiter](boosters/booster-junit-jupiter)\n    - [TestNG](boosters/booster-testng)\n    - [Booster Test Kit](boosters/testkit)\n- Mission Report\n    - [Flight Evaluation Report](mission-report/flight-evaluation-report)\n- Strongback (All modules removed in 4.1.x)\n    - Strongback functionality is completely removed in 4.1.x release as Strongbacks were very slow and hard to maintain.\n\n## Terminology and Lifecycle\n\nAbort-Mission views tests runs similarly to a space launch mission. Due to this, terminology mimics\ncertain phases of a rocket launch. This section can help you understand what happens when.\n\n### Health metrics\n\nEach test offers a slightly different situation, but the following list will cover all counters we\nwill rely on when using Abort-Mission.\n\n| Measurement point | What happens there?                       |\n| ----------------- | ----------------------------------------- |\n| Countdown failed  | Test instance post processing failed      |\n| Countdown abort   | Test instance post processing prevented   |\n| Countdown success | Test instance post processed successfully |\n| Mission abort     | Test start prevented / abort after start  |\n| Mission failed    | Test failed                               |\n| Mission success   | Test executed successfully                |\n\n## How it works\n\nThe oversimplified model used by this project relies on the following elements:\n\n- A **Mission Outline** defining what Abort-Mission should do in which situation in scope of the **Mission Context**\n- A number of **Mission Health Check Matchers** which allow the library to identify which category the test class belongs to\n- A similar amount of **Mission Health Check Evaluators** which define thresholds for the decision-making\n- A bunch of annotations to help with the configuration such as\n    - Defining which of the named Mission Contexts do we want to use\n    - Allowing suppression of abort decisions for certain tests\n    - Ignoring certain exceptions that are causing failures\n\nFrom all of these, sooner or later you will need to have a Launch Sequence Template that will act as a controller\nwhich knows how your specific test framework needs to bind with the lifecycle stages we need to maintain. This\nis probably the hardest part to pull off, don't worry, if you are using a booster that was created for your\ntest framework, it should be easy, the booster will do the heavy-lifting (after all that is the job of a booster).\n\nOnce you have these, you are probably fine.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnagyesta%2Fabort-mission","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnagyesta%2Fabort-mission","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnagyesta%2Fabort-mission/lists"}