Supabase Plugin
Test your entire Supabase stack—database, authentication, and storage.
Quick Start
- name: "Query users"
  plugin: supabase
  config:
    url: "{{ .env.SUPABASE_URL }}"
    key: "{{ .env.SUPABASE_SERVICE_KEY }}"
    operation: "select"
    table: "users"
    select:
      columns: ["id", "name", "email"]
      filters:
        - column: "status"
          operator: "eq"
          value: "active"
Database Operations
SELECT
operation: "select"
table: "users"
select:
  columns: ["id", "name", "email"]
  filters:
    - column: "status"
      operator: "eq"
      value: "active"
  order:
    - column: "created_at"
      ascending: false
  limit: 10
  offset: 0
INSERT
operation: "insert"
table: "users"
insert:
  data:
    name: "John Doe"
    email: "john@example.com"
save:
  - json_path: ".[0].id"
    as: "user_id"
UPDATE
operation: "update"
table: "users"
update:
  data:
    status: "verified"
  filters:
    - column: "id"
      operator: "eq"
      value: "{{ user_id }}"
DELETE
operation: "delete"
table: "users"
delete:
  filters:
    - column: "id"
      operator: "eq"
      value: "{{ user_id }}"
Filter Operators
eq, neq, gt, gte, lt, lte, like, ilike, is, in
filters:
  - column: "status"
    operator: "in"
    value: ["active", "premium"]
  - column: "name"
    operator: "ilike"
    value: "%smith%"
RPC Functions
operation: "rpc"
rpc:
  function: "get_user_count"
  params:
    min_age: 18
save:
  - json_path: "."
    as: "user_count"
Authentication
Sign Up
operation: "auth_sign_up"
auth:
  email: "user@example.com"
  password: "SecurePass123!"
  user_metadata:
    name: "John Doe"
save:
  - json_path: ".user.id"
    as: "user_id"
Sign In
operation: "auth_sign_in"
auth:
  email: "{{ test_email }}"
  password: "{{ test_password }}"
save:
  - json_path: ".session.access_token"
    as: "access_token"
Use extracted tokens in HTTP requests:
- name: "Call protected endpoint"
  plugin: http
  config:
    url: "{{ .env.API_URL }}/api/profile"
    headers:
      Authorization: "Bearer {{ access_token }}"
Admin Operations (Service Role)
# Create user with auto-confirmation
operation: "auth_create_user"
auth:
  email: "admin@example.com"
  password: "AdminPass123!"
  email_confirm: true
  user_metadata:
    role: "staff"
# Delete user
operation: "auth_delete_user"
auth:
  user_id: "{{ user_id }}"
Storage
Create Bucket
Upload File
operation: "storage_upload"
storage:
  bucket: "uploads"
  path: "documents/test.txt"
  file_content: "Test content"
  content_type: "text/plain"
Download File
Best Practices
- Credentials: Use environment variables for URL and keys
 - Cleanup: Always delete test data in cleanup hooks
 - Uniqueness: Generate unique emails with timestamps
 - Keys: Use service role key for admin operations, anon key for client operations
 
See Also
- Variables - Managing credentials with environment variables
 - Lifecycle Hooks - Setting up and cleaning up test data