Skip to content

Latest commit

 

History

40 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LaunchRig Ion Wing logo

LaunchRig

The release test rig for Solana Mobile apps.

LaunchRig is a TypeScript CLI prototype for checking an Android app on a physical phone over USB. It validates configuration, checks device and package readiness, runs Maestro scenarios sequentially, and writes HTML, JSON, and JUnit reports.

The current validation scope is ordinary Android with reference MWA and Mock MWA test wallets. The controlled app exercises wallet rejection, stale authorization, and recovery after the dApp process dies. Mainnet is unsupported. Seeker hardware, production wallets, and Seed Vault behavior have not been validated.

Watch the 90-second demo

launchrig-demo-full.mp4

Watch or download the video · Captions and evidence limits

An overview of the published Android and MWA results, including three controlled broken/fixed recovery pairs. Captions carry the explanation; audio contains only subtle transition cues, with no narration or music. This is a walkthrough of self-recorded, unattested evidence, not live phone execution or Seeker validation.

Android Preview

The separate LaunchRig Android Preview is a small informational companion with the Ion Wing icon, a native project-status screen, and the public grant deck. It was installed and checked on one ordinary Android phone. It does not connect a wallet or run LaunchRig tests. The CLI remains the working test tool, and the controlled fixture app remains test input. Only preview source is published here; there is no downloadable APK or Solana dApp Store listing.

Start with the CLI

The product website source and Vercel setup guide are available separately. The website is static and does not require the CLI build or an Android phone.

Use Node.js 20.11 or later and pnpm 10.34.0. From this source checkout:

pnpm install --frozen-lockfile
pnpm build
node dist/src/cli.js --help
node dist/src/cli.js rules --json

These commands need no Android SDK, phone, or emulator. The CLI package has private: true to prevent accidental npm publication. This checkout does not imply an npm release or a hosted APK download.

Development checks also run without a phone:

pnpm check
pnpm test
pnpm package:smoke

pnpm test builds the CLI before running its tests. The fixture app has its own dependencies and tests; install them only when working on that app.

Run on a phone

Physical execution needs Android Platform Tools (adb), Maestro, the configured app and test-wallet APKs, and an unlocked Android phone with USB debugging authorized. The supplied profiles require API 26 or later. Their Maestro path is .launchrig/tools/maestro-2.8.0/maestro/bin/maestro; provide Maestro 2.8.0 there before using the unchanged controlled profiles.

The reference suite downloads pinned upstream test artifacts with size and SHA-256 checks:

pnpm fixtures:fetch
node dist/src/cli.js validate --config launchrig.yml

Connect the phone and accept its USB debugging prompt before running:

node dist/src/cli.js doctor --config launchrig.yml
node dist/src/cli.js run --config launchrig.yml

With multiple devices connected, add --device SERIAL to both commands, using the selected phone's serial from adb devices. Keep device serials out of committed configuration.

The default launchrig.yml uses the upstream reference dApp's fixed testnet configuration. Its authorization, SIWS, message-signing, and rejection scenarios do not require an on-chain transfer. The separate controlled lifecycle app uses devnet with Mock MWA. Mock MWA authentication must be completed by the phone's owner when required.

doctor checks readiness. run can install the configured app and allowlisted test-wallet artifacts, operate their UI, and write local reports. Review the selected config and flow before executing them on your device.

Controlled recovery matrix

The source checkout contains three deliberately broken cases and three corresponding fixed cases. After preparing the exact fixture and Mock MWA artifacts, run:

node dist/src/cli.js matrix

The matrix accepts only the declared sequence of three expected failures and three fixed passes, with matching configuration, flow, and artifact identities. An expected failure remains a failed scenario in its own report. The matrix is a controlled regression check, not evidence of defects in another app.

Fixture APKs are not included or hosted here. A locally rebuilt APK whose size or SHA-256 differs from the tracked qualified identity is a new candidate. It needs separate physical qualification before its identity can replace the declared contract. A successful source build alone does not reproduce a physical result.

Reports and limits

Reports are written under .launchrig/, which is ignored by Git. LaunchRig redacts known identifiers, disables logcat by default, and captures screenshots only on failure in the supplied profiles. Inspect report text and screenshots before sharing them; arbitrary app UI can contain private information.

Android/MWA Ready describes the selected checks for that run. Reports are self-recorded and unattested. They do not certify device identity, production-wallet compatibility, Seed Vault behavior, on-chain transaction success, or Seeker readiness. Real-wallet automation is disabled; mainnet configuration is refused.

The repository includes configuration schemas, a configuration-validation GitHub Action, fixture flows, and additional CLI commands available through --help. See source setup and scope for the supported source workflow.

Recorded local evidence

Read the controlled Android wallet recovery case study for the rejection, stale-authorization, and process-death checks, with source links and evidence limits.

The normalized Android and MWA evidence package contains nine recorded results: three reference-suite passes and three controlled broken/fixed pairs, with 18 scenario checks. Its guide explains how to check file integrity and view the static HTML locally. No phone is needed to inspect the package.

This is self-recorded, unattested supporting evidence. It does not establish production-wallet compatibility, Seeker or Seed Vault behavior, an on-chain transaction, or external adoption. The original v0.1.0 source-preview tag remains unchanged and contains no evidence assets.

License

LaunchRig is provided under the MIT License in LICENSE. The fixture app retains the upstream template notice in apps/fixture-dapp/LICENSE.template.

About

A physical-device release test rig for Solana Mobile apps.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages