https://github.com/fusion/reasonable-fidelity
Replay recorded web sessions, check for fidelity
https://github.com/fusion/reasonable-fidelity
automation ocaml reasonml regression-tests testing
Last synced: 17 days ago
JSON representation
Replay recorded web sessions, check for fidelity
- Host: GitHub
- URL: https://github.com/fusion/reasonable-fidelity
- Owner: Fusion
- License: other
- Created: 2018-06-20T05:18:47.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2020-04-07T02:39:12.000Z (about 6 years ago)
- Last Synced: 2025-10-28T20:39:35.856Z (7 months ago)
- Topics: automation, ocaml, reasonml, regression-tests, testing
- Language: Python
- Homepage:
- Size: 1.31 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Reasonable Fidelity
## What?
The idea behind this app is to record whatever actions you would when testing a
web app, then replay them later and compare their level of fidelity.
Attributes/files you do not wish to compare can be added to 'ignore' files.
### How?
- Open your favorite browswer (let's pretend it's Chrome)
- Open the developer console
- Open the 'Network' tab and select 'Preserve logs'
- Interact with application
- Right click the developer console, select 'Save as HAR with content'
- Use this file to replay and compare
- Fine tune ignored attributes in config/ directory
### Some Features
- CSV or full text output
- Multiple configuration environments
- Cookies or dedicated token
- Plugins (written in Python)
- ...
## TODO
- more advanced attribute extractors
- more configurable login
- Point Free composition!
## Using
```
Valid Arguments:
help:
display help
sanity:
check requirements & help explain issues
run:
run tests
options:
--csv: output csv data rather than plain text
-source : specify alternate .har file
-config : specify alternate config directory
-forcelogin: attempt log in to service rather than trust cookies/token (experimental!)
modified:
show which lines were changed from the reference capture
timestamp
edit :
edit har file -- for now, mark actions for deletion
reset:
re-create default configuration file
```
## Building
From scratch, really...
OS X
```bash
brew install opam
```
Linux
```bash
sudo apt install m4
wget https://raw.github.com/ocaml/opam/master/shell/opam_installer.sh -O - | sh -s /usr/local/bin
```
Then (Common)
```bash
opam init
opam update && opam switch 4.09.0
```
To install dependencies .opam file from dune-project:
```bash
dune build @install
```
### Curses
The built-in editor relies on ncurses (v5). On some Linux distros, you may have to run `make prepare_curses`
### More building...
Same goes for lymp that is running cold that's a bit too... dated.
Run:
```bash
make prepare
```
When everything is built properly, we will want to create symlinks to clean stubs:
```bash
sudo bash -c 'for lib in ~/.opam/default/lib/stublibs/*; do libname="$(basename $lib)"; ln -s $lib /usr/local/lib/${libname/dll/lib}; done'
```
## Specifics of this code
My first ReasonML app! So, yeah, it's not perfect,
### Things to keep in mind if this is your first use of Lwt promises
- Lwt is our Promises library
- Lwt comes with infix operators:
- `>>=` equivalent to Lwt.bind
- `>|=` equivalent to Lwd.map (right side does not return a promise)
- '=<<` and `=|<` are reversed versions
### Misc Notes
Parallel queries
- We can use Lwt.run(Lwt.join(...
- execute.get is good
- we could run up to n threads in parallel
- ...or until we meet execute.post
- All pending threads to be stored in a list...
- Orchestrated in execute.get?
- Q: what to do about pause when > 0.?
- Do something about non-csv output, which is broken up
- {action, url, query_string, post_data)