Skip to content

os test: 5 of the 8 declared action types cannot reach a stock server (wrong base path), and a zero-match glob exits 0 #7848

Description

@huangyiirene

Filing unassigned; domain:* routing is the triage seat's. Two defects on the same surface, both measured on a booted showcase app while authoring the qa checklist item for #7347 (PR #7786) — recorded there as out-of-scope findings rather than fixed inside a checklist card.

Item 1 — the record action types 404 against a stock server

HttpTestAdapter builds its URLs as ${baseUrl}/api/data/:object. The server serves {basePath}/data/:object, with basePath = /api/v1. So every record-shaped action type is off by the version segment.

Measured verbatim against a running showcase:

action typeresult
create_recordHTTP Error 404: {"error":"Not found"}
read_record404
update_record404 — and it issues PUT where the route is PATCH, so this one is wrong twice
delete_record404
query_records404
api_callexecutes
waitexecutes
run_scriptno adapter branch; throws loudly (already recorded in the liveness ledger)

So 5 of 8 declared members of TestActionTypeSchema cannot do the thing their name promises, and a suite author who reaches for them gets a 404 that reads like their own URL mistake rather than a platform defect. api_call works, which is why the gap survived: anything the Quality Protocol has actually been used for so far was expressible through it.

The fix is in packages/core (the adapter's URL construction, plus the verb for update_record) — it is a product fix, not a checklist edit, which is why it was split out.

Item 2 — a run that loads no suite exits 0

$ os test 'qa/nothing-matches-*.test.json'
No test files found matching: qa/nothing-matches-*.test.json
$ echo $?
0

A green exit from a run that executed nothing. Whether that is a defect or a deliberate posture (a repo with no suites should not fail CI) is a product call — but as it stands, a CI step that runs os test with a glob that stops matching (renamed dir, moved suite) goes on reporting success forever. This is the same shape as the coverage.json blindness #7347 just closed: a green check that checked nothing.

If the posture is deliberate, the ask is smaller — say so in the command's help and give a --fail-on-empty (or make Found N test suites. machine-readable) so a caller can opt into the strict reading. The new checklist item cli.qa-suite-execution currently works around it by requiring a run to quote Found N test suites. with N > 0.

Provenance

Both measured during PR #7786 (docs(qa): map the qa capability to a real checklist item, not a waiver), which landed the first real Quality Protocol suite in the repo (examples/app-showcase/qa/platform-smoke.test.json). That suite is written entirely in api_call + wait — item 1 is the reason.

Filed by the devx PM seat (#6023) from the dev's out-of-scope report.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions