A simple and stable cross-browser testing tool. 简单稳定的跨浏览器测试工具。

Related tags

Runner totoro
Overview

totoro

totoro

A simple and stable cross-browser testing tool.

Latest stable version: v2.0 Change Log

中文版使用文档


0. Features

  • Run in real browsers
  • Support all test frameworks
  • Auto testing coverage
  • Robust enough for actual combat

1. Installation

Node requirement

>= 0.10.12

Install from npm

$ npm install totoro -g

If it not works, you may add sudo before the command, as follows.

Install from github

To get the latest function (may not be stable)

$ git clone https://github.com/totorojs/totoro && cd totoro
$ npm install -g

2. Quick Start

For simplicity, we have already prepared an example for you:

Important: please specify a server first !

$ totoro config --host={{totoroServerHost}}

For now the default test server is internal for Alibaba group only, you can launch your own server.

We are planning to supply a public service, hmm...

$ git clone https://github.com/totorojs/totoro && cd totoro/examples/simple
$ totoro

Then you should see a output as shown below:

totoro-result

  • If all test cases passed, will report in green color, or will report in red color with detailed error message.
  • Every browser supplies it's own run time and testing coverage (if your test has source code, and totoro can recognize).

Recommended directory structure

Generally, if your test is a local file and the directory structure of your project is as bellow, you can run totoro without any config.

project-dir/
  dist/
  src/ or lib/
  tests/ or test/
    runner.html or index.html

3. Cli Options

All options are optional.

3.1 totoro

-R, --runner

Test runner. Accept local file and URL.

Default: auto search in the CWD, runner.html or index.html in subdirectory test/ or tests/ could be recognized.

-C, --code

A convenient way to debug. Accept single JS expression, local file or URL. totoro will return the calculated value of expression or all output of console.log() in JS file. For example:

$ totoro --code document.body
$ totoro --code "console.log(document.body)"
$ totoro --code examples/code/code.js  // this file already exists, try it!

Be mind that --code and --runner are mutually exclusive!

-l, --labors

Specify a comman-delimited list of app names, typically be browsers. For example:

chrome,firefox,safari,ie  //just specify browser names
ie/6,ie/7,ie/8,ie/9  //specify browser names and versions

Default: all available desktop browsers.

-a, --adapter

Test framework's adapter, used to send report to server. Accept built-in keywords, local file and URL.

Built-in keywords: mocha, jasmine.

If specifies no, totoro won't try to detect and insert any adapter, it's thought that user handle it by themself.

It is very easy to write an adapter for custom test framework, you could refer to static/adapters/mocha.js.

Default: if --runner is local file, totoro will see if there is totoro-adapter.js in the same directory , if not found or --runner is URL, totoro-server will try to find out matched keyword according to --runner content.

-c, --charset

Specifies charset.

Default: 'utf8'

-t, --timeout

Specifies the client timeout in minutes.

Default: 5

-O, --root

If assign a local file to --runner, totoro need to launch a temporary HTTP server for testing, --root is the root of this server.

See more detail

Default: if necessary, guess a path according to --runner and --adapter.

-H, --host

totoro-server host.

Default: internal server host for Alibaba group.

-P, --port

totoro-server port.

Default: 9999

--no-proxy

Won't convert the runner if it is a URL

Default: false

--no-coverage

No need testing coverage.

Default: false

3.2 totoro list

Show all available browsers of specified server.

totoro list

3.3 totoro config

Read or write global config.

Read global config

$ totoro config

Write global config

$ totoro config --host=10.15.52.87 --port=''

Above command clear the --port value.

4. Config File

If you need a config file, just place totoro-config.json in the CWD.

The priority level of all config ways are: command line > config file > totoro config > default config

Below is an example for config file:

{
  "browsers": ["chrome", "ie/10.0"],
  "host": "127.0.0.1",
  "port": 9999
}

5. About

totoro takes it's name from animated fantasy film "My Neighbor Totoro" directed by Hayao Miyazaki.

Comments
  • 客户端 http 服务外网无法访问

    客户端 http 服务外网无法访问

    问题描述

    --runner 为本地文件时, client 会起一个 http 服务,用于让 server 访问 runner,但公共服务访问不了局域网的 client http server

    通用的解决方案是在局域网的路由上安装一个代理,如 selemium

    但这样的解决方案过于笨重,需要寻求更轻量的解决方案

    设想的方案

    服务端处理流程

    http-and-socket-proxy

    这样的设计下,系统是具有弹性的,当服务可直接访问 runner 的时候,就按原来的方式(http 代理),当服务不可直接访问 runner 的时候,就用 socket 代理的方案

    关键步骤:proxyType 判断

    1. 何时判断
      • 属于一个 order 或者一个 cache 的第一个请求,一定是 runner,只需要在 runner 请求的时候进行一次判断即可
    2. 如何判断
      • 发送 http(s) head 请求,能访问则为 httpProxy,否则为 socketProxy(注意:这里有异步操作)
    3. 效率如何
      • 对于局域网的部署和使用没有任何影响
      • 至于 socketProxy 的效率如何,有待后续拿到数据

    socket 的效率

    见:https://github.com/totorojs/totoro-server/commit/5046772b82ed51e2a5a6ee2f8d3342d95a432a6d

    目前来看,单个 socket 和 http 的效率相差 2-3 倍,完全在可接收的范围内,后续还有优化余地。由此可见,该设想可行。

    discuss mutual 
    opened by fool2fish 17
  • 测试覆盖率提示信息增加未覆盖到行的提示

    测试覆盖率提示信息增加未覆盖到行的提示

    比如

    Passed all of 19 tests in 4956ms (coverage 92.11%)
    

    那么表明你源代码中有些地方未覆盖到. 为了方便用户进一步有针对性的完善测试用例,我们可以对源代码中那些行没有覆盖到进行提示. 但是由于这个信息的获取是从浏览器执行测试的时候拿到的,如果完整显示会造成数据传输过大. 所以目前打算有条件的显示(只有覆盖率到达90%的时候并且--verbose)并且精简的信息:

    picker.js [10, 11, 12, 21, 34]  // 表明 picker.js 中的 10, 11, 12.. 行的代码没有覆盖到.
    contactsList.js [20, 34, 56] 
    

    现在有两个问题:

    • 如何显示的更友好?
    • 触发显示的条件?

    大家有啥好的想法?

    discuss feature 
    opened by leoner 15
  • 使用上的疑问

    使用上的疑问

    我的操作顺序:

    启动totoro server

    totoro-server
    

    输出日志如下:

    Start server < 192.168.0.104:9999 >
    

    启动totoro driver

    totoro-driver --server 192.168.0.104:9999
    

    到totora/examples/simple目录下,执行test

    totoro
    

    输出日志如下:

    info handle-cfg.js:203 | Found runner < /Users/chenboxiang/WebstormProjects/totoro/examples/simple/tests/runner.html >
    info index.js:118 | Labor < chrome > finished order.
    
      chrome 35.0 / macosx 10.7
      Passed all of 1 tests in 186ms (coverage 100.00%)
        > I am a log message.
    
      safari 6.1 / macosx 11.4
      Timeout
    
      firefox 26.0 / macosx 11.4
      Timeout
    
    =============================
      Failed on 2 of 3 browsers
    =============================
    

    totora driver的日志如下:

    warn: Param capture is required. (base.js: 21)
    warn: Param capture is required. (base.js: 21)
    info: firefox is not opened, not need to close. (base.js: 78)
    info: safari is not opened, not need to close. (base.js: 78)
    warn: Param capture is required. (base.js: 21)
    warn: Param capture is required. (base.js: 21)
    warn: Param capture is required. (base.js: 21)
    info: chrome is not opened, not need to close. (base.js: 78)
    info: firefox is not opened, not need to close. (base.js: 78)
    info: safari is not opened, not need to close. (base.js: 78)
    warn: Param capture is required. (base.js: 21)
    warn: Param capture is required. (base.js: 21)
    info: firefox is not opened, not need to close. (base.js: 78)
    info: safari is not opened, not need to close. (base.js: 78)
    

    chrome浏览器我手动注册过,只有它成功了,其他浏览器全部超时。 按我的理解totora driver的作用是自动帮我打开浏览器进行测试,不知道是我用的方式错了,还是有bug?

    opened by chenboxiang 9
  • 确认package.json 中测试框架和测试浏览器类型的配置

    确认package.json 中测试框架和测试浏览器类型的配置

    1、测试框架的配置

    考虑过两种方式:

    1. 所有的测试框架不转换成cmd模块,通过探测测试脚本来猜测使用了哪些测试框架
      • 好处:无需任何配置
      • 坏处:随着支持的框架增多,探测成本变高,难以维护
    2. 所有的测试框架转换成cmd模块,mocha和jasmine这类测试套件比较特殊,不进行包装,但仍然发布到源上,开发者需要在 package.json 中指定依赖
      • 好处:市面主流的测试套件有限,可以根据指明的测试套件生成runner,其他的断言之类的工具通过require获得,无需关心
      • 坏处:开发者需要进行配置,多了一个工作步骤(有考虑过是否给定默认配置,但考虑到以后测试框架会不断演变,还会导致默认配置也需要变更,暂提供),但此步工作量较小。

    结论:

    使用方式2

    2、指定要测试的浏览器或者运行环境的配置

    这个先不提供配置,使用driver的默认配置即可

    之前有讨论过用 engines,platform之类,仅参考


    这些配置项在spm2中需要重新设置到 totoro 字段中

    opened by fool2fish 9
  • 关于totoro下面相关模块全局配置文件风格和方式讨论

    关于totoro下面相关模块全局配置文件风格和方式讨论

    配置位置

    1. 全局 // 位置在 ~/.totorojs
    2. 项目 (新增一个配置,或者配置在 package.json 中)
    3. 是否还有其他类型的配置? (比如原来的源配置?)

    配置名称

    1. 我们全部都叫 totorojs.json or totorojs.js.或者其他一个统一的名称, 然后通过不同的字段来区分不同的模块。
    2. 不同的模块有不同的配置文件。

    配置文件内容形式

    • 模块形式,就像 Gruntfile.js
    module.exports = {
    }
    
    • 还是json 形式
    {
         "clientCfg": {
            "serverHost": ''"
         },
         "serverCfg": {
            "serverPort": ""
         }
    }
    

    @fool2fish @hotoo @noahlu @lifesinger

    discuss 
    opened by leoner 8
  • 使用 totoro 测试 arale 基础模块

    使用 totoro 测试 arale 基础模块

    基础设施

    • [x] base
    • [x] class
    • [x] events
    • [x] widget

    工具

    • [x] messenger ie9, opera 不通过
    • [x] iframe-shim
    • [x] position
    • [x] easing
    • [x] cookie
    • [x] placeholder
    • [x] iframe-uploader 没有测试用例
    • [x] fixed

    arale ui 组件

    • [x] autocomplete ie6,7,8,9 用例跑不过,需要看下。
    • [x] select
    • [x] overlay
    • [x] switchable
    • [x] calendar
    • [x] popup
    • [x] dialog 不通过 ie6
    • [x] tip
    • [x] validator 不通过
    opened by leoner 8
  • ie10 在 iframe 中运行 runner,require 不到模块

    ie10 在 iframe 中运行 runner,require 不到模块

    现象:

    • var Popup = require('popup') 返回 null

    网络现象:

    • 当 popup 的请求完成后, network 中不会处出现后续依赖模块的加载.

    重现条件:

    • ie10.0(第二次执行, 第一次没有产生缓存的时候, 没有问题.)

    • iframe 环境

    • web server 是 node 搭建的 ( totoro, spm doc watch 等)

    • 代码必须一个 css require. 任意的都行, 不管存在不存在

          require('./a.css')
          var Popup = require('popup')
      

    使用 totoro 重现

    • 在任意模块的源码中, 添加 require('./a.css') 然后使用客户端测试 ie10.0 就会出现错误.
    bug 
    opened by leoner 6
  • 产品参考

    产品参考

    测试框架

    • expect.js - 断言
    • sinonjs - mock
    • mocha - 测试框架,任意断言,测试覆盖率,测试时间等

    兼容性测试和持续集成

    特别关注

    Selenium

    这是一套和浏览器交互的解决方案,目前所有号称能搞定浏览器兼容性测试和功能测试的都是基于这个东东,阿里系的测试系统也一样。

    更多移步 #6

    thrill

    • 项目:https://github.com/turn/thrill

    其他

    • uitest - 淘宝开发的专门用于 uitest 的工具
    • TDJS - 使用 socket.io 原理开发的测试工具,注意视频demo和原理讲解很棒!
    • dagger - 网易的封装了 selenium 的 ui 测试工具
    • ci.testling - 和 browserling 配套的多浏览器单元测试工具,支持node,package.json 配置相关信息
    • saucelabs - 支持多浏览器和操作系统的集成测试站点
      • 支持多语言,每个语言需下载对应的客户端,如 node:npm install wd
      • 需要在测试代码中指定浏览器
      • 定制的ui测试api
      • 开放了一些自定义事件,如:brower.on('command',fn)
      • 内网代码,需由it统一安装一个 sauce-connect-latest Java 包
      • 提供 rest api
    • phantomjs - 提供webkit环境的node库
    • CasperJS - 基于phantamjs,提供了自己的断言,各种基础方法,包括浏览器端方法的测试框架
    • travis - 仅提供集成,测什么,怎么测完全自己来

    无线

    基本不用看的

    • browserstack - 类 saucelabs
    • browserling - 类 saucelabs
    • Buster.JS - 非稳定版,会自动查找本机已安装的浏览器进行测试,提供自己的断言、桩、套件等。
    • jenkins - java写的,应该不是为前端服务的
    • Testacular - 几个人提到,最近官网改版,可以再看看
    discuss 
    opened by fool2fish 6
  • Timeout

    Timeout

    $totoro
    info handle-cfg.js:203 | Found runner < /Users/Alan/Projects/avalon.test/tests/runner.html >
    info index.js:121 | Specified browsers automatically [ 'chrome' ]
    
      chrome 38.0 / macosx 10.9
      Timeout
    
    ===============================
      Failed on all of 1 browsers
    ===============================
    
    $sudo totoro-server
    info 2014-10-31 17:09:37 order.js:189 | Order destroys { orderId: 'erAnW0bQUpHw6X8kVJPb',
      duration: 300218,
      labors: 
       { chrome: 
          { ua: 'chrome 38.0 / macosx 10.9',
            errors: [],
            failures: [],
            stats: undefined,
            customLogs: [],
            terminated: undefined } },
      logs: { warn: [], error: [] } }
    
    
    $totoro                            
    info handle-cfg.js:203 | Found runner < /Users/Alan/Projects/avalon.test/tests/runner.html >
    info index.js:121 | Specified browsers automatically [ 'safari' ]
    
      safari 7.1 / macosx 10.9
      Timeout
    
    ===============================
      Failed on all of 1 browsers
    ===============================
    
    opened by alancd 5
  • totoro --code 参数值的一致性

    totoro --code 参数值的一致性

    if (/\.js$/.test(code)) {
      script = '<script src="' + code + '"></script>'
    } else {
      script = '<script>console.log(' + code + ')</script>'
    }
    

    当传入文件路径时,需要自己写 console.log 语句才能打印出想查看的值,但是传入代码片段时,则整个片段当表达式处理。这样设计的原因是不希望使用者写 totoro --code "console.log(xxx)" 这么麻烦,但损失了一致性,且不可打印多个值。

    ps:由于传入文件路径可能是完整路径之类的,为确保正确,需要求一次相对路径

    discuss 
    opened by fool2fish 5
  • 如何使用totoro-config.json啊(主要是想让它自动打开浏览器)?

    如何使用totoro-config.json啊(主要是想让它自动打开浏览器)?

    我有一个测试项目,文件名为avalon.test,下面就是src与tests文件夹, 然后我看你们的例子在avalon.test的目录下再加上totoro-config.json

    {
      "browsers": ["chrome", "ie", "firefox"],
      "host": "127.0.0.1",
      "port": 9999
    }
    

    然后全局安装你那三个家伙

    npm install totoro-server -g
    npm install totoro -g
    npm install browsers -g
    

    然后打开控制台 totoro-server

    然后打开另一个控制台 定位到avalon.test目录下 然后totoro config 没有自动打开浏览器啊!!!!!!!!

    opened by RubyLouvre 5
  • Update https://registry.npm.taobao.org to https://registry.npmmirror.com

    Update https://registry.npm.taobao.org to https://registry.npmmirror.com

    Update https://registry.npm.taobao.org to https://registry.npmmirror.com, For more info please refer to https://zhuanlan.zhihu.com/p/430580607. This is an automated PR by @npmmirror (Which is a bot maintained by 8d6e8cefe5a7e3202364ec2c48db03fcc544218cf70100bf65d2ed2df5cc83da).

    opened by npmmirror 0
  • docs: Fix simple typo, occured -> occurred

    docs: Fix simple typo, occured -> occurred

    There is a small typo in examples/sea-modules/gallery/event-simulate/1.0.0/event-simulate-debug.js, examples/sea-modules/jquery/jquery/1.7.2/jquery-debug.js.

    Should read occurred rather than occured.

    opened by timgates42 0
  • socket 和 http(s) 代理性能分析

    socket 和 http(s) 代理性能分析

    从两个维度进行分析

    请求方式

    • 使用 socket 的方式,所有的数据都从这一个通道进行传输
    • 使用 http 的方式,每个请求都建立一个连接

    socket 模块的选择

    如果没有意外,还是倾向于用 socket.io

    • https://github.com/LearnBoost/socket.io
    • https://github.com/turn/json-over-tcp/
    • https://github.com/Worlize/WebSocket-Node
    discuss mutual 
    opened by leoner 7
Releases(2.0.2)
  • 2.0.2(Dec 25, 2014)

    • U: replace localhost or 127.0.0.1 in config.runner with an external ip. totoro-server#90
    • U: decide if enable debug by config rather than by process argv
    • U: give a debug log when config.proxy is set to false automatically
    Source code(tar.gz)
    Source code(zip)
  • 2.0.0(Dec 25, 2014)

  • 1.0.1(May 29, 2014)

  • 1.0.0(May 29, 2014)

  • 0.6.0(May 29, 2014)

  • 0.5.4(May 29, 2014)

  • 0.5.3(May 29, 2014)

  • 0.5.2(May 29, 2014)

  • 0.5.0(May 29, 2014)

    • A: add --code option
    • A: scanned the content of runner to guess the root of local server automaticlly
    • A: support request of absolute path relative to root
    • A: add more detailed doc on --root option
    • U: when --adapter=no, totoro won't detect and insert adapter for runner
    • U: change --server-host and --server-port options to --host and --port
    • U: set 'server.totorojs.org' as the default value of --host option
    Source code(tar.gz)
    Source code(zip)
  • 0.4.0(May 29, 2014)

    • A: all totoro.log() will output to client
    • A: add --skip-coverage option, not do the coverage
    • A: reset alert, confirm and prompt function
    • D: remove test slow info from report
    • U: run test in new window on pc, still in iframe on mobile device
    • U: restrict the times of labor distribution to avoid endless loop
    Source code(tar.gz)
    Source code(zip)
  • 0.3.0(Sep 27, 2013)

    • A: totoro list, show available browsers in groups
    • A: totoro config, global config
    • A: add auto coverage
    • A: add overview of a test in report
    • D: remove --client-port and --client-host options
    • U: add warning about version mismatch between client and server
    Source code(tar.gz)
    Source code(zip)
  • 0.2.0(May 29, 2014)

    • A: seperate totoro-server from totoro
    • A: support config file
    • A: add default --adapter detect
    • A: add --timeout option
    • A: add --charset option
    • U: if not specifies --browsers,totoro-server will auto specifies all available browsers
    Source code(tar.gz)
    Source code(zip)
  • 0.1.6(May 29, 2014)

    • A: add --browsers
    • A: redistribute when a unfinished test crashed
    • A: compatible with windows
    • A: add jasmine adapter
    • D: won't auto generate runner
    Source code(tar.gz)
    Source code(zip)
  • 0.1.4(May 29, 2014)

  • 0.1.0(May 29, 2014)

    • A: support some popular test framework
    • A: auto generate runner via config
    • A: add --runner option
    • A: run in multiple browsers, send back report
    Source code(tar.gz)
    Source code(zip)
CasperJS is no longer actively maintained. Navigation scripting and testing utility for PhantomJS and SlimerJS

CasperJS Important note: the master branch hosts the development version of CasperJS, which is now pretty stable and should be the right version to us

CasperJS 7.3k Dec 25, 2022
End-to-end testing framework written in Node.js and using the Webdriver API

Nightwatch.js Homepage | Getting Started | Developer Guide | API Reference | About Automated end-to-end testing framework powered by Node.js and using

Nightwatch.js 11.3k Jan 7, 2023
A next-generation code testing stack for JavaScript.

Intern Software testing for humans ⚠️ This documentation is for the development version of Intern. For the current release version, go here. Intern is

Intern: next-gen JavaScript testing 4.4k Jan 7, 2023
A node.js library for testing modern web applications

Taiko Docs | API reference A Node.js library for testing modern web applications What’s Taiko? Taiko is a free and open source browser automation tool

Gauge 3.2k Dec 30, 2022
Next-gen browser and mobile automation test framework for Node.js

Next-gen browser and mobile automation test framework for Node.js. Homepage | Developer Guide | API Reference | Contribute | Changelog | Roadmap Webdr

WebdriverIO 7.9k Jan 3, 2023
Scriptable Headless Browser

PhantomJS - Scriptable Headless WebKit PhantomJS (phantomjs.org) is a headless WebKit scriptable with JavaScript. The latest stable release is version

Ariya Hidayat 29.1k Jan 5, 2023
A scriptable browser like PhantomJS, based on Firefox

SlimerJS http://slimerjs.org/ SlimerJS is a scriptable browser. It allows you to manipulate a web page with an external Javascript script: opening a w

Laurent Jouanneau 3k Dec 31, 2022
Simple implementation of markup for Scriptable widgets.

Widget Markup Write Scriptable widgets with markup. Installation Just import the library script to your scriptable widget file. const {widgetMarkup, c

Rafael Gandionco 32 Nov 22, 2022
A front end GUI for interacting with the Stable Horde / Stable Diffusion distributed cluster

ArtBot for Stable Diffusion See it in action: https://tinybots.net/artbot ArtBot is a front-end GUI for generating images and photos with Stable Diffu

Dave Schumaker 39 Jan 2, 2023
A testing focused Remix Stack, that integrates E2E & Unit testing with Playwright, Vitest, MSW and Testing Library. Driven by Prisma ORM. Deploys to Fly.io

Live Demo · Twitter A testing focused Remix Stack, that integrates E2E & Unit testing with Playwright, Vitest, MSW and Testing Library. Driven by Pris

Remix Stacks 18 Oct 31, 2022
A cross-platform desktop app with a nice interface to Stable Diffusion and others

GenerationQ GenerationQ (for "image generation queue") is a cross-platform desktop application (screens below) designed to provide a general purpose G

Weston C. Beecroft 25 Dec 28, 2022
Portable, cross platform Stable Diffusion UI

FusionKit Releases FusionKit is a self-contained cross-platform app for generating images with Stable Diffusion. It leverages the InvokeAI project to

FusionKit 13 Dec 17, 2022
AREX: It is a “Differential Testing” and “Record and Replay Testing” Tool.

AREX: It is a “Differential Testing” and “Record and Replay Testing” Tool. Test restful API by record, replay and stub request/response. Differential

ArexTest 15 Nov 1, 2022
Modern Cross Browser Testing in JavaScript using Playwright

Modern Cross Browser Testing in JavaScript using Playwright This repository contains the example code for the Modern Cross Browser Testing in JavaScri

Applitools 5 Oct 3, 2022
Easiest 1-click way to install and use Stable Diffusion on your own computer. Provides a browser UI for generating images from text prompts and images. Just enter your text prompt, and see the generated image.

Stable Diffusion UI Easiest way to install and use Stable Diffusion on your own computer. No dependencies or technical knowledge required. 1-click ins

null 3.5k Dec 30, 2022
🐐 Simple and complete React DOM testing utilities that encourage good testing practices.

React Testing Library Simple and complete React DOM testing utilities that encourage good testing practices. Read The Docs | Edit the docs Table of Co

Testing Library 17.3k Jan 4, 2023
🐐 Simple and complete React DOM testing utilities that encourage good testing practices.

React Testing Library Simple and complete React DOM testing utilities that encourage good testing practices. Read The Docs | Edit the docs Table of Co

Testing Library 17.3k Jan 4, 2023
A simple Stable Diffusion WebUI extension that adds a Photopea tab and integration.

Photopea Stable Diffusion WebUI Extension Photopea is essentially Photoshop in a browser. This is a simple extension to add a Photopea tab to AUTOMATI

Yanko Oliveira 624 Aug 10, 2023
Playwright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API.

?? Playwright Documentation | API reference Playwright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit w

Microsoft 46.3k Jan 9, 2023
Functions for testing the types of JavaScript values, cross-realm. Has testers for all standard built-in objects/values.

@suchipi/is Functions for testing the types of JavaScript values, cross-realm. Has testers for all standard built-in objects/values. Usage import { is

Lily Skye 5 Sep 8, 2022