An open API service indexing awesome lists of open source software.

https://github.com/lenntt/kinglouie

Exploratory test monkey that becomes smarter over time
https://github.com/lenntt/kinglouie

exploratory-test-monkey model-based-testing selenium test-automation testing web-application

Last synced: 10 months ago
JSON representation

Exploratory test monkey that becomes smarter over time

Awesome Lists containing this project

README

          

[![Build Status](https://travis-ci.org/lenntt/kinglouie.svg?branch=master)](https://travis-ci.org/lenntt/kinglouie)
[![codecov](https://codecov.io/gh/lenntt/kinglouie/branch/master/graph/badge.svg)](https://codecov.io/gh/lenntt/kinglouie)
[![BCH compliance](https://bettercodehub.com/edge/badge/lenntt/kinglouie?branch=master)](https://bettercodehub.com/)

# Description

Your exploratory test monkey that becomes smarter over time.

_King Louie:_
>_Oh, oobee doo_

>_I wanna be like you_

>_I wanna walk like you_

>_Talk like you, too_

>_You'll see it's true_

>_An ape like me_

>_Can learn to be human too_

# Prerequisites

* `nodejs` >= 8 (depending on `async` and using es6), with `npm`
* Chrome

# To run

clone this repo and
```
npm install
npm test
node samples/google/main.js
```

![screenshot](screen.png)

# Definitions

## The Labelled Transition System
* A `Model` (Labeled Transition System), consists of:
* `Label`s
* A label is either a `stimulus` (e.g. click), a `response` (e.g. an error), or `quiesence` (δ, absence of any output).
* Can define parameters
* `State`s
* Which have outgoing `Transition`s
* Which have a `from` state, a `label`, and a `to` state.
* May have a `guard` which specifies conditions on label parameters
* One state is the `initialState`
* An `InstantiatedLabel` is a label, but with actual data and meta data.
* A `Trace` is a list of observed `InstantiatedLabel`s.

## The Adapter
You must implement an `Adapter`, which is an object that has async functions `preamble`, `waitForOutput` and `determineState`. See samples (samples/google/main.js).
The `adapter` folder contains predefined methods to interact with a page.

## KingLouie
Is using your `Adapter` and builds up an observation `Model`.

# Known limitations
- Kinglouie does not interact with iframes or new windows (popups).
- Kinglouie does not handle modal dialogs (e.g. `alert()`);