Zero-click Appwrite test environments.
Project description
appwrite-lab
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.
Installation
pip install appwrite-lab
Appwrite Lab features
- 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 Lab (in progress)
- Appwrite data population
CLI Usage
Help with appwrite-lab CLI
appwrite-lab --help
or
awlab --help
To get started spinning up a lab instance, use:
awlab new lab test --version 1.7.4
Note: This might take a few minutes the first time as its downloading all of the necessary images to launch Appwrite.
Example of additional args:
Additional arguments can be found here.
awlab new lab --help
awlab new lab test --version 1.7.4 --port 8005 --email test@example.com --password xxxxxxx12
To teardown
awlab stop test
Listing Appwrite Labs
awlab list labs
Sync an Appwrite lab from your prod lab schema
Run in the same folder where your appwrite.json is located to sync all resources:
awlab sync test
or sync a specific resource:
awlab sync test --resource functions
Python usage
Creating a lab
from 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="test@example.com",
admin_password="xxxxxxx12",
project_id=None, # for auto gen
project_name=None, # for auto gen
)
port=8005
)
assert lab_res.data
Random generation that's compliant
from appwrite_lab.models import AppwriteLabCreation
auth = AppwriteLabCreation.generate()
Syncing a lab
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,
)
Known Troubleshooting
Podman support and Selinux
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file appwrite_lab-0.1.4.tar.gz.
File metadata
- Download URL: appwrite_lab-0.1.4.tar.gz
- Upload date:
- Size: 28.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3dccef147c44d5000bda34dbd99ea8ecec10d3b10d313fb29a1d15d5dd6d16df
|
|
| MD5 |
a0c988d227711a529af6d3782a9f20b7
|
|
| BLAKE2b-256 |
49cc6da1cea41e5c758493b0ccd505eec04ad9c2e0ce8a198972239432a2f111
|
File details
Details for the file appwrite_lab-0.1.4-py3-none-any.whl.
File metadata
- Download URL: appwrite_lab-0.1.4-py3-none-any.whl
- Upload date:
- Size: 37.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
68e8d825dda8231f9d5aabc8f4a25a9178e99ac7c54e27bd6b988ab45badb794
|
|
| MD5 |
e68a89c922d23161b25af92e8f46cee6
|
|
| BLAKE2b-256 |
22f7fe82e70f385f30bc7e9b8831f4b07d32be05d7174e82ccbcd8eb41c567fd
|