Git Product home page Git Product logo

x-test's Introduction

Build Status

x-test

a simple, tap-compliant test runner for the browser

Spec

  • importable as type="module"
  • is interoperable with TAP Version 13
  • nested sub-tests run in an iframe
  • has a recognizable testing interface
  • can be used for automated testing
  • can be used to assert coverage goals

Interface

Testing

The following are exposed in the testing interface:

  • test: Creates a sub-test in an iframe based on given src html page.
  • it: The smallest testing unit--asynchronous.
  • skip: An it whose callback is not run and which will pass.
  • todo: An it whose callback is run and is expected to fail.
  • waitFor: Ensures the test does not exit until given promise settles.
  • assert: Simple assertion call that expects a boolean.
  • cover: Sets a coverage goal for the given url.

Events

  • x-test-ping: root responds ('x-test-pong', { status: 'started'|'ended' })
  • x-test-ended: all tests have completed or we bailed out
  • x-test-cover-start: root responds ('x-test-cover-ended')
  • x-test-cover: [internal] signal to test for coverage on a particular file
  • x-test-bail: [internal] signal to quit test early
  • x-test-queue: [internal] queues a new test
  • x-test-next: [internal] destroy current test and create a new one
  • x-test-it-started: [internal] user defined a new "it"
  • x-test-it-ended: [internal] user-defined "it" completed

Parameters

The following parameters can be passed in via a url search:

  • x-test-no-reporter: turns off custom reporting tool ui
  • x-test-cover: turns on coverage reporting**

**See test.js for an example of how to capture coverage information in puppeteer and send it to your test to allow your automated test to fail due to unmet coverage goals.

Execution

Both test and it calls will execute in order**. test calls will boot the given html page in an iframe. Such iframes are run one-at-a-time. All invoked it calls await the completion of previously-invoked it calls.

**This is not the case if you nest it--but that's an anti-pattern anyhow.

Usage with puppeteer

See test.js for an example of how you can use puppeteer to run your app's tests and log the resulting TAP output to the console.

Parsing TAP

There are many TAP formatters. Importantly, as long as you can pipe the TAP output to another program, the output should be interoperable.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.