BotFramework-Emulator icon indicating copy to clipboard operation
BotFramework-Emulator copied to clipboard

Support using transcripts to generate tests

Open chrimc62 opened this issue 5 years ago • 2 comments

Problem

A convenient way to generate a test is to generate a transcript using the emulator and then turn that transcript into a test script. The issue is that randomness in bots makes it impossible to replay a transcript. In order to fix this, the SDK has:

  1. Defined middle ware in Adaptive.Testing to pick up a SetTestOptions custom event and copy the payload into conversation.testOptions. We made the payload open ended.
  2. Defined randomSeed to seed a random number generator or randomValue to return a constant value from all calls to random and adjusted all users of random to make use of that.
  3. Defined a bf plugin that converts a transcript into a test script that supports the history and mocking. What is missing is a way to emit SetTestOptions in the emulator. We need to emit SetTestOptions before the conversationUpdate event with the same conversation id in order to set the test options before the transcript starts. While this is a specific ask, it is also related to #2174 which is the general requirement to emit any custom event.

Solution

For this specific event it could be a an additional drop down that allows restarting a conversation with test options. Ideally randomSeed/randomValue would be explicit together with open ended values. This could also be a framework for the more general requirements of #2174 where you can send a custom event with/without conversationUpdate. [enhancement]

chrimc62 avatar Aug 24 '20 17:08 chrimc62

P0:

  • [x] Add UI to "Open bot dialog" to allow user to additionally specify values for randomSeed & randomValue properties
  • [x] Before conversation updates are sent to a conversation, send a custom event activity with the name SetTestOptions with an eventValue property containing the randomSeed & randomValue properties if the above properties were set

P1:

  • [ ] Implement ability to send custom activity payloads: #2174

tonyanziano avatar Dec 01 '20 21:12 tonyanziano

P0 requirements have been met in #2209. Expect to see these changes in tonight's nightly build 👍

tonyanziano avatar Dec 03 '20 21:12 tonyanziano