botwork is a single-binary, generic and open-source automation framework written in Rust for acceptance testing & RPA

Overview

botwork

botwork is a single-binary, generic and open-source automation framework written in Rust for acceptance testing, acceptance test driven development (ATDD), and robotic process automation (RPA). The syntax is basically plain text (in any human lanuage) with parameters. Easily extendible with Rust, Python & JavaScript. An efficient, fast alternative to Robot Framework.

Why botwork?

I have been using RobotFramework for a couple of years now. While it is a super-awesome framework, there are a couple of things that I am not very fond of:

  1. It basically requires Python (and virtualenv) to run. This means, it needs more space (when building container images, for instance) and consumes a lot of memory (Python is the love of my life, but it is slow and resource-heavy).
  2. The syntax could have been even more simpler. For instance, two (or more) space token seperator, ${}, @{}, etc. variable usage confuses people who are new to the framework.
  3. It is mostly extendible only with Python.

I wanted:

  1. An efficient, fast, single-binary tool.
  2. An even more simpler syntax than RobotFramework.
  3. Extendible with Rust, Python (via PyO3), JavaScript (via neon), etc
  4. Proper language defnition with PEG parser.
  5. LSP & TreeSitter Support.
  6. Most of all, to have fun building something that I can introduce to my kids.

Getting Started

  1. Clone the repo
  2. run cargo run -- --file examples/02-syntaxes.botwork

Or you can create a file from below sample and pass the path to cargo run

Sample Code

Here is what a botwork script might looke like right now

# Declaration
What is square-root of |number| divided by |divisor| equals, eh?!... {
	|square| = |number ^ 2|
	Return |square/divisor| 
	Log |"This statement will never execute"|
}

# Invocation (case-insensitive)
|answer| = WHAT is    sQuAre-RoOt of |6| divided by|2|equals, EH?!...

Log |"Here is your answer:"|
Log |answer|

Roadmap to version 1.0

botwork is just taking its baby steps. There are so many things that are still missing and it goes without saying the the syntax & apis will change any time. Not to mention the hacy code that I managed to get working over the weekend. The Idea is to let it out in the wild and see if people are interested in a tool like this.

If there is interest out there for a tool like botwork, I plan to dedicate more time to make v1.0 happen. So here is a bunch of things that needs to be done before botwork can be tagged v1.0:

  • Basic syntax
    • Statements
    • If condition
    • For & While loop
    • Basic arithmatic and logical operations
    • Datatypes: int, float, string, bool, array, map
    • Try/Catch
    • Custom statements
    • Map and Array access
    • Imports (other botwork files, wasm files, packages; locally or from URL)
  • Docs
    • README
    • Getting started docs
    • Syntax docs
    • Statement docs
  • More statements out-of-box (like the ones RobotFramework Offers)
  • integrations
    • Selenium/Webdriver
    • Appium
    • Playwirght
  • Reports
    • Console Reports
    • JSON Reports
    • HTML Reports
    • Report listeners
  • Tooling
    • LSP support
    • Editor support (Mainly Helix/Vim/VS Code)
    • TreeSitter grammar
    • Linting
    • Trusted & Verified registry (for botwork packages)
    • Python extention support (via pyo3)
    • Javascript extention support (via neon)
    • WASM extention support (via WASI)
  • CLI
    • Ability to pass variables from CLI / Files
    • Run in parallel
  • Fully async, non-blocking operations
  • Refactor my crappy code :P
  • Unit-tests with atleast 50% coverage
You might also like...
zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets you're watching easily into watchlists for easy access on your terminal.
zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets you're watching easily into watchlists for easy access on your terminal.

zigfi zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets

Open source email client written in Rust and Dioxus. Under 🏗️
Open source email client written in Rust and Dioxus. Under 🏗️

Blazemail A full-featued, beautiful, mail client that doesn't suck. Works on mac, windows, linux, mobile, web, etc. Features, status Blazemail is curr

A blazing fast command line license generator for your open source projects written in Rust🚀
A blazing fast command line license generator for your open source projects written in Rust🚀

Overview This is a blazing fast ⚡ , command line license generator for your open source projects written in Rust. I know that GitHub

Open source programming language written in Rust.

No longer maintained! Tron Programming Language An open-source programming language written in Rust. Installation Before starting the installation, pl

Open source programming language written in Rust.

Tron Programming Language An open-source programming language written in Rust. Installation Before starting the installation, please make sure that yo

CarLI is a framework for creating single-command and multi-command CLI applications in Rust

CarLI is a framework for creating single-command and multi-command CLI applications in Rust. The framework provides error and IO types better suited for the command line environment, especially in cases where unit testing is needed.

Horus is an open source tool for running forensic and administrative tasks at the kernel level using eBPF, a low-overhead in-kernel virtual machine, and the Rust programming language.
Horus is an open source tool for running forensic and administrative tasks at the kernel level using eBPF, a low-overhead in-kernel virtual machine, and the Rust programming language.

Horus Horus is an open-source tool for running forensic and administrative tasks at the kernel level using eBPF, a low-overhead in-kernel virtual mach

Over-simplified, featherweight, open-source and easy-to-use authentication and authorization server.

concess ⚠️ Early Development: This is not production ready, yet. Do not use it for anything important. Introduction concess is a over-simplified, feat

Get your loadshedding schedule in your calendar and never be left in the dark! Open-source, up-to-date, and developer friendly.
Get your loadshedding schedule in your calendar and never be left in the dark! Open-source, up-to-date, and developer friendly.

Loadshedding schedules in your digital calendar. No apps, no ads, up-to-date, and developer friendly. Get it • Key Features • Using the data • Project

Owner
Nitimis
We craft scalable, secure and maintainable FOSS softwares with Python, Rust & WebAssembly. We help organizations automate their QA efforts. 🌹
Nitimis
Command line tool for cheap and efficient email automation written in Rust

Pigeon Pigeon is a command line tool for automating your email workflow in a cheap and efficient way. Utilize your most efficient dev tools you are al

null 57 Nov 20, 2022
A library and binary for testing unhooking ntdll by identifying hooks via in-memory disassembly

(First Public?) Sample of unhooking ntdll (All Exports & IAT imports) hooks in Rust using in-memory disassembly, avoiding direct syscalls and all hooked functions (incl. hooked NtProtectVirtualMemory)

Signal Labs 52 Apr 9, 2023
zman is a CLI year (time) progress that small, fast, and just one single binary.

zman zman is a CLI year (time) progress that small, fast, and just one single binary. Features Show year progress Show month, and week progress Show r

azzamsa 17 Dec 21, 2022
Nodium is an easy-to-use data analysis and automation platform built using Rust, designed to be versatile and modular.

Nodium is an easy-to-use data analysis and automation platform built using Rust, designed to be versatile and modular. Nodium aims to provide a user-friendly visual node-based interface for various tasks.

roggen 19 May 2, 2023
Open-source Rust framework for building event-driven live-trading & backtesting systems

Barter Barter is an open-source Rust framework for building event-driven live-trading & backtesting systems. Algorithmic trade with the peace of mind

Barter 157 Feb 18, 2023
Holo is a suite of routing protocols designed to support high-scale and automation-driven networks.

Holo is a suite of routing protocols designed to support high-scale and automation-driven networks. For a description of what a routing protocol is, p

Renato Westphal 42 Apr 16, 2023
A simple to use and efficient Web Automation Tool.

teemo A simple to use and efficient Web Automation Tool. teemo allows you to do some web automation action(such as click and so on) and crawl some inf

null 3 Nov 22, 2023
An open source artifact manager. Written in Rust back end and an Vue front end to create a fast and modern experience

nitro_repo Nitro Repo is an open source free artifact manager. Written with a Rust back end and a Vue front end to create a fast and modern experience

Wyatt Jacob Herkamp 30 Dec 14, 2022
A CI inspired approach for local job automation.

nauman A CI inspired approach for local job automation. Features • Installation • Usage • FAQ • Examples • Job Syntax About nauman is an easy-to-use j

Egor Dmitriev 8 Oct 24, 2022
A file management automation tool.

organize A file management automation tool. Current Status This is in really early development. Please come back later! Background The Python organize

null 4 Jun 6, 2023