Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ A custom webhook is also supported. Telegram forwarding is one possible workflow
app does not depend on Telegram.

**Status:** development preview with notification/SMS capture, a persistent encrypted outbox,
background delivery, automatic retries and a delivery journal. Webhook requests require a Bearer token, stored encrypted on the device. Signed APK release automation is configured; see [Releases](docs/en/releases.md) and [release automation](docs/en/release-automation.md).
background delivery, automatic retries and a delivery journal. Webhook requests require a Bearer token, stored encrypted on the device. Signed APK release automation is configured; see [Releases](docs/en/releases.md) and [release automation](docs/en/release-automation.md), and [release testing](docs/en/release-testing.md).

## Getting started

Expand Down Expand Up @@ -127,7 +127,7 @@ Fastlane's `debug_artifact` lane builds only the debug APK. `checks` runs JVM/Ro
debug/release lint, and builds debug and unsigned release APKs under `app/build/outputs/apk/`.

PR CI has no release signing credentials and does not require an emulator.
For signed APK releases, see [Releases](docs/en/releases.md) and [release automation](docs/en/release-automation.md).
For signed APK releases, see [Releases](docs/en/releases.md) and [release automation](docs/en/release-automation.md), and [release testing](docs/en/release-testing.md).
Store graphics and their provenance are documented in [Branding](assets/branding/README.md).

See the [project context](docs/en/project-context.md) for remaining product decisions.
Expand Down
2 changes: 2 additions & 0 deletions docs/en/release-automation.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ Run workflow**, choose `main` and enter a new version without `v`. This authoriz
squash merge after full CI, and a tag on the verified merged commit. **Release Android artifacts**
then signs and publishes the APK. Merging the implementation does not itself release a version.

This flow does not replace [device release acceptance](release-testing.md).

## One-time manual setup

In [Settings → Secrets and variables → Actions](https://github.com/andre487/AndroidMessage487/settings/secrets/actions), add:
Expand Down
228 changes: 228 additions & 0 deletions docs/en/release-testing.md

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions docs/en/releases.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ Installing on a phone? See [APK installation and Android restrictions](apk-insta
Use [release automation](release-automation.md) to prepare the version and EN/RU changelog.
The guide covers manual secret setup and release dispatch.

Before publication, complete [release testing](release-testing.md) on the signed candidate.

Run `bundle exec fastlane android release_artifacts` with JDK 21 and Android SDK 36.
The lane runs Android JVM/Compose tests and debug/release lint, then builds a signed release APK. It checks the APK certificate, package/version and non-debuggable
flag.
Expand Down
10 changes: 7 additions & 3 deletions docs/en/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@ Run the same suites locally and in GitHub Actions:
| Suite | Command | Coverage |
| --- | --- | --- |
| Android | `bundle exec fastlane android checks` | JVM logic, MockWebServer HTTP integration, Robolectric database/preferences/provider integration, Compose interactions, localization, manifest security, light/dark contrast, debug/release lint and APK builds, unsigned release verification |
| Python | `PYTHON=.venv/bin/python bundle exec fastlane android python_checks` | DevServer HTTP test-client behavior against a local HTTP server; pinned Black/isort style checks |
| Python | `PYTHON=.venv/bin/python bundle exec fastlane android python_checks` | DevServer HTTP test-client behavior against a local HTTP server, release automation with mocked APIs/local Git, pinned Black/isort style checks |
| n8n | `bundle exec fastlane android server_tests` | Live receive/validation, notification/SMS/test payloads, HTTP failure, invalid ACK and timeout |

For Python, create `.venv` with `python3 -m venv .venv` and install `requirements-dev.txt`.
For n8n, first run `docker compose -f DevServer/compose.yaml up -d --wait --wait-timeout 300`.
The server suite uses synthetic data and retains it in the development execution history.

`.github/workflows/ci.yml` runs all three jobs on pull requests, main pushes and manual dispatch.
`.github/workflows/ci.yml` runs the three main jobs on pull requests, main pushes and manual dispatch.
Manual dispatch with `release_dry_run_version` runs only the release dry run and skips these suites.
Android XML/HTML test and lint reports are uploaded even if a check fails. Successful Android jobs
also publish a debug APK and unsigned release APK files. These checks never sign release artifacts.
Local success does not establish a GitHub run result for uncommitted/unpushed changes.
Expand All @@ -25,7 +26,8 @@ The applicable categories match MegaProxy: JVM logic and Android integration, Co
under Robolectric, resource/security/UI contracts, Python tests and formatting, lint and builds.
Message487 also has a live Docker/n8n integration suite. MegaProxy's Go race tests and optional
native-parser fuzz lane apply to its Go/JNI networking core; Message487 has no native core.
MegaProxy's Python CI-history tests target scripts that Message487 does not have.
Message487 has its own release-automation Python tests, but no MegaProxy change classifier
or ancestor-check history lookup.

Compose tests use the real navigation, screens, ViewModel and preferences with a test Application that
suppresses startup workers and process-wide crash-handler installation. An explicit ViewModel
Expand All @@ -38,3 +40,5 @@ an Android emulator, following MegaProxy's approach to unreliable KVM availabili

Signed release verification runs the Android test/lint suite separately with signing inputs. PR
checks reject those inputs and remain unsigned. See [release automation](releases.md).

For signed candidates, F-Droid and device checks, follow [Release testing](release-testing.md).
2 changes: 2 additions & 0 deletions docs/ru/release-automation.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
делает squash merge и ставит тег на слитый коммит. **Release Android artifacts** собирает,
подписывает и публикует APK. Само слияние реализации не выпускает новую версию.

Этот флоу не заменяет [приёмку релиза на устройствах](release-testing.md).

## Что настроить вручную один раз

1. В [Settings → Secrets and variables → Actions](https://github.com/andre487/AndroidMessage487/settings/secrets/actions)
Expand Down
Loading
Loading