release acceptance matrix: tools/acceptance.ts runs every user-facing command from the packed npm tarball (npx --package=<tgz> on Node 20 / 22, bun x --bun after bun add <tgz>) in fresh temp folders with a fresh HOME, real piped stdin (n, EOF) and per-cell fake stores over HTTP (STOREBOUND_STORE_MOCK, loopback only); a cell passes only with the expected exit code and no crash text; report -> markdown matrix. Prompts go through stdinIsTTY (STOREBOUND_ASSUME_TTY drives them with piped stdin), STOREBOUND_DESKTOP_APP=none for the install prompt on a machine with the app. release.yml: required acceptance job matrix (Linux + Windows x node20/node22/bun) and report, the matrix attached to the release; ci.yml: the quick subset on Linux and Windows. Scan fixtures for React Native and Expo

This commit is contained in:
CRTkafa 2026-10-14 08:29:26 +08:00
parent ae681e3ecd
commit f58e192001
26 changed files with 926 additions and 15 deletions

2
tests/fixtures/scan/expo/README.md vendored Normal file
View file

@ -0,0 +1,2 @@
Scan fixture: a managed Expo app (app.json, no native folders), used by the release acceptance matrix
(tools/acceptance.ts) and tests/scan.test.ts. Placeholder ids only.

9
tests/fixtures/scan/expo/app.json vendored Normal file
View file

@ -0,0 +1,9 @@
{
"expo": {
"name": "Example Expo",
"slug": "example-expo",
"version": "1.0.0",
"ios": { "bundleIdentifier": "com.example.expo" },
"android": { "package": "com.example.expo" }
}
}

12
tests/fixtures/scan/expo/package.json vendored Normal file
View file

@ -0,0 +1,12 @@
{
"name": "example-expo",
"version": "1.0.0",
"private": true,
"main": "expo-router/entry",
"dependencies": {
"expo": "54.0.0",
"expo-location": "19.0.0",
"react": "19.1.0",
"react-native": "0.81.0"
}
}

View file

@ -0,0 +1,2 @@
Scan fixture: a bare React Native app (ios/ and android/ folders, Info.plist and manifest), used by the release
acceptance matrix (tools/acceptance.ts) and tests/scan.test.ts. Placeholder ids only.

View file

@ -0,0 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<application android:label="Example RN" />
</manifest>

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleIdentifier</key>
<string>com.example.rn</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>NSCameraUsageDescription</key>
<string>Scan documents into your notes.</string>
</dict>
</plist>

View file

@ -0,0 +1,10 @@
{
"name": "example-rn",
"version": "1.0.0",
"private": true,
"dependencies": {
"react": "19.1.0",
"react-native": "0.81.0",
"react-native-vision-camera": "4.7.0"
}
}