e0a5f57793
Vendor the rebranded BoosAPI Desktop client (Tauri + Vue) into metapi as a monorepo subdirectory under desktop/. Source only — node_modules, dist, Cargo target and the upstream .git history are excluded. desktop/ keeps its own independent Cargo workspace (desktop/src-tauri with crates/*); it is not part of the backend boosapi crate, so a `cargo check` at the metapi root still compiles only the backend. Build the desktop app from desktop/src-tauri per desktop/README.md. Note: app icons are still placeholder assets pending the final BoosAPI logo. The updater signing keys live outside the repo and are not included.
42 lines
2.1 KiB
Markdown
42 lines
2.1 KiB
Markdown
# Tests — helpers & midstate probes
|
|
|
|
This short guide explains how to run the mid-typing (midstate) tests and regenerate parser probe output used by the test suite.
|
|
|
|
Why
|
|
- Mid-typing tests exercise the parser's provisional states (unclosed fences, loading links, emoji shortcodes, etc.).
|
|
- When Vitest output is not fully available (CI or remote tooling), the probe script writes `test/probes/parse-output.json` so you can inspect the AST node shapes and tune tolerant assertions.
|
|
|
|
Common commands (zsh / macOS)
|
|
|
|
# Run the full test suite (CI mode):
|
|
CI=1 pnpm test
|
|
|
|
# Run only the midstate test file (verbose):
|
|
CI=1 pnpm vitest run test/markdown-midstates.test.ts --reporter verbose
|
|
|
|
# Run a named block/describe using grep (fast):
|
|
pnpm vitest -t 'additional mid-state edge cases' --reporter verbose
|
|
|
|
# Regenerate the probe JSON (writes to test/probes/parse-output.json):
|
|
node test/probes/parse-probe-write-tmp.cjs
|
|
|
|
# Inspect the probe output (first 200 lines):
|
|
# macOS / zsh
|
|
sed -n '1,200p' test/probes/parse-output.json
|
|
|
|
Test helper notes
|
|
- Use `test/utils/midstate-utils.ts` helpers instead of brittle JSON.stringify checks:
|
|
- `textIncludes(nodes, stringOrRegExp)` — safe recursive search (supports RegExp and raw strings)
|
|
- `collect(nodes, type)` — gather all nodes of a given type from an AST
|
|
- `hasLoadingLink(nodes)` and `links(nodes)` — helpers for link mid-states
|
|
- Tests are intentionally tolerant: they prefer structured nodes when present but accept plain text fallback (useful when optional plugins are disabled).
|
|
|
|
If you see a failing midstate test:
|
|
1. Run the probe script to capture the parse AST for the failing input.
|
|
2. Inspect `test/probes/parse-output.json` to see exactly which node fields exist (e.g. `text`, `raw`, `children`, `loading`).
|
|
3. Adjust assertions to use `textIncludes(...)` or `collect(...)` to be tolerant of AST variations.
|
|
|
|
If you'd like, I can:
|
|
- Sweep tests for remaining fragile patterns and replace them conservatively in small batches (I already fixed the most obvious cases).
|
|
- Add stricter/gated assertions behind an env var if you want deterministic enforcement in CI.
|