中島滋 a.k.a. ledsun
Attributes
• Programmer
• JavaScript for browsers
• MVC
• 忍者式テスト(Ninja Test)
• The second practitioner in the world
Products
• text annotation editor

http://textae.pubannotation.org/
• graph editor

http://lodqa.org/
• furiosa

https://github.com/ledsun/furiosa
Short introduction of furiosa
• furiosa's targets are JavaScript applications working in browsers.
• furiosa is a helper tool to user acceptance test.

It finds changes of behaviors of an application.
• furiosa is a static analysis tool.

The target is made with a specific MVC framework of the “aciton-
stream”.
• action-stream is a framework to split the controller of MVC into
streams.

Stream transmit “action”s that is abstractions of user events.

Each streams are described declaratively what “action”s are care.
Stream Example
this.bindActions(target.MODEL_NODE, [
[actionType.CREATE, (action, push) => createNode(nodes, action, push)],
[actionType.CREATE, (action, push) => autoEdgeCreation(action, nodes, push)],
[actionType.FOCUS, (action, push) => setFocus(nodes, action, push)],
[actionType.DELETE, (action, push) => deleteNode(nodes, action, push)],
[actionType.HOVER, (action, push) => push(target.VIEW_NODE)],
[actionType.UNHOVER, (action, push) => push(target.VIEW_NODE)],
[actionType.UPDATE_LABEL, (action, push) => updateNodeLabel(nodes, action, push)],
[actionType.UPDATE_TERM, (action, push) => updateNodeTerm(nodes, action, push)],
[actionType.VALIDATE, (action, push) => validateNode(nodes, action, push)]
])
target to action
type of action handler
furiosa result
{
"filename": "DataModelNodeStream.js",
"actions": [
{
"target": "target.MODEL_NODE",
"types": [
{
"type": "actionType.CREATE",
"handler": "--- ArrowFunction --->"
},
{
"type": "actionType.CREATE",
"handler": "--- ArrowFunction --->"
},
{
"type": "actionType.FOCUS",
"handler": "--- ArrowFunction --->"
},
{
"type": "actionType.DELETE",
"handler": "--- ArrowFunction --->"
},
{
"type": "actionType.HOVER",
"handler": "--- ArrowFunction --->"
},
{
"type": "actionType.UNHOVER",
"handler": "--- ArrowFunction --->"
},
{
"type": "actionType.UPDATE_LABEL",
"handler": "--- ArrowFunction --->"
},
{
"type": "actionType.UPDATE_TERM",
"handler": "--- ArrowFunction --->"
},
{
"type": "actionType.VALIDATE",
"handler": "--- ArrowFunction --->"
}
]
}
]
}
DEMO
git diff --name-only v0.3.4 v0.1.1 | furiosa
Thanks!

東京Node学園祭飛び込みLT

  • 1.
  • 2.
    Attributes • Programmer • JavaScriptfor browsers • MVC • 忍者式テスト(Ninja Test) • The second practitioner in the world
  • 3.
    Products • text annotationeditor
 http://textae.pubannotation.org/ • graph editor
 http://lodqa.org/ • furiosa
 https://github.com/ledsun/furiosa
  • 4.
    Short introduction offuriosa • furiosa's targets are JavaScript applications working in browsers. • furiosa is a helper tool to user acceptance test.
 It finds changes of behaviors of an application. • furiosa is a static analysis tool.
 The target is made with a specific MVC framework of the “aciton- stream”. • action-stream is a framework to split the controller of MVC into streams.
 Stream transmit “action”s that is abstractions of user events.
 Each streams are described declaratively what “action”s are care.
  • 5.
    Stream Example this.bindActions(target.MODEL_NODE, [ [actionType.CREATE,(action, push) => createNode(nodes, action, push)], [actionType.CREATE, (action, push) => autoEdgeCreation(action, nodes, push)], [actionType.FOCUS, (action, push) => setFocus(nodes, action, push)], [actionType.DELETE, (action, push) => deleteNode(nodes, action, push)], [actionType.HOVER, (action, push) => push(target.VIEW_NODE)], [actionType.UNHOVER, (action, push) => push(target.VIEW_NODE)], [actionType.UPDATE_LABEL, (action, push) => updateNodeLabel(nodes, action, push)], [actionType.UPDATE_TERM, (action, push) => updateNodeTerm(nodes, action, push)], [actionType.VALIDATE, (action, push) => validateNode(nodes, action, push)] ]) target to action type of action handler
  • 6.
    furiosa result { "filename": "DataModelNodeStream.js", "actions":[ { "target": "target.MODEL_NODE", "types": [ { "type": "actionType.CREATE", "handler": "--- ArrowFunction --->" }, { "type": "actionType.CREATE", "handler": "--- ArrowFunction --->" }, { "type": "actionType.FOCUS", "handler": "--- ArrowFunction --->" }, { "type": "actionType.DELETE", "handler": "--- ArrowFunction --->" }, { "type": "actionType.HOVER", "handler": "--- ArrowFunction --->" }, { "type": "actionType.UNHOVER", "handler": "--- ArrowFunction --->" }, { "type": "actionType.UPDATE_LABEL", "handler": "--- ArrowFunction --->" }, { "type": "actionType.UPDATE_TERM", "handler": "--- ArrowFunction --->" }, { "type": "actionType.VALIDATE", "handler": "--- ArrowFunction --->" } ] } ] }
  • 7.
    DEMO git diff --name-onlyv0.3.4 v0.1.1 | furiosa
  • 8.