raea app

Run, check headless and package a desktop app written as one TSX file on @raea/ui.

View as Markdown

raea app takes a desktop app written in React on @raea/ui and runs it in a window (run), runs it headless through scripted steps and writes a PNG after each one (check), or packages it as a Mac app (bundle). The web target draws it with Blitz on Bevy; the native target with Rune. The app's export const app picks the target, and --target overrides it.

Terminal
raea app run signin.tsx
raea app check signin.tsx --png out/                 # 00-mount.png, a PNG after each step, tree.json
raea app check signin.tsx --target native --script steps.json --png out/native/
raea app bundle signin.tsx -o "Sign In.app"

The check's steps find elements by data-testid. Read the PNGs it writes: tree.json gives each element's role, label, text and box.

Usage

Terminal
raea app run|check|bundle APP.tsx [--target web|native] [--size WxH] [--script steps.json] [--png DIR] [-o App.app]   (a TSX app on @raea/ui: its window, the headless check, a Mac app; web is Blitz on Bevy, native is Rune; the app's `export const app` sets the target, web when it doesn't; raea rune ... is --target native)

Headless: it needs nothing running and opens no window. Takes up to 2 arguments besides its flags.

Flags

FlagTakesWhat it does
--pngDIRWhere check writes its PNGs and tree.json.
--scriptsteps.jsonThe steps check runs, when they aren't in the app's own file.
--sizeWxHThe window's size in pixels.
--targetweb|nativeDraw with Blitz on Bevy (web) or with Rune (native), over what the app's export const app says.
-oApp.appWhere bundle writes the Mac app.

See also

  • Apps walks through writing, checking and bundling an app on both targets.