Playwright Behavior Coverage Gaps
This document compares portal API client endpoints with endpoints currently asserted by behavior-level Playwright integration tests.
- Scope:
apps/websites/customer/src/lib/api.tsandapps/websites/support/src/lib/api.ts - Behavior-covered means the Playwright tests explicitly wait for and assert a successful API response for that endpoint pattern.
- Route-level mapping coverage is handled outside this behavior test inventory.
Support Portal (management API)
- Total API client endpoints: 71
- Behavior-covered by Playwright assertions: 29
- Not behavior-covered: 42
Not Behavior-Covered Endpoints
DELETE /devicesDELETE /orgs/{param}DELETE /orgs/{param}/members/{param}DELETE /orgs/{param}/stores/{param}DELETE /staff/{param}GET /auth/meGET /healthGET /orgs/{param}/activity-logGET /orgs/{param}/membersGET /orgs/{param}/notifications/{param}GET /orgs/{param}/notifications/unread-countGET /orgs/{param}/stores/{param}/terminalsGET /stores/{param}/activity-logGET /stores/{param}/activity-log/{param}GET /stores/{param}/activity-log/actionsGET /stores/{param}/activity-log/entity-typesGET /stores/{param}/activity-log/user/{param}GET /stores/{param}/export/batchesGET /stores/{param}/export/inventoryGET /stores/{param}/export/salesGET /stores/{param}/export/transactionsGET /stores/{param}/reports/dashboardGET /stores/{param}/reports/inventoryGET /stores/{param}/reports/membersGET /stores/{param}/reports/salesGET /support/knowledgeGET /support/knowledge/{param}GET /support/ticketsGET /support/tickets/{param}POST /devicesPOST /orgs/{param}/activatePOST /orgs/{param}/membersPOST /orgs/{param}/notifications/{param}/readPOST /orgs/{param}/notifications/read-allPOST /orgs/{param}/stores/{param}/activatePOST /orgs/{param}/stores/{param}/terminals/{param}/onboarding-tokens/{param}/confirmPOST /orgs/{param}/stores/{param}/terminals/{param}/regenerate-secretPOST /orgs/{param}/superadminPOST /staff/{param}/activatePOST /staff/invites/acceptPOST /staff/invites/validatePUT /orgs/{param}/members/{param}
Customer Portal (merchant API)
- Total API client endpoints: 189
- Behavior-covered by Playwright assertions: 31
- Not behavior-covered: 158
Not Behavior-Covered Endpoints
DELETE /devicesDELETE /orgs/{param}/customers/{param}DELETE /orgs/{param}/iam/groups/{param}DELETE /orgs/{param}/iam/roles/{param}DELETE /orgs/{param}/iam/roles/users/{param}/{param}DELETE /orgs/{param}/integrations/{param}DELETE /orgs/{param}/members/{param}DELETE /orgs/{param}/suppliers/{param}/products/{param}DELETE /stores/{param}/invites/{param}DELETE /stores/{param}/members/{param}DELETE /stores/{param}/products/{param}DELETE /stores/{param}/shifts/assigned/{param}DELETE /stores/{param}/shifts/preferences/{param}DELETE /stores/{param}/tax-configs/{param}DELETE /stores/{param}/upsells/{param}GET /auth/meGET /devicesGET /healthGET /orgs/{param}/activity-logGET /orgs/{param}/categories/{param}GET /orgs/{param}/categories/treeGET /orgs/{param}/iam/groupsGET /orgs/{param}/iam/groups/{param}GET /orgs/{param}/iam/permissionsGET /orgs/{param}/iam/rolesGET /orgs/{param}/iam/roles/{param}GET /orgs/{param}/iam/roles/users/{param}GET /orgs/{param}/integrationsGET /orgs/{param}/integrations/{param}GET /orgs/{param}/integrations/runtimeGET /orgs/{param}/invitesGET /orgs/{param}/membersGET /orgs/{param}/notificationsGET /orgs/{param}/notifications/{param}GET /orgs/{param}/notifications/unread-countGET /orgs/{param}/promotions/{param}GET /orgs/{param}/promotions/activeGET /orgs/{param}/serial-numbersGET /orgs/{param}/serial-numbers/{param}GET /orgs/{param}/serial-numbers/lookup/{param}GET /orgs/{param}/stock-transfersGET /orgs/{param}/stock-transfers/{param}GET /orgs/{param}/storesGET /orgs/{param}/stores/{param}GET /orgs/{param}/stores/{param}/batchesGET /orgs/{param}/stores/{param}/batches/{param}GET /orgs/{param}/stores/{param}/terminals/{param}GET /orgs/{param}/stores/{param}/terminals/{param}/payment-configGET /orgs/{param}/stores/{param}/transactionsGET /orgs/{param}/stores/{param}/transactions/{param}GET /orgs/{param}/stores/{param}/transactions/daily-salesGET /orgs/{param}/stores/{param}/transactions/summaryGET /orgs/{param}/stores/{param}/usersGET /orgs/{param}/suppliers/{param}/productsGET /orgs/{param}/usersGET /stores/{param}/activity-logGET /stores/{param}/activity-log/{param}GET /stores/{param}/activity-log/actionsGET /stores/{param}/activity-log/entity-typesGET /stores/{param}/activity-log/user/{param}GET /stores/{param}/complianceGET /stores/{param}/compliance/{param}GET /stores/{param}/compliance/summaryGET /stores/{param}/discounts/{param}GET /stores/{param}/discounts/activeGET /stores/{param}/export/batchesGET /stores/{param}/export/inventoryGET /stores/{param}/export/salesGET /stores/{param}/export/transactionsGET /stores/{param}/inventoryGET /stores/{param}/inventory/{param}GET /stores/{param}/inventory/{param}/historyGET /stores/{param}/invitesGET /stores/{param}/membersGET /stores/{param}/onboarding/statusGET /stores/{param}/productsGET /stores/{param}/products/{param}GET /stores/{param}/products/barcode/{param}GET /stores/{param}/products/typesGET /stores/{param}/reports/dashboardGET /stores/{param}/reports/inventoryGET /stores/{param}/reports/membersGET /stores/{param}/reports/salesGET /stores/{param}/returnsGET /stores/{param}/returns/{param}GET /stores/{param}/shifts/assignedGET /stores/{param}/shifts/preferencesGET /stores/{param}/shifts/preferences/meGET /stores/{param}/shifts/requestsGET /stores/{param}/shifts/requests/pendingGET /stores/{param}/shifts/statusGET /stores/{param}/tax-configsGET /stores/{param}/tax-configs/{param}GET /stores/{param}/tax-configs/activeGET /stores/{param}/upsellsGET /stores/{param}/upsells/{param}POST /auth/change-passwordPOST /devicesPOST /invites/acceptPOST /invites/validatePOST /orgs/{param}/customers/{param}/pointsPOST /orgs/{param}/iam/groupsPOST /orgs/{param}/iam/rolesPOST /orgs/{param}/iam/roles/users/{param}POST /orgs/{param}/integrationsPOST /orgs/{param}/integrations/{param}/togglePOST /orgs/{param}/integrations/runtime/{param}/syncPOST /orgs/{param}/integrations/runtime/syncPOST /orgs/{param}/invitesPOST /orgs/{param}/invites/{param}/revokePOST /orgs/{param}/membersPOST /orgs/{param}/notifications/{param}/readPOST /orgs/{param}/notifications/read-allPOST /orgs/{param}/serial-numbersPOST /orgs/{param}/serial-numbers/{param}/returnPOST /orgs/{param}/serial-numbers/{param}/sellPOST /orgs/{param}/stock-transfersPOST /orgs/{param}/stock-transfers/{param}/cancelPOST /orgs/{param}/stock-transfers/{param}/receivePOST /orgs/{param}/stock-transfers/{param}/shipPOST /orgs/{param}/stores/{param}/batches/{param}/settlePOST /orgs/{param}/stores/{param}/transactions/{param}/voidPOST /orgs/{param}/stores/{param}/users/{param}/activatePOST /orgs/{param}/stores/{param}/users/{param}/deactivatePOST /orgs/{param}/suppliers/{param}/productsPOST /stores/{param}/compliance/overridePOST /stores/{param}/inventory/adjustPOST /stores/{param}/inventory/receivePOST /stores/{param}/inventory/transferPOST /stores/{param}/invitesPOST /stores/{param}/invites/{param}/revokePOST /stores/{param}/membersPOST /stores/{param}/onboarding/completePOST /stores/{param}/productsPOST /stores/{param}/returnsPOST /stores/{param}/shifts/assignedPOST /stores/{param}/shifts/clock-inPOST /stores/{param}/shifts/clock-outPOST /stores/{param}/shifts/preferencesPOST /stores/{param}/shifts/requestsPOST /stores/{param}/shifts/requests/{param}/reviewPOST /stores/{param}/tax-configsPOST /stores/{param}/upsellsPOST /stores/{param}/upsells/{param}/togglePOST /stores/{param}/upsells/recommendationsPUT /orgs/{param}/iam/groups/{param}PUT /orgs/{param}/iam/roles/{param}PUT /orgs/{param}/integrations/{param}PUT /orgs/{param}/members/{param}PUT /orgs/{param}/stores/{param}PUT /orgs/{param}/stores/{param}/users/{param}PUT /orgs/{param}/stores/{param}/users/{param}/pinPUT /stores/{param}/members/{param}PUT /stores/{param}/products/{param}PUT /stores/{param}/shifts/assigned/{param}PUT /stores/{param}/shifts/preferences/{param}PUT /stores/{param}/tax-configs/{param}PUT /stores/{param}/upsells/{param}