Skip to main content

A CLI for lila.dev

Project description

The best testing framework for startups 🚀

PyPI - Version Documentation CI Twitter Discord GitHub Repo stars

Lila CLI is a powerful tool for running end-to-end tests written in human-readable plain text using YAML files. It simplifies the testing process by allowing anyone in the team to write tests in a natural, easy-to-understand format.

No coding required.

Quick start

With pip (Python>=3.11)

pip install lilacli

Install Playwright Chromium web drivers

playwright install chromium

Create your first testcase in a demo.yaml file

steps:
  - goto: https://www.google.com/maps

  - input: Empire State on the main search bar
    verify: a dropdown with suggestions appears

  - click: on the first suggestion from the dropdown
    verify: the map shows the Empire State Building in NY

Fetch an API Key from Lila app and add it to an .env file:

LILA_API_KEY=...

Run

lila run demo.yaml

How does it work?

Lila runs your app in a local browser with Playwright and uses an LLM-powered engine to guide the CLI run high level instructions. Lila extracts information from the DOM using the awesome library browser-use

Why Lila?

  • No coding required.
  • Self healing tests, does not rely on low level implementation.
  • Anyone in the team can implement tests.
  • Integrates natively with Playwright storage states.
  • Runs browser locally, making it ideal for localdev or staging environments.

Writing tests

Tests are just YAML files. Here is the same example as the quick start.

steps:
  - goto: https://www.google.com/maps

  - input: Empire State on the main search bar
    verify: a dropdown with suggestions appears

  - click: on the first suggestion from the dropdown
    verify: the map shows the Empire State Building in NY

Step types

goto: navigate to a URL

- goto: https://private.staging.my-app.com

click: perform a click on a described element

- click: on the checkout cart
# or
- click: on the direction item
# or
- click: on button 'Create'

input: type text into an input field

- input: foo@bar.com as email
# or
- input: iPad mini in the main search bar

submit: submits a form by clicking a button or pressing enter

- submit: the login form
# or
- submit: the search

wait: just waits N seconds

- wait: 10  # waits 10 seconds

pick: pick an element from a dropdown

- pick: EST from the timezone dropdown

exec: run a bash command

- exec: |  # multiline
    curl -X POST ...

# or
- exec: psql -c "INSERT ..." # single line

Verifications

Each step can have one or more verify assertions.

- goto: https://my-app.com/login
  verify: there is a login form with username and password  # Single verification

- click: the checkout cart
  verify:  # multi verifications
    - 5 items appear in the purchase summary
    - the total is 500 USD

More on building tests

For more information on how to build tests, checkout the guides

More examples

For test examples, Lila runs daily a suite of tests over public URLs. Check them out here

Creating an account

Lila is free for beta users. Create your free account at https://lila.dev. You will need the account to fetch an API key to run lila CLI.

Reusing state

Lila runs save the browser state in the output folder. To re-use where another test left off, just pass --browser-state parameter.

For example:

login.yaml:

steps:
  - goto: https://my-app.com/login
  - input: foobar as username
  - input: barbaz as password
  - submit: the login form
    verify: login was successful

lila run login.yaml -> This will generate lila-output/login.json

dashboard.yaml (needs a logged in user)

steps:
  - goto: https://my-app.com/dashboard
    verify: there is a panel displaying metrics

lila run dashboard.yaml --browser-state lila-output/login.json

CLI Parameters

  • --browser-state: Initialize the browser with a Playwright JSON storage session
  • --tags: Filter tests by specified comma-separated tags
  • --exclude-tags: Filter out tests by specified comma-separated tags
  • --output-dir: Specify the output directory for the browser states
  • --config: Point to the lila.toml config file if not using the root location
  • --headless: If present, does not open browser
  • --debug: Displays debug logs

CI/CD ready

Checkout an example for a daily run using GHA

Documentation

For comprehensive documentation, visit docs.lila.dev.

Examples

Find a variety of test examples in our examples repository, showcasing different testing scenarios and best practices.

Contact

Reach out at info@lila.dev

Join our Discord server

Follow us at Twitter - X

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

lilacli-0.1.12.tar.gz (18.9 kB view details)

Uploaded Source

Built Distribution

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

lilacli-0.1.12-py3-none-any.whl (19.0 kB view details)

Uploaded Python 3

File details

Details for the file lilacli-0.1.12.tar.gz.

File metadata

  • Download URL: lilacli-0.1.12.tar.gz
  • Upload date:
  • Size: 18.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.11

File hashes

Hashes for lilacli-0.1.12.tar.gz
Algorithm Hash digest
SHA256 b65b41c7e7c9d4e4fa685f03f0d0979211f229d306ddc4c58814c4dfde5d4cde
MD5 8ee48bc9e0c44c853435d98250866df2
BLAKE2b-256 e7bec0678895af3aef959589dfc88a451fbc07055eafe7f638a8b2fadb5fc954

See more details on using hashes here.

File details

Details for the file lilacli-0.1.12-py3-none-any.whl.

File metadata

  • Download URL: lilacli-0.1.12-py3-none-any.whl
  • Upload date:
  • Size: 19.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.11

File hashes

Hashes for lilacli-0.1.12-py3-none-any.whl
Algorithm Hash digest
SHA256 53bcf5bc334d22308800ce54cd589aaa0ddf680d02c50d8b41465248f1259d00
MD5 f0bd11802a93d003fca845cf949d278c
BLAKE2b-256 0fb2577599ea87f7c1061c03e00fdcd0e84f3dfbf2e78c8e3fb38ad63d9df83a

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