OSDN Git Service

Regular updates
[twpd/master.git] / gremlins.md
1 ---
2 title: Gremlins.js
3 category: JavaScript libraries
4 layout: 2017/sheet
5 updated: 2017-10-22
6 weight: -1
7 intro: |
8   [Gremlins](https://github.com/marmelab/gremlins.js) is a JavaScript library to do "monkey-testing" by providing random user input (clicks, scrolls, and so on).
9 ---
10
11 ## Example
12
13 ### Simple example
14
15 ```html
16 <script src='https://cdn.jsdelivr.net/npm/gremlins/dist/gremlins.js'></script>
17 <script>
18 gremlins.createHorde().unleash()
19 </script>
20 ```
21
22 ![](https://camo.githubusercontent.com/130e101ee69d4d9b6f065df0a0404c861eb5ce18/687474703a2f2f7374617469632e6d61726d656c61622e636f6d2f746f646f2e676966?q=99)
23
24 ### Custom gremlins
25
26 ```js
27 gremlins.createHorde()
28   .allGremlins()
29   .gremlin(function () {
30     document.activeElement.blur()
31   })
32 ```
33 {: data-line="3,4,5"}
34
35 Runs the given function at regular intervals.
36
37 ### Full example
38
39 ```js
40 gremlins.createHorde()
41   .gremlin(gremlins.species.formFiller())
42   .gremlin(gremlins.species.clicker()
43     .clickTypes(['click'])
44     .canClick(element => { ··· })
45     .showAction((x, y) => { ··· }))
46   .gremlin(gremlins.species.scroller())
47   .mogwai(gremlins.mogwais.alert())
48   .mogwai(gremlins.mogwais.fps())
49   .mogwai(gremlins.mogwais.gizmo().maxErrors(2))
50   .unleash()
51 ```
52
53 By default, all gremlins and mogwais species are added to the horde. Do it this way to customize gremlins.
54
55 See: [Specifying gremlins](https://github.com/marmelab/gremlins.js#setting-gremlins-and-mogwais-to-use-in-a-test)
56
57 ## Hooks
58
59 ### Before and after
60
61 ```js
62 gremlins.createHorde()
63   .before(function () {
64     this.log('sync')
65     console.profile('gremlins')
66   })
67   .after(function () {
68     this.log('done')
69     console.profileEnd()
70   })
71 ```
72 {: data-line="2,6"}
73
74 ### Asynchronous
75
76 ```js
77 gremlins.createHorde()
78   .before(function (done) {
79     setTimeout(() => {
80       this.log('async')
81       done()
82     }, 500)
83   })
84 ```
85 {: data-line="2"}
86
87 ## References
88
89 - [marmelab/gremlins.js](https://github.com/marmelab/gremlins.js)