It is good practice to take a screen grab of test failures and review them later, particularly if you have some bizarre wait or timeout error that can be difficult to pin down but sometimes even these can lead you down the wrong path or not give enough context to what went wrong. This led me to explore being able to capture videos of running tests that can be scrutinised at a later time, much like you get when you run tests in SauceLabs or BrowserStack.
Having set up a start (and stop) recording method we can easily capture tests in and write them out to file with the help of our set up or specflow hooks.
public class RecordVideo
private static readonly ScreenCaptureJob vidRec = new ScreenCaptureJob();
public static void StartRecordingVideo(string scenarioTitle)
string timestamp = DateTime.Now.ToString("dd-MM-yyyy-hh-mm-ss");
vidRec.OutputScreenCaptureFileName = @"C:\Test Videos" + scenarioTitle + " " + timestamp + ".wmv";
public static void EndRecording()
We can now call these in our setup/ teardown (in my case I’m using Scenario Hooks) and use the test case name for the file title along with a timestamp.
public void BeforeScenario()
public void AfterScenario()
if (ScenarioContext.Current.TestError != null)
TakeScreenShot.SaveScreenShot(TestRunContext.Driver, TestFailurePath + ScenarioContext.Current.ScenarioInfo.Title + ".jpeg");
Be sure to put something in place to clear the directory out of videos on each run or you might find yourself running out of disk space quite quickly.