3.0.0-gamma.55 • Published 5 years ago

reflow-core v3.0.0-gamma.55

Weekly downloads
6
License
MIT
Repository
github
Last release
5 years ago

reflow|core

$ npm install --save reflow-core

Current Features:

Create Mocha flows for true Integration Testing.

  • Test Flows
  • Subflows
  • Forking Subflows
  • Conditional subflows
  • Analyze mode
  • Multi-Threaded runtime
  • Tags

Example

Basic Flow

reflow("Example Flow", function() {
  return [
    getSuite('Mocha suite 1'),
    getSuite('Mocha suite 2'),
  ]
})

Subflows

By dividing the large flows into sub-flows, which increases the modularity of the flows by decreasing the granularity, it becomes easier to understand large flows and makes it possible to reuse the sub-flows to build custom flows, this also helps in getting rid of the duplicate code which can be found in large flows, in the following examples the suites 1,2,3 can be inserted in any flow by just adding the flow "sub-flow".

Example

Basic Sub-Flow

 subflow('Sub-flow', function() {
  return {
    suites: [
      getSuite('Mocha suite 1'),
      getSuite('Mocha suite 2'),
      getSuite('Mocha suite 3'),
    ],
  };
});

Forking

This is used to run a flow in two alternative versions, the flow would run in two sequences which are similar with a difference in where the flow was forked, in the given examples the flow would run twice, first it will go through the suites 1,2,3,5 the second time would run 1,2,4,5

Example

Basic Fork

  getSubflow('Mocha suite 1'),
  getSubflow('Mocha suite 2'),
  fork([
    getSubflow('Mocha suite 3'),
    getSubflow('Mocha suite 4'),
  ]),
  getSubflow('Mocha suite 5'),

Conditional

In huge sized flows there could be a sequence that is exclusive to a certain flow which won't be ran if others, so conditionals are used to run these sub-flows, in this example the sub-flows in the flow.js file would run twice in the following sequences 1,2,3,5 and 1,2,4 this is because the suite number 5 is conditional to suite 3, if suit 3 doesn't run then neither will suite 5.

Example

Basic Hook

// Mocha_suite_5.js
subflow('Mocha suite 5', function() {
  return {
    condition: branches =>
      branches
        .find(branch => branch.name === 'Mocha suite 3'),
    suites: [
      getSuite('Mocha Test 1'),
      getSuite('Mocha Test 2'),
      getSuite('Mocha Test 3'),
    ],
  };
});

// flow.js
getSubflow('Mocha suite 1'),
getSubflow('Mocha suite 2'),
fork([
  getSubflow('Mocha suite 3'),
  getSubflow('Mocha suite 4'),
]),
getSubflow('Mocha suite 5'),

Hooks

These are mainly used to set global variables and help in the transition between the sub-flows, they can also be used to initialize any variable before the whole test starts.

Example

Basic Hook

hook('variable', function() {
  return {
    before() {
      reflow.set('Variable 1', value);
    },
  };
});

Todo

  • Add setup and teardown keywords for global before and global after. Currently hooks are used for this.
3.0.0-gamma.55

5 years ago

3.0.0-gamma.54

5 years ago

3.0.0-gamma.53

5 years ago

3.0.0-gamma.52

5 years ago

3.0.0-gamma.51

5 years ago

3.0.0-gamma.50

5 years ago

3.0.0-gamma.49

5 years ago

3.0.0-gamma.48

5 years ago

3.0.0-gamma.47

5 years ago

3.0.0-gamma.46

5 years ago

3.0.0-gamma.45

5 years ago

3.0.0-gamma.40

5 years ago

3.0.0-gamma.39

5 years ago

3.0.0-gamma.38

5 years ago

3.0.0-gamma.37

5 years ago

3.0.0-gamma.36

5 years ago

3.0.0-gamma.35

5 years ago

3.0.0-gamma.34

5 years ago

3.0.0-gamma.33

5 years ago

3.0.0-gamma.32

5 years ago

3.0.0-gamma.31

5 years ago

3.0.0-gamma.30

5 years ago

3.0.0-gamma.29

5 years ago

3.0.0-gamma.28

5 years ago

3.0.0-gamma.27

5 years ago

3.0.0-gamma.26

6 years ago

3.0.0-gamma.25

6 years ago

3.0.0-gamma.24

6 years ago

3.0.0-gamma.23

6 years ago

3.0.0-gamma.22

6 years ago

3.0.0-gamma.21

6 years ago

3.0.0-gamma.20

6 years ago

3.0.0-gamma.18

6 years ago

3.0.0-gamma.17

6 years ago

3.0.0-gamma.16

6 years ago

3.0.0-gamma.15

6 years ago

3.0.0-gamma.14

6 years ago

3.0.0-gamma.12

6 years ago

3.0.0-gamma.8

6 years ago

3.0.0-gamma.6

6 years ago

3.0.0-gamma.5

6 years ago

3.0.0-gamma.4

6 years ago

3.0.0-gamma.3

6 years ago

3.0.0-gamma.2

6 years ago

3.0.0-gamma.1

6 years ago

3.0.0-gamma.0

6 years ago

3.0.0-alpha.38

6 years ago

3.0.0-alpha.37

6 years ago

3.0.0-alpha.36

6 years ago

3.0.0-alpha.35

6 years ago

3.0.0-alpha.34

6 years ago

3.0.0-alpha.33

6 years ago

3.0.0-alpha.32

6 years ago

3.0.0-alpha.31

6 years ago

3.0.0-alpha.30

6 years ago

3.0.0-alpha.29

6 years ago

3.0.0-alpha.28

6 years ago

3.0.0-alpha.27

6 years ago

3.0.0-alpha.26

6 years ago

3.0.0-alpha.25

6 years ago

3.0.0-alpha.24

6 years ago

3.0.0-alpha.23

6 years ago

3.0.0-alpha.22

6 years ago

3.0.0-alpha.21

6 years ago

3.0.0-alpha.20

6 years ago

3.0.0-alpha.19

6 years ago

3.0.0-alpha.18

6 years ago

3.0.0-alpha.17

6 years ago

3.0.0-alpha.16

6 years ago

3.0.0-alpha.15

6 years ago

3.0.0-alpha.14

6 years ago

3.0.0-alpha.13

6 years ago

3.0.0-alpha.12

6 years ago

3.0.0-alpha.11

6 years ago

3.0.0-alpha.10

6 years ago

3.0.0-alpha.9

6 years ago

3.0.0-alpha.8

6 years ago

3.0.0-alpha.7

6 years ago

3.0.0-alpha.6

6 years ago

3.0.0-alpha.4

6 years ago

3.0.0-alpha.3

6 years ago

3.0.0-alpha.2

6 years ago

3.0.0-alpha.1

6 years ago

3.0.0-2

6 years ago

3.0.0-1

6 years ago

2.3.1

6 years ago

2.2.0

6 years ago

2.1.0

6 years ago

2.0.5

6 years ago

2.0.4

6 years ago

2.0.3

6 years ago