Skip to main content

Execute Luau tests on Roblox Cloud

Project description

Aether

PyPI version License: MIT

Aether is a powerful CLI tool designed to execute Luau tests (TestEZ) directly on Roblox Cloud. It allows you to run unit tests from your local machine and see the results instantly, integrating seamlessly into your development workflow.

Features

  • 🚀 Run Tests on Cloud: Execute tests in a live Roblox server environment.
  • 📦 Rojo Integration: Automatically respects your default.project.json structure.
  • ⚙️ Configurable: Use roblox-test-runner.toml (legacy) or aether.toml (future) to customize paths, timeouts, and more.
  • 🔄 Watch Mode: Automatically re-run tests when files change (-w).
  • 🤖 CI/CD Ready: Native support for GitHub Actions authentication.
  • 🎯 Run Failed: Easily retry only failed tests with --failed.

Installation

Using pip

pip install roblox-aether

Using rokit

You can also install Aether using Rokit:

rokit add gado7h/aether

Quick Start

  1. Initialize Configuration:

    aether init
    

    This creates a configuration file.

  2. Set API Key (for local development):

    aether set-api <YOUR_API_KEY>
    
  3. Run Tests:

    aether run
    

    or watch for changes:

    aether run --watch
    

Usage

Commands

  • run [test_name]: Run tests. omit test_name to run all.
    • -v, --verbose: Show full logs.
    • -w, --watch: Watch mode.
    • -j, --json: JSON output.
    • --failed: Run only tests that failed in the previous run.
  • init: Create default configuration.
  • config: View current configuration.
  • set-api <key>: Save API key.
  • auth: CI/CD authentication helper.

Configuration (aether.toml)

[runner]
timeout = 60
tests_folder = "tests"

[project]
rojo_project = "default.project.json"

Environment & Debugging

Execution Environment

Tests run in a Roblox Cloud headless environment. This has some important limitations:

  • No Physics Simulation: Gravity and physics stepping do not run automatically. The environment is "static". If your tests rely on physics, you may need to manually step the physics engine or mock it.
  • Headless: No visual rendering.
  • Script Context: Tests run inside a temporary script, often referred to as TaskScript.

Debugging

The runner automatically maps stack traces from the bundled TaskScript back to your original source files (supported for .luau files managed by Rojo).

  • Tracebacks now use relative paths for easier reading (e.g., src/my_script.server.luau:45).
  • Use print() debugging freely; logs are streamed back to your terminal.

API Keys

API keys can be provided in three ways (checked in order):

  1. CLI Argument: aether run --key <KEY> (mostly for CI)
  2. Environment Variable: ROBLOX_API_KEY
  3. User Configuration: Saved via aether set-api <KEY> (stored in your user home directory)

Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

roblox_aether-0.3.6.tar.gz (34.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

roblox_aether-0.3.6-py3-none-any.whl (42.6 kB view details)

Uploaded Python 3

File details

Details for the file roblox_aether-0.3.6.tar.gz.

File metadata

  • Download URL: roblox_aether-0.3.6.tar.gz
  • Upload date:
  • Size: 34.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for roblox_aether-0.3.6.tar.gz
Algorithm Hash digest
SHA256 2ff0fc6e52ce86e0cfb6e5d7c140775e4755ec4ba7ab920fad1309bc9e983fba
MD5 b743cfe2fade163c77584e1ecb391c66
BLAKE2b-256 8264a9a2d4e5e0e6fa18bc5f19b43dc7f7236481ef4d0bbd2bab5c604437ff0f

See more details on using hashes here.

File details

Details for the file roblox_aether-0.3.6-py3-none-any.whl.

File metadata

  • Download URL: roblox_aether-0.3.6-py3-none-any.whl
  • Upload date:
  • Size: 42.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for roblox_aether-0.3.6-py3-none-any.whl
Algorithm Hash digest
SHA256 04aaf452eefd076cc638270b800932571f35ac7084c1399e66ae1e34e62d733e
MD5 d1f07f49a3d094360a98ce32629a08f1
BLAKE2b-256 e680939d43b96e469e4bcbd5f7d85a7f28d40a75542e47836af7eed2f0bad5b0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page