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
- Host: GitHub
- URL: https://github.com/lenntt/kinglouie
- Owner: lenntt
- License: gpl-3.0
- Created: 2018-02-27T22:23:28.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-04-23T16:30:04.000Z (about 3 years ago)
- Last Synced: 2025-04-15T08:01:54.151Z (about 1 year ago)
- Topics: exploratory-test-monkey, model-based-testing, selenium, test-automation, testing, web-application
- Language: JavaScript
- Size: 403 KB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://travis-ci.org/lenntt/kinglouie)
[](https://codecov.io/gh/lenntt/kinglouie)
[](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
```

# 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()`);