Happy path / Lifecycle
Open Zapier app settings.
Organizer sees app publication status, auth test status, version, and review state.
Connect Zapier through OAuth.
Zapier auth validates account access and returns sample account metadata.
Publish version.
Version management shows draft, review, approved, and published states with audit evidence.
Failure modes
OAuth refresh
Expired app token refreshes and retries Zapier auth test.
Rate limit
Zapier review API 429 backs off with jitter.
Webhook replay
Review callback replay is idempotent.
Schema drift
Unknown Zapier app review fields are ignored.
Missing credential
Missing client credentials show friendly re-auth/setup copy.
Sandbox isolation
Mock fixture cannot publish or read production Zapier app data.
Audit row
Every auth test or publish attempt writes an audit row.
Partial rollback
Failed publish rolls back version state or shows per-step outcomes.
Review rejection
Zapier review errors are shown with field-level remediation.
Version collision
Concurrent version publish resolves with conflict UI.
Sample payload missing
Publication blocks until each trigger has sample payload.
Parity gap
Gap panel remains until public Zapier app publication exists.
Stable test attributes
Visibility teeth. Publication state, review errors, and gap marker must be visible.
| data-test | Where | Purpose |
|---|---|---|
zapier-app-panel | Zapier settings | main surface |
zapier-auth-test-cta | Zapier settings | auth test |
zapier-app-status-pill | Zapier settings | publication status |
zapier-version-table | Zapier settings | versions |
zapier-review-error-panel | Zapier settings | review errors |
zapier-publish-cta | Zapier settings | publish action |
zapier-app-gap-panel | Zapier settings | absent gap marker |
Agent test plan
- zapier-app-opens
- zapier-auth-test
- oauth-refresh-on-expired-token
- rate-limit-backoff
- webhook-replay-idempotent
- schema-drift-degrades-gracefully
- missing-credential-graceful-error
- sandbox-vs-prod-isolation
- audit-log-row-per-sync
- partial-import-rollback
- zapier-review-rejection
- zapier-version-collision
- zapier-sample-payload-required
- zapier-app-gap-probe