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.13.tar.gz (18.7 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.13-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: lilacli-0.1.13.tar.gz
  • Upload date:
  • Size: 18.7 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.13.tar.gz
Algorithm Hash digest
SHA256 47b7f5477952a62fe3784a837b0c95f0802d6a1eaec165364ee257b72133397a
MD5 1bbc1c26f37d9af8f5711c59b661d46b
BLAKE2b-256 b4c3b8c0ea3cb62f39cbceced19d374097a015213ac71fb06393583bcbebb5bd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lilacli-0.1.13-py3-none-any.whl
  • Upload date:
  • Size: 18.7 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.13-py3-none-any.whl
Algorithm Hash digest
SHA256 2372bbddf637e93a063cb8d43a8e35cddf586cb790c5e352d3c18a33bc435acb
MD5 5533fd911d9156a5c5d46d3dd77b2761
BLAKE2b-256 4830b07a8e11bc2d5c75b37cee5d3f68fa346b2cdaf972895185df524dc5c4d9

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