#rpa #atdd #plain-text #tdd #robotframework

bin+lib botwork

botwork 是一个单二进制、通用和开源的自动化框架,用 Rust 编写,用于验收测试、验收测试驱动开发(ATDD)和机器人流程自动化(RPA)。语法基本上是纯文本(任何人类语言)与参数。易于使用 Rust、Python 和 JavaScript 扩展。是 Robot Framework 的有效、快速的替代品。

2 个不稳定版本

0.2.0 2023 年 4 月 16 日
0.1.0 2023 年 4 月 16 日

#91机器人

MIT 许可证

38KB
781

botwork

botwork 是一个单二进制、通用和开源的自动化框架,用 Rust 编写,用于验收测试、验收测试驱动开发(ATDD)和机器人流程自动化(RPA)。语法基本上是纯文本(任何人类语言)与参数。易于使用 Rust、Python 和 JavaScript 扩展。是 Robot Framework 的有效、快速的替代品。

为什么是 botwork?

我已经使用 RobotFramework 几年了。虽然它是一个非常棒的框架,但我对其中的一些事情并不太喜欢

  1. 它基本上需要 Python(和虚拟环境)来运行。这意味着,它需要更多的空间(例如在构建容器镜像时)并且消耗大量的内存(Python 是我生命中的最爱,但它是慢的且资源密集型)。
  2. 语法可以更加简单。例如,两个(或更多)空格作为分隔符,${}@{} 等。变量的使用让刚接触框架的人感到困惑。
  3. 它主要只能用 Python 来扩展。

我想要

  1. 一个高效、快速的单二进制工具。
  2. 比 RobotFramework 更简单的语法。
  3. 可以用 Rust、Python(通过 PyO3)、JavaScript(通过 neon)等扩展。
  4. 使用 PEG 解析器的正确语言定义。
  5. LSP 和 TreeSitter 支持。
  6. 最重要的是,要有一个乐趣,可以介绍给我的孩子们。

入门

  1. 克隆仓库
  2. 运行 cargo run -- --file examples/02-syntaxes.botwork

或者你可以创建以下示例代码中的文件,并将路径传递给 cargo run

示例代码

以下是一个botwork脚本可能的样子

# 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|

1.0版本路线图

botwork才刚开始。还有很多事情要做,不言而喻,语法和API将随时改变。更不用说周末我设法运行起来的hacy代码了。想法是让它进入野外,看看人们是否对这样的工具感兴趣。

如果对botwork这样的工具感兴趣,我计划投入更多时间来实现1.0版本。所以这里有在botwork被标记为1.0之前需要完成的一堆事情

  • 基本语法
    • 语句
    • if条件
    • for & while循环
    • 基本算术和逻辑操作
    • 数据类型:int,float,string,bool,array,map
    • try/Catch
    • 自定义语句
    • 导入(其他botwork文件、wasm文件、包;本地或从URL)
  • 文档
    • README
    • 入门文档
    • 语法文档
    • 语句文档
  • 提供更多开箱即用的语句(如RobotFramework提供的)
  • 集成
    • Selenium/Webdriver
    • Appium
    • Playwirght
  • 报告
    • 控制台报告
    • JSON报告
    • HTML报告
    • 报告监听器
  • 工具
    • LSP支持
    • 编辑器支持(主要:Helix/Vim/VS Code)
    • TreeSitter语法
    • 代码检查
    • 可信和验证注册表(用于botwork包)
    • Python扩展支持(通过pyo3)
    • JavaScript扩展支持(通过neon)
    • WASM扩展支持(通过WASI)
  • 命令行界面
    • 从命令行/文件传递变量
    • 并行运行
  • 完全异步、非阻塞操作
  • 重构我的糟糕代码 :P
  • 单元测试至少覆盖50%

依赖关系

~4MB
~77K SLoC