{"id":28550701,"url":"https://github.com/dropbox/hypershard-android","last_synced_at":"2026-01-11T17:48:24.574Z","repository":{"id":35821018,"uuid":"186903586","full_name":"dropbox/hypershard-android","owner":"dropbox","description":"CLI tool for collecting tests","archived":false,"fork":false,"pushed_at":"2024-02-12T19:56:36.000Z","size":1517,"stargazers_count":85,"open_issues_count":4,"forks_count":12,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-08-22T13:58:04.049Z","etag":null,"topics":["android","java","kotlin","kotlin-library"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dropbox.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2019-05-15T21:13:59.000Z","updated_at":"2025-04-21T16:10:07.000Z","dependencies_parsed_at":"2025-07-22T10:27:55.757Z","dependency_job_id":"e686a364-921b-4848-96f8-fb419628cf08","html_url":"https://github.com/dropbox/hypershard-android","commit_stats":null,"previous_names":["dropbox/hypershard"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/dropbox/hypershard-android","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dropbox%2Fhypershard-android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dropbox%2Fhypershard-android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dropbox%2Fhypershard-android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dropbox%2Fhypershard-android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dropbox","download_url":"https://codeload.github.com/dropbox/hypershard-android/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dropbox%2Fhypershard-android/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000774,"owners_count":26082911,"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-10-09T02:00:07.460Z","response_time":59,"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":["android","java","kotlin","kotlin-library"],"created_at":"2025-06-10T03:10:05.633Z","updated_at":"2025-10-09T03:08:32.682Z","avatar_url":"https://github.com/dropbox.png","language":"Kotlin","readme":"![Build, Test and Lint](https://github.com/dropbox/hypershard-android/workflows/Build,%20Test%20and%20Lint/badge.svg)\n\n# About\nA fast and easy CLI tool that leverages AST (Abstract Syntax Tree) to parse test files for the purposes of test collection.\n\nApps that have a significant number of UI tests – like Paper or Dropbox apps – need to be sharded to run efficiently on CI. Unfortunately, UI test sharding generally requires you to build the entire application. Hypershard removes this first build by performing analysis of the Abstract Syntax Tree to output the list of all available tests.\n\nAt Dropbox, we run Android UI tests separately from JVM tests. Using historical data, we shard our UI tests such that each shard is balanced e.g. each shard ends approximately at the same time.\n\nWe do this by running tests using [ADB Instrumentation test options](https://developer.android.com/reference/android/support/test/runner/AndroidJUnitRunner) `-e testFile` where each shard has its own list of tests.\n\n# Download\nThe `all` jar is executable and can be downloaded from [Maven Central](https://search.maven.org/search?q=g:com.dropbox.mobile.hypershard)\n\nSnapshots of the development version are available in [Sonatype's `snapshots` repository](https://oss.sonatype.org/content/repositories/snapshots/).\n\nAnother use case could be to use Hypershard as a dependency in your project\n\n```groovy\nimplementation 'com.dropbox.mobile.hypershard:hypershard:1.1.3'\n```\n\n\n# Usage\n```\njava -jar hypershard-1.1.3-all.jar --help\n```\n\nHere's an [example Python script](example/run_hypershard.py) that uses Hypershard as a CLI tool.\n\n# Building\nThis command will build the jar with dependencies\n```\n./gradlew install\n```\n\n# Testing\n```\n./gradlew check\n```\n\n# Contributing\nThis is a standalone gradle project, you can open this project to start contributing\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdropbox%2Fhypershard-android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdropbox%2Fhypershard-android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdropbox%2Fhypershard-android/lists"}