Skip to content

chore[notask]: refresh tests-qvac docs, tooling, and workflow job names#1712

Merged
lauripiisang merged 9 commits into
mainfrom
chore/tests-qvac-docs
Apr 24, 2026
Merged

chore[notask]: refresh tests-qvac docs, tooling, and workflow job names#1712
lauripiisang merged 9 commits into
mainfrom
chore/tests-qvac-docs

Conversation

@lauripiisang

@lauripiisang lauripiisang commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

🎯 What problem does this PR solve?

  • tests-qvac/README.md led with an outdated manual iOS flow and missed the run:local:* one-liners shipped in @tetherto/qvac-test-suite 0.6.0.
  • No cursor rule captured the expectation that SDK edits should be evaluated for e2e test impact and that tests-qvac should be rebuilt on SDK API / model changes.
  • There was no shared convention for how to design e2e tests for a new SDK feature — happy/sad/error coverage, deterministic model-output assertions, mobile vs desktop placement, and smoke-suite selection.
  • SDK test workflow jobs (build, device-farm, run-producer, cleanup-device-farm) were indistinguishable between iOS and Android in the Actions UI when run under test-sdk.yml.
  • Local test runs were leaking generated artefacts (.env.bak-*, rag-hyperdb/) into the working tree.

📝 How does it solve it?

  • Rewrite packages/sdk/tests-qvac/README.md: local-first ordering, accurate MQTT broker behaviour (ws:8080 + tcp:1883, embedded aedes fallback), CI label triggers + manual workflow_dispatch entry point, the non-obvious workflow-branch vs test-version distinction, executor-placement guidance, and a smoke-suite policy. Adds a "Rebuilding after changes" decision table covering SDK / test-code / producer-only changes and --skip-build semantics.
  • Add prepare:sdk and install:build:full npm scripts so a single command rebuilds both the SDK and tests-qvac.
  • Add .cursor/rules/sdk/tests-qvac.mdc enforcing e2e impact checks on SDK changes, install:build / install:build:full rebuild on API or model constant changes, executor placement tree (tests/shared vs tests/desktop vs tests/mobile), and the smoke-suite policy (1-2 tests per feature, only when no existing coverage, stable on both desktop and mobile).
  • Add .cursor/skills/sdk-e2e-create/SKILL.md — investigate-first skill for planning and scaffolding e2e tests for new SDK features. Ranks model-output validation strategies (from deterministic keyword assertions down to shape-only fallbacks), enforces happy/sad/error coverage, covers mobile/desktop placement with memory + filesystem + platform constraints, and produces the exact run:local:desktop --filter command for local verification.
  • Bump @tetherto/qvac-test-suite ^0.5.1^0.6.0 and add install:build (npm install --install-links && npm run build) as a one-shot reinstall + rebuild.
  • Add display-only name: "[ios|android|desktop] …" prefixes to jobs in the three reusable test workflows. Job IDs, needs: graphs, outputs, and artifact names are unchanged.
  • Gitignore .env, .env.bak-*, and rag-hyperdb/ in tests-qvac.

🧪 How was it tested?

  • README rendered on GitHub preview; link targets verified against the repo layout.
  • git check-ignore confirms .env, .env.bak-*, and rag-hyperdb/ entries match.
  • Workflow renames are additive name: fields only; no changes to job graph or wire artefacts. Will be visible in the Actions UI on the next SDK test run.
  • npm run install:build / install:build:full scripts match the commands the existing README snippets (and CI) already rely on; install:build:full chains the existing root-level bun build.
  • Cursor skill and rule are doc-only additions.

…kflows

Add display `name:` fields to jobs in the three reusable SDK test
workflows so the Actions UI can tell platforms apart when they run under
the same umbrella (test-sdk.yml). Job IDs, needs: graphs, outputs, and
artifact names are unchanged.
- Bump @tetherto/qvac-test-suite from ^0.5.1 to ^0.6.0 to pick up the
  run:local:desktop / run:local:android / run:local:ios commands and
  the suite + bootstrap features used by the refreshed local flow.
- Add install:build script (npm install --install-links && npm run
  build) for a one-shot reinstall + rebuild after SDK changes.
- Lead with run:local:* one-liners instead of the old manual iOS flow.
- Document the MQTT broker requirement (ws:8080 + mqtt:1883) and the
  embedded aedes + websocket-stream fallback behaviour.
- Document the PR label triggers (test-e2e-smoke, test-e2e-full) and
  the manual workflow_dispatch entry point, including the non-obvious
  workflow-branch vs test-version distinction.
- Add a "Developing new tests" section with executor placement guidance
  (shared / desktop / mobile) and the smoke-suite policy (1-2 tests per
  feature, only when no existing smoke coverage).
- Keep manual Xcode fallback only as a troubleshooting bullet.
New cursor rule scoped to packages/sdk/** that enforces:

- Evaluate e2e test suite impact on any SDK source change.
- Rebuild tests-qvac via `npm run install:build` on SDK API or model
  constant changes; adapt or add tests accordingly.
- Executor placement decision tree (tests/shared vs tests/desktop vs
  tests/mobile) with the hard rule that node:* imports are banned from
  shared/ and mobile/.
- Smoke-suite policy: 1-2 tests per feature, only when no existing
  smoke coverage, stable on both desktop and mobile.
- Points at tests-qvac/README.md for the local-run and CI-trigger
  details.
Prevent accidental commits of local run artefacts:

- .env / .env.bak-* may contain MQTT credentials copied from
  .env.example.
- rag-hyperdb/ holds generated HyperDB corestore data from RAG tests.
@github-actions

github-actions Bot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

Tier-based Approval Status

**PR Tier:** TIER1

**Current Status:** ✅ APPROVED

**Requirements:**
- 1 Team Member approval ✅ (2/1)
- 1 Team Lead OR Management approval ✅ (1/1)



---
*This comment is automatically updated when reviews change.*

…ild flows

- package.json: prepare:sdk (bun install + build in packages/sdk/) and
  install:build:full (prepare:sdk + install:build) for one-shot
  SDK + tests-qvac rebuilds.
- README: new "Rebuilding after changes" section with a decision table
  covering SDK source changes, test-code-only changes, and
  producer-side-only changes (--skip-build). Clarifies that mobile
  always needs a fresh APK/IPA to pick up SDK or test-code changes and
  that --skip-build is strictly for re-runs with different suites or
  filters.
- Cursor rule now points at the README section and references
  install:build:full alongside install:build.
New Cursor skill under .cursor/skills/sdk-e2e-create/ that guides
planning and scaffolding of e2e tests in packages/sdk/tests-qvac for
new or changed public SDK APIs.

- Investigate-first flow: read the feature from code and existing
  tests, then present a concrete plan and ask targeted clarifying
  questions only where genuine ambiguity remains.
- Enforces happy / sad / error coverage for every public API feature.
- Ranks model-output validation strategies from deterministic
  keyword assertions down to shape-only fallbacks, to avoid weak
  coverage by default.
- Covers executor placement (shared / desktop / mobile) with mobile
  memory / filesystem / platform constraints.
- Smoke-suite selection rules: 1-2 tests per feature, only when no
  existing smoke coverage, stable across platforms.
- Includes scaffolding templates and the exact run:local:desktop
  --filter command to hand back to the user for local verification.

@simon-iribarren simon-iribarren left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving. Doc + tooling refresh only — README rewrite, new tests-qvac.mdc rule + sdk-e2e-create skill, and name: prefixes on reusable workflow jobs (display-only, job graph / outputs / artifacts unchanged). install:build and install:build:full scripts match how the README and CI already drive builds. Victor already approved on the latest commit. Zero runtime impact.

@lauripiisang lauripiisang merged commit aef9723 into main Apr 24, 2026
21 of 22 checks passed
@lauripiisang lauripiisang deleted the chore/tests-qvac-docs branch April 24, 2026 13:03
Proletter pushed a commit that referenced this pull request May 24, 2026
…es (#1712)

* infra: distinguish [ios] / [android] / [desktop] jobs in sdk test workflows

Add display `name:` fields to jobs in the three reusable SDK test
workflows so the Actions UI can tell platforms apart when they run under
the same umbrella (test-sdk.yml). Job IDs, needs: graphs, outputs, and
artifact names are unchanged.

* chore: bump qvac-test-suite to ^0.6.0 and add install:build script

- Bump @tetherto/qvac-test-suite from ^0.5.1 to ^0.6.0 to pick up the
  run:local:desktop / run:local:android / run:local:ios commands and
  the suite + bootstrap features used by the refreshed local flow.
- Add install:build script (npm install --install-links && npm run
  build) for a one-shot reinstall + rebuild after SDK changes.

* doc: rewrite tests-qvac readme for local-first workflow and ci triggers

- Lead with run:local:* one-liners instead of the old manual iOS flow.
- Document the MQTT broker requirement (ws:8080 + mqtt:1883) and the
  embedded aedes + websocket-stream fallback behaviour.
- Document the PR label triggers (test-e2e-smoke, test-e2e-full) and
  the manual workflow_dispatch entry point, including the non-obvious
  workflow-branch vs test-version distinction.
- Add a "Developing new tests" section with executor placement guidance
  (shared / desktop / mobile) and the smoke-suite policy (1-2 tests per
  feature, only when no existing smoke coverage).
- Keep manual Xcode fallback only as a troubleshooting bullet.

* doc: add cursor rule for tests-qvac e2e impact and authoring conventions

New cursor rule scoped to packages/sdk/** that enforces:

- Evaluate e2e test suite impact on any SDK source change.
- Rebuild tests-qvac via `npm run install:build` on SDK API or model
  constant changes; adapt or add tests accordingly.
- Executor placement decision tree (tests/shared vs tests/desktop vs
  tests/mobile) with the hard rule that node:* imports are banned from
  shared/ and mobile/.
- Smoke-suite policy: 1-2 tests per feature, only when no existing
  smoke coverage, stable on both desktop and mobile.
- Points at tests-qvac/README.md for the local-run and CI-trigger
  details.

* chore: gitignore tests-qvac local secrets and rag-hyperdb data

Prevent accidental commits of local run artefacts:

- .env / .env.bak-* may contain MQTT credentials copied from
  .env.example.
- rag-hyperdb/ holds generated HyperDB corestore data from RAG tests.

* chore: add install:build:full / prepare:sdk scripts and document rebuild flows

- package.json: prepare:sdk (bun install + build in packages/sdk/) and
  install:build:full (prepare:sdk + install:build) for one-shot
  SDK + tests-qvac rebuilds.
- README: new "Rebuilding after changes" section with a decision table
  covering SDK source changes, test-code-only changes, and
  producer-side-only changes (--skip-build). Clarifies that mobile
  always needs a fresh APK/IPA to pick up SDK or test-code changes and
  that --skip-build is strictly for re-runs with different suites or
  filters.
- Cursor rule now points at the README section and references
  install:build:full alongside install:build.

* doc: add sdk-e2e-create skill for e2e test planning

New Cursor skill under .cursor/skills/sdk-e2e-create/ that guides
planning and scaffolding of e2e tests in packages/sdk/tests-qvac for
new or changed public SDK APIs.

- Investigate-first flow: read the feature from code and existing
  tests, then present a concrete plan and ask targeted clarifying
  questions only where genuine ambiguity remains.
- Enforces happy / sad / error coverage for every public API feature.
- Ranks model-output validation strategies from deterministic
  keyword assertions down to shape-only fallbacks, to avoid weak
  coverage by default.
- Covers executor placement (shared / desktop / mobile) with mobile
  memory / filesystem / platform constraints.
- Smoke-suite selection rules: 1-2 tests per feature, only when no
  existing smoke coverage, stable across platforms.
- Includes scaffolding templates and the exact run:local:desktop
  --filter command to hand back to the user for local verification.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants