microsoft / BotFramework-Emulator

A desktop application that allows users to locally test and debug chat bots built with the Bot Framework SDK.
https://aka.ms/botemulator
MIT License
1.81k stars 754 forks source link

Support using transcripts to generate tests #2181

Open chrimc62 opened 4 years ago

chrimc62 commented 4 years ago

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]

tonyanziano commented 3 years ago

P0:

P1:

tonyanziano commented 3 years ago

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