The first export page is not the full catalogue. Specify how a supplier will advance pagination, detect a repeated cursor and record a terminal result. A large row count alone cannot prove all authorised items were exported, especially when a connector silently retries the same page.
Who should use this acceptance brief
Businesses buying CMS or catalogue migration exports. Use this as a scoped website handover task. Where real system evidence is required, teaching examples are not a substitute.
Source-bound platform fact
Shopify GraphQL connections use pagination information such as hasNextPage and endCursor to retrieve subsequent results. An API response is subject to permissions and current API rules. Shopify: GraphQL pagination · Checked 16 October 2026.
Filled teaching example
Synthetic example, not a client case. Finite inputs, expected decisions and counterexamples follow; no live integration is claimed.
On narrow screens, scroll to read the complete table.
| Input / case | Check basis | Expected decision |
|---|---|---|
| page A → cursor c1 → page B terminal | two distinct pages | terminal observed |
| c1 followed by c1 again | no progress | stop and review |
| hasNext=true, cursor missing | incomplete evidence | hold |
Run the acceptance exercise
- Record the export scope, API version and permitted object types before retrieval.
- Keep each page count, next cursor and terminal flag; stop on a repeated or missing continuation.
- Compare distinct IDs and a permitted source count, including updates during the export window.
Interpret the result and retain evidence
The fixture examines a finite supplied page log; it makes no API calls. A terminal log proves the log reached its stated end, not that permissions exposed every business record. Deduplication, removals and changes during export still require a reconciliation policy. This is a catalogue portability contract rather than a payments revenue report.
Limits before implementation
Not an exporter or API-completeness certification. No paid API/key, account permission or customer-data access is added.
Replay the finite example
Save both files in one folder and run with Node22.13 or newer. The example sends no network requests and changes no account or site. Filled inputs and expected outputs · Inspectable functions
node decision-check.mjs catalogue-export-cursor-completeness.json