acceptance.yml: the release matrix on demand (Linux + Windows x node20/node22/bun, then the report); macOS results of 0.8.3 (123/123 on Node 20, Node 22, Bun) in docs/acceptance/, docs/acceptance.md generated
This commit is contained in:
parent
17883e1529
commit
9d6f741092
5 changed files with 4342 additions and 0 deletions
107
.forgejo/workflows/acceptance.yml
Normal file
107
.forgejo/workflows/acceptance.yml
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
# The release acceptance matrix on demand (the same jobs as release.yml's acceptance + acceptance-report, which gate
|
||||
# every release): every user-facing command from the packed npm tarball on Linux and Windows x Node 20 / Node 22 / Bun,
|
||||
# then the markdown matrix (artifact storebound-acceptance). Run it from Actions > acceptance > Run workflow, or with
|
||||
# the API (POST /repos/{owner}/{repo}/actions/workflows/acceptance.yml/dispatches). macOS: tools/acceptance.ts on the Mac.
|
||||
name: acceptance
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
BUN_VERSION: '1.4.0'
|
||||
|
||||
jobs:
|
||||
acceptance:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- { os: ubuntu-22.04, platform: Linux, runtime: node, node: '20', name: node20 }
|
||||
- { os: ubuntu-22.04, platform: Linux, runtime: node, node: '22', name: node22 }
|
||||
- { os: ubuntu-22.04, platform: Linux, runtime: bun, node: '22', name: bun }
|
||||
- { os: windows, platform: Windows, runtime: node, node: '20', name: node20 }
|
||||
- { os: windows, platform: Windows, runtime: node, node: '22', name: node22 }
|
||||
- { os: windows, platform: Windows, runtime: bun, node: '22', name: bun }
|
||||
runs-on: ${{ matrix.os }}
|
||||
timeout-minutes: 45
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ matrix.node }}
|
||||
- name: Bun (Linux)
|
||||
if: ${{ matrix.platform == 'Linux' }}
|
||||
shell: bash
|
||||
run: |
|
||||
curl -fsSL https://bun.sh/install | bash -s "bun-v${BUN_VERSION}" >/dev/null
|
||||
echo "$HOME/.bun/bin" >> "${FORGEJO_PATH:-$GITHUB_PATH}"
|
||||
- name: Acceptance matrix (Linux)
|
||||
if: ${{ matrix.platform == 'Linux' }}
|
||||
shell: bash
|
||||
run: |
|
||||
node --version && bun --version
|
||||
bun tools/acceptance.ts run --runtime ${{ matrix.runtime }} --platform Linux --jobs 4 --out acceptance/Linux-${{ matrix.name }}.json
|
||||
- name: Acceptance matrix (Windows)
|
||||
if: ${{ matrix.platform == 'Windows' }}
|
||||
shell: pwsh
|
||||
run: |
|
||||
node --version; bun --version
|
||||
bun tools/acceptance.ts run --runtime ${{ matrix.runtime }} --platform Windows --jobs 3 --out acceptance/Windows-${{ matrix.name }}.json
|
||||
if ($LASTEXITCODE -ne 0) { throw "acceptance matrix: red cells" }
|
||||
- uses: actions/upload-artifact@v3
|
||||
if: ${{ always() }}
|
||||
with:
|
||||
name: acceptance-${{ matrix.platform }}-${{ matrix.name }}
|
||||
path: acceptance/
|
||||
retention-days: 30
|
||||
|
||||
acceptance-report:
|
||||
needs: [acceptance]
|
||||
if: ${{ always() }}
|
||||
runs-on: ubuntu-22.04
|
||||
timeout-minutes: 10
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/download-artifact@v3
|
||||
continue-on-error: true
|
||||
with:
|
||||
name: acceptance-Linux-node20
|
||||
path: acceptance-runs/Linux-node20
|
||||
- uses: actions/download-artifact@v3
|
||||
continue-on-error: true
|
||||
with:
|
||||
name: acceptance-Linux-node22
|
||||
path: acceptance-runs/Linux-node22
|
||||
- uses: actions/download-artifact@v3
|
||||
continue-on-error: true
|
||||
with:
|
||||
name: acceptance-Linux-bun
|
||||
path: acceptance-runs/Linux-bun
|
||||
- uses: actions/download-artifact@v3
|
||||
continue-on-error: true
|
||||
with:
|
||||
name: acceptance-Windows-node20
|
||||
path: acceptance-runs/Windows-node20
|
||||
- uses: actions/download-artifact@v3
|
||||
continue-on-error: true
|
||||
with:
|
||||
name: acceptance-Windows-node22
|
||||
path: acceptance-runs/Windows-node22
|
||||
- uses: actions/download-artifact@v3
|
||||
continue-on-error: true
|
||||
with:
|
||||
name: acceptance-Windows-bun
|
||||
path: acceptance-runs/Windows-bun
|
||||
- name: Matrix (markdown), red cells fail the job
|
||||
run: |
|
||||
curl -fsSL https://bun.sh/install | bash -s "bun-v${BUN_VERSION}" >/dev/null
|
||||
export PATH="$HOME/.bun/bin:$PATH"
|
||||
V=$(bun tools/desktop-version.ts --print)
|
||||
mkdir -p out
|
||||
bun tools/acceptance.ts report acceptance-runs docs/acceptance --md "out/storebound_${V}_acceptance.md" --expect 7 --strict
|
||||
- uses: actions/upload-artifact@v3
|
||||
if: ${{ always() }}
|
||||
with:
|
||||
name: storebound-acceptance
|
||||
path: out/
|
||||
retention-days: 30
|
||||
145
docs/acceptance.md
Normal file
145
docs/acceptance.md
Normal file
|
|
@ -0,0 +1,145 @@
|
|||
# Release acceptance matrix
|
||||
|
||||
<!-- generated by `bun tools/acceptance.ts report`; do not edit -->
|
||||
|
||||
storebound 0.8.3: every user-facing command run from the packed npm tarball, in a fresh temp folder with piped stdin and the fake stores (tools/acceptance.ts). ✓ = expected exit code and no crash text; ✗ = the first error.
|
||||
|
||||
**369 / 369 cells passed.**
|
||||
|
||||
- macOS · node 20: node v20.19.5 (npx --package=<tgz>), 123/123, 2026-10-14 00:37 UTC
|
||||
- macOS · node 22: node v22.19.0 (npx --package=<tgz>), 123/123, 2026-10-14 00:37 UTC
|
||||
- macOS · bun: bun 1.4.3 (bun add <tgz>, bun x --bun storebound), 123/123, 2026-10-14 00:37 UTC
|
||||
|
||||
| command | macOS · node 20 | macOS · node 22 | macOS · bun |
|
||||
|---|---|---|---|
|
||||
| **basics** | | | |
|
||||
| --version<br>`storebound --version` | ✓ | ✓ | ✓ |
|
||||
| help<br>`storebound help` | ✓ | ✓ | ✓ |
|
||||
| unknown command<br>`storebound nope` | ✓ | ✓ | ✓ |
|
||||
| init --profile app<br>`storebound init --profile app` | ✓ | ✓ | ✓ |
|
||||
| init --profile game<br>`storebound init --profile game` | ✓ | ✓ | ✓ |
|
||||
| init --profile subscription-app<br>`storebound init --profile subscription-app` | ✓ | ✓ | ✓ |
|
||||
| init --dry<br>`storebound init --dry` | ✓ | ✓ | ✓ |
|
||||
| check (fresh init: template problems)<br>`storebound check` | ✓ | ✓ | ✓ |
|
||||
| check (no config)<br>`storebound check` | ✓ | ✓ | ✓ |
|
||||
| **scan** | | | |
|
||||
| scan capacitor<br>`storebound scan --json` | ✓ | ✓ | ✓ |
|
||||
| scan flutter<br>`storebound scan --json` | ✓ | ✓ | ✓ |
|
||||
| scan react-native<br>`storebound scan --json` | ✓ | ✓ | ✓ |
|
||||
| scan expo<br>`storebound scan --json` | ✓ | ✓ | ✓ |
|
||||
| scan unity<br>`storebound scan --json` | ✓ | ✓ | ✓ |
|
||||
| scan ios-native<br>`storebound scan --json` | ✓ | ✓ | ✓ |
|
||||
| scan android<br>`storebound scan --json` | ✓ | ✓ | ✓ |
|
||||
| scan capacitor (text)<br>`storebound scan` | ✓ | ✓ | ✓ |
|
||||
| scan flutter (text)<br>`storebound scan` | ✓ | ✓ | ✓ |
|
||||
| scan react-native (text)<br>`storebound scan` | ✓ | ✓ | ✓ |
|
||||
| scan expo (text)<br>`storebound scan` | ✓ | ✓ | ✓ |
|
||||
| scan unity (text)<br>`storebound scan` | ✓ | ✓ | ✓ |
|
||||
| scan ios-native (text)<br>`storebound scan` | ✓ | ✓ | ✓ |
|
||||
| scan android (text)<br>`storebound scan` | ✓ | ✓ | ✓ |
|
||||
| **local** | | | |
|
||||
| inspect --json<br>`storebound inspect --json` | ✓ | ✓ | ✓ |
|
||||
| doctor<br>`storebound doctor` | ✓ | ✓ | ✓ |
|
||||
| doctor --json<br>`storebound doctor --json` | ✓ | ✓ | ✓ |
|
||||
| accounts list<br>`storebound accounts list` | ✓ | ✓ | ✓ |
|
||||
| accounts list --json<br>`storebound accounts list --json` | ✓ | ✓ | ✓ |
|
||||
| apps folders<br>`storebound apps folders` | ✓ | ✓ | ✓ |
|
||||
| **desktop** | | | |
|
||||
| desktop --dry<br>`storebound desktop --dry` | ✓ | ✓ | ✓ |
|
||||
| desktop --dry (no app installed)<br>`storebound desktop --dry` | ✓ | ✓ | ✓ |
|
||||
| desktop --json<br>`storebound desktop --json` | ✓ | ✓ | ✓ |
|
||||
| desktop [Y/n] answered n<br>`storebound desktop` | ✓ | ✓ | ✓ |
|
||||
| desktop [Y/n] stdin closed (EOF)<br>`storebound desktop` | ✓ | ✓ | ✓ |
|
||||
| desktop (not a terminal)<br>`storebound desktop` | ✓ | ✓ | ✓ |
|
||||
| desktop --download (temp HOME, deleted after)<br>`storebound desktop --download` | ✓ | ✓ | ✓ |
|
||||
| **mcp** | | | |
|
||||
| mcp initialize + tools/list + tools/call check<br>`storebound mcp` | ✓ | ✓ | ✓ |
|
||||
| **console** | | | |
|
||||
| console plan (list)<br>`storebound console plan` | ✓ | ✓ | ✓ |
|
||||
| console plan apple-app-record<br>`storebound console plan apple-app-record --json` | ✓ | ✓ | ✓ |
|
||||
| console plan apple-age-rating<br>`storebound console plan apple-age-rating --json` | ✓ | ✓ | ✓ |
|
||||
| console plan apple-app-privacy<br>`storebound console plan apple-app-privacy --json` | ✓ | ✓ | ✓ |
|
||||
| console plan play-app-record<br>`storebound console plan play-app-record --json` | ✓ | ✓ | ✓ |
|
||||
| console plan play-content-rating<br>`storebound console plan play-content-rating --json` | ✓ | ✓ | ✓ |
|
||||
| console plan play-target-audience<br>`storebound console plan play-target-audience --json` | ✓ | ✓ | ✓ |
|
||||
| console plan play-store-settings<br>`storebound console plan play-store-settings --json` | ✓ | ✓ | ✓ |
|
||||
| console plan play-app-content<br>`storebound console plan play-app-content --json` | ✓ | ✓ | ✓ |
|
||||
| console plan play-privacy-policy<br>`storebound console plan play-privacy-policy --json` | ✓ | ✓ | ✓ |
|
||||
| console plan play-ads<br>`storebound console plan play-ads --json` | ✓ | ✓ | ✓ |
|
||||
| console plan play-sign-in-details<br>`storebound console plan play-sign-in-details --json` | ✓ | ✓ | ✓ |
|
||||
| console plan play-advertising-id<br>`storebound console plan play-advertising-id --json` | ✓ | ✓ | ✓ |
|
||||
| console plan play-government-apps<br>`storebound console plan play-government-apps --json` | ✓ | ✓ | ✓ |
|
||||
| console plan play-financial-features<br>`storebound console plan play-financial-features --json` | ✓ | ✓ | ✓ |
|
||||
| console plan play-health-apps<br>`storebound console plan play-health-apps --json` | ✓ | ✓ | ✓ |
|
||||
| console plan play-production-countries<br>`storebound console plan play-production-countries --json` | ✓ | ✓ | ✓ |
|
||||
| console plan play-production-release<br>`storebound console plan play-production-release --json` | ✓ | ✓ | ✓ |
|
||||
| **store --dry** | | | |
|
||||
| play listing --dry<br>`storebound play listing --dry` | ✓ | ✓ | ✓ |
|
||||
| apple listing --dry<br>`storebound apple listing --version 1.0.0 --dry` | ✓ | ✓ | ✓ |
|
||||
| play images --dry<br>`storebound play images --dry` | ✓ | ✓ | ✓ |
|
||||
| apple screenshots --dry<br>`storebound apple screenshots --dry` | ✓ | ✓ | ✓ |
|
||||
| apple previews --dry<br>`storebound apple previews --dry` | ✓ | ✓ | ✓ |
|
||||
| play products --dry<br>`storebound play products --dry` | ✓ | ✓ | ✓ |
|
||||
| play subscriptions --dry<br>`storebound play subscriptions --dry` | ✓ | ✓ | ✓ |
|
||||
| apple iap --dry<br>`storebound apple iap --dry` | ✓ | ✓ | ✓ |
|
||||
| apple subscriptions --dry<br>`storebound apple subscriptions --dry` | ✓ | ✓ | ✓ |
|
||||
| apple iap-review --dry<br>`storebound apple iap-review --dry` | ✓ | ✓ | ✓ |
|
||||
| apple iap-submit --dry<br>`storebound apple iap-submit --dry` | ✓ | ✓ | ✓ |
|
||||
| prices export --dry<br>`storebound prices export --dry` | ✓ | ✓ | ✓ |
|
||||
| prices import --dry<br>`storebound prices import --csv store/prices.csv --dry` | ✓ | ✓ | ✓ |
|
||||
| prices ppp --dry<br>`storebound prices ppp --base 4.99 --dry` | ✓ | ✓ | ✓ |
|
||||
| play data-safety --dry<br>`storebound play data-safety --dry` | ✓ | ✓ | ✓ |
|
||||
| apple testflight status<br>`storebound apple testflight status` | ✓ | ✓ | ✓ |
|
||||
| apple testflight distribute --dry<br>`storebound apple testflight distribute --build 1 --group Beta --dry` | ✓ | ✓ | ✓ |
|
||||
| release plan 1.0.0<br>`storebound release plan 1.0.0` | ✓ | ✓ | ✓ |
|
||||
| release status<br>`storebound release status` | ✓ | ✓ | ✓ |
|
||||
| apple submit --dry<br>`storebound apple submit --build 1 --dry` | ✓ | ✓ | ✓ |
|
||||
| apple resubmit --dry<br>`storebound apple resubmit --build 1 --dry` | ✓ | ✓ | ✓ |
|
||||
| play release --dry<br>`storebound play release app-release.aab --internal completed --dry` | ✓ | ✓ | ✓ |
|
||||
| play upload --dry<br>`storebound play upload app-release.aab --dry` | ✓ | ✓ | ✓ |
|
||||
| play share --dry<br>`storebound play share --aab app-release.aab --dry` | ✓ | ✓ | ✓ |
|
||||
| play rollout --dry<br>`storebound play rollout --fraction 0.2 --dry` | ✓ | ✓ | ✓ |
|
||||
| art pull --dry<br>`storebound art pull --dry` | ✓ | ✓ | ✓ |
|
||||
| apple appinfo --dry<br>`storebound apple appinfo --dry` | ✓ | ✓ | ✓ |
|
||||
| apple review-details --dry<br>`storebound apple review-details --dry` | ✓ | ✓ | ✓ |
|
||||
| apple bundle --dry<br>`storebound apple bundle --dry` | ✓ | ✓ | ✓ |
|
||||
| apple encryption --dry<br>`storebound apple encryption --dry` | ✓ | ✓ | ✓ |
|
||||
| apple offer-codes --dry (none configured)<br>`storebound apple offer-codes --dry` | ✓ | ✓ | ✓ |
|
||||
| apple promoted --dry<br>`storebound apple promoted --dry` | ✓ | ✓ | ✓ |
|
||||
| apple win-back --dry (none configured)<br>`storebound apple win-back --dry` | ✓ | ✓ | ✓ |
|
||||
| apple cpp create --dry<br>`storebound apple cpp create --dry` | ✓ | ✓ | ✓ |
|
||||
| apple events create --dry<br>`storebound apple events create --dry` | ✓ | ✓ | ✓ |
|
||||
| apple ppo create --dry<br>`storebound apple ppo create --variant b --dry` | ✓ | ✓ | ✓ |
|
||||
| apple preorder enable --dry<br>`storebound apple preorder enable --release-date 2027-01-15 --dry` | ✓ | ✓ | ✓ |
|
||||
| apple release --phased on --dry<br>`storebound apple release --phased on --dry` | ✓ | ✓ | ✓ |
|
||||
| apple signing ensure --dry<br>`storebound apple signing ensure --dry` | ✓ | ✓ | ✓ |
|
||||
| analytics setup --dry<br>`storebound analytics setup --dry` | ✓ | ✓ | ✓ |
|
||||
| onboard --dry<br>`storebound onboard --dry --no-web` | ✓ | ✓ | ✓ |
|
||||
| catalog diff<br>`storebound catalog diff` | ✓ | ✓ | ✓ |
|
||||
| validate<br>`storebound validate` | ✓ | ✓ | ✓ |
|
||||
| play status<br>`storebound play status` | ✓ | ✓ | ✓ |
|
||||
| apple status<br>`storebound apple status` | ✓ | ✓ | ✓ |
|
||||
| apps list<br>`storebound apps list` | ✓ | ✓ | ✓ |
|
||||
| apps check<br>`storebound apps check` | ✓ | ✓ | ✓ |
|
||||
| icons --dry<br>`storebound icons --dry` | ✓ | ✓ | ✓ |
|
||||
| web init --dry<br>`storebound web init --dry` | ✓ | ✓ | ✓ |
|
||||
| whats-new --dry<br>`storebound whats-new --dry` | ✓ | ✓ | ✓ |
|
||||
| listing translate --dry<br>`storebound listing translate --to tr --dry` | ✓ | ✓ | ✓ |
|
||||
| install --agent claude --dry<br>`storebound install --agent claude --dry` | ✓ | ✓ | ✓ |
|
||||
| edit --dry<br>`storebound edit --ops '[{"op":"set","path":"app.name","value":"Example Two"}]' --dry` | ✓ | ✓ | ✓ |
|
||||
| flow run release --dry<br>`storebound flow run release --dry` | ✓ | ✓ | ✓ |
|
||||
| health --weekly --dry<br>`storebound health --weekly --dry` | ✓ | ✓ | ✓ |
|
||||
| triage --dry<br>`storebound triage --dry` | ✓ | ✓ | ✓ |
|
||||
| **confirm n** | | | |
|
||||
| play listing [y/N] n<br>`storebound play listing` | ✓ | ✓ | ✓ |
|
||||
| play listing [y/N] EOF<br>`storebound play listing` | ✓ | ✓ | ✓ |
|
||||
| play listing (not a terminal: applies)<br>`storebound play listing` | ✓ | ✓ | ✓ |
|
||||
| apple listing [y/N] n<br>`storebound apple listing --version 1.0.0` | ✓ | ✓ | ✓ |
|
||||
| apple appinfo [y/N] n<br>`storebound apple appinfo` | ✓ | ✓ | ✓ |
|
||||
| apple subscriptions [y/N] n<br>`storebound apple subscriptions` | ✓ | ✓ | ✓ |
|
||||
| play products (creates without a question)<br>`storebound play products` | ✓ | ✓ | ✓ |
|
||||
| play subscriptions [y/N] n<br>`storebound play subscriptions` | ✓ | ✓ | ✓ |
|
||||
| play release --production completed [y/N] n<br>`storebound play release app-release.aab --production completed` | ✓ | ✓ | ✓ |
|
||||
| play rollout [y/N] n<br>`storebound play rollout --fraction 0.2` | ✓ | ✓ | ✓ |
|
||||
| apple release --phased on (version not released yet)<br>`storebound apple release --phased on` | ✓ | ✓ | ✓ |
|
||||
| api apple POST without a terminal (dry)<br>`storebound api apple bundleIds_createInstance --body store/bundle.json --yes` | ✓ | ✓ | ✓ |
|
||||
1363
docs/acceptance/macOS-bun.json
Normal file
1363
docs/acceptance/macOS-bun.json
Normal file
File diff suppressed because it is too large
Load diff
1364
docs/acceptance/macOS-node20.json
Normal file
1364
docs/acceptance/macOS-node20.json
Normal file
File diff suppressed because it is too large
Load diff
1363
docs/acceptance/macOS-node22.json
Normal file
1363
docs/acceptance/macOS-node22.json
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue