From 59515c90adb653a96023825be6cbc264803a9b48 Mon Sep 17 00:00:00 2001 From: qiyinxi Date: Mon, 2 Nov 2026 15:53:27 +0100 Subject: [PATCH] =?UTF-8?q?README=EF=BC=9A=E5=8A=A0=E4=B8=8A=E5=AE=8C?= =?UTF-8?q?=E6=95=B4=E7=9A=84=E8=8B=B1=E6=96=87=E7=89=88=20README.en.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 与中文 README.md 逐节对应,互相放了语言切换的链接,改一份就在同一个 PR 里改另一份。 --- README.en.md | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 4 ++ 2 files changed, 144 insertions(+) create mode 100644 README.en.md diff --git a/README.en.md b/README.en.md new file mode 100644 index 0000000..fa8cf40 --- /dev/null +++ b/README.en.md @@ -0,0 +1,140 @@ +# ModAVDE2E + +[简体中文](README.md) | **English** + + + +End-to-end tests for [ModAVD](https://github.com/ModAVD/ModAVD). They run the pre-release regression tests on an installed ModAVD package, and they test the path users actually take: +installing and uninstalling the arm64 execution bridge, creating and growing the data disk, upgrading from the previous version, the bundled host IME, and real runs of each game with its own automation scripts. +The result table `results.md` is pasted into the "pre-release regression" section of `tools/pubrel/config/changes.md` in the ModAVD repository, and goes out with the Release notes. + +The items here span several repositories: the emulator ([ModAVDQemu](https://github.com/ModAVD/ModAVDQemu) and others), the manager and the CLI +([ModAVDManager](https://github.com/ModAVD/ModAVDManager)), the host IME ([ModAVDHostIME](https://github.com/ModAVD/ModAVDHostIME)), +and the bundled scripts in `package/` and the bridge in `bridge/` of the ModAVD repository. So it lives in a repository of its own and does not follow the release of any one of them. + +## Read this first + +- **Real runs work only on a test machine.** They need the emulator, a GPU, game instances logged in with test accounts, and each game's automation tool, and GitHub-hosted machines cannot run that. + The CI of this repository does only static checks (syntax parsing, privacy scan). +- **The game items need their automation tools installed separately** (MAA, M9A, StarRailCopilot, MaaEnd, MaaYYs), and their locations go into the local configuration. + There is no account information in the code; the test accounts exist only in the local test instances. **Please judge for yourself whether running games with an emulator and scripts complies with the game's terms of use.** +- **Use newly created test instances logged in with test accounts.** Do not run on an instance logged in with your main account: several items create instances, delete instances and force-stop the game. +- adb uses only private ports. It does not touch 5037, and it does not touch 20049 / 20050 of the production root folder. Every instance is shut down with `adb shell sync` first. + +## How to run + +PowerShell 7 (`pwsh`); the helper scripts use Python 3.12. + +```powershell +pwsh -NoProfile -File regress.ps1 -Suite suites\release.psd1 -Scope emulator -Sdk -Baseline +pwsh -NoProfile -File regress.ps1 -Suite suites\release.psd1 -Scope manager,ime -Sdk +pwsh -NoProfile -File regress.ps1 -Suite suites\release.psd1 -Sdk -Only yys,datadisk +pwsh -NoProfile -File regress.ps1 -Suite suites\release.psd1 -Scope emulator -Sdk -DryRun +``` + +**Run what you changed**: the `Scopes` list at the top of the suite names the scopes of a change (`emulator`, `bridge`, `manager`, `ime`, +`scripts`, `repack`), and each item's `Scopes` says which scopes it covers. `-Scope` runs the items that overlap with it. When the suite has scopes, you must give `-Scope` or `-Only`. +`PostPackage` lists the items to run after packaging, using the package staging folder (upgrade, `ime-pkg`), and at the end the runner reminds you of them according to the scopes. Run with `-DryRun` first to see which items will run and which local settings they use. + +**Frame rate of the game items**: by default `items\game-real.ps1` runs only the round with the bridge installed, and the median frame rate is compared with `baselines\fps.json` (the numbers of the previous production version, with a tolerance for each game). +When the same machine runs more than 2 other emulators, it only records the number and does not judge it. After each release regression passes, write this version's numbers back to `fps.json`. + +By default the output goes to `\regress--