https://github.com/unadlib/marten
A Process Controller Library
https://github.com/unadlib/marten
e2e-tests test-runner testing-tools
Last synced: about 1 year ago
JSON representation
A Process Controller Library
- Host: GitHub
- URL: https://github.com/unadlib/marten
- Owner: unadlib
- License: mit
- Created: 2018-05-19T01:20:38.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2019-01-12T07:57:44.000Z (over 7 years ago)
- Last Synced: 2025-02-26T03:23:14.763Z (over 1 year ago)
- Topics: e2e-tests, test-runner, testing-tools
- Language: JavaScript
- Homepage:
- Size: 204 KB
- Stars: 7
- Watchers: 4
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# marten
A Process Controller Library.
#### Solution Goal
* High-quality reusable code by steps.
* Maintainable decoupled process steps.
* Process steps runner with multiple granularity control.
#### Features
* Composable
>Separate combination of steps.
* Inheritable & extensible
>Support for object-oriented programming.
* Customizable
>At run time, the arguments of any step are passed, the steps execution sequence can be customized, and the combination of any child steps is made.
* Controllable
>The execution granularity and position of the free control steps.
* Context by arguments
>Merge the results of all step execution through context passing.
## APIs
- [function: generate](#function-generate)
- [function: createProcess](#function-createProcess)
- [class: Steps](#class-steps)
* [steps.reset()](#stepsreset)
* [steps.skip([step])](#stepsskipstep)
* [steps.exec()[return Promise]](#stepsexec)
* [steps.execTo(step)[return Promise]](#stepsexectostep)
* [steps.execBefore(step)[return Promise]](#stepsexecbeforestep)
#### function: generate
If you need to control every step of the process, it is a useful process middleware.
```javascript
const createProcess = generate({
async before({
step,
context,
options,
}) {
console.log(step.name);
},
async after({
step,
context,
options,
}) {
console.log(step.name);
}
});
```
#### function: createProcess
By sequence, it can be redefined the combined sequence steps for steps runner.
```javascript
(async (context) => {
const process = createProcess(
Login,
Navigation,
Setting,
MakeCalls,
)
const instance = process(context);
await instance.execTo(Navigation);
await instance.execBefore(Setting.callingSetting);
await instance.exec();
})();
```
#### class: Steps
Steps Runner can be controlled the operation of the current sub steps by free.
##### steps.reset()
Reset all steps ignore in the process and initialize process.
##### steps.skip([step])
- `step` <`function`>
Set skip some steps in the process.
##### steps.exec()
- **return** <`Promise`>
Execute the process by set sequence and skip setting.
##### steps.execTo(step)
- `step` <`function|class`>
- **return** <`Promise`>
Execute steps until a step position.
##### steps.execBefore(step)
- `step` <`function|class`>
- **return** <`Promise`>
Execute steps before a step position.