Skip to content

Validation

Nick Hamze edited this page Sep 8, 2026 · 2 revisions

Validation

Validated locally against the existing OpenStation Studio installation at http://localhost:8894, using the pinned runtime at http://localhost:9400.

Automated checks

  • TypeScript: passed.
  • Unit tests: 10 passed, covering Blueprint schema validation, sandbox paths, account catalog isolation, checkpoint deletion, writer locks, missing-data recovery, failed flush handling, existing-site startup, delayed initial mounting, and explicit temporary fallback.
  • PHP syntax: passed.
  • Formatting and production build: passed.
  • npm dependency audit: no reported vulnerabilities at packaging time.

Real-browser workflows

Chromium, Firefox, and WebKit (normal persistent profile) passed:

  1. Register and open Recess as an OpenStation native app.
  2. Create a WordPress sandbox and save database changes.
  3. Save a checkpoint, then modify the database and write a sandbox file.
  4. Close through OpenStation's native close hook and reopen without losing changes.
  5. Reload the entire browser page and reopen the saved site.
  6. Reject a second browser tab attempting to write the same site.
  7. Restore a checkpoint into another site and export its ZIP.

Additional Chromium checks passed:

  • WP-CLI reads a saved WordPress option.
  • An exported site ZIP imports into a fresh sandbox with its data intact.
  • An explicit backup uploads through OpenStation's authenticated desktop-files API.
  • A plugin ZIP installs and runs its activation hook inside the sandbox.
  • A Blueprint bundle resolves its bundled plugin ZIP.
  • The theme-development recipe creates and activates a real block theme.

WebKit's private context cannot obtain an OPFS directory, including at top level. Saved-site tests therefore use a normal persistent profile, rather than treating private browsing as durable storage. Recess offers an explicit temporary fallback and labels it as unsaved. A real WebKit private-context check also passed: it starts a temporary site and executes PHP without claiming that the site is saved.

Boundaries

  • WebKit automation validates that engine; this is not a claim of testing every Safari/iOS device.
  • Runtime hosting was validated locally. No public runtime domain or production WordPress site was deployed.
  • The source repository is separate from OpenStation core; the local integration consists of the plugin symlink, activation, and RECESS_RUNTIME_URL in the Studio site's configuration.
  • Browser data is not a backup. Downloads and OpenStation uploads are explicit; cross-device synchronization is not implemented.
  • Force-closing a browser or deactivating a plugin cannot await an asynchronous final flush. Normal window close uses the framework's cancellable close filter.

Reproduce

Run npm run check for source checks. Start the local Studio site and npm run runtime:serve, then run npm run test:browser. The browser tests obtain short-lived cookies through the local Studio CLI. Browser profiles, cookies, traces, exported sites, and screenshots are excluded from Git.

scripts/smoke.mjs creates a preview and a temporary browser auth-state file. scripts/import-smoke.mjs and scripts/temporary-smoke.mjs use that state for focused import and temporary-mode checks.

Clone this wiki locally