npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

bdwm-orion

v1.0.13

Published

百度外卖猎户座: 命令行web前端test case运行工具

Downloads

4

Readme

Orion猎户座: 命令行test case运行工具

安装

使用

传递文件:

bdwm-orion --file example_test_case_file.json

直接传递JSON格式内容:

bdwm-orion '{"option":{"url":"http://waimai.baidu.com"},"operation":[]}'

传递额外再JSON编码一次的内容:

bdwm-orion --json '"{\"option\":{\"url\":\"http://waimai.baidu.com\"},\"operation\":[]}"'

传递Base64编码的内容:

bdwm-orion --base64 'eyJvcHRpb24iOnsidXJsIjoiaHR0cDovL3dhaW1haS5iYWlkdS5jb20ifSwib3BlcmF0aW9uIjpbXX0='

** 注意: ** 如果JSON内容是由不受信任的用户直接编写的,则一定要进行Base64或额外的一层JSON编码包装以防止错误或潜在的攻击。

Test Case文件结构

一个Test Case定义了一个自动测试流程,结构上是一个如下的JSON对象:

{
  "option": {
    "url": "http://waimai.baidu.com/waimai?qt=about",
    "ignore_page_error": true
  },
  "operation": [
    {
      "action": "click",
      "target": ".footer-item.help a:eq(1)"
    },
    {
      "action": "assert",
      "target": "document.location.href",
      "expect": "http://waimai.baidu.com/waimai?qt=helpusage"
    }
  ]
}

选项

以下为option中可定义的内容:

  • url: 测试起始网址。默认"about:blank"
  • cookie: 加载页面所使用的cookie值。默认空字符串
  • useragent: 加载页面所用UA标识。默认同chrome浏览器
  • viewport: 测试页面所使用的屏幕尺寸。默认"1360x670"
  • ignore_script_error: 页面js报错不触发报警。默认false
  • ignore_resource_error: 资源加载错误不触发报警。默认true
  • resource_timeout: 资源加载超时时间(毫秒)。默认5000
  • ready_delay: 持续多少毫秒内没有进一步资源加载才执行下一步操作。默认1500
  • timeout: 测试总体超时时间(毫秒),超时会触发报警。默认60000
  • report: 报告输出路径,可以是文件路径也可以是发送POST请求的网址。报告结构见后文
  • id: 任务id,仅用于在报告中回传
  • loglevel: 日志输出级别,可为debug、normal、error、silent。默认normal

以上内容除在主体JSON内容内传入外,均可以在命令行以参数形式传入覆盖,如

bdwm-orion --file example_test_case_file.json --cookie 'session_id=ABCDEF; TOKEN=FEDCBA;'

强烈建议以参数形式传入id和report属性,以保证即使文件解析失败也可发送报告。

操作

以下为operation中可定义的操作类型(action)及其额外参数说明:

  • click: 点击页面元素
    • target: 用selector语法指定被点击的目标元素
    • wait: 等待资源加载,默认true
  • input: 设定表单域填入值
    • target: 用selector语法指定目标元素
    • value: 设定的值
  • submit: 提交表单
    • target: 用selector语法指定被提交的表单
  • sleep: 等待指定时间
    • duration: 等待的毫秒数,默认2000
    • wait: 等待资源加载,默认false
  • until: 通过每0.5秒1次的轮询,等待指定的条件
    • condition: 所等待的条件表达式,默认true
  • assert: 断言测试,如果测试失败则终止测试并发送报警
    • eval: 断言表达式
    • expect: 期望值,若前置>、>=、<、<=、=、!=、!、@、!@等符号,则期望值将作为表达式运算。 (@表示包含,可用于数组或字符串,!表示非)
  • script: 在页面内执行JS脚本
    • content: 脚本内容
    • wait: 等待资源加载,默认true
  • navigate: 跳转到指定网址
    • url: 跳转目标网址

每一个操作都可设定一个name属性,将在报告中回传。

报告结构

如果是文件,报告会是个JSON格式,如果提供了网址,报告则以x-www-form-urlencoded格式发送POST请求。

报告包含以下内容:

  • id: 传入的id
  • status: 运行结果状态码,除0以外的情况都应该报警
    • 0: 所有测试正常
    • 1: 配置文件解析错误
    • 2: 测试超时
    • 3: 页面存在脚本报错
    • 4: 存在加载失败的资源
    • 5: 操作或断言失败
  • message: 运行结果描述
  • snapshot: 出错时的base64编码页面截图(配置文件解析错误时没有截图)
  • snapshot_html: 出错时的网页html字符串
  • detail: JSON数组,包含每一步操作的执行情况,其子元素结果如下
    • name: 传入的操作名称
    • action: 操作类型
    • 操作的其他属性
    • status: 操作状态码
      • 0: 尚未执行
      • 1: 执行正常
      • 2: 执行失败
  • failed_res: JSON数组,加载失败的资源url列表
  • failed_res_detail: JSON数组,加载失败的资源错误信息
  • console_log: 字符串,页面控制台输出内容
  • console_error: 字符串,页面控制台报错内容