A fast, platform-independent test runner for Android and iOS that optimizes for execution speed and stability.
Marathon is a cross-platform test runner that executes tests for Android and iOS applications with a focus on speed and reliability. It addresses flakiness in tests and environments through strategies like preventive retries, test sorting, and sharding, optimizing the balance between performance and stability. The tool provides platform-specific configurations and supports custom hardware farms via its API.
Mobile developers and QA engineers working on Android and iOS applications who need efficient, reliable test execution in CI/CD pipelines. It's particularly useful for teams dealing with flaky tests or large test suites requiring parallel execution.
Developers choose Marathon for its fine-grained control over test execution stability and performance, reducing test run times while managing flakiness. Its platform-independent design and support for custom hardware farms offer flexibility beyond standard cloud testing services.
Cross-platform test runner
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements test batching, sharding, and sorting to reduce execution time, prioritizing longer tests to minimize retry impact, as described in the performance overview.
Uses preventive retries based on real-time statistics and post-factum retries with quotas to handle flaky tests effectively, addressing environment and test instability.
Provides easy-to-use configurations for Android and iOS via Marathonfile, and an API for custom hardware farms, enabling flexible test execution across platforms.
Allows teams to balance stability, performance, and cost through customizable configurations, aligning with its philosophy of optimizing testing workflows.
Requires manual provision of simulator UDIDs or profiles via a Marathondevices file, which can be tedious and error-prone, especially for dynamic environments.
Requires JRE 17 or higher, adding an extra layer of infrastructure management for teams not already using Java in their stack.
Focused solely on Android and iOS, so it lacks built-in support for other application types like web or desktop, limiting its versatility.