Code Monkey home page Code Monkey logo

botium-bindings's Introduction

Botium Bindings

NPM

Codeship Status for codeforequity-at/botium-bindings npm version license docs

UPDATE 2020/11/05: Botium has a FREE, hosted plan available! The new Botium Box Mini is our ❤️ to the community. Take it for a test drive 🚗 ...

This project was formerly known as "TestMyBot" - same scope, different name

Botium is the Selenium for chatbots. Botium Bindings is the glue to bind Botium to test runners like Mocha, Jasmine and Jest.

Documentation

See here for Botium documentation.

botium-bindings's People

Contributors

alopix avatar codeforequity-at avatar murliwatz avatar naktibalda avatar pdesgarets avatar petuscov avatar socool avatar stefan-sev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

botium-bindings's Issues

FBDirect emulator catches message from external conversation

I was testing my chatbot through the emulator, and after a few exchanges I sent a closing message that didn't expect a reply. However, within 15-20 seconds, the Facebook account I was testing with received a message from an unrelated group chat. FBDirect captured that interaction and displayed it as a bot utterance

"nothing said in time" message could be more informative.

When bot does not reply, testmybot fails with nothing said in time error.

Example of output:

INFO: running testcase TESTCASE NAME
INFO: TESTCASE NAME failed: nothing said in time
    1) TESTCASE NAME


  0 passing (5s)
  1 failing

  1) TestMyBot Test Suite for botkit-starter-web TESTCASE NAME:
     Error: done() invoked with non-Error: nothing said in time
      at async.eachSeries (node_modules\testmybot\lib\testbuilder.js:54:15)

To figure out at what point it failed, I have to run with DEBUG flag.
Then I get the following output:

INFO: running testcase TESTCASE NAME
DEBUG: TESTCASE NAME: hears Your service is terrible.
DEBUG: TESTCASE NAME: wait for says (channel: null)
DEBUG: TESTCASE NAME: says I'm sorry to hear you're not happy.
DEBUG: TESTCASE NAME: wait for says (channel: null)
INFO: TESTCASE NAME: nothing said in time
    1) TESTCASE NAME


  0 passing (5s)
  1 failing

  1) TestMyBot Test Suite for botkit-starter-web TESTCASE NAME:
     Error: done() invoked with non-Error: nothing said in time
      at async.eachSeries (node_modules\testmybot\lib\testbuilder.js:54:15)

It would be better to add an expected response to the error message:
nothing said in time, expected 'Have a nice day'.

Issue with docker

docker-compose -p facebook_messenger_bot_with_botkit -f ./node_modules/testmybot/docker-compose.testmybot.yml -f ./node_modules/testmybot-fbmock/docker-compose.testmybot-fbmock.yml -f ./docker-compose.testmybot.override.yml kill
INFO: docker-compose exited with code 1

Ability to run a single convo file

It would be good to have a way to run a single convo file while developing a particular feature of the dialogue.
Mocha has .only() method.
Since convo is text only, I think that only could be prepended to a file suffix, e.g. feature1.only.convo.txt
skip could be implemented in a similar way.

Failed to install fbdirect example

When trying npm install on the fbdirect example on a MacOS machine running [email protected], installation fails with error:

npm WARN [email protected] No repository field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/testmybot/node_modules/acorn-jsx/node_modules/acorn):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '$HOME/testmybot/node_modules/acorn-jsx/node_modules/acorn' -> '$HOME/testmybot/node_modules/acorn-jsx/node_modules/.acorn.DELETE'

npm ERR! path $HOME/testmybot/node_modules/body-parser/node_modules/ms
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename
npm ERR! enoent ENOENT: no such file or directory, rename '$HOME/testmybot/node_modules/body-parser/node_modules/ms' -> '$HOME/testmybot/node_modules/body-parser/node_modules/.ms.DELETE'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent 

Failed: nothing said in time when sending Facebook Messenger attachments.

Using fbdirect.
BotBuilder bot.
Nodejs v7.4.0.

Following the https://github.com/codeforequity-at/testmybot/tree/master/samples/fbdirect sample directory the tests are running fine (for the most part).

If I add a basic conversation flow of, question, answer, question, answer so forth without any attachments the tests pass and everything is fine.

convo.txt basic test:

Introduction text for returning user.

#me
hello

#bot
Hello name, great to see you again.

#bot
What can I do for you today?

Now I'm trying to test a flow with attachments in I'm however getting Failed: nothing said in time error every time.

Digging around I think the cause of my issue is the test moving onto the next statement in the convo.txt file too soon since sending images and attachments can take a few milliseconds/seconds longer than a normal message on Facebook Messenger.

I can't edit anything in my testmybot.spec.js file like:

  beforeEach(function(done) {
    bot.beforeEach().then(done);
  }, 10000);

Since the issue is within one test, it moving onto the next #bot statement too quickly.

Are there any suggestions on a workaround for this or am I not formatting my text convo file correctly?

Test cases are passed even if I don't pass anything in expected result

  • Test cases get passed even if I don't pass anything in expected.

Example 1:

#me
hi

#bot
  • Test cases get passed even if it partially match with the expected result
    Example 2:
    Expected result for Hi is Hi There,Now if I put Only Hi in expected result then also it gets passed.It only fails when I put invalid thing,then it gets failed,e.g Hi K instead of Hi there
#me
Hi

#bot
Hi 

Upgrade to 1.0.0

I have tried to upgrade my botkit project to use testmybot 1.0.0
But whenever I run tests they fail with timeout:

INFO: Ask FAQ question failed: Error: Queue.pop timeout after undefined
    at QueueTimeoutError (...\node_modules\botium-core\src\helpers\QueueTimeoutError.js:3:5)
    at timeoutRequest (...\node_modules\botium-core\src\helpers\Queue.js:46:18)
    at Timeout.timeoutCallback [as _onTimeout] (...\node_modules\async\dist\async.js:4922:13)
    at ontimeout (timers.js:386:14)
    at tryOnTimeout (timers.js:250:5)
    at Timer.listOnTimeout (timers.js:214:5)

Do I need to modify my testmybot.json file?
It still contains

{
  "containermode": "local"
}

just like https://github.com/codeforequity-at/testmybot/blob/master/samples/botkit/jasmine/testmybot.json

My testmybot.spec.js contains this code:

var env = require('node-env-file');
env(__dirname + '/../.env');

const testmybot = require('testmybot');
const mochaHelper = testmybot.helper.mocha();
const botkitHelper = testmybot.helper.botkit();

const Botkit = require('botkit');
const bot = require('../build/bot').default;


const controller = Botkit.facebookbot({access_token: 'test', verify_token: 'test'});
bot(controller);

botkitHelper.wireWithBotkit(function() {
    controller.memory_store.users = {};
    return controller;
});

mochaHelper.setupMochaTestSuite(60000);

It worked before, the diff is:

-const botkitHelper = require('testmybot/helper/botkit');
-const mochaHelper = require('testmybot/helper/mocha');
+const testmybot = require('testmybot');
+const mochaHelper = testmybot.helper.mocha();
+const botkitHelper = testmybot.helper.botkit();

npm errors when installing fbdirect sample's dependencies

After installing and trying successfully Botium, I've pulled testmybot from git and started to play with fbdirect sample. But it seems that there are installation errors (working on macOS High Sierra, 10.13.4):

$ node -v
v9.4.0
$ npm -v
5.6.0

Issuing npm install inside /opt/testmybot works flawlessly (I'm assuming that this is the first step). However, if I try to install the samples/fbdirect dependencies (is this the second step?), I get this error:

cd /opt/testmybot/samples/fbdirect
npm install
....
npm ERR! path /opt/testmybot/node_modules/botium-core/node_modules/after
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename
npm ERR! enoent ENOENT: no such file or directory, rename '/opt/testmybot/node_modules/botium-core/node_modules/after' -> '/opt/testmybot/node_modules/botium-core/node_modules/.after.DELETE'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent

Any help will be greatly appreciated.

Attached log file :
2018-04-25T08_27_15_010Z-debug.log

Testcase name in debug output looks odd

It is usually very long and it looks wrong
Example

INFO: running testcase Track order identification with order number
DEBUG: Track order identification with order number: hears Where's my order?
DEBUG: Track order identification with order number: wait for says (channel: null)
DEBUG: Track order identification with order number: says Please enter your order tracking number.
DEBUG: Track order identification with order number: hears 567895678
DEBUG: Track order identification with order number: wait for says (channel: null)

I think that the word "Bot" would look better:

INFO: running testcase Track order identification with order number
DEBUG: Bot hears: Where's my order?
DEBUG: Bot waits for says (channel: null)
DEBUG: Bot says: Please enter your order tracking number.
DEBUG: Bot hears: 567895678
DEBUG: Bot wait for says (channel: null)

issue while matching boolean values

Error logs:

Failures:
1) TestMyBot Test Suite for conversation Lax
  Message:
    **Expected true to contain true.**
  Stack:
    Error: Expected true to contain true.
        at matcher (/home/kamrink/Desktop/Projects/conversation/node_modules/testmybot/src/helpers/jasmine.js:12:24)
        at Convo._compareObject (/home/kamrink/Desktop/Projects/conversation/node_modules/botium-core/src/scripting/Convo.js:117:7)
        at _.forOwn (/home/kamrink/Desktop/Projects/conversation/node_modules/botium-core/src/scripting/Convo.js:109:16)
        at /home/kamrink/Desktop/Projects/conversation/node_modules/lodash/lodash.js:4917:15

1 spec, 1 failure
Finished in 0.759 seconds

Sample Payload:
#me
search

#bot

{  
   "message":{  
      "attachment":{  
         "type":"template",
         "payload":{  
            "template_type":"button",
            "text":"Ready?",
            "buttons":[  
               {  
                  "type":"web_url",
                  "url":"https://google.com",
                  "messenger_extensions":true,
                  "title":"Search"
               }
            ]
         }
      }
   }
}

ERR! missing script emulator

Hi,

Can anybody please help me here in running the emulator, record and play? I tried the exact step given for instalation. Wen to sample folder did "npm install" then "npm run emulator" but it is giving me error"npm ERR! missing script: emulator"

Regards

Split project to separate repos

Currently you have 5 projects in one repository:

The main problem with this approach is that it is impossible to install with npm from github.

For example, if this repository contained a single project with package.json at the top level,
it would be possible to install code from master branch by setting dependency to "testmybot": "git+https://github.com/codeforequity-at/testmybot.git#master"
and I would be able to install my branch containing the latest patch with "testmybot": "git+https://github.com/Naktibalda/testmybot.git#fix-compatibility-with-botkit" and so forth and so on.

But because it contains multiple projects, every time I want to install some patch, I have to publish a release of my fork on npm.
And to actually consume my fork, I have to change package name in package.json of my app and in the source code of the my tests.
"@naktibalda/testmybot": "^0.3.5",
const botkitHelper = require('@naktibalda/testmybot/helper/botkit');

readConvos error: TypeError: Converting circular structure to JSON

This error appears when I run like this:
testmybot-master/samples/watson$ npm run emulatorBrowser

readConvos error: TypeError: Converting circular structure to JSON

I found which place throws error:

/samples/watson/node_modules/testmybot/src/emulator/browser/index.js

  router.route('/testcases')
    .post(function(req, res) {
      if (!req.body.header || !req.body.header.name)
        return res.json({ success: false, error: 'Name not specified' });
      if (!req.body.conversation)
        return res.json({ success: false, error: 'Conversation not specified' });

      try {
        const filename = tmb.convoReader.writeConvo(req.body, true);
        return res.json({ success: true, filename: filename });
      } catch (err) {
        console.log('writeConvo error: ' + err);
        return res.json({ success: false, error: err });
      }
    }).get(function(req, res) {
      try {
        const convos = tmb.convoReader.readConvos()
        return res.json(convos);  // <---- This line says "TypeError: Converting circular structure to JSON"
      } catch (err) {        
        console.log('readConvos error: ' + err);
        return res.json({ success: false, error: err });
      }
    });

I've logged convos value before throwing error, this is convos's value:

[ Convo {
    provider: 
     ScriptingProvider {
       caps: [Object],
       compilers: [Object],
       convos: [Circular],
       utterances: {},
       match: [Function],
       scriptingEvents: [Object] },
    header: ConvoHeader { name: 'testt_1', order: 1, description: undefined },
    conversation: [ [Object], [Object], [Object], [Object] ],
    sourceTag: 'testt_1.convo.txt' },
  Convo {
    provider: 
     ScriptingProvider {
       caps: [Object],
       compilers: [Object],
       convos: [Circular],
       utterances: {},
       match: [Function],
       scriptingEvents: [Object] },
    header: ConvoHeader { name: 'testt_2', order: 2, description: undefined },
    conversation: 
     [ [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object],
       [Object] ],
    sourceTag: 'testt_2.convo.txt' } ]

>npm run emulator works fine, only >npm run emulatorBrowser throws above error. Browser opens http://127.0.0.1:3000/#!/testsuite but there is nothing to do there, busy loader rotates.
I'm using nodejs v6.9.5, npm 3.10.10, kubuntu 16.04

FbDirect : Converting circular structure to JSON

When running fbDirect project in emulatorBrowser im getting issue as 'TypeError: Converting circular structure to JSON' in my CMD.
Seems like /src/emulator/browser/index.js is failing on line 121 while stringify an array of object.
'convos' is as Array class 'Convo' which is not able to stringify

not able to run watson sample

Hi,
I am using testmybot package to demonstrate chatbots testing. I am trying to execute watson sample. But somehow I am not able to make it up and running. Below are the steps followed:

  1. Downloaded the project testmybot
  2. Modified botium capaabilities in testmybot.json file located in watson folder
  3. Modified "restaurant.convo.txt" under "testmybot\samples\watson\spec\convo" folder
  4. inside watson directory i gave "npm install" followed by "npm test"
    I am getting error. please find the attached error report.
    watsonbot
    Please let me know if I have missed out anything.

Example of structured message with text

README and tests contain 2 very specific examples of structures messages:

  • with attachments
  • with postback

I want to send a structured messages containing text and one more more attributes,
example:

#bot
{
    "message": {
        "text": "Thanks, so you want to pay £34.56, please enter your details",
        "action": "take_payment"
    }
}

When I run this convo, I get error "TypeError: convomsg.msg.split is not a function".
What is a correct format?

testmybot is incompatible with recent versions of Botkit

I returned to my bot project after a long break and updated all dependencies.
Then I ran my tests and all testmybot tests failed.

I tried to identify the culprit and this is what I discovered:

Older versions of botkit fail with:

TestMyBot Test Suite for botkit-starter-web Ask FAQ question:
     AssertionError: object tested must be an array, a map, an object, a set, a string, or a weakset, but object given
      at compareObject (node_modules\@naktibalda\testmybot\lib\testbuilder.js:81:5)

https://github.com/codeforequity-at/testmybot/blob/master/testmybot/lib/testbuilder.js#L81

assertCb(result, expected); 

I printed both variables with console.log() and this is what I got:

result 

{ message:
   { recipient: { id: 'me' },
     message: { text: 'expected message text' } } }

expected 

expected message text

The convo file in question is very simpy:

Test question

#me
question

#bot
expected message text

Newer versions fail with:

     Error: done() invoked with non-Error: nothing said in time
      at async.eachSeries (node_modules\testmybot\lib\testbuilder.js:51:17)

I manually found a commit which introduced this issue:
howdyai/botkit@50fbf6a

error while running testmybot v1.3.2

I get below error when I try to run my test cases:
screen shot 2018-03-24 at 9 24 40 pm
when I change controller = beforeEachCallback() to controller = beforeEachCallback at node_modules/testmybot/src/helpers/botkit.js:80, it starts working fine.

Conversation recorder crashes

I am recording conversation with bot via fbDirect , when bot sends template message, bot crashes it goes into loop.It works perfectly with text messages.
This the output
screen shot 2017-12-28 at 1 00 05 pm

"ERR! listen Error: unrecognized attach_file {"extensible_attachment":{"legacy_attachment_id":"942000345958367","story_attachment":{"description":null,"media":{"animated_image":null,"image":{"uri":"https://external-frt3-2.xx.fbcdn.net/safe_image.php?d=AQAqtv3Tii110hOn&url=http%3A%2F%2Fcontent.airelo.me%2Fimages%2Fnewyork-500px.jpg&_nc_hash=AQAcAONUBpnY3AKj","height":0,"width":0},"playable_duration_in_ms":0,"is_playable":false,"playable_url":null},"source":{"text":"ClubGlobals Staging"},"style_list":["vertical_attachment_list","fallback"],"title_with_entities":{"text":"New York, Munich, Berlin"},"properties":[],"url":"https://www.facebook.com/commerce/update/","deduplication_key":"947d41618f00254e3b538ba063f9697f","action_links":[],"messaging_attribution":null,"messenger_call_to_actions":[],"target":{"__typename":"MessengerBusinessMessage","message":"ClubGlobals Staging: Berlin","call_to_actions":[],"business_items":{"nodes":[{"id":"137946783569900","description":"","image_aspect_ratio":null,"image_url":"https://external-frt3-2.xx.fbcdn.net/safe_image.php?d=AQArYxElS1ew4Hme&url=http%3A%2F%2Fcontent.airelo.me%2Fimages%2Fberlin-500px.jpg&_nc_hash=AQB8ZXVO4_lUPoHW","first_metaline":"Germany","name":"Berlin","source_name":null,"target_url":null,"default_action":null,"call_to_actions":[{"action_link":"https://www.facebook.com/commerce/update/","action_open_type":"POSTBACK","action_objects":[{}],"title":"Berlin","user_confirmation":null,"id":"bW5jdGE6Y3RhMV9FbnRNZXNzZW5nZXJDb21tZXJjZUl0ZW1fMTM3OTQ2NzgzNTY5OTAwXzA=","is_disabled":false,"is_mutable_by_server":false,"payment_metadata":null,"render_style":"NORMAL","webview_metadata":{"fallback_url":null,"messenger_extensions":false,"webview_height_ratio":null,"webview_share_button":false},"page_id":"822553554569714"}],"media_blob_attachments":[]},{"id":"375237856256049","description":"","image_aspect_ratio":null,"image_url":"https://external-frt3-2.xx.fbcdn.net/safe_image.php?d=AQBlTAYUz7toVMKK&url=http%3A%2F%2Fcontent.airelo.me%2Fimages%2Fmunich-500px.jpg&_nc_hash=AQD_XSQ9fPKjNR0i","first_metaline":"Germany","name":"Munich","source_name":null,"target_url":null,"default_action":null,"call_to_actions":[{"action_link":"https://www.facebook.com/commerce/update/","action_open_type":"POSTBACK","action_objects":[{}],"title":"Munich","user_confirmation":null,"id":"bW5jdGE6Y3RhMV9FbnRNZXNzZW5nZXJDb21tZXJjZUl0ZW1fMzc1MjM3ODU2MjU2MDQ5XzA=","is_disabled":false,"is_mutable_by_server":false,"payment_metadata":null,"render_style":"NORMAL","webview_metadata":{"fallback_url":null,"messenger_extensions":false,"webview_height_ratio":null,"webview_share_button":false},"page_id":"822553554569714"}],"media_blob_attachments":[]},{"id":"2468242140067785","description":"","image_aspect_ratio":null,"image_url":"https://external-frt3-2.xx.fbcdn.net/safe_image.php?d=AQAqtv3Tii110hOn&url=http%3A%2F%2Fcontent.airelo.me%2Fimages%2Fnewyork-500px.jpg&_nc_hash=AQAcAONUBpnY3AKj","first_metaline":"USA","name":"New York","source_name":null,"target_url":null,"default_action":null,"call_to_actions":[{"action_link":"https://www.facebook.com/commerce/update/","action_open_type":"POSTBACK","action_objects":[{}],"title":"New York","user_confirmation":null,"id":"bW5jdGE6Y3RhMV9FbnRNZXNzZW5nZXJDb21tZXJjZUl0ZW1fMjQ2ODI0MjE0MDA2Nzc4NV8w","is_disabled":false,"is_mutable_by_server":false,"payment_metadata":null,"render_style":"NORMAL","webview_metadata":{"fallback_url":null,"messenger_extensions":false,"webview_height_ratio":null,"webview_share_button":false},"page_id":"822553554569714"}],"media_blob_attachments":[]}]}},"subattachments":[{"description":{"text":""},"media":{"animated_image":null,"image":{"uri":"https://external-frt3-2.xx.fbcdn.net/safe_image.php?d=AQArYxElS1ew4Hme&url=http%3A%2F%2Fcontent.airelo.me%2Fimages%2Fberlin-500px.jpg&_nc_hash=AQB8ZXVO4_lUPoHW","height":0,"width":0},"playable_duration_in_ms":0,"is_playable":false,"playable_url":null},"source":{"text":""},"style_list":["messenger_platform_compact_item","retail_item","fallback"],"title_with_entities":{"text":"Berlin"},"properties":[],"url":null,"deduplication_key":"42c70c079c5a64f361d19cbd379392ae","action_links":[],"messaging_attribution":null,"messenger_call_to_actions":[],"target":{"__typename":"MessengerRetailItem","id":"137946783569900","name":"Berlin","desc":"","thumb_url":"https://external-frt3-2.xx.fbcdn.net/safe_image.php?d=AQArYxElS1ew4Hme&url=http%3A%2F%2Fcontent.airelo.me%2Fimages%2Fberlin-500px.jpg&_nc_hash=AQB8ZXVO4_lUPoHW","item_url":null,"source":null,"image_aspect_ratio":null,"first_metaline":"Germany","second_metaline":null,"third_metaline":null,"default_action":null,"call_to_actions":[{"action_link":"https://www.facebook.com/commerce/update/","action_open_type":"POSTBACK","action_objects":[{}],"title":"Berlin","user_confirmation":null,"id":"bW5jdGE6Y3RhMV9FbnRNZXNzZW5nZXJDb21tZXJjZUl0ZW1fMTM3OTQ2NzgzNTY5OTAwXzA=","is_disabled":false,"is_mutable_by_server":false,"payment_metadata":null,"render_style":"NORMAL","webview_metadata":{"fallback_url":null,"messenger_extensions":false,"webview_height_ratio":null,"webview_share_button":false},"page_id":"822553554569714"}]}},{"description":{"text":""},"media":{"animated_image":null,"image":{"uri":"https://external-frt3-2.xx.fbcdn.net/safe_image.php?url=http%3A%2F%2Fcontent.airelo.me%2Fimages%2Fmunich-500px.jpg&_nc_hash=AQB5knfukfKewUtW","height":0,"width":0},"playable_duration_in_ms":0,"is_playable":false,"playable_url":null},"source":{"text":""},"style_list":["messenger_platform_compact_item","retail_item","fallback"],"title_with_entities":{"text":"Munich"},"properties":[],"url":null,"deduplication_key":"4f6fbea95ac0710e0bc49d52df1bbd72","action_links":[],"messaging_attribution":null,"messenger_call_to_actions":[],"target":{"__typename":"MessengerRetailItem","id":"375237856256049","name":"Munich","desc":"","thumb_url":"https://external-frt3-2.xx.fbcdn.net/safe_image.php?d=AQBlTAYUz7toVMKK&url=http%3A%2F%2Fcontent.airelo.me%2Fimages%2Fmunich-500px.jpg&_nc_hash=AQD_XSQ9fPKjNR0i","item_url":null,"source":null,"image_aspect_ratio":null,"first_metaline":"Germany","second_metaline":null,"third_metaline":null,"default_action":null,"call_to_actions":[{"action_link":"https://www.facebook.com/commerce/update/","action_open_type":"POSTBACK","action_objects":[{}],"title":"Munich","user_confirmation":null,"id":"bW5jdGE6Y3RhMV9FbnRNZXNzZW5nZXJDb21tZXJjZUl0ZW1fMzc1MjM3ODU2MjU2MDQ5XzA=","is_disabled":false,"is_mutable_by_server":false,"payment_metadata":null,"render_style":"NORMAL","webview_metadata":{"fallback_url":null,"messenger_extensions":false,"webview_height_ratio":null,"webview_share_button":false},"page_id":"822553554569714"}]}},{"description":{"text":""},"media":{"animated_image":null,"image":{"uri":"https://external-frt3-2.xx.fbcdn.net/safe_image.php?d=AQAqtv3Tii110hOn&url=http%3A%2F%2Fcontent.airelo.me%2Fimages%2Fnewyork-500px.jpg&_nc_hash=AQAcAONUBpnY3AKj","height":0,"width":0},"playable_duration_in_ms":0,"is_playable":false,"playable_url":null},"source":{"text":""},"style_list":["messenger_platform_compact_item","retail_item","fallback"],"title_with_entities":{"text":"New York"},"properties":[],"url":null,"deduplication_key":"1e467643e39b69949a26e4c24876ca94","action_links":[],"messaging_attribution":null,"messenger_call_to_actions":[],"target":{"__typename":"MessengerRetailItem","id":"2468242140067785","name":"New York","desc":"","thumb_url":"https://external-frt3-2.xx.fbcdn.net/safe_image.php?d=AQAqtv3Tii110hOn&url=http%3A%2F%2Fcontent.airelo.me%2Fimages%2Fnewyork-500px.jpg&_nc_hash=AQAcAONUBpnY3AKj","item_url":null,"source":null,"image_aspect_ratio":null,"first_metaline":"USA","second_metaline":null,"third_metaline":null,"default_action":null,"call_to_actions":[{"action_link":"https://www.facebook.com/commerce/update/","action_open_type":"POSTBACK","action_objects":[{}],"title":"New York","user_confirmation":null,"id":"bW5jdGE6Y3RhMV9FbnRNZXNzZW5nZXJDb21tZXJjZUl0ZW1fMjQ2ODI0MjE0MDA2Nzc4NV8w","is_disabled":false,"is_mutable_by_server":false,"payment_metadata":null,"render_style":"NORMAL","webview_metadata":{"fallback_url":null,"messenger_extensions":false,"webview_height_ratio":null,"webview_share_button":false},"page_id":"822553554569714"}]}}]}}}
ERR! listen at _formatAttachment (/Users/Abgaryan/Documents/ClubGlobals Project/clubglobalsbot/CG-Bot-2017/testmybot/samples/fbdirect/node_modules/facebook-chat-api/utils.js:354:13)
ERR! listen at attachments.map.v (/Users/Abgaryan/Documents/ClubGlobals Project/clubglobalsbot/CG-Bot-2017/testmybot/samples/fbdirect/node_modules/facebook-chat-api/utils.js:376:55)
ERR! listen at Array.map (native)
ERR! listen at Object.formatDeltaMessage (/Users/Abgaryan/Documents/ClubGlobals Project/clubglobalsbot/CG-Bot-2017/testmybot/samples/fbdirect/node_modules/facebook-chat-api/utils.js:376:46)
ERR! listen at resolveAttachmentUrl (/Users/Abgaryan/Documents/ClubGlobals Project/clubglobalsbot/CG-Bot-2017/testmybot/samples/fbdirect/node_modules/facebook-chat-api/src/listen.js:159:40)
ERR! listen at resolveAttachmentUrl (/Users/Abgaryan/Documents/ClubGlobals Project/clubglobalsbot/CG-Bot-2017/testmybot/samples/fbdirect/node_modules/facebook-chat-api/src/listen.js:168:30)
ERR! listen at parsePackets (/Users/Abgaryan/Documents/ClubGlobals Project/clubglobalsbot/CG-Bot-2017/testmybot/samples/fbdirect/node_modules/facebook-chat-api/src/listen.js:171:19)
ERR! listen at Array.forEach (native)
ERR! listen at /Users/Abgaryan/Documents/ClubGlobals Project/clubglobalsbot/CG-Bot-2017/testmybot/samples/fbdirect/node_modules/facebook-chat-api/src/listen.js:109:12
ERR! listen at tryCatcher (/Users/Abgaryan/Documents/ClubGlobals Project/clubglobalsbot/CG-Bot-2017/testmybot/samples/fbdirect/node_modules/facebook-chat-api/node_modules/bluebird/js/main/util.js:26:23)
ERR! listen at Promise._settlePromiseFromHandler (/Users/Abgaryan/Documents/ClubGlobals Project/clubglobalsbot/CG-Bot-2017/testmybot/samples/fbdirect/node_modules/facebook-chat-api/node_modules/bluebird/js/main/promise.js:510:31)
ERR! listen at Promise._settlePromiseAt (/Users/Abgaryan/Documents/ClubGlobals Project/clubglobalsbot/CG-Bot-2017/testmybot/samples/fbdirect/node_modules/facebook-chat-api/node_modules/bluebird/js/main/promise.js:584:18)
ERR! listen at Promise._settlePromises (/Users/Abgaryan/Documents/ClubGlobals Project/clubglobalsbot/CG-Bot-2017/testmybot/samples/fbdirect/node_modules/facebook-chat-api/node_modules/bluebird/js/main/promise.js:700:14)
ERR! listen at Async._drainQueue (/Users/Abgaryan/Documents/ClubGlobals Project/clubglobalsbot/CG-Bot-2017/testmybot/samples/fbdirect/node_modules/facebook-chat-api/node_modules/bluebird/js/main/async.js:123:16)
ERR! listen at Async._drainQueues (/Users/Abgaryan/Documents/ClubGlobals Project/clubglobalsbot/CG-Bot-2017/testmybot/samples/fbdirect/node_modules/facebook-chat-api/node_modules/bluebird/js/main/async.js:133:10)
ERR! listen at Immediate.Async.drainQueues (/Users/Abgaryan/Documents/ClubGlobals Project/clubglobalsbot/CG-Bot-2017/testmybot/samples/fbdirect/node_modules/facebook-chat-api/node_modules/bluebird/js/main/async.js:15:14)
ERR! listen at runCallback (timers.js:666:20)
ERR! listen at tryOnImmediate (timers.js:639:5)
ERR! listen at processImmediate [as _immediateCallback] (timers.js:611:5)
"

Mocha helper does not handle rejections in readConvo method

Similar to #14, made more obvious by #19

INFO: running testcase First testcase
Unhandled rejection AssertionError: Conversation is empty
    at testbuilder.setupTestSuite (E:\projects\botkit-starter-web\node_modules\testmybot\helper\mocha.js:16:21)
    at convo.readConvo.then (E:\projects\botkit-starter-web\node_modules\testmybot\lib\testbuilder.js:59:11)
...

    1) First testcase


  0 passing (1m)
  1 failing

  1) TestMyBot Test Suite for botkit-starter-web First testcase:
     Error: Timeout of 60000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.

mocha failCb suppresses error message

https://github.com/codeforequity-at/testmybot/blob/00b9e6c40e1a8c4abbb9308a7e047c409985278c/testmybot/helper/mocha.js#L16

 (err) => expect.fail(err),

The actual signature of expect.fail method is

http://chaijs.com/api/bdd/#method_fail

.fail(actual, expected, [message], [operator])

Because message parameter is not passed, message is replaced by expect.fail().
and the output looks like this:

Unhandled rejection AssertionError: expect.fail()
    at module.exports.setupMochaTestCases.testbuilder.setupTestSuite (E:\projects\botkit-starter-web\node_modules\testmybot\helper\mocha.js:16:21)

I believe that jasmine helper is likely to have the same issue, but I have no time to test it.

Repeated bot answers after clicking the "Reset Chatbot" button

I am recording a conversation with my facebook chatbot via fbDirect, but after clicking the "Reset Chatbot" button I get the same answer to my request twice. If I click another time the "Reset Chatbot" button I get the same answer to my request three times and so on.

I faced the same issue by clicking the "Clear Chat" button but I was able to solve it in that case by emptying the vm.messages array in the clearChat function:

vm.clearChat = function() { vm.messages = []; vm.messages.length = 0; };

I tried to do the same in the startDocker() function that, as far as I understand, is the one that is called when a you click on the "Reset Chatbot" button but it doesn't work and I'm not able to understand what could be the problem.

Can you help me?

Thank you.

every test cases are passing when using botkit with testmybot v1.2.3

I'm trying to run botkit with testmybot. But I found that every test cases are getting passed after the latest minior release (v1.2.3).

I figured out that inside samples/botkit/jasmine testmybot.json is missing. This file should contain below in order to validate negative test cases:

{
  "containermode": "local"
}

Please correct me if I am wrong.

Mocha helper does not end test on failed expectation

INFO: Track my order failed: AssertionError: expected 'Hello. How can I help you?' to include 'Hello. How can I help you?2'
Unhandled rejection AssertionError: expect.fail()
    at testbuilder.setupTestSuite (E:\projects\botkit-starter-web\node_modules\testmybot\helper\mocha.js:16:21)
    at async.eachSeries (E:\projects\botkit-starter-web\node_modules\testmybot\lib\testbuilder.js:51:17)

This output is printed quickly, but the test keeps running until timeout.

Cannot view container logs

As of 1.0.0 I am unable to to view the STDOUT/STDERR (console.log/error/...) of my container with docker logs -f because the syslog driver is being used. Setting the DEBUG=* environment variable doesn't seem to show the output from the container either.
How can I view the log output for the Syslog server or is there something else really obvious that I'm missing?

EOL should be configurable

convo.js uses OS specific EOL symbols.

This makes convo files less portable, because if I want to use the same convo files on Linux and on Windows I have to convert files to use correct EOL before running tests.

Documentation should make it clear how to get started

Reading the home page of the project:

Samples. There are a couple of samples available, showing possible scenarios to use TestMyBot. For all samples, you these commands to run them:

> npm install
> npm run test

I would suggest three initial fixes:

  • Fix this typo: "For all samples, you these commands to run them:" --> "For all samples, you should type these commands to run them:"

  • What kind of test will it launch the first time? I mean, for the Facebook Messenger (fbdirect) case, if I understand correctly, you first must edit testmybot.json with your FB credentials and FB Page ID of the bot, then execute npm run emulator to create and save a conversation and finally, you type npm run test to automatically run the conversation again, this time as a test (output expected vs. output received). However, it seems that there is an already created conversation there:
    testmybot/samples/fbdirect/spec/convo/simplecalc.convo.txt. I think that this is for testing the sample bot provided with botium, isn't it? But I'm a little bit confused here. Could you clarify this in the markdown text?

  • The markdown for the FBdirect page links to an outdated article. For example, in "Step 2" it suggest to run node node_modules/testmybot-chat/index.js but that directory is not there anymore (it's called testmybot, not testmybot-chat) and (please, correct me if I am wrong) the emulator is not longer launched with that command but with this one:

> npm install
> npm run emulator

Could it be possible to copy the text from chatbotsmagazine.com article in a wiki page so we can propose pull requests to update it (and keep it updated)?

This kind of small documentation fixes could help onboarding project newcomers (like myself!)

Docker fails to boot

I am getting below error. May be we are using -d --rm which convicts with each other.

./node_modules/.bin/jasmine Started INFO: Running Docker Command: docker stop testmybot INFO: Running Docker Command: docker stop testmybot-fbmock INFO: docker stop testmybot exited with code 0 INFO: docker stop testmybot-fbmock exited with code 0 INFO: docker network rm exited with code 0 INFO: Running Docker Command: docker network create -d bridge testmybot_network INFO: docker network create exited with code 0 INFO: Running Docker Command: docker build -t testmybot -f ./node_modules/testmybot/Dockerfile.testmybot . INFO: Running Docker Command: docker build -t testmybot-fbmock -f ./node_modules/testmybot-fbmock/Dockerfile ./node_modules/testmybot-fbmock/ INFO: docker build testmybot-fbmock exited with code 0 INFO: docker build testmybot exited with code 0 INFO: Running Docker Command: docker run -d --rm -e NODE_TLS_REJECT_UNAUTHORIZED=0 --name testmybot --network testmybot_network --network-alias testmybot testmybot INFO: Running Docker Command: docker run -d --rm -p 46199:46199 -e TESTMYBOT_FACEBOOK_PUBLISHPORT=46199 -e TESTMYBOT_FACEBOOK_PAGEID= -e TESTMYBOT_FACEBOOK_USERPROFILEIDDEFAULT= -e TESTMYBOT_FACEBOOK_USERPROFILELOCALE=en_US -e TESTMYBOT_FACEBOOK_SEQNOSTART= -e TESTMYBOT_FACEBOOK_SENDDELIVERY=true -e TESTMYBOT_FACEBOOK_WEBHOOKURL= -e TESTMYBOT_FACEBOOK_WEBHOOKPORT=3000 -e TESTMYBOT_FACEBOOK_WEBHOOKPATH=facebook/receive -e TESTMYBOT_FACEBOOK_WEBHOOKHOST=testmybot -e TESTMYBOT_FACEBOOK_WEBHOOKPROTOCOL=http --name testmybot-fbmock --network testmybot_network --network-alias graph.facebook.com testmybot-fbmock INFO: docker run testmybot exited with code 1 INFO: docker run testmybot-fbmock exited with code 1 Unhandled rejection docker run testmybot returned error code 1

files watcher and auto reload when using testmybot_ide

am using testmybot IDE for local testing on a facebook bot, it is very annoying to reload docker containers on code changes while developing.
I would like to discuss with you what changes do you think we will need if we want to implement auto reload mechanism for the node server inside testmybot container on files updates?

TypeError: listeners[msg.channelId].shift(...) is not a function

TypeError: listeners[msg.channelId].shift(...) is not a function
   at Object.push (/usr/src/app/msgqueue.js:10:37)
   at /usr/ src/app/index.js:89:14
   at Layer.handle [as handle_request] (/us r/src/app/node_modules/express/lib/router/layer.js:95:5)
   at nex t (/usr/src/app/node_modules/express/lib/router/route.js:137:13)
  &nbs p;at next (/usr/src/app/node_modules/express/lib/router/route.js:131:14)
&nb sp;  at next (/usr/src/app/node_modules/express/lib/router/route.js:131:14)
   at next (/usr/src/app/node_modules/express/lib/router/route.js :131:14)
   at next (/usr/src/app/node_modules/express/lib/router/ route.js:131:14)
   at next (/usr/src/app/node_modules/express/lib /router/route.js:131:14)
   at next (/usr/src/app/node_modules/exp ress/lib/router/route.js:131:14)

wiring botkit with testmybot and jasmine issue

Issue: Running node jasmine.js inside samples/botkit/jasmine gives below error:
Date: Feb 12, 2018

Started
DEPRECATION: done callback received an Error object. Jasmine 3.0 will treat this as a failure
FDEPRECATION: done callback received an Error object. Jasmine 3.0 will treat this as a failure
F

Failures:
1) TestMyBot Test Suite for testmybot-sample-botkit-jasmine Call Me Captain
  Message:
    Failed: Capability property STARTCMD not set
  Stack:
    Error: Capability property STARTCMD not set
        at DockerContainer._AssertCapabilityExists (/home/cpu409/Documents/workspace/westfield/testmybot/samples/botkit/jasmine/node_modules/botium-core/src/containers/BaseContainer.js:139:13)
        at Validate.Validate.then (/home/cpu409/Documents/workspace/westfield/testmybot/samples/botkit/jasmine/node_modules/botium-core/src/containers/DockerContainer.js:29:12)
  Message:
    Failed: container not available
  Stack:
    Error: container not available
        at TestMyBot.beforeEach (/home/cpu409/Documents/workspace/westfield/testmybot/samples/botkit/jasmine/node_modules/testmybot/src/testmybot.js:57:29)
        at UserContext.beforeEach (/home/cpu409/Documents/workspace/westfield/testmybot/samples/botkit/jasmine/node_modules/testmybot/src/helpers/jasmine.js:38:11)

2) TestMyBot Test Suite for testmybot-sample-botkit-jasmine Structured
  Message:
    Failed: Capability property STARTCMD not set
  Stack:
    Error: Capability property STARTCMD not set
        at DockerContainer._AssertCapabilityExists (/home/cpu409/Documents/workspace/westfield/testmybot/samples/botkit/jasmine/node_modules/botium-core/src/containers/BaseContainer.js:139:13)
        at Validate.Validate.then (/home/cpu409/Documents/workspace/westfield/testmybot/samples/botkit/jasmine/node_modules/botium-core/src/containers/DockerContainer.js:29:12)
  Message:
    Failed: container not available
  Stack:
    Error: container not available
        at TestMyBot.beforeEach (/home/cpu409/Documents/workspace/westfield/testmybot/samples/botkit/jasmine/node_modules/testmybot/src/testmybot.js:57:29)
        at UserContext.beforeEach (/home/cpu409/Documents/workspace/westfield/testmybot/samples/botkit/jasmine/node_modules/testmybot/src/helpers/jasmine.js:38:11)

2 specs, 2 failures
Finished in 1.362 seconds

As per Readme.md, it should work without needing a Docker container.

[Botkit] trigger controller events

Sending text messages is only one part of dialogue.
Equally important is events emitted by client side of connection.

For example I want to trigger hello event of Sockets connector to make bot send the greeting before user starts typing.
And I want to send a custom message type from frontend to make my bot perform certain action.

#me
{
    "type": "payment",
    "card_number": "4444********1111",
    "cv2": "***",
    "expiry": "12/19"
}

Test case failing due to :Error: No Mock online

`kamrink@kamrink-ub:~/Desktop/Projects/orange_gassistant_bot$ npm test

[email protected] test /home/kamrink/Desktop/Projects/orange_gassistant_bot
jasmine

Started
(node:21088) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: No Mock online
got Message: undefined
FF

Failures:

  1. TestMyBot Sample Conversation Test Suite should answer to hello
    Message:
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
    Stack:
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
    at ontimeout (timers.js:365:14)
    at tryOnTimeout (timers.js:237:5)
    at Timer.listOnTimeout (timers.js:207:5)
    Message:
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
    `

Unhandled rejection TypeError: Cannot read property 'listen' of null

I am following https://chatbotsmagazine.com/serverless-monitoring-of-your-facebook-chatbot-in-3-easy-steps-a051b4f248a8

My bot is live on FB messenger and I am able to run node node_modules/testmybot-chat/index.js and talk to my bot and save conversation all fine. So far so good

But when I run
$npm test

I get this error message

[email protected] test /home/tests/testmybot/samples/fbdirect
jasmine

INFO: adding test case test2 (file: test2.convo.txt)
Started
Unhandled rejection TypeError: Cannot read property 'listen' of null
at /home/tests/testmybot/samples/fbdirect/node_modules/testmybot/lib/testmybot-fbdirect.js:85:34
at /home/tests/testmybot/samples/fbdirect/node_modules/testmybot/node_modules/async/dist/async.js:3853:24
at replenish (/home/tests/testmybot/samples/fbdirect/node_modules/testmybot/node_modules/async/dist/async.js:946:17)
at /home/tests/testmybot/samples/fbdirect/node_modules/testmybot/node_modules/async/dist/async.js:950:9
at eachOfLimit (/home/tests/testmybot/samples/fbdirect/node_modules/testmybot/node_modules/async/dist/async.js:975:24)
at /home/tests/testmybot/samples/fbdirect/node_modules/testmybot/node_modules/async/dist/async.js:980:16
at _parallel (/home/tests/testmybot/samples/fbdirect/node_modules/testmybot/node_modules/async/dist/async.js:3852:5)
at Object.series (/home/tests/testmybot/samples/fbdirect/node_modules/testmybot/node_modules/async/dist/async.js:4708:5)
at /home/tests/testmybot/samples/fbdirect/node_modules/testmybot/lib/testmybot-fbdirect.js:78:11
at Promise._execute (/home/tests/testmybot/samples/fbdirect/node_modules/testmybot/node_modules/bluebird/js/release/debuggability.js:300:9)
at Promise._resolveFromExecutor (/home/tests/testmybot/samples/fbdirect/node_modules/testmybot/node_modules/bluebird/js/release/promise.js:483:18)
at new Promise (/home/tests/testmybot/samples/fbdirect/node_modules/testmybot/node_modules/bluebird/js/release/promise.js:79:10)
at Object.beforeEach (/home/tests/testmybot/samples/fbdirect/node_modules/testmybot/lib/testmybot-fbdirect.js:76:10)
at Object.beforeEach (/home/tests/testmybot/samples/fbdirect/node_modules/testmybot/lib/testmybot.js:60:20)
at Object. (/home/tests/testmybot/samples/fbdirect/spec/testmybot.spec.js:10:9)
at attemptAsync (/home/tests/testmybot/samples/fbdirect/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:3945:24)
at QueueRunner.run (/home/tests/testmybot/samples/fbdirect/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:3884:9)
at QueueRunner.execute (/home/tests/testmybot/samples/fbdirect/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:3872:10)
at Spec.queueRunnerFactory (/home/tests/testmybot/samples/fbdirect/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:816:35)
at Spec.execute (/home/tests/testmybot/samples/fbdirect/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:473:10)
at Object.fn (/home/tests/testmybot/samples/fbdirect/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:4975:37)
at attemptAsync (/home/tests/testmybot/samples/fbdirect/node_modules/jasmine/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:3945:24)
INFO: running testcase test2
INFO: test2 failed: nothing said in time
INFO: test2 ready, calling done function.
F

Failures:

  1. TestMyBot Sample Conversation Test Suite test2
    Message:
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
    Stack:
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
    at ontimeout (timers.js:469:11)
    at tryOnTimeout (timers.js:304:5)
    at Timer.listOnTimeout (timers.js:264:5)
    Message:
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
    Stack:
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
    at ontimeout (timers.js:469:11)
    at tryOnTimeout (timers.js:304:5)
    at Timer.listOnTimeout (timers.js:264:5)
    Message:
    Failed: nothing said in time
    Stack:
    Error: Failed: nothing said in time
    at bot.setupTestSuite (/home/tests/testmybot/samples/fbdirect/spec/testmybot.spec.js:28:14)
    at async.eachSeries (/home/tests/testmybot/samples/fbdirect/node_modules/testmybot/lib/testbuilder.js:51:17)
    at /home/tests/testmybot/samples/fbdirect/node_modules/testmybot/node_modules/async/dist/async.js:421:16
    at iterateeCallback (/home/tests/testmybot/samples/fbdirect/node_modules/testmybot/node_modules/async/dist/async.js:924:17)
    at /home/tests/testmybot/samples/fbdirect/node_modules/testmybot/node_modules/async/dist/async.js:906:16
    at says.then.catch (/home/tests/testmybot/samples/fbdirect/node_modules/testmybot/lib/testbuilder.js:44:19)
    at tryCatcher (/home/tests/testmybot/samples/fbdirect/node_modules/testmybot/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/home/tests/testmybot/samples/fbdirect/node_modules/testmybot/node_modules/bluebird/js/release/promise.js:512:31)
    at Promise._settlePromise (/home/tests/testmybot/samples/fbdirect/node_modules/testmybot/node_modules/bluebird/js/release/promise.js:569:18)
    at Promise._settlePromise0 (/home/tests/testmybot/samples/fbdirect/node_modules/testmybot/node_modules/bluebird/js/release/promise.js:614:10)
    at Promise._settlePromises (/home/tests/testmybot/samples/fbdirect/node_modules/testmybot/node_modules/bluebird/js/release/promise.js:689:18)
    at Async._drainQueue (/home/tests/testmybot/samples/fbdirect/node_modules/testmybot/node_modules/bluebird/js/release/async.js:133:16)
    at Async._drainQueues (/home/tests/testmybot/samples/fbdirect/node_modules/testmybot/node_modules/bluebird/js/release/async.js:143:10)
    at Immediate.Async.drainQueues (/home/tests/testmybot/samples/fbdirect/node_modules/testmybot/node_modules/bluebird/js/release/async.js:17:14)
    at runCallback (timers.js:781:20)
    at tryOnImmediate (timers.js:743:5)

1 spec, 1 failure
Finished in 29.204 seconds

npm ERR! Test failed. See above for more details.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.