Zero-click Appwrite test environments.
Allows you to spin up versioned Appwrite deployments for easy testing via CLI or through code, that can be ran in a sequence of E2E tests.
pip install appwrite-lab- Spin up ephemeral Appwrite instances with Docker/Podman
- Automatically grab API keys (for programmatic access)
- Environment syncing (with
appwrite.json) - Clean teardowns
- Test suite
- Appwrite data population
appwrite-lab --helpor
awlab --helpawlab new lab test --version 1.7.4Note: This might take a few minutes the first time as its downloading all of the necessary images to launch Appwrite.
Additional arguments can be found here.
awlab new lab --helpawlab new lab test --version 1.7.4 --port 8005 --email [email protected] --password xxxxxxx12awlab stop testawlab list labs
Run in the same folder where your appwrite.json is located to sync all resources:
awlab sync testor sync a specific resource:
awlab sync test --resource functionsfrom appwrite_lab import Labs
from appwrite_lab.automations.models import AppwriteLabCreation
labs = Labs()
lab_res = labs.new(
name="test",
version="1.7.4",
auth=AppwriteLabCreation(
admin_email="[email protected]",
admin_password="xxxxxxx12",
project_id=None, # for auto gen
project_name=None, # for auto gen
)
port=8005
)
assert lab_res.datafrom appwrite_lab.models import AppwriteLabCreation
auth = AppwriteLabCreation.generate()from appwrite_lab import Labs
from appwrite_lab.automations.models import Expiration
Labs().sync_with_appwrite_config(
name="test",
appwrite_json="appwrite.json", # if not directly in folder
sync_type="all",
expiration=Expiration.THIRTY_DAYS,
)Since I am mimicking the compose file that Appwrite provides, it was not designed to work rootless, but I have adjusted to work also on Fedora. You will need to turn selinux off for now to use.